RoombaをROSから動かしてみる
ボードPC「Kakip」上のubuntuからシリアル通信でRoombaを動かすことに成功しましたので次はROSから動かしてみます
以下のサイトを参考にさせていただきました
ROS2のディストリビューションはJazzyですが、AutonomyLab/create_robotのhumbleブランチを使用しました。README.mdの通りでインストールできています。
ホストPC側から $ ros2 launch create_bringup create_2.launch でRoombaとの通信状態も監視できましたし、別ターミナルからもSSHでKakipにログインして
$ ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear: {x: 0.1}, angular: {z: 0.3}}'
でRoombaが少しずつ前進することを確認出来ました。
TurtleBot3のインストール
続いてホストPCからTurtleBot3を使ってキーボード操作で動かすことにトライします。
以下のサイトを参考にさせていただきました。
上のサイトの通りに実行したのですが、まだGazebo関連パッケージが不足していたようです
解決手順
1. 不足しているGazebo関連パッケージのインストール
新しいGazebo(Harmonic)と、ビルドに必要な開発用パッケージ(libgz-sim8-dev)を明示的にインストールします。
sudo apt update
sudo apt install ros-jazzy-ros-gz ros-jazzy-gz-sim-vendor libgz-sim8-dev
2. rosdepの更新と再実行(念のため)
rosdep update
cd ~/turtlebot3_jazzy_ws
rosdep install --from-paths src -y --ignore-src
3. 古いビルドキャッシュの削除
cd ~/turtlebot3_jazzy_ws
rm -rf build/ install/ log
4. 再ビルド
colcon build --symlink-install
5.「パッケージが見つかりません」となってしまいやり直し
Gazebo公式リポジトリはUbuntu 24.04の標準リポジトリやROS 2の標準リポジトリには含まれていないためGazeboの開発元であるOSRF(Open Source Robotics Foundation)の公式専用リポジトリをシステムに手動で追加します
# 1. 必要なツール(curlなど)をインストール
sudo apt install curl lsb-release gnupg -y
# 2. Gazebo公式の暗号キー(GPGキー)をダウンロード
sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/share/keyrings/pkgs-osrf-archive-keyring.gpg
# 3. リポジトリをシステムのリストに追加
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null
sudo apt update
sudo apt install gz-harmonic libgz-sim8-dev ros-jazzy-ros-gz -y
6.古いビルドの削除と再ビルド
cd ~/turtlebot3_jazzy_ws
# 古いビルドファイルを完全に削除
rm -rf build/ install/ log/
# いざ、再ビルド!
colcon build --symlink-install
シミュレータ(Gazebo)の起動
無事にビルドが通りましたので、現在開いているターミナルで、環境を読み込んでから起動コマンドを打ちます。
# 1. ワークスペースの設定を読み込む
source /opt/ros/jazzy/setup.bash
source ~/turtlebot3_jazzy_ws/install/setup.bash
# 2. 動かすロボットのモデルを指定する(今回は定番のburger)
export TURTLEBOT3_MODEL=burger
# 3. シミュレータ環境を立ち上げる
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
キーボードで操縦する
Gazeboの画面が立ち上がり、小さなロボット(TurtleBot3 Burger)と障害物が表示されたら、**「新しいターミナル(2つ目の画面)」**を開いて以下のコマンドを実行します。
# 1. こちらのターミナルでも設定を読み込む
source /opt/ros/jazzy/setup.bash
source ~/turtlebot3_jazzy_ws/install/setup.bash
export TURTLEBOT3_MODEL=burger
# 2. キーボード操作ノードを起動
ros2 run turtlebot3_teleop teleop_keyboard
画面に w/x(前進/後退)、a/d(左右回転)、s(停止)といった操作案内のテキストが出ます。
このターミナルを選択した(アクティブにした)状態で w などを押すと、Gazebo上のTurtleBot3がスルスルと走り出しました!
でもRoombaは動かない
ですが、肝心のRoombaは動かなかったので、次回に続きます…