发布v1.0版本基于Stretch的ROS Kinetic完整版树莓派3B+镜像
0x00 树莓派3B+介绍
一直听闻树莓派3B+发布了,性能比树莓派3B有所提升。但是大家都反馈说用着跟3B好像没什么不一样的,所以就没什么兴趣买来玩。最近正好有空,就采购了一块3B+来测试看看效果。下面还是先上几张图,让大家对3B+有个初步认识:
0x01 系统镜像简介
目前为止在树莓派3B+上只能使用官方提供的raspbian系统,该系统是基于Debian9.4 Stretch来开发的。在该系统上目前只能通过源码来编译ROS系统,由于ROS Indigo到2019年4月份就停止维护了,所以在这里我编译的是ROS Kinetic系统。Kinetic系统要到2021年才停止维护,还有很长的时间可以使用。
我把ROS中常用的一些软件包都给编译了,总共有253个软件包。包括了rqt相关的工具,rviz也给编译了,当然SLAM相关的软件包都给编译了。如果大家在使用过程中发现还有常用的软件包没编译,可以给我留言,我会在下一个版本中编译进去。所有的这些软件包的编译也是经过了不少的报错,都被我给解决了。最终经过一夜的编译,所有的软件包都编译通过了。最终编译压缩后的镜像大小有1.13G,后面会根据需要来不断优化镜像大小。
我还编译了可以创建AP热点的软件包,这样大家还可以把树莓派当作一个无线路由器来使用,只要插上可以上网的网线即可。而且当我们在调试ROS时,我们还可以使用这个功能连接到树莓派上,具体的使用方法后面会介绍。另外我在树莓派上也安装了Arduino IDE,这样大家还可以在上面开发arduino。
在这里系统制作好以后,我就把桌面的默认背景图片给换成了ROS小课堂的logo。这算是唯一的一个植入性广告了,仅仅是为我的辛苦留个纪念而已。如果大家不喜欢的话,可以自行更换桌面背景。
0x02 镜像下载
镜像目前已经上传至百度网盘和ROS小课堂的ftp服务器,由于小课堂服务器下载网络带宽只有2Mbps。为了保证ROS小课堂网站、SVN服务器、gerrit系统和项目管理系统的正常访问,我就限制了ftp的下载链接。只允许同时有10个人连接ftp服务器,这样就可以限制ftp的下载带宽。所以建议大家优先选择百度网盘下载,下面分别介绍两种下载方式:
1.百度网盘下载
百度网盘下载链接:https://pan.baidu.com/s/1nIankz8xg6xLrqIhGdWZLA
在下载该镜像时,我建议大家使用百度提供的百度网盘下载软件来下载。因为如果使用网页来下载的话可能会下载失败。当大家下载完镜像后的第一件事就是来验证镜像的完整性,该镜像是否被非法篡改或下载过程中导致镜像不完整而无法解压。这里我使用MD5校验和来保证镜像的完整性,正确的MD5校验和如下:
c798267f74a4cf7990e6a7ab4861673c
大家可以在终端中使用如下命令来验证镜像的MD5码是否跟上述的相同,如果一样的话,说明下载的镜像是完整的:
2.ROS小课堂ftp服务器下载
0x03 镜像安装
树莓派的系统需要安装在microSD卡中,安装了ROS kinetic系统的镜像会比较大,因此就要求microSD卡至少为16GB才能正常使用该新版本的系统镜像,若用8G的microSD卡可能会导致空间不足,安装失败。下面来介绍安装过程,由于下载的镜像是经过xz压缩的,所以首先需要解压镜像才能进行安装,解压命令如下:
xz -dkv stretch_ros_kinetic_desktop_full_v1_0.img.xz
在解压完成后就可以得到安装镜像stretch_ros_kinetic_desktop_full_v1_0.img,然后我们就可以使用ddrescue工具来将此镜像安装至microSD卡中。但是我们要先确保已经安装好了相关软件,安装命令如下:
sudo apt-get install gddrescue xz-utils
最后就需要将准备好的microSD卡插到卡托内再接到电脑上,开始将stretch_ros_kinetic_desktop_full_v1_0.img安装至microSD卡中。但是在安装前,需要先卸载microSD卡的挂载点,然后才能安装,最终的安装镜像命令如下,整个安装过程大概有10分钟时间,大家耐心等待即可:
sudo ddrescue -d --force stretch_ros_kinetic_desktop_full_v1_0.img /dev/sdb
具体的操作步骤,如下图所示,供大家参考:
0x04 镜像使用
当镜像安装好后,大家就可以加电启动系统了。启动时间感觉还是很快的,大概需要15秒钟即可启动完成。接下来大家要做一件事就是扩展文件系统。因为刚安装好系统后,系统无法识别microSD卡的所有分区。例如你的microSD卡本来有16G,但是刚烧写好系统开机后发现只有6.9G:
对于这种情况,我们可以使用系统自带的树莓派配置系统来扩展文件系统,如上图所示,可以输入以下命令:
sudo raspi-config
当我们重启后,再次查看文件系统的磁盘使用情况,就可以发现已经可以正常的识别microSD卡的所有空间了:
接下来我们就可以来看看ROS kinetic是否可以正常工作了:
对于如何使用create_ap来创建AP热点,可以参考以前发布的树莓派3B的镜像教程。里面有详细的介绍使用方法,这里就不再复述一遍了,大家可以参考该教程:
0x05 注意事项
[1].系统默认的用户名是corvin,默认的密码也是corvin。对于root用户的密码也是corvin。
[2].系统已经默认开启了ssh-server和vnc-server,这样大家就可以很方便的进行ssh终端连接和vnc远程桌面连接了。
[3].在使用create_ap创建AP热点时,需要先断开当前的wifi连接,这样才能使用create_ap创建AP热点供其他设备来连接。
[4].当前系统中无法使用apt来直接安装kinetic相关的ROS软件包,所有的ROS软件包都需要使用源码来编译。
[5].理论上stretch的系统可以向下兼容,所以该kinetic镜像也可以在树莓派3B上运行,但是目前没有经过完整的详细测试,稳定性不敢保证。
0x06 References
[1].树莓派官方系统raspbian下载. https://www.raspberrypi.org/downloads/raspbian/
[2].ROS wiki上提供的在树莓派上源码编译kinetic系统的操作过程. http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Kinetic%20on%20the%20Raspberry%20Pi
[3].树莓派RaspberryPi系统备份Image的制作. http://conanwhf.github.io/2016/08/25/rpi-cloneimg/
[4].linux下xz压缩解压命令. https://www.cnblogs.com/sunmmi/articles/9149414.html
[5].创建AP热点. https://github.com/oblique/create_ap
0x07 Feedback
大家在按照教程操作过程中有任何问题,可以直接在文章末尾给我留言,或者关注ROS小课堂的官方微信公众号,在公众号中给我发消息反馈问题也行。我基本上每天都会处理公众号中的留言!当然如果你要是顺便给ROS小课堂打个赏,我也会感激不尽的,打赏30块还会被邀请进ROS小课堂的微信群,与更多志同道合的小伙伴一起学习和交流!