先下载ros源码,可以在PC上执行,也可以在raspbian里执行。此处在PC ubuntu上执行。
添加ros源
$ echo "deb http://packages.ros.org/ros/ubuntu jessie main" > /etc/apt/sources.list.d/ros-latest.list
添加key
$ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add -
更新源和升级
$ sudo apt-get update
$ sudo apt-get upgrade
安装python-pip,pip是一个python包管理工具
$ sudo apt-get install python-pip
通过pip安装一些下载ros源码的工具。rosdep用于解决ros包依赖的问题,rosinstall_generator用于生成下载源码的列表文件.rosinstall,wstool用于根据源码列表文件下载源码
$ sudo pip install rosdep rosinstall_generator wstool
初始化rosdep
$ sudo rosdep init
$ rosdep update
创建工作空间,存放源码和用于编译
$ mkdir ~/ros_ws
$ cd ~/ros_ws
用rosinstall_generator生成源码列表文件。ros_common是一个预定义的参数,包含常用ros包,此处也可添加其他一些常用包,比如geometry_msgs和tf。rosdistro选项指定ros的版本,最新版是kinetic,稳定版是indigo。
$ rosinstall_generator ros_comm geometetry_msgs tf --rosdistro kinetic --deps --wet-only --exclude roslisp --tar > ros_comm.rosinstall
用wstool根据列表下载源码
$ wstool init src ros_comm.rosinstall
如果下载中断,利用下面语句继续
$ wstool update -t src
下载的源码存放在src文件夹里。打包工作空间,传到树莓派上
$ cd ~
$ tar -zcf ros_ws.tar.gz ros_ws
$ scp ros_ws.tar.gz pi@192.168.1.xx:~
以下在树莓派上进行,解压源码
$ ssh pi@192.168.1.xx
$ cd ~
$ tar -zxf ros_ws.tar.gz
$ cd ros_ws
在树莓派上执行添加源,key,apt-get update,安装pip和rosdep的工作,步骤同PC。也可直接apt-get install python-rosdep,就不用安装pip了。
用rosdep安装依赖包,其中最大的算是libboost,注意要保证空间足够。
$ rosdep install --from-paths src --ignore-src --rosdistro kinetic -y -r --os=debian:jessie
用catkin_make编译。注意,因为树莓派只有1G内存,默认是-j4编译,在编译到roscpp的时候会因为内存不够编译卡住。所以这里加-j2,不会死机但是比较慢。也可以-j4编译到卡住之后再用-j2编译。roscpp应该是倒数第几个包,一共有五十几个包。编译需要20分钟。
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2
结束后source一下就可以运行roscore了
$ echo ". /opt/ros/kinetic/setup.bash" >> ~/.bashrc
$ . ~/.bashrc
$ roscore
如果运行roscore出现一大堆运行时错误,如下
terminate called after throwing an instance of ‘std::runtime_error’ what(): locale::facet::_S_create_c_locale name not valid
是locale未设置,locale有很多变量,比较方便的方法是直接设置LC_ALL。先查看有哪些locale可用
$ locale -a
找类似en_US.utf8,en_GB.utf8, zh_CN.utf8的,然后设置LC_ALL
$ echo "export LC_ALL="en_GB.utf8" >> ~/.bashrc
$ . ~/.bashrc
可以做一些收尾工作,用pip uninstall删除wstool rosinstall_generator等包。/opt/ros算是绿色软件,新的树莓派用rosdep安装依赖包以后,可以把打包的/opt/ros解压了直接用,不用重新编译了。