該 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 ./<venv>/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=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> 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=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> 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 '{}'