roombaプラットフォームのまとめ(その2)
ROSさんお手やわらかに:ROS奮闘編
実行時のノードとトピックをrqt_graphで表示したものがこれ。丸がノードで四角がトピックだ。
自作ノードrbjoyは、joy_nodeがトピックjoyにパブリッシュするゲームパッドの入力情報を、サブスクライブして直線速度と旋回速度に変換、cmd_velというトピックにパブリッシュする。roombaを動かすroomba500_light_nodeがこれをサブスクライブして、roombaにコマンドを送るわけだ。
同時に、トピックtfにworld、roombaの座標系をブロードキャストする。マップ生成やナビゲーションで利用するためだ。(うわー、なんかカタカナばっかりで、アタマ悪そうな文章だなこりゃ)
また、同じく自作ノードlaseroffsetはtfからroomba座標系をリスンして、前に書いたとおり、レーザー測域センサの座標系laserをtfにブロードキャストする。これで、センサが読み取った障害物をworld座標系のマップに記録することなどが可能だ。
これだけのことが、数学を少しも使わないで実現できるのはありがたい。シェーキーでマップ作成の実験をしたときには、座標変換行列の実装にずいぶん苦労したものだ。
T61でrvizを起動し、これらをモニターしたのがこれ。tfとLaserScanをDisplaysウィンドウにAddしている。それぞれの設定は画面を参考に。
この画面はworld座標系から見ているので、ゲームパッドでroombaを動かすと、画面のroombaとlaser座標系が動く。白く見えているのは、レーザーで感知した障害物。これがロボットから見えている周囲のイメージだ。慣れれば、画面だけを見ながら操縦することもできる。ゲームみたいでなかなか楽しい。
続きは次回。
« roombaプラットフォームのまとめ(その1) | トップページ | roombaプラットフォームのまとめ(その3) »
「ROSさんお手やわらかに」カテゴリの記事
- 3Dプリンターで作る簡単turtlebot(おしまい)(2017.01.07)
- 3Dプリンターで作る簡単turtlebot(raspberry pi3の取り付け)(2017.01.03)
- 3Dプリンターで作る簡単turtlebot(kinectの取り付け)(2017.01.02)
- 3Dプリンターで作る簡単turtlebot(パーツの組み立て2)(2016.12.29)
- 3Dプリンターで作る簡単turtlebot(パーツの組み立て1)(2016.12.25)
« roombaプラットフォームのまとめ(その1) | トップページ | roombaプラットフォームのまとめ(その3) »
コメント