ROS on ARMRK3066上本地编译ROS Groovy
1. 开源机器人操作系统ROS(Robot Operating System)简介ROS(Robot Operating System)是一个开源的为机器人软件开发设计的软件框架,在异构计算机集群中提供类似操作系统的功能。它并不是一个计算机的操作系统,而是机器人的操作系统,或者称为元级操作系统(Meta Operating System)。据目前唯一一本比较官方的关于ROS的书《ROS By Example Volume 1》介绍,“The primary goal of ROS (pronounced "Ross") is to provide a unified and open source programming framework for controlling robots in a variety of real world and simulated environments.”,ROS的原始目的就是为了在一系列真实和模拟的环境中控制机器人提供一个统一的开源编程框架。为了实现这一目标,ROS架构中有三个层次的概念:文件系统级(Filesystem Level),计算图级(Computation Graph Level)和社区级(Community Level)。 具体可以查阅维基百科和官网wiki,这里就不过多介绍了。 2. ROS Groovy GalapagosROS Groovy Galapagos是2012年12月31日发布的ROS最新版本,主要支持Ubuntu 11.10、Ubuntu 12.04和Ubuntu 12.10。提到这个版本的原因是它采用了新的构建系统——catkin,准备逐渐取代之前的rosbuild。它解决了rosbuild当中的几个问题,让ROS可以持续发展和扩大规模,相对于rosbuild更符合文件系统层次结构标准(Filesystem Hierarchy Standard,FHS),使在其它操作系统和架构上发布ROS包更加容易。正是这个原因让我在MK802 IIIS上编译ROS的时候轻松很多,如果编译之前的版本(比如fuerte)将会遇到更多问题。 因为catkin的引入,ROS文件系统级的Stacks概念被移除了,原因是Package和Stack之间依赖性跟踪出现的问题,取代的是元包(metapackage)的概念。 3. Ubuntu on ARMARM版Ubuntu的软件源是在 我使用的是RK3066上的Picuntu,关于Picuntu请看前一篇文章。 4. 编译ROS for ARM从前为ARM编译一般都需要在x86的上位机上交叉编译,有一个叫做EROS的项目,但是似乎文档不全,个人觉得用它成功编译的人应该也不多。近几年ARM性能足够强了,在ARM运行的操作系统上直接编译也不是什么问题。所以完全可以参考官网从源码编译的教程,官网还特别搞了一个在树莓派上编译的教程。 当然,树莓派的内存只有512MB,而且是ARM 11,使用ROS会受到很大的限制,既然它都可以编译ROS Groovy,那么双核A9的RK3066,1G内存就更不是问题了。 下面一步步按照官网上从源码编译的wiki来: 4.1 安装基础依赖包 操作系统相关的: sudo apt-get install build-essential git python-pip ROS Common(或者叫ROS Base,Base Bones什么的)依赖的: sudo apt-get install libtinyxml-dev libgtest-dev liblog4cxx10-dev 注意这里只是在Picuntu RC2 上需要额外安装的库,可能你还会遇到其它库的问题。desktop或者desktop-full依赖的库更多,所以更难解决。 还有一些重要的工具: sudo pip install wstool rospkg rosdep 可能会遇到很多 安装完rosdep以后初始化一下: sudo rosdep init rosdep update 4.2 构建catkin包 上面提到过,ROS Galapagos采用了新的构建工具catkin代替rosbuild,但并不是所有的包都转换成了catkin的版本,所以先构建ROS的核心包(使用catkin),然后再构建其余的使用rosbuild的部分。 4.2.1 创建catkin工作空间 mkdir ~/ros_catkin_ws cd ~/ros_catkin_ws 下一步是下载核心包的源码并构建它们,你有三种选择: Desktop-Full Install: ROS,rqt,rviz,robot-generic libraries,2D/3D simulators,navigation and 2D/3D perception wstool init -j8 src http://packages.ros.org/web/rosinstall/generate/raw/groovy/desktop-full Desktop Install : ROS,and robot-generic libraries wstool init -j8 src http://packages.ros.org/web/rosinstall/generate/raw/groovy/desktop-full ROS-Comm: (Bare Bones) ROS package,build,and communication libraries. No GUI tools. wstool init src -j8 http://packages.ros.org/web/rosinstall/generate/raw/groovy/ros_comm 这个操作是下载catkin包的代码到 注意,在后面解决依赖关系和构建的时候很多包依赖的库可能会缺,你可以根据错误提示自行安装所缺的库。我在MK802 IIIS上只成功编译了ROS-Comm,Desktop编译失败了,而Desktop full在官网wiki中说还有问题: 还可以安装其它的包,如robot: wstool init -j8 http://packages.ros.org/web/rosinstall/generate/dry/raw/groovy/robot 更多的可以在REP 131中查阅。 4.2.2 解决依赖关系 在构建包之前你必须确保你解决了所有的依赖关系 rosdep install --from-paths src --ignore-src --rosdistro groovy -y
另外如果你在安装某些包出现错误的情况下仍想安装其它所有可以安装的包,你可以使用-r选项,也就是 4.2.3 构建catkin工作空间 调用 ./src/catkin/bin/catkin_make_isolated --install 默认安装在 如果编译过程中出现错误提示缺少库,需要自行安装解决。 如果构建完成了,再执行: source ~/ros_catkin_ws/install_isolated/setup.bash 如果你只需要ROS Common那么就结束了。可以测试一下在终端里输入 4.3 构建rosbuild包 只构建ROS Common(Bare Bones)是不需要这一步的,在上一步我也没有成功编译desktop, 如果你成功了可以继续下面的步骤: 4.3.1 创建rosbuild工作空间 mkdir ~/ros_ws cd ~/ros_ws rosws init . ~/ros_catkin_ws/install_isolated 4.3.2 下载ROS Stacks Desktop-Full Install: 2d/3d simulators,navigation,robot models and several tutorial stacks rosws merge http://packages.ros.org/web/rosinstall/generate/dry/raw/groovy/desktop-full Desktop Install: ROS,and robot-generic libraries rosws merge http://packages.ros.org/web/rosinstall/generate/dry/raw/groovy/desktop Desktop-Full仍然有问题: rosws update -j8 4.3.3 构建ROS Stacks 下载完后: source ~/ros_ws/setup.bash rosmake -a 5. 其它如果你不满足于ROS Common,而且跟我一样没有成功编译desktop的话,可以试试单独编译其它组件,比如OpenCV和PCL。 OpenCV 2.4.3的编译非常顺利,几乎没有遇到什么障碍,有GTK+2.0,highgui库都可以正常使用。 PCL在我去掉少数几个编译选项以后也成功了,pcl_viewer正常工作。//另外我还安装了OpenNI和Kinect驱动 我编译PCL时的CMakeCache.txt在https://gist.github.com/4689753 参考资料
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |