iRobot 社のお掃除ロボット「ルンバ(Roomba)」は 700 シリーズ以前のモデルでは mini-DIN のインターフェースポートがありシリアル通信にて外部からルンバを操作するためのインタフェース Roomba Open Interface (ROI) が提供されていました.またルンバ 900 シリーズではシリアルポートが micro USB となり USB ケーブル経由で外部コンピュータと簡単につなげて ROI が利用できるようになっていました.
そしてルンバから派生した掃除機能を廃して趣味や教育用をターゲットとした Create ロボットもルンバと共通の ROI で操作可能です.なおかつ Create 向けとして ROI の ROS インタフェースが GitHub で提供されているので この ROI-ROS インタフェースを用いることでシリアルポートの付いているルンバを ROS から操作することが可能となっています.
本シリーズの記事では PC やラズパイから USB ケーブルで 900 シリーズのルンバに接続して ROS からルンバを操縦する方法を紹介します.
記事のシリーズ構成は次のようになる予定です.
ルンバを Ubuntu PC から ROS を使って USB 有線操縦することを目的とした今回の記事におけるハードウェア・ソフトウェア構成は以下のようになっています.
OS などの環境については本記事執筆直近の動作検証では Ubuntu 24.04 と ROS Jazzy (ROS2) の組み合わせで行っていますが,過去に行った検証では Ubuntu 22.04 + ROS Humble の組み合わせでも動作確認しています.
使用コードについては今回のシステム構成において使いやすいように Create Robot のソフトウェア GitHub リポジトリ https://github.com/AutonomyLab/create_robot から
フォーク https://github.com/y-yosuke/create_robot/tree/humble-add-setmode して利用しています.
Ubuntu 24.04 に ROS Jazzy のインストールする手順は下記リンク先の ROS 2 Documentation: Jazzy – Installation Ubuntu (deb packages) を参照して実行してください.
依存パッケージをインストールできるように rosdep をセットアップしておきます.
$ sudo apt install python3-rosdep $ sudo rosdep init $ rosdep update
ビルドのために colcon 関連パッケージをインストールします.
$ sudo apt install python3-colcon-common-extensions
ROS ワークスペースを作成して GitHub からコードをクローンし,インストール・ビルドを実行します.
$ source /opt/ros/jazzy/setup.bash $ mkdir -p ~/roomba_ws/src $ cd ~/roomba_ws/src/ $ git clone -b humble-add-setmode https://github.com/y-yosuke/create_robot.git $ git clone https://github.com/AutonomyLab/libcreate.git $ gnome-text-editor ~/roomba_ws/src/libcreate/include/create/packet.h $ cd ~/roomba_ws/ $ rosdep install -r -y --from-paths src --ignore-src $ colcon build $ source ~/roomba_ws/install/setup.bash
上記手順の libcreate を git clone したあとに下記コマンドを追加しています.
$ gnome-text-editor ~/roomba_ws/src/libcreate/include/create/packet.h
本コマンドを実行するとテキストエディタが起動して修正が必要なファイル packet.h が開かれます.
下のように packet.h の 35行目 に #include <string>
を挿入してファイルを保存してからテキストエディタを閉じます.
libcreate / include / create / packet.h
#define CREATE_PACKET_H #include <mutex> #include <string> namespace create { class Packet {
これはビルドするのに必要な下記リンク先の修正のプルリクエストがまだ反映されていないための修正作業です.今後このプルリクエストが libcreate の master ブランチにマージされた後は不要となります.
Ubuntu PC のソフトウェアのセットアップが終了したら Ubuntu PC にルンバとゲームパッドもしくは 3D マウスを接続します.
ルンバ 900 シリーズの micro USB ソケットは上面右側にある細長いカバーを外すとあります.このカバーは工具なしで手で外すことができます.
ルンバが接続されているシリアルポートの権限を変更してユーザからもアクセス可能な状態にします.
$ sudo chmod a+rw /dev/ttyACM0 $ sudo usermod -a -G dialout $USER
ターミナル 1
$ source ~/roomba_ws/install/setup.bash $ ros2 launch create_bringup create_1.launch
launch 後,正常に Ubuntu PC からルンバに通信が確立されているとルンバ側で短いビープ音が鳴ります.
ターミナル 2
ルンバへの速度指令を出すためのゲームパッドもしくは 3D マウスのノードを実行するためにターミナルをもう1つ開いて実行します.
< Xbox360 互換ゲームパッド使用の場合 >
$ source ~/roomba_ws/install/setup.bash $ ros2 launch create_bringup joy_teleop.launch
< 3Dマウス( 3DConnexion SpaceMouse Wireless )使用の場合 >
$ source ~/roomba_ws/install/setup.bash $ ros2 launch create_bringup spacenav_teleop.launch
spacenav_teleop.launch においてはデッドマン・スイッチの設定はないので SpaceMouse の前後・ヨー軸のねじり入力がそのままルンバへの速度指令として出力されます.
次の動画はゲームパットを用いてルンバを動かしたときのものです.デッドマン・スイッチの L1 を押しながらアナログスティック R を操作することでルンバへの速度指令が出力されている様子が見て取れるかと思います.
ルンバ操作を終了するときは各ターミナルで実行しているプロセスを Ctrl+C で終了してください.
今回の記事はここまでです.
本シリーズ次回の記事ではルンバが動きやすいようにバッテリー駆動のラズベリーパイをルンバと USB 接続し,カメラも併せてラズパイに接続することで,ルンバ 900 シリーズを WiFi を介した ROS 遠隔操作ロボットのようにしてみる様子を紹介する予定です.
コメントを投稿するにはログインしてください。
著者について