解决ROS在树莓派中catkin_make卡死问题

在树莓派catkin_make时 在相同地方出现卡死, 关机之后重启可以继续使用。

我用的是树莓派安装的Ubuntu 18.04 ,默认设置的swap交换空间不够,而编译某些文件的时候需要较大的交换空间,树莓派的交换空间被用满所以树莓派看起来好像是死机了的样子。

解决方法,扩展Ubuntu的交换空间。
这里使用的方法参照了 前人的博客,深表感谢。

第一步:确保系统中有足够的空间来用做swap交换空间,我在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件,执行以下命令

sudo mkdir ~/opt/image

cd /opt/image
sudo touch swap

第二步:添加交换文件并设置其大小为2G,命令窗口敲击以下命令

sudo dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000

等待返回如下结果:
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB, 2.0 GiB) copied, 242.095 s, 8.7 MB/s

该步骤可能需要等待十几秒,有伙伴以为又死机了,耐心等待就行了。

第三步:创建(设置)交换空间,使用命令mkswap

sudo mkswap /opt/image/swap

执行后显示如下:

Setting up swapspace version 1, size = 2 GiB (2097147904 bytes)

第四步:检查现有的交换空间大小,使用命令free,由于没有启动,因此swap显示0

free -m

执行后显示如下:

              total        used        free      shared  buff/cache   available
Mem:            925         185          28          14         711         660
Swap:             0           0           0
或者检查meminfo文件

grep SwapTotal  /proc/meminfo


第五步:启动新增加的2G的交换空间,使用命令swapon

sudo swapon /opt/image/swap


第六步:确认新增加的2G交换空间已经生效,使用命令free
free -m

              total        used        free      shared  buff/cache   available
Mem:            925         328          56          32         541         502
Swap:          1999           0        1999
或者检查meminfo文件

grep SwapTotal  /proc/meminfo


第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效
sudo vim /etc/fstab  
在文件最后加入:
/opt/image/swap    /swap    swap    defaults 0 0

重启之后再次编译,就成功了。
 

上一篇:ROS入门 工程结构


下一篇:使用ROS输出hello world