この Docker コンテナには、ROS 2 Humble、Gazebo Fortress、および TurtleBot 4 シミュレーションが含まれています。 Docker コンテナは、グラフィック カードがなくても汎用ハードウェアで適切に動作するように構成されています。最も合理的に構成されたハードウェアは、少なくとも 0.2 のリアルタイム係数でシミュレーションを実行できるはずです。
この Docker コンテナは、おもちゃの TB4 ノードおよび関連する PyCon 2024 講演または ROSCon 2024 ワークショップのサンプル コードとともに使用することを目的としています。
この Docker には、完全な ROS 2 Humble インストールも含まれています。 ROS スキルを磨きたい場合は、ROS 2 チュートリアルに取り組むことができます。 CLI チュートリアルから始めることをお勧めします。
このワークショップでは、あなた自身の冒険を選択してください。次の 2 つの大きな決定を下す必要があります。
しかし、待ってください、まだあります! docs.ros.org にある素晴らしいチュートリアルを試してみませんか。その方法についても説明しています。
sudo apt install docker.io
で Docker をインストールするsudo 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
ここで変更されたのは、最後から 2 番目のパラメーターであるコンテナーの名前だけであることに注意してください。
ここで、作業内容を保存する場所を決定する必要があります。選択肢は 2 つあり、ゼロから始めてすべてを自分で構築するか、完成したプロジェクトに沿って進めていくかの 2 つです。 3 番目のオプションもあります。このオプションでは、コンテナーを起動するだけですが、Docker の内部ツールを使用して作業内容を保存します。確かにこれは可能ですが、お勧めしません。
私たちが推奨するワークフローである最初から作業する場合は、ディレクトリを作成するだけです。
mkdir tb4_toy
rocker --x11 --devices=/dev/dri --volume=:/opt/ros/overlay_ws/src/tb4_toy bash
実行します。ディレクトリは、実際のディレクトリに置き換えられています。新しいディレクトリ、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
実行します。ディレクトリは、実際のディレクトリに置き換えられています。新しいディレクトリ、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 にマウントした場合は、ホスト システム上の任意のエディタを使用してファイルを編集することもできます。これまでにターミナル エディタを使用したことがない場合は、これが簡単な方法かもしれません。
ロッカーなしでこのコンテナを使用するための包括的なガイドがここにあります。このガイドには、適切な Docker コンテナを簡単に起動できるようにする Bash スクリプトが多数含まれています。このガイドでは、コンテナ内で 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 '{}'