树莓派安装ROS填坑记录

2019-03-296599
AI 快速预览详细 收起
本文介绍了在树莓派3B+上从源代码安装ROS Kinetic的详细步骤。首先设置ROS存储库并初始化rosdep,然后创建catkin工作空间并下载核心包。在构建过程中,可能会遇到内存不足的问题,可以通过增加交换空间或使用-j2选项来解决。完成安装后,可以使用source命令引用新的安装,并将激光雷达点云数据丢给ROS的API接口。
被老黄拉下水,没办法,谁叫激光雷达是他送的,所以跟着一起填坑, 点云也可以出来了,被卡在图优化上,无奈数学老师传授的绝学早已不再。。
又被专业文档的各种算法搞得要吐。
因此被迫填坑ROS, ROS其实很强大,很早以前就有小伙伴在蘑菇云分享过,一直咩有入坑,如今在Question黄的怂恿下,跌入谷底。
虽然官方网站里面提到了这么多ROS的版本,但是真正在Raspberry Pi 3B+上运行的并没有, 最新的版本也只是跑在Raspberry Pi 3B上。
树莓派安装ROS填坑记录图1
官方一堆教程,参考后发现目前树莓派操作系统的版本是stretch,因此最有可能安装成功的就是Kinetic的这个。
因此参考教程开始填坑。
本教程将介绍如何从Raspberry Pi 3B+上的源代码安装ROS Kinetic。说明大致和indigo的差不多。但是,Raspbian需要考虑一些依赖关系。
1先决条件
这些说明假设Raspbian被用作Raspberry Pi上的操作系统,而不是ubuntu,我记得树莓派是支持ubuntu 的mate,但是觉得那个系统好像咩有raspbian好用。
最新的操作系统去这里下载:http://www.raspberrypi.org/downloads/
1.1设置ROS存储库如果是Raspbian Stretch :
[mw_shl_code=applescript,true]$ sudo apt-get install dirmngr  python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake[/mw_shl_code]
[mw_shl_code=applescript,true]$ sudo apt-get update
$ sudo apt-get upgrade[/mw_shl_code]

先安装dirmngr的软件包,然后更新,大概几分钟搞定。

1.2 初始化rosdep
[mw_shl_code=applescript,true]$ sudo rosdep init
$ rosdep update[/mw_shl_code]


2. 安装
接下来就是下载和安装构建ROS Kinetic。
2.1 创建一个catkin 工作空间
[mw_shl_code=applescript,true]$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws[/mw_shl_code]

接下来需要下载核心包这样就可以构建他们了,中间可能要用到wstool,一个管理工具,类似svn?
官方推荐使用:
[mw_shl_code=applescript,true]$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall[/mw_shl_code]

如果你用桌面环境的话,下面这个包含ROS,rqt,rviz和robot-generic 库。
[mw_shl_code=applescript,true]$ rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
$ wstool init src kinetic-desktop-wet.rosinstall[/mw_shl_code]

我按照官方推荐,使用上面的,因为我只需要ROS 包, 构建和通讯库不需要UI环境,这样可以减少空间需求量。
执行后会将catkin和wet包下载到~/ros_catkin_ws/src源码目录,根据网络状态时间长度可能不一。
目前只有两个变量在树莓派上的Kinetic上试过,更多的内容看下图,是REP 131 里面描述的,像什么robot, perception啥的其他的你们也可以试试。

树莓派安装ROS填坑记录图2
如果针对机器人,例如:
[mw_shl_code=applescript,true]$ rosinstall_generator robot --rosdistro kinetic --deps --wet-only --tar > kinetic-robot-wet.rosinstall
$ wstool init src kinetic-robot-wet.rosinstall[/mw_shl_code]

如果执行过程中wstool 初始化失败了,你可以重复执行:
[mw_shl_code=applescript,true]wstool update -j4 -t src[/mw_shl_code]
操作过程中如果有依赖报错,需要解决依赖的问题,可以:
[mw_shl_code=applescript,true]$ cd ~/ros_catkin_ws
$ rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:stretch[/mw_shl_code]

3.构建catkin Workspace
完成下载软件包并解决了依赖项之后,就可以构建catkin软件包了。
调用catkin_make_isolated:
[mw_shl_code=applescript,true]$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic[/mw_shl_code]
这个过程可能会很长时间,也许会因为编译失败暂停, 编译很可能会因内存耗尽而导致“内部编译器错误”。 快速修复此问题的方法是将交换空间增加一些,然后重新编译。 如果错误仍然存在,请尝试使用-j2选项而不是默认的-j4选项进行构建,意思是2核跑,别4核,4核内存就吃不消了。
[mw_shl_code=applescript,true]$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2[/mw_shl_code]
完成后,ROS就应该安装好了,记得用source命令来引用新的安装:
[mw_shl_code=applescript,true]$ source /opt/ros/kinetic/setup.bash[/mw_shl_code]
或者直接写入到〜/ .bashrc里面,以便每次启动新shell时ROS环境变量自动添加到bash会话里面。
[mw_shl_code=applescript,true]$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc[/mw_shl_code]
至此,应该是可以使用ROS的环境了,下一步就是尝试将激光雷达点云的数据丢给ROS的API接口。
(想了解树莓派如何通过激光雷达获取点云,请参考大神黄老板的帖子: https://mc.dfrobot.com.cn/thread-275911-1-1.html
老黄,该你秀操作了。。



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
question
question
慢慢填坑
yoyojacky
yoyojacky
作者
回复question
这个坑有这么大!

- 没有更多了 -