跟很多人的想法一样,我也想自己搭建一个基于ROS的可移动平台,由于特别喜欢树莓派,就想把ROS装到树莓派3上面,折腾了好几天,终于装好了。过程中参考了不少大神的教程,主要参考了著名博主东方赤龙和ROS官方教程,但是Raspbian版本和一些依赖包的更新导致我在安装的时候不能完全参考这两个教程。安装的过程中也是遇到了很多问题,所以总结了一些经验,希望能够帮到大家,有什么错误也希望大家能够指出。
树莓派3B, ROS Indigo, 16G SD卡,Raspbian OS(博主装的是jessie)
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu jessie main" > /etc/apt/sources.list.d/ros-latest.list' $ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -更新一下,否则很容易出错
$ sudo apt-get update $ sudo apt-get upgrade
Raspbian Jessie:
$ sudo apt-get install python-pip python-setuptools python-yaml python-distribute python-docutils python-dateutil python-six $ sudo pip install rosdep rosinstall_generator wstool rosinstall
$ sudo rosdep init
$ rosdep update
$ mkdir ~/ros_catkin_ws $ cd ~/ros_catkin_ws接下来下载ROS源码,我们要安装的是完整版(Desktop)
$ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-desktop-wet.rosinstall $ wstool init src indigo-desktop-wet.rosinstall
$ wstool init src indigo-desktop-wet.rosinstall -j8
$ wstool update -t src
$ mkdir ~/ros_catkin_ws/external_src $ sudo apt-get install checkinstall cmake $ sudo sh -c 'echo "deb-src http://mirrordirector.raspbian.org/raspbian/ testing main contrib non-free rpi" >> /etc/apt/sources.list' $ sudo apt-get update
$ cd ~/ros_catkin_ws/external_src $ sudo apt-get build-dep console-bridge $ apt-get source -b console-bridge $ sudo dpkg -i libconsole-bridge0.2*.deb libconsole-bridge-dev_*.deb如果看到关于'-std=c++11' 的错误,按照下面的步骤将gcc版本升级到gcc 4.7+
sudo apt-get install g++-4.7 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.6 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 sudo update-alternatives --config gcc
$ cd ~/ros_catkin_ws/external_src $ apt-get source -b lz4 $ sudo dpkg -i liblz4-*.deb
$ cd ~/ros_catkin_ws/external_src $ git clone https://github.com/ros/urdfdom_headers.git $ cd urdfdom_headers $ git reset --hard 9aed725 $ cmake . $ sudo checkinstall make install前面分析了编译过程可能出现"collada_parser"报错的原因,这里的'9aed725'就是将"liburdfdom-headers-dev"的安装版本变成我们需要的1.0.0版本。
$ dpkg -l运行上面命令在列表中没有看到我们安装的"liburdfdom-headers-dev"包,或者package名没有修改成功,运行下面命令重新安装(为确保这里的每个依赖包都正确安装,建议每安装一个包之后都用这个方法检查一遍)
$ sudo checkinstall make install
$ cd /usr/local/include/urdf_model $ sudo wget https://raw.githubusercontent.com/ros/urdfdom_headers/master/urdf_model/include/urdf_model/utils.h
$ cd ~/ros_catkin_ws/external_src $ sudo apt-get install libboost-test-dev libtinyxml-dev $ git clone https://github.com/ros/urdfdom.git $ cd urdfdom $ cmake . $ sudo checkinstall make installcheck-install开始会让你输入包的描述,可以直接按回车跳过。当checkinstall询问是否改变安装选项时,选择[2],将名字从 "urdfdom"改为"liburdfdom-dev" ,其余有[y]或[n]的问题都输入'n'按回车, 否则会编译出错
$ 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 installcheck-install开始会让你输入包的描述,可以直接按回车跳过。当checkinstall询问是否改变安装选项时,选择[2],将名字从 "collada-dom"改为 "collada-dom-dev" ,其余有[y]或[n]的问题都输入'n'按回车, 否则会编译出错
$ cd ~/ros_catkin_ws $ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:jessie这个命令会寻找所有src目录的package并递归安装依赖,要安装的依赖包有点多,耐心等待吧。
$ nano ~/ros_catkin_ws/src/robot_model/collada_urdf/src/collada_urdf.cpp
$ nano ~/ros_catkin_ws/src/rviz/src/rviz/mesh_loader.cpp
$ sudo nano /etc/dphys-swapfile找到CONF_SWAPSIZE=100,修改为 CONF_SWAPSIZE=1024
$ sudo reboot
$ cd ~/ros_catkin_ws $ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo执行上面命令默认使用4个核心来编译,会使得CPU的使用率长时间为100%,容易死机,所以我们可以加上-j2参数设定树莓派使用2个核心编译。
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo -j2
$ source /opt/ros/indigo/setup.bash设置ROS环境变量在每次启动shell时自动添加到bash会话
$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc到这里我们的ROS完整版就已经成功安装好了,不妨运行roscore试一下
$ roscore成功运行roscore就证明我们安装成功了,接下来就可以按照官网教程愉快地学习了,距离做出自己的ROS移动平台又近了一步。