1. BACKGROUND
AutoRickey 是准备搭建的自动导航小车,基于现有开源代码ROS-Navigation,力争将小车跑起来. 希望通过记录整个开发过程,让每个人都能搭建一个自己的自动导航机器人.
2. ENVIRONMENT SETUP:
a) Ubuntu mate 18.04
这个项目中使用的开发板是树莓派 Model 3B+, 搭载Ubuntu Mate 18.04 系统.
1. 镜像下载
镜像文件在ubuntu官网上就能找到,二话不说,先下载下来放着.
接下来就是将镜像文件烧进SD卡了. Linux系统下,直接双击镜像文件,使用 GNOME Disks tool 就可直接进行烧录.如果未安装可以通过命令行sudo apt install gnome-disk-utility
进行安装.
在Destination中选择插入的存储卡,大胆点击 Start Restoring, 接下来就是漫长的等待时间了.
2. 镜像备份
- 将SD卡插入电脑并使用df -h
指令,查看sd卡是否被挂载
-
- 如果SD卡没有挂载,需要先进行手动挂载
$ cd /media
$ sudo mkdir sdb1 sdb2
$ sudo mount /dev/sdb1 /media/sdb1
$ sudo mount /dev/sdb2 /media/sdb2
-
- 使用fdisk -l
查看SD卡镜像的文件夹
-
- 制作镜像文件
sudo dd bs=4M if=dev/sdb of=backup.img
3. 镜像恢复
与第一步中的烧录过程一样再来一遍就好.
b) ROS Melodic
安装过程跟着官方教程走就好, 安装ros-melodic-Desktop-full版本.
安装完成后运行roscore
确认ROS已经安装成功.
在加入新代码后的编译过程中,可能会出现以下报错信息
c++: internal compiler error: Killed (program cc1plus)
一般情况下这是由于树莓派内存不够用造成的,解决这个问题的方法是创建SWAP文件,利用硬盘空间来分担内存的压力. 具体操作过程如下:
- 创建SWAP文件
dd if=/dev/zero of=/swapfile bs=1M count=2048
其中2048是创建的内存大小, 单位为Mb.
mkswap /swapfile
- 启用SWAP文件
swapon /swapfile
如果出现提示“swapon: /swapfile: insecure permissions 0644, 0600 suggested.”, 则先修改swap文件权限,后再次执行上述命令.
修改权限方式为:sudo chmod 600 /swapfile
- 查看swap运行情况
运行free -m
会发现swap一列的total值已经更改为了之前设定的2048 - 永久生效
在 /etc/fstab 中添加:/swapfile swap swap defaults 0 0
一切完成后,再次运行catkin_make, 不会再出现报错和卡死的情况,不过该慢还是慢的,树莓派的硬件配置毕竟是硬伤…