おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回はROSをつかってキーボードでルンバを動かすことに成功しました。今回はルンバのシミュレータでPythonプログラムの動作を確認し、ルンバ実機で動かしてみます。

今回もdemura.netさんの記事を参考にして進めてみます。
Pythonプログラムを眺めてみる
記事にはPythonで書かれたプログラムが掲載されています。39行でコメントもついていて読みやすいです。Pythonプログラムでmoveというnodeを作り、/create1/cmd_velというtopicを一定間隔でGazeboシミュレーターにpublishして仮想のルンバを動かすというものです。
これをrqtというツールで構造を可視化すると次の図が表示されます。(クリックして拡大)

オレンジ色の枠で囲んだところが今回Pythonプログラムで作成したmoveノードになります。
/create1はルンバ本体のノードです。
Gazeboシミュレータでルンバの動きを確認する
記事通りの手順で実際に動かすとこのような画面が表示されます。この画面はPC上のUbuntuですが、勉強会では各自で持ち込んだRaspberry Pi 4(4GB)上で動かしました。

3Dでルンバが表示されたあとに、Pythonで書いたmoveノードを起動すると、円を描くように動きます。YouTubeに動画も載せておきました。
このようにシミュレータ上ではルンバを動かすことができました。これを実際のルンバで試してみます。
ルンバの実機で動作を確認
Pythonで書いたmoveノードをルンバ実機で動かしてみます。

以下の手順を行います。
1. Raspberry Pi 4にモバイルバッテリーを接続し電源を入れる。
2. 前回の勉強会の時のようにRaspberry Pi 4のUSBにUSB-シリアル変換を使ってルンバを接続し、ルンバの電源を入れる。
3. 新たなターミナルを1つ立ち上げて以下のコマンドを入力する。
$ roslaunch ca_driver create_2.launch
4. 新たなターミナルを1つ立ち上げてmove.pyノードを実行する。
$ roscd move/src $ rosrun move move.py
起動時のパラメタはlinear velocity (並進速度):0.2 [m/s]、Angular velocity(角速度): 0.2 [rad/s]としました。

実際に動かしたときの動画です。シミュレータと同様に円を描いて動いていることがわかります。しかもかなり正確な動きで、狭い椅子の間を通り抜けていきます。
動画をみるとわかりますが、ルンバの上にスマホを載せて動画を撮ってみました。下から見上げた景色の動画が撮れてこれだけでも楽しかったです。
次回からはプログラミング
これでシミュレータを使って動作を確認したあとに実機での動きを確認するという一連の流れを体験することができました。あとはPythonでプログラムを書くだけですが、まずは/create1ノードの使い方を理解する必要があります。次回はこのあたりを試してみようと思います。