树莓派安装ros docker

系统:bookworm或者ubuntu24都行

一、下载docker和拉取ros:noetic镜像

ubuntu

用鱼香ros脚本安装docker并拉取ros:noetic镜像: https://fishros.org.cn/forum/topic/20/小鱼的一键安装系列

wget http://fishros.com/install -O fishros && . fishros

选择docker安装ros noetic,arm64版本。 

bookworm

首先安装docker:安装Docker | Raspberry Pi 树莓派 (官网25年2月更新)

# 卸载旧版本(如果有):
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

# 添加 Docker 官方 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/debian/gpg -o /etc/apt/keyrings/docker_aliyun.asc
sudo chmod a+r /etc/apt/keyrings/docker_aliyun.asc

# 添加仓库到 Apt 源:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker_aliyun.asc] http://mirrors.aliyun.com/docker-ce/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker_aliyun.list > /dev/null
sudo apt-get update

然后安装docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

 推荐执行下面的指令以方便管理。否则每次运行docker指令还要加上sudo,很麻烦。

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker

 然后换源,我网上随便找了一个,不知道之后还能不能用:教程 | 2025国内可用Docker镜像源配置指南(文末命令一键执行)_docker镜像库国内源 2025-CSDN博客

创建配置文件目录(已存在可跳过)
sudo mkdir -p /etc/docker 
 
通过命令行生成配置(推荐新手)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.imgdb.de",
        "https://docker-0.unsee.tech",
        "https://docker.hlmirror.com"
    ]
}
EOF 
 
应用配置(必须执行)
sudo systemctl daemon-reload 
sudo systemctl restart docker 

最后,拉取arm64版本的docker镜像(ubuntu20)

sudo docker pull ros:noetic

二、创建容器

建名为ros_docker的容器:

sudo docker run -dit --name=ros_docker -v /dev:/dev -v /home/uav:/home/uav -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY -w /home/uav --privileged --net=host ros:noetic

参数含义参考Ubuntu通过docker安装任意版本ROS + 一键启动教程_ros docker-CSDN博客

最后设置一键进入ros_docker的脚本:

touch ~/.docker/setup/ros_docker_exec

将以下内容复制到ros_docker_exec文件中:

xhost +local:docker
docker exec -it ros_docker /bin/bash "$@"

 然后设置PATH环境变量:

echo 'export PATH=$PATH:/home/uav/.docker/setup' >> ~/.bashrc

然后就可以进入docker了。先启动docker容器(开机只需要启动一次)

docker start ros_docker

再进入启动的容器:

ros_docker_exec

初次进入容器,需要设置一下ROS的环境变量:

# 在ros_docker容器内
echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
### 在树莓派5上安装和配置ROS #### 安装前的准备 在开始之前,需确认所使用的树莓派型号以及其操作系统的版本。通常情况下,树莓派5会运行基于Debian的操作系统(如Raspbian或Ubuntu)。如果目标是在树莓派硬件本身上安装ROS,则可以选择以下两种方式之一:通过原生操作系统安装ROS或者利用Docker镜像简化环境设置。 #### 方法一:在树莓派5上的原生操作系统中安装ROS 此方法适用于希望直接在树莓派的操作系统中集成ROS的情况。以下是具体实现过程: 1. **更新系统包** 更新当前系统的软件源列表并升级已有的软件包。 ```bash sudo apt update && sudo apt upgrade -y ``` 2. **初始化 `rosdep` 工具** 使用 `rosdep` 来帮助管理依赖项。 ```bash sudo apt install python3-rosdep sudo rosdep init rosdep update ``` 3. **安装 ROS 软件包** 对于特定版本的 ROS(例如 ROS Noetic),可以直接通过 APT 进行安装。 ```bash sudo apt install ros-noetic-desktop-full ``` 如果需要其他版本的 ROS 或者 ROS 2,请根据官方文档调整命令[^1]。 4. **配置环境变量** 将 ROS 的路径添加到用户的 shell 配置文件中以便每次启动终端时自动加载。 ```bash echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` #### 方法二:使用 Docker 镜像部署 ROS 当不想污染本地系统或者遇到兼容性问题时,推荐采用容器化解决方案——即借助 Docker 技术来隔离开发环境。 1. **安装 Docker Engine** 参考官方指南完成 Docker安装流程。 ```bash curl -fsSL https://get.docker.com -o get-docker.sh sh get-docker.sh ``` 2. **拉取预构建好的 ROS Docker 镜像** 下载适合 ARM 架构的 ROS 映像。 ```bash docker pull osrf/ros:noetic-desktop-full ``` 3. **运行交互式的 ROS 环境** 启动一个新的容器实例进入其中执行后续操作。 ```bash docker run --rm -it --network host \ -v $(pwd):/workspace \ osrf/ros:noetic-desktop-full bash ``` 以上步骤完成后便可以在树莓派设备上成功搭建起 ROS 开发平台了[^2]。 ```python import rospy from std_msgs.msg import String def talker(): pub = rospy.Publisher('chatter', String, queue_size=10) rospy.init_node('talker', anonymous=True) rate = rospy.Rate(10) # 10hz while not rospy.is_shutdown(): hello_str = "hello world %s" % rospy.get_time() rospy.loginfo(hello_str) pub.publish(hello_str) rate.sleep() if __name__ == '__main__': try: talker() except rospy.ROSInterruptException: pass ``` 上述 Python 示例展示了如何创建一个简单的发布节点程序用于测试目的。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值