树莓派4B + Ubuntu20.04 Mate + ROS Noetic 环境配置笔记


前言

上周,小柯在虚拟机上用Ubuntu18.04配置了ROS Melodic(详见博客)。怎奈电脑比较低级,带不动虚拟机,于是我又只能寻求在树莓派上配置 ROS 的方法。再次整理成笔记,给大家分享。


1. 硬件准备

从我了解到,Ubuntu 有专门用于树莓派的操作系统。也有对应的教程。 从Ubuntu 官网了解到,给树莓派安装 Ubuntu 操作系统需要准备以下硬件:

    树莓派4B主板 Micro SD 卡(至少9GB,推荐16GB,由于ROS等内容后期会占用一定空间,在此我用了64GB) 一台带有 Micro SD 卡槽的电脑(用于烧录系统) 一个显示器 一套键盘鼠标

这里的硬件需求不同于安装 Raspberry Pi OS。后者开机时,可以没有键盘鼠标,可以直接通过SSH协议登陆树莓派,进行后续配置。我之前也试了这种方法,结果失败了。无奈,只能给我的树莓派配齐各种外设。

2. 下载安装镜像

Ubuntu 官网目前只给出了Ubuntu Desktop 21.04,我之前也试了一下,配置完ROS专用源之后,卡在了 sudo apt-get update 上。 从下图可见,系统没法找到相应的源地址: 究其原因,在于 Ubuntu21 版本过新,ROS暂时不支持。我们对比一下 Ubuntu20和21的update指令,可以发现,Ubuntu20 用的是 ‘focal’,但是Ubuntu21 用的是 ‘hirsute’。下图为 Ubuntu20 上运行 sudo apt-get update 的结果。 当我全网寻找 Ubuntu20 Desktop 版本系统时,我一个救星同学告诉我,Ubuntu20 Mate 是专门为树莓派开发的系统,可以一试。所以我就拿 Ubuntu20 Mate 完成了后续的配置。


直接用搜索引擎搜索“Ubuntu 20 Mate"字样,我找到了 。点击页面上的"Download"标签进入其。从下图可见,它有专门为 Raspberry Pi 开发的版本。 由于 Raspberry Pi 4B 是 ARM64 结构,故选择64-bit版本下载。在此附上一个下载链接 下载完成后解压,用烧录系统。在系统选择时选择最后一项(Use Custom),然后选择刚刚解压的 .img 系统镜像烧录。

3. 启动系统

sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

至此,我们的系统就启动成功了。

4. 安装配置 ROS Noetic

在前一篇博客中,小柯写到,我们需要更换本地软件源。 但是,Ubuntu20 会自动帮我们从最优的服务器下载软件,所以就不需要进行这一步操作了。但后面几步需要逐一进行。

4.1 添加专用源地址

sudo sh -c echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list

4.2 添加密钥

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

4.3 安装 ROS Noetic

sudo apt-get update
sudo apt install ros-noetic-desktop-full

对应的添加模组的方法可以参考先前的。

4.4 配置环境变量

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

4.5 安装依赖环境

在用原来的方法安装依赖环境时,系统给我报了错。

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential

原因在于它找不到相应软件。 通过一定尝试,我发现新的 ROS 依赖环境都是基于 Python3 编写,而之前的依赖环境基于 Python2。所以,我们只需要在上面指令中的每一个 python 后面跟上数字3即可。

sudo apt install python3 python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

4.6 初始化rosdep与catkin

最后,我们还是用同样的方法初始化 rosdep 和 catkin 工作目录。 详见中3.7和3.8部分。至此,我们就完成了所有配置。

经验分享 程序员 微信小程序 职场和发展