2023年4月
            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            

カテゴリー

ブログパーツ

無料ブログはココログ

« gmappingを使う準備をする | トップページ | roombaの走行性能を改善する »

2013年10月24日 (木)

roombaプラットフォームとgmappingでマップを作る

ROSさんお手やわらかに:ROS奮闘編

今回は、実際にroombaプラットフォームをリモコンして、室内のマップを作ってみる。
まず、rosbagでセンサやオドメトリのトピックを記録しながらroombaで室内を一周、その後、その記録を再生してgmappingに入力し、マップを作る。
実際の手順は下記のとおり。操作はすべてT61で行う。

roombaを部屋の真ん中あたりに置き、搭載したX61を起動。レーザー測域センサとroombaの電源を入れる。

端末を開き、roombaプラットフォームを起動
$ source ~/catkin_ws/devel/rbsetup.bash
$ roslaunch ~/rb_base.launch

新たに端末を開き、レーザーデータの確認のためrvizを起動
$ source ~/catkin_ws/devel/rbsetup.bash
$ rosrun rviz rviz
各座標系、レーザーデータが表示されることを確認。確認後は終了しても構わない。

新たに端末を開き、rosbagでトピックの記録開始
$ source ~/catkin_ws/devel/rbsetup.bash
$ rosbag record -O mylaserdata /scan /tf
mylaserdata.bagというファイル(homeに生成)を作り、トピックscanとtfを記録する

roombaをゲームパッドで操縦し、壁にそって室内をゆっくり一巡りさせる。

rosbagを起動している端末をcrtl+Cでブレークし、記録を終了する。

(重要) roslaunchを起動している端末をcrtl+Cでブレークし、roombaプラットフォームを終了する。
起動したままだと、scanトピックがパブリッシュされつづけるので、rosbag playを実行したときに、データがコンフリクトしてしまう。

新たに端末を開き、gmappingを起動
$ source ~/catkin_ws/devel/rbsetup.bash
$ rosparam set use_sim_time true
$ rosrun gmapping slam_gmapping scan:=scan ←scanトピック名を指定

rosbagをブレークした端末で(新たな端末でも構わない)、記録したデータを再生
$ rosbag play mylaserdata.bag

終了後、同じ端末でmap_serverを起動し、mapデータを可視化
$ rosrun map_server map_saver

以上の手順でhomeにマップイメージ、map.pgmができる。

Dscn2671  Screenshot_from_20131024_181316

マップの右側に、とても深い隙間ができているが、これは誤認識だ。隙間はあるが、そんなに深いものではない。隙間でレーザーが反射を繰り返し、距離を誤認識したのだろうか。

以前、SRIのShakeyを模型化した「シェーキー」で、同様のマップ作成をしてみたが、それに比べて実にスピーディで正確だ。まあ、60年代の技術と21世紀の技術の差といえばそれまでだが。

次はマップデータの中身を見てみたい。

« gmappingを使う準備をする | トップページ | roombaの走行性能を改善する »

ROSさんお手やわらかに」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: roombaプラットフォームとgmappingでマップを作る:

« gmappingを使う準備をする | トップページ | roombaの走行性能を改善する »