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
复制代码如果
wstool init失败或中断,下面的命令会接着下载:- wstool update -j 4 -t src
复制代码2.2 解决依赖
通过
rosdep工具解决依赖:- rosdep install --from-paths src --ignore-src --rosdistro jade -y
复制代码 这步会安装大量的依赖,过程稍长。
安装过程中提示collada-dom-dev安装出错,并中断安装。解决方法参考东方赤龙的博客:
ROS 学习系列 -- 树莓派编译安装完整版本ROS(http://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
复制代码当checkinstall询问是否改变安装选项时,选择[2],将名字从"collada-dom" 改为 "collada-dom-dev"。接下来的两个问题连续选择'n', 否则会编译出错。
在次执行
rosdep指令:- rosdep install --from-paths src --ignore-src --rosdistro jade -y
复制代码执行成功后会提示所有依赖已经安装。
2.3
编译catkin工作空间- ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release
复制代码这个过程挺长的,慢慢等待吧。这是编译过程中某一时刻内存和CPU的使用情况
。
编译过程中出现2类错误,共3个错误。
第一个错误在编译到roscpp包的时候出现,导致停止编译。错误提示为c++ compiler error,通过百度,错误原因为内存不足。解决方法为增加一个交换分区。
解决过程如下:
(1)创建分区文件,大小2G(大小自己根据自己情况设定)。
- dd if=/dev/zero of=/swapfile bs=1k count=2048000
复制代码 (2)
生成swap 文件系统。执行这个命令需要一些时间。 (3)
激活swap 文件。但是这样并不能在系统重启的时候自动挂载交换分区,这样我们就需要修改
fstab。
(4)
修改/etc/fstab 文件,新增如下内容:- /swapfile swap swap defaults 0 0
复制代码这样每次重启系统的时候就会自动加载swap文件了。
出错的时候有个提示:Reproduce this error by running,下面有个指令,可以运行这个指令看有没有错误出现,没有的话错误就解决了,接着重新编译。
第二个错误出现在编译collada_urdf的时候,错误提示为undefined reference to typeinfo for Assimp::IOSystem。在http://answers.ros.org/上找到了解决办法:
解决方法为在
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
复制代码 终于编译完了!
2.4 设置环境变量
执行下面的命令,这样终端每次启动的时候,就可以直接使用ROS了。
- echo "source ~/ros_catkin_ws/install_isolated/setup.bash" >> ~/.bashrc
- source ~/.bashrc
复制代码
3.测试 运行一下roscore,看一下是不是成功安装了。
运行没有问题,可以使用ROS了。