Dieser Docker-Container enthält ROS 2 Humble, Gazebo Fortress und die TurtleBot 4-Simulation. Der Docker-Container wurde so konfiguriert, dass er gut auf handelsüblicher Hardware ohne Grafikkarte funktioniert. Die sinnvollste Hardwarekonfiguration sollte in der Lage sein, die Simulation mit einem Echtzeitfaktor von mindestens 0,2 auszuführen.
Dieser Docker-Container soll mit diesem Beispielcode für einen Spielzeug-TB4-Knoten und den zugehörigen PyCon 2024-Talk oder ROSCon 2024-Workshop verwendet werden
Dieser Docker enthält auch eine vollständige ROS 2 Humble-Installation. Wenn Sie Ihre ROS-Kenntnisse auffrischen möchten, können Sie die ROS 2-Tutorials durcharbeiten. Wir empfehlen Ihnen, mit den CLI-Tutorials zu beginnen.
In diesem Workshop können Sie Ihr eigenes Abenteuer wählen. Sie müssen zwei große Entscheidungen treffen:
Aber warten Sie, es gibt noch mehr! Möchten Sie einfach nur einige der tollen Tutorials auf docs.ros.org ausprobieren? Wir haben auch Anleitungen dazu!
sudo apt install docker.io
sudo usermod -aG docker $(whoami)
zur Docker-Gruppe hinzufügen.source ./<venv>/bin/activate
aufrufen, bevor Sie Ihren Container starten.Wenn Sie den Docker-Container von Grund auf erstellen möchten:
git clone [email protected]:kscottz/turtlebot4_docker.git
docker build . -t tb4
Wenn Sie das vorgefertigte Docker-Image verwenden möchten, führen Sie Folgendes aus:
docker pull osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4
Beginnen wir damit, darüber zu sprechen, wie Sie Ihren Container starten. Wir haben einige Optionen bereitgestellt, um den Workshop durchzugehen. Werfen Sie einen Blick nach unten, aber starten Sie den Container noch nicht! Sie haben noch ein paar weitere Optionen zur Auswahl!
rocker --x11 --devices=/dev/dri osrf/icra2023_ros2_gz_tutorial:roscon2024_tutorial_humble_turtlebot4 bash
rocker --x11 --devices=/dev/dri tb4 bash
Beachten Sie, dass sich hier lediglich der Name des Containers geändert hat, der der vorletzte Parameter ist!
Jetzt müssen Sie entscheiden, wo Sie Ihre Arbeit speichern möchten. Sie haben zwei Möglichkeiten: Sie können bei Null anfangen und alles selbst erstellen oder Sie können von einem fertigen Projekt ausgehen. Es gibt auch eine dritte Option, bei der Sie einfach den Container starten, aber die internen Tools von Docker verwenden, um Ihre Arbeit zu speichern. Obwohl dies sicherlich möglich ist, empfehlen wir es nicht.
Wenn Sie von Grund auf arbeiten möchten, was unser bevorzugter Arbeitsablauf ist, müssen Sie lediglich ein Verzeichnis erstellen:
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> bash
wobei das Verzeichnis durch Ihr Verzeichnis ersetzt wurde Neues Verzeichnis und Container ist der Container, den Sie verwenden möchten.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Wenn Sie mit einem fertigen Codebeispiel arbeiten möchten, gehen Sie bitte wie folgt vor
git clone [email protected]:kscottz/tb4_toy.git
– hier ist der Code, falls Sie nur einen Blick darauf werfen möchten.rocker --x11 --devices=/dev/dri --volume=<full path to your directory>:/opt/ros/overlay_ws/src/tb4_toy <container name> bash
wobei das Verzeichnis durch Ihr Verzeichnis ersetzt wurde Neues Verzeichnis und Container ist der Container, den Sie verwenden möchten.rocker --x11 --devices=/dev/dri --volume=/home/kscottz/Code/tb4_toy/:/opt/ros/overlay_ws/src/tb4_toy tb4 bash
Beachten Sie, dass Sie für dieses Tutorial jederzeit im Container arbeiten müssen und Ihr Hostsystem unberührt lassen sollte. *Wenn Sie die interne Konfiguration des Docker-Containers ändern und diese speichern möchten, müssen Sie zum Speichern [docker commit](https://docs.docker.com/reference/cli/docker/container/commit/)
verwenden Deine Arbeit.
Wenn Ihr Laptop über eine ausgefallene Grafikkarte verfügt, können Sie diese aktivieren, indem Sie die Zeile --devices=/dev/dri
weglassen, wenn Sie Ihren Container starten. Wenn Sie über eine separate Grafikkarte verfügen, empfehlen wir Ihnen, diese zu verwenden! Wenn Sie keine Grafikkarte haben, machen Sie sich keine Sorgen! Wir haben diesen Workshop speziell für die Arbeit mit älteren Laptops konfiguriert.
Der Container für diesen Workshop enthält die meisten gängigen Terminal-Editoren, die auf Linux-Systemen zu finden sind. Sie können diese gerne nutzen. Wenn Sie Ihr Dateisystem in Docker gemountet haben, können Sie auch jeden Editor auf Ihren Hostsystemen zum Bearbeiten von Dateien verwenden. Wenn Sie noch nie einen Terminal-Editor verwendet haben, ist dies möglicherweise der einfachere Ansatz.
Eine ausführliche Anleitung zur Verwendung dieses Containers ohne Rocker finden Sie hier. Diese Anleitung enthält eine Reihe von Bash-Skripten, die das Starten eines geeigneten Docker-Containers einfach machen! Dieser Leitfaden bietet auch einige alternative Ansätze zur Durchführung der ROS-Entwicklung innerhalb eines Containers.
Sobald Sie Ihren Container gestartet haben, können Sie ROS und Gazebo starten, indem Sie die folgenden Befehle ausführen:
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 '{}'