4286浏览
查看: 4286|回复: 2

[项目] 树莓派安装ROS填坑记录

[复制链接]
被老黄拉下水,没办法,谁叫激光雷达是他送的,所以跟着一起填坑, 点云也可以出来了,被卡在图优化上,无奈数学老师传授的绝学早已不再。。
又被专业文档的各种算法搞得要吐。
因此被迫填坑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
老黄,该你秀操作了。。



question  初级技师

发表于 2019-3-29 15:41:36

慢慢填坑
回复

使用道具 举报

yoyojacky  初级技匠
 楼主|

发表于 2019-3-29 15:44:53


这个坑有这么大!树莓派安装ROS填坑记录图1
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail