关闭

树莓派编译安装ros,原理步骤详细

标签: ros树莓派源码编译
207人阅读 评论(0) 收藏 举报
分类:

先下载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解压了直接用,不用重新编译了。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2663次
    • 积分:75
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档