引言

本文用来记录如何在raspberry 3B上搭建起ros2的docker开发环境。

实现

安装docker

参考如何建立并使用docker

ros2 image from dockerhub

本想建立foxy的docker container 但是由于image不支持arm v7所以改用ros2 Eloquent Elusor

ros2 所有历史版本链接,拉image方法如下所示1

sudo docker pull ros:eloquent
=======================================
eloquent: Pulling from library/ros
c61ae1d5a395: Pull complete
efaa8fe9a238: Pull complete
f07c60aae226: Pull complete
d935c6c5648a: Pull complete
6ced11f60bd4: Pull complete
726417b7cadc: Pull complete
e39a0556c865: Pull complete
eced7a362477: Pull complete
1523438a4fb8: Pull complete
6e093b11ddd1: Pull complete
a8798cae8c98: Pull complete
b8ec2d7ab7bd: Pull complete
fdf1b7fb9968: Pull complete
Digest: sha256:4e05251eba35f0df11f8ac5eb33e97a073b55c8e694f883b3ebce09879127235
Status: Downloaded newer image for ros:eloquent
docker.io/library/ros:eloquent

启动ros2 bash

sudo docker run -it ros:eloquent /bin/bash
#这里应该已经进入了docker中,使用下边命令可以再次确认
==================================================
root@5c3699c0f05d:/# ros2 -h
usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ...

ros2 is an extensible command-line tool for ROS 2.

optional arguments:
  -h, --help            show this help message and exit

Commands:
  action     Various action related sub-commands
  component  Various component related sub-commands
  daemon     Various daemon related sub-commands
  doctor     Check ROS setup and other potential issues
  interface  Show information about ROS interfaces
  launch     Run a launch file
  lifecycle  Various lifecycle related sub-commands
  msg        Various msg related sub-commands
  multicast  Various multicast related sub-commands
  node       Various node related sub-commands
  param      Various param related sub-commands
  pkg        Various package related sub-commands
  run        Run a package specific executable
  security   Various security related sub-commands
  service    Various service related sub-commands
  srv        Various srv related sub-commands
  topic      Various topic related sub-commands
  wtf        Use `wtf` as alias to `doctor`

  Call `ros2 <command> -h` for more detailed usage.

新启一个命令窗口输入:

pi@raspberrypi:~ $ sudo docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS         PORTS     NAMES
5c3699c0f05d   ros:eloquent   "/ros_entrypoint.sh …"   2 minutes ago   Up 2 minutes             stupefied_heyrovsky

如果不是第一次进入该docker,需要source ros的目录

root@5c3699c0f05d:/# source /opt/ros/eloquent/setup.bash

总结

这篇文章主要讲了如何新建一个简单的ros2 image,成功建立一个container并且在其中运行了bash。后续会在此基础上,通过配置文档搭建稳定的ros2 docker开发环境。


  1. Can you install Noetic with Docker on a Raspberry Pi? ↩︎

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐