Navigation stackの座標系を確認する
ROSさんお手やわらかに:ROS青雲編
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
« 2014年6月 | トップページ | 2014年8月 »
ROSさんお手やわらかに:ROS青雲編
ROSさんお手やわらかに:ROS青雲編
ROSさんお手やわらかに:ROS青雲編
読んでみると、コストマップがキモのようだ。これも結構分量があるので、これも翻訳しておいた方が良さそうだ。
ここまででわかったことは、
●ナビゲーションスタックにゴール位置を何らかの方法で与えると、ロボットがそこへ移動する。
●「コストマップ」というのが、その環境の障害物などの情報を保持している。
●world座標系に乗ったグローバルコストマップと、ロボットの座標系に乗ったローカルコストマップの二つが必要。
ROSさんお手やわらかに:ROS青雲編
ここまで来たのなら、Hanabot1に測距センサを載せてturtleBotのようにROSで使えるロボットにしたい。
センサのデータはオリジナルのデータフォーマットを作らずに、sensor_msgs/LaserScanの形で流すようにしたい。これなら、rvizでモニタできるので、開発が楽だ。
試しに、ダミーのLaserScanデータを作成するdmylaser.pyと、これをちょっとばかりオフセットしてTFに設定するtesttf.pyを作ってrvizで見てみた。(この辺を参考に)hanabotパッケージのフォルダに二つのファイルを置いて、rosrunで起動するだけだ。
ちっぽけな点々がダミー障害物の位置だ。これはdmylaser.pyの
laser.ranges = [0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5]
で、値を設定している。単位はmだ。まだデータの数と方向が思ったようになっていないが、ともあれこんな感じでデータを作れば、レーザースキャナ(URG)よりずっと測定点が少ないセンサでも、データを送れることがわかった。
ただ、レーザースキャナのようにスピーディにマッピングができるわけではないだろう。測定点がすくないのだから。