当前位置: 首页 > 工具软件 > FirePrime > 使用案例 >

在FirePrime上编译安装ROS jade

郎睿
2023-12-01

     FirePrime开发板上的系统为Ubuntu15.04,其他linux版本的系统或其他版本的Ubuntu安装ROS的过程有一些差异。

   ps:安装时间是在15国庆的时候,在别的论坛发的贴

安装过程参考ROS Wiki: 

Ubuntu ARM install of ROS Jade:http://wiki.ros.org/jade/Installation/UbuntuARM 

 Installing from source:http://wiki.ros.org/jade/Installation/Source 

 在ARM类的开发板上安装ROS,是一个漫长的过程,也会很容易出错,出错可以去这个网站:http://answers.ros.org,看看有没有类似的问题,也可以在这个网站寻求帮助。

下面开始安装。 

 1.安装准备 

 1.1 配置你的Ubuntu软件版本仓库

 FirePrime运行的Ubuntu15.04这一步已经配置好了,不需要做出改动。 

 1.2 设置你的Locale

 主要是Boost和ROS的一些工具需要,通过在终端运行下面的指令设置。 

sudo update-locale LANG=C LANGUAGE=C LC_ALL=C LC_MESSAGES=POSIX
1.3 设置你的sources.list

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu vivid main" > /etc/apt/sources.list.d/ros-latest.list'
 1.4 设置你的Keys

wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
1.5  确保你的系统已经更新
sudo apt-get update  
sudo apt-get upgrade
1.6  安装 booststrap 依赖

sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential
1.7  初始化 rosdep

2.安装
       2.1 创建一个catkin工作空间
mkdir ~/ros_catkin_ws
cd ~/ros_catkin_ws
对于ROS jade的安装,接下来有三种选择:
       安装Desktop-Full:包含ROS, rqt, rviz, robot-generic libraries, 2D/3D simulators, navigation and 2D/3D perception
       安装Desktop:包含ROS, rqt, rviz, and robot-generic libraries
       ROS-Comm(对于ARM,官网推荐的):包含ROS package, build, and communication libraries. No GUI tools
       这里选择了安装Desktop
rosinstall_generator desktop --rosdistro jade --deps --wet-only --tar > jade-desktop-wet.rosinstall
wstool init -j8 src jade-desktop-wet.rosinstall </span>
  如果wstool init失败或中断,下面的命令会接着下载:
wstool update -j 4 -t src</span>
 2.2 解决依赖
       通过rosdep工具解决依赖:
rosdep install --from-paths src --ignore-src --rosdistro jade -y</span>
这步会安装大量的依赖,过程稍长。
       安装过程中提示collada-dom-dev安装出错,并中断安装。解决方法参考东方赤龙的博客:
       ROS 学习系列 -- 树莓派编译安装完整版本ROShttp://blog.csdn.net/crazyquhezheng/article/details/43413231
       解决过程如下:
       创建新目录,下载并编译这个包。
mkdir ~/ros_catkin_ws/external_src  
sudo apt-get install checkinstall cmake
cd ~/ros_catkin_ws/external_src  
sudo apt-get install libboost-filesystem-dev libxml2-dev  
wget http://downloads.sourceforge.net/project/collada-dom/Collada%20DOM/Collada%20DOM%202.4/collada-dom-2.4.0.tgz  
tar -xzf collada-dom-2.4.0.tgz  
cd collada-dom-2.4.0  
cmake .  
sudo checkinstall make install</span>
checkinstall询问是否改变安装选项时,选择[2],将名字从"collada-dom" 改为 "collada-dom-dev"。接下来的两个问题连续选择'n', 否则会编译出错。
       在次执行rosdep指令:
rosdep install --from-paths src --ignore-src --rosdistro jade -y</span>
  执行成功后会提示所有依赖已经安装。
       2.3编译catkin工作空间
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release</span>
这个过程挺长的,慢慢等待吧。
 编译过程中出现2类错误,共3个错误。
       第一个错误在编译到roscpp包的时候出现,导致停止编译。错误提示为c++ compiler error,通过百度,错误原因为内存不足。解决方法为增加一个交换分区。
解决过程如下:
       (1)创建分区文件,大小2G(大小自己根据自己情况设定)
dd if=/dev/zero of=/swapfile bs=1k count=2048000
(2)生成swap 文件系统。执行这个命令需要一些时间。
mkswap /swapfile
  (3) 激活 swap  文件。
swapon /swapfile
  但是这样并不能在系统重启的时候自动挂载交换分区,这样我们就需要修改 fstab
       (4) 修改 /etc/fstab  文件,新增如下内容:
/swapfile  swap  swap    defaults 0 0
 这样每次重启系统的时候就会自动加载swap文件了。
       第二个错误出现在编译collada_urdf的时候,错误提示为undefined reference to typeinfo for Assimp::IOSystemhttp://answers.ros.org/上找到了解决办法:
   http://answers.ros.org/question/48084/urdf_to_collada-undefined-reference-to-vtable-for-assimpiosystem/
  解决方法为在ros_catkin_ws/src/robot_model/collada_urdf/src/collada_urdf.cpp中包含assimp相关文件之后,加入以下代码:
#ifdef __arm__
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2)const
{
return !::strcasecmp(p1,p2);
}
#endif
 第三个错误出现在编译 rviz 包的时候,错误提示与第二个错误类似。解决方法在 ros_catkin_ws/srcrviz/src/rvizmesh_loader.cpp 中包含 assimp 相关文件之后,加入以下代码:
#ifdef __arm__
bool Assimp::IOSystem::ComparePaths(const char *p1, const char *p2)const
{
return !::strcasecmp(p1,p2);
}
#endif
参考:http://answers.ros.org/question/52098/unable-to-compile-rviz-on-ubuntu-armhf/
       终于编译完了!
2.4  设置环境变量
       执行下面的命令,这样终端每次启动的时候,就可以直接使用ROS了。
echo "source ~/ros_catkin_ws/install_isolated/setup.bash" >> ~/.bashrc
source ~/.bashrc















 类似资料: