ROS在NanoPi2上的源码编译

来源:互联网 发布:财务报表制作软件 编辑:程序博客网 时间:2024/04/30 23:32

嵌入式系统版本: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_srcsudo 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
0 0