前言

2024/11/17:

自用,仅供参考。

目标是想在树莓派系统上不使用Ubuntu的条件下运行ROS2。

根据此ROS2 Humble官方文档,只能在64位树莓派系统使用Docker,并且只能兼容ros-core, ros-base或者ros-perception中的一种。

ROS2 Humble Document

三种变体的具体区别可查看此官方描述,粗略地说,perception最全面,core版本最基础。这意味着我们无法使用Ubuntu中的ros-desktop或者ros-desktop-full版本,基本告别turtlesim教程包和可视化工具了。


1. 安装Docker

由于树莓派OS属于Debian,根据Docker官网的安装指南,我们采用最简单的脚本安装。在一个合适的目录下打开终端,输入:

 curl -fsSL https://get.docker.com -o get-docker.sh
 sudo sh get-docker.sh

等待安装…

安装完毕后,验证可通过:

sudo docker run hello-world

若出现 Hello from Docker! 则说明你很顺利,还没有进入新时代,请跳转至1.2节。
若显示连接超时,则需要

1.1 设置国内Docker镜像源

根据其他CSDN教程,尝试了阿里云的镜像,仅限公网并且内容有限,失败了。

24年6月后很多docker镜像都失效了,本文基于1panel
首先创建镜像源,重载并重启docker:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<EOF
{
    "registry-mirrors": ["https://docker.1panel.dev"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

现在再运行

sudo docker run hello-world

若仍显示Time out超时或者出现daemon字样,请自行查找其他可行的docker镜像源
若运行成功,恭喜你,完成了专属东大的挑战,本节难度为本教程最高。

1.2 添加docker组

每次使用docker命令前都要加一句sudo太麻烦,添加用户至docker组(官方链接)。
新建Docker组,并填写你的用户名(终端里@符号左边那个):

sudo groupadd docker
sudo usermod -aG docker 用户名

更新docker组并用hello-world验证:

newgrp docker
docker run hello-world

这样就不用每次在docker前添加sudo。

2. 安装ROS2

获取上文镜像源(或者你自己找的镜像源也行)中ROS2 Humble的perception版本(别找osrf/下的,因为那里没有我们需要的perception版本),可通过:

docker pull ros:humble-perception

耐心等待装载。若成功,恭喜你,距你的树莓派运行ROS2已经八九不离十了。

3. 运行ROS2

3.1 进入Docker

进入时给该容器起个名,叫myros2(我的荒野机器人二代),容器内新建终端时有用:

docker run -it --name myros2 ros:humble-perception

这样就水灵灵地进入docker容器了,每次记得保存(ctrl+p)后再退出(ctrl+q)!

3.2 ROS2配置

接下来跟着官方教程即可,进来干的第一件事:

echo "source /opt/ros/humble/setup.sh" >> ~/.bashrc
source ~/.bashrc

光速建工作区,写入偷懒指令

mkdir -p ~/ros2_ws/src
echo "alias build='cd ~/ros2_ws;colcon build;source install/setup.bash'" >> ~/.bashrc

3.3 Docker新建终端

若同时进行多窗口终端运行,需要新建树莓派终端,然后输入

docker exec -it myros2 /bin/bash

总结

通过本文的步骤,我们成功在树莓派 OS 上利用 Docker 安装并运行了 ROS 2 Humble 的 perception 版本。从安装 Docker,到配置国内镜像源,再到运行容器并配置 ROS 2 环境,整个过程避免了对树莓派 OS 的大幅改动,实现了高效而灵活的 ROS 2 使用环境。希望这份树莓派荒野机器人二代指南能为你的树莓派机器人开发提供便捷参考!

Logo

立足具身智能前沿赛道,致力于搭建全球化、开源化、全栈式技术交流与实践共创平台。

更多推荐