嵌入式系统版本:Debian jessie
ROS版本:ROS
工具:
NanoPi2,网络。
ROS在linux的发行版中,对Ubuntu的支持最佳。,刚开始我用的是ubuntu-mate系统,装了一周各种bug,后来在一帖子上看到说友善的板子对Ubuntu-mate的支持不是很好,而且据有经验人士介绍,还是Debian比较稳定,毕竟已经有人用它测试过,之前opencv图像处理也是在它上面进行的。因此只好在官方提供的Debian系统上进行编译,官方的Debian系统是Jessie,但ROS对Debian的支持只是测试安装在Wheezy上,因此是否能在Jessie上成功编译完成,在我安装之前是不知道的,最终用了一周时间,解决了所有问题,将ROS成功编译在了Jessie上。
ROS至今已8年之久,但本人刚接触一个多月,在最后的三个版本Hydro、Indigo、Jade是相差不大的,我选择了Indigo版本。
官网教程: http://wiki.ros.org/Installation/Debian
过程笔记:
一 配置ROS库
1 在ros-latest.list上添加安装软件源的支持
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu wheezy main" > /etc/apt/sources.list.d/ros-latest.list'
2 设置密钥
$ sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 0xB01FA116
3 添加其他包的源支持:
$ sudo sh -c 'echo "deb http://http.debian.net/debian wheezy-backports main" > /etc/apt/sources.list.d/backports.list'
4 再更新源
$ sudo apt-get update
$ sudo apt-get upgrade
5 安装bootstrap依赖项,否则会在编译时提示缺少库而中断:
$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install -U rosdep rosinstall_generator wstool rosinstall
6 rosdep初始化
$ sudo rosdep init
$ rosdep update
二 安装
1 创建工作空间
$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
2 下载ROS源代码
下载ROS源程序,ROS有Desktop-Full、Desktop、ROS-Comm三个版本,ROS-Comm只含有ROS基本的功能包与必须的库文件,Desktop在ROS-Comm基础上添加了一些GUI工具,Desktop-Full在Desktop基础上又添加了2D/3D仿真、导航等工具,我安装了Desktop-Full版本,但在这几天的使用中遇到了很多报错,因而很多工具还是不能用,我下载的是Desktop。
$ rosinstall_generator desktop --rosdistro indigo--deps --wet-only --exclude roslisp --tar >indigo-desktop-wet.rosinstall
$ wstool init -j8 src indigo-desktop-wet.rosinstall
3 解决依赖问题
建立你的工作区之前你需要确保有必需的依赖项,我们使用rosdep工具,然而,其中,两个依赖项中没有库必须手动建立。
对于desktop版,需要建立:libconsole-bridge-dev, liblz4-dev, liburdfdom-headers-dev, liburdfdom-dev, collada-dom-dev and OGRE and libopencv-dev
等源码下载完整后,进行依赖问题的解决:
rosdep install --from-paths src --ignore-src --rosdistro hydro -y -r --os=debian:wheezy
添加其他包的源支持:
sudo sh -c 'echo "deb-src http://ftp.us.debian.org/debian unstable main contrib non-free" >> /etc/apt/sources.list'
sudo sh -c 'echo "deb http://ftp.us.debian.org/debian wheezy-backports main" >> /etc/apt/sources.list'
sudo apt-get update
还有一些其他的包需要安装,并用Checkinstall工具生成Debian程序包,首先安装Checkinstall:
mkdir ~/ros_catkin_ws/external_src
sudo apt-get install checkinstall
注明:对于以下安装包过程中,每一个包共有三次 yes/no的选择,分别是 y/n /n
安装libconsole-bridge-dev
$ cd ~/ros_catkin_ws/external_src
$ sudo apt-get install libboost-system-dev libboost-thread-dev
$ git clone https://github.com/ros/console_bridge.git
$ cd console_bridge
$ cmake .
$ sudo checkinstall make install
当问你是否有需要更改的地方时,选择序号2,把 “console-bridge”改为”libconsole-bridge-dev” ,否则,rosdep安装包不能找到它。
安装liburdfdom-headers-dev
$ cd ~/ros_catkin_ws/external_src
$ git clone https://github.com/ros/urdfdom_headers.git
$ cd urdfdom_headers
$ cmake .
$ sudo checkinstall make install
当问你是否有需要更改的地方时,选择序号2,”urdfdom-headers” 改为 “liburdfdom-headers-dev” ,否则,rosdep安装包不能找到它。
安装liburdfdom-dev
$ 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 install
当问你是否有需要更改的地方时,选择序号2,”urdfdom” 改为”liburdfdom-dev” ,否则,rosdep安装包不能找到它。
安装collada-dom-dev
$ 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
当问你是否有需要更改的地方时,选择序号2,”collada-dom” 改为”collada-dom-dev” ,否则,rosdep安装包不能找到它。
安装libopencv-dev
$ cd ~/ros_catkin_ws/external_src
$ git clone https://github.com/Itseez/opencv.git
$ mkdir opencv/release
$ cd opencv/release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
$ make
$ sudo checkinstall make install
当问你是否有需要更改的地方时,选择序号2,”release”改为”libopencv-dev” ,否则,rosdep安装包不能找到它。
安装liblz4-dev
sudo apt-get -t wheezy-backports install liblz4-dev
安装OGRE
$ sudo apt-get remove libogre-1.7.*
$ sudo apt-get install libogre-1.8-dev
4 利用rosdep解决依赖
$ cd ~/ros_catkin_ws
$ rosdep install --from-paths src --ignore-src --rosdistro indigo -y -r --os=debian:wheezy
三 编译
1 编译工作空间
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo
至此,ROS应该已经安装完成,不过要记得更新一下源
$ source /opt/ros/indigo/setup.bash
运行下面的命令测试下,如果不报错,就是没问题了:
roscore
2 维护源检测 (更新工作空间)
您可以添加额外的软件包到建立的ROS工作区,首先,必须创建一个包含新功能包的rosinstall文件,(注意,这也可以在初始安装完成)。例如,如果我们安装了ros_comm,但想要添加ros_control和 joystick_drivers,就可以这样:
$ cd ~/ros_catkin_ws
$ rosinstall_generator ros_comm ros_control joystick_drivers --rosdistro indigo --deps --wet-only --exclude roslisp --tar > indigo-custom_ros.rosinstall
下载更新依赖
$ wstool merge -t src indigo-custom_ros.rosinstall
$ wstool update -t src
更新工作区后,需要运行rosdep安装所需要的新依赖
$ rosdep install --from-paths src --ignore-src --rosdistro hydro -y -r --os=debian:wheezy
现在工作区和依赖均已更新,可以建立编译ROS
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/indigo