该 Docker 容器包含 ROS 2 Humble、Gazebo Fortress 和 TurtleBot 4 模拟。 Docker 容器已配置为在没有显卡的商用硬件上正常工作。最合理配置的硬件应该能够以至少 0.2 的实时因子运行模拟。
此 Docker 容器旨在与玩具 TB4 节点的示例代码以及相关的 PyCon 2024 演讲或 ROSCon 2024 Workshop 一起使用
该 Docker 还包含完整的 ROS 2 Humble 安装。如果您想温习 ROS 技能,可以学习 ROS 2 教程。我们建议您从 CLI 教程开始。
这个工作坊让您选择自己的冒险经历。您需要做出两个重大决定:
但是等等,还有更多!您是否只想尝试 docs.ros.org 上的一些精彩教程,我们也有关于如何执行此操作的说明!
sudo apt install docker.io
安装 Dockersudo usermod -aG docker $(whoami)
将自己添加到 Docker 组source .//bin/activate
。如果您想从头开始构建 Docker 容器:
git clone [email protected]:kscottz/turtlebot4_docker.git
docker build . -t tb4
如果您想使用预构建的 Docker 镜像,请运行:
docker pull osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4
让我们首先讨论如何启动容器。我们提供了几个选项来完成研讨会。请看下面,但先不要启动容器!您还有几个选择可供决定!
rocker --x11 --devices=/dev/dri osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4 bash
rocker --x11 --devices=/dev/dri tb4 bash
请注意,此处更改的只是容器的名称,这是倒数第二个参数!
现在您必须决定要将工作保存到哪里。您有两种选择,从头开始并自己构建所有内容,或者从已完成的项目开始。还有第三种选择,您只需启动容器,但使用 Docker 的内部工具来保存您的工作。虽然这当然是可能的,但我们不推荐这样做。
如果您想从头开始工作(我们的首选工作流程),那么您要做的就是创建一个目录:
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
,其中目录已替换为您的目录new目录,container是你要使用的容器。rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
如果您想使用已完成的代码示例,请执行以下操作
git clone [email protected]:kscottz/tb4_toy.git
——如果你只是想看一下,这里是代码。rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
,其中目录已替换为您的目录new目录,container是你要使用的容器。rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
请注意,本教程将要求您始终在容器内工作,并且应保持主机系统不变。 *如果您碰巧更改了 Docker 容器的内部配置并希望保存它,则需要使用[docker commit](https://docs.docker.com/reference/cli/docker/container/commit/)
来保存你的工作。
如果您的笔记本电脑有一个精美的显卡,您可以在启动容器时通过省略以下行来启用它: --devices=/dev/dri
。如果您有独立显卡,我们建议您使用它!如果您没有显卡,也不用担心!我们专门将此研讨会配置为在旧笔记本电脑上运行。
本次研讨会的容器包含 Linux 系统上的大多数常见终端编辑器。非常欢迎您使用它们。如果您将文件系统安装到 Docker 中,您还可以使用主机系统上的任何编辑器来编辑文件。如果您之前从未使用过终端编辑器,这可能是更简单的方法。
我们在此处提供了有关在不使用 Rocker 的情况下使用此容器的综合指南。本指南包含许多 Bash 脚本,可以轻松启动适当的 Docker 容器!本指南还提供了一些在容器内执行 ROS 开发的替代方法。
启动容器后,您可以通过运行以下命令来启动 ROS 和 Gazebo:
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
source ./install/setup.bash
colcon build
ros2 launch turtlebot4_ignition_bringup turtlebot4_ignition.launch.py world:=maze
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 30.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
ros2 run teleop_twist_keyboard teleop_twist_keyboard
ros2 run tb4_toy toy_node
ros2 service call /do_loopy std_srvs/Trigger '{}'