yoyojacky 发表于 2019-3-29 15:32:33

树莓派安装ROS填坑记录

被老黄拉下水,没办法,谁叫激光雷达是他送的,所以跟着一起填坑, 点云也可以出来了,被卡在图优化上,无奈数学老师传授的绝学早已不再。。
又被专业文档的各种算法搞得要吐。
因此被迫填坑ROS, ROS其实很强大,很早以前就有小伙伴在蘑菇云分享过,一直咩有入坑,如今在Question黄的怂恿下,跌入谷底。
虽然官方网站里面提到了这么多ROS的版本,但是真正在Raspberry Pi 3B+上运行的并没有, 最新的版本也只是跑在Raspberry Pi 3B上。

官方一堆教程,参考后发现目前树莓派操作系统的版本是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 :
$ sudo apt-get install dirmngrpython-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential cmake
$ sudo apt-get update
$ sudo apt-get upgrade
先安装dirmngr的软件包,然后更新,大概几分钟搞定。

1.2 初始化rosdep
$ sudo rosdep init
$ rosdep update

2. 安装
接下来就是下载和安装构建ROS Kinetic。
2.1 创建一个catkin 工作空间
$ mkdir -p ~/ros_catkin_ws
$ cd ~/ros_catkin_ws
接下来需要下载核心包这样就可以构建他们了,中间可能要用到wstool,一个管理工具,类似svn?
官方推荐使用:
$ rosinstall_generator ros_comm --rosdistro kinetic --deps --wet-only --tar > kinetic-ros_comm-wet.rosinstall
$ wstool init src kinetic-ros_comm-wet.rosinstall
如果你用桌面环境的话,下面这个包含ROS,rqt,rviz和robot-generic 库。
$ rosinstall_generator desktop --rosdistro kinetic --deps --wet-only --tar > kinetic-desktop-wet.rosinstall
$ wstool init src kinetic-desktop-wet.rosinstall
我按照官方推荐,使用上面的,因为我只需要ROS 包, 构建和通讯库不需要UI环境,这样可以减少空间需求量。
执行后会将catkin和wet包下载到~/ros_catkin_ws/src源码目录,根据网络状态时间长度可能不一。
目前只有两个变量在树莓派上的Kinetic上试过,更多的内容看下图,是REP 131 里面描述的,像什么robot, perception啥的其他的你们也可以试试。


如果针对机器人,例如:
$ rosinstall_generator robot --rosdistro kinetic --deps --wet-only --tar > kinetic-robot-wet.rosinstall
$ wstool init src kinetic-robot-wet.rosinstall
如果执行过程中wstool 初始化失败了,你可以重复执行:
wstool update -j4 -t src
操作过程中如果有依赖报错,需要解决依赖的问题,可以:
$ cd ~/ros_catkin_ws
$ rosdep install -y --from-paths src --ignore-src --rosdistro kinetic -r --os=debian:stretch
3.构建catkin Workspace
完成下载软件包并解决了依赖项之后,就可以构建catkin软件包了。
调用catkin_make_isolated:
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic
这个过程可能会很长时间,也许会因为编译失败暂停, 编译很可能会因内存耗尽而导致“内部编译器错误”。 快速修复此问题的方法是将交换空间增加一些,然后重新编译。 如果错误仍然存在,请尝试使用-j2选项而不是默认的-j4选项进行构建,意思是2核跑,别4核,4核内存就吃不消了。
$ sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/kinetic -j2
完成后,ROS就应该安装好了,记得用source命令来引用新的安装:
$ source /opt/ros/kinetic/setup.bash
或者直接写入到〜/ .bashrc里面,以便每次启动新shell时ROS环境变量自动添加到bash会话里面。
$ echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
至此,应该是可以使用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

question 发表于 2019-3-29 15:41
慢慢填坑

这个坑有这么大!
页: [1]
查看完整版本: 树莓派安装ROS填坑记录