ルンバをPythonで動かしてみました。(おおたfab 第44回 素人でもロボットをつくりたい)

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

otafab_robot_43.jpg

今回もdemura.netさんの記事を参考にして進めてみます。

Pythonプログラムを眺めてみる

記事にはPythonで書かれたプログラムが掲載されています。39行でコメントもついていて読みやすいです。Pythonプログラムでmoveというnodeを作り、/create1/cmd_velというtopicを一定間隔でGazeboシュミレーターにpublishして仮想のルンバを動かすというものです。

これをrqtというツールで構造を可視化すると次の図が表示されます。(クリックして拡大)

rosgraph_move.png

オレンジ色の枠で囲んだところが今回Pythonプログラムで作成したmoveノードになります。

/create1はルンバ本体のノードです。

Gazeboシュミレータでルンバの動きを確認する

記事通りの手順で実際に動かすとこのような画面が表示されます。この画面はPC上のUbuntuですが、勉強会では各自で持ち込んだRaspberry Pi 4(4GB)上で動かしました。

otafab_robot43_gazebo.png

3Dでルンバが表示されたあとに、Pythonで書いたmoveノードを起動すると、円を描くように動きます。YouTubeに動画も載せておきました。

このようにシュミレータ上ではルンバを動かすことができました。これを実際のルンバで試してみます。

ルンバの実機で動作を確認

Pythonで書いたmoveノードをルンバ実機で動かしてみます。

otafab_robot_43_roomba1.jpg

以下の手順を行います。

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]としました。

otafab_robot43_ros_pi4.png

実際に動かしたときの動画です。シュミレータと同様に円を描いて動いていることがわかります。しかもかなり正確な動きで、狭い椅子の間を通り抜けていきます。

動画をみるとわかりますが、ルンバの上にスマホを載せて動画を撮ってみました。下から見上げた景色の動画が撮れてこれだけでも楽しかったです。

次回からはプログラミング

これでシュミレータを使って動作を確認したあとに実機での動きを確認するという一連の流れを体験することができました。あとはPythonでプログラムを書くだけですが、まずは/create1ノードの使い方を理解する必要があります。次回はこのあたりを試してみようと思います。

前へ

QNAP NASにエラーコード0x80070035でつながらない問題を調査しました

次へ

MC68EZ328 DragonOne SBCでLAN接続に挑戦中