树莓派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部分。至此,我们就完成了所有配置。