gmappingを使う準備をする
ROSさんお手やわらかに:ROS奮闘編
マップ作成実験の前に、roombaプラットフォームの構成をgmappingのチュートリアルに近い形に整理する。原因不明のトラブルを回避したいからだ。
まずは座標系。現在、自作のrbjoyとlaseroffsetで定義している座標系はworld→roomba→laserだが、これをチュートリアルにどおりのodom→base_link→base_scanに変更。
もともとroomba500_light_nodeがodomとbaseはブロードキャストしているので、laseroffset.pyを修正し、その座標系にセンサの座標系をリンクするだけ。ただ、worldとroombaの座標系を外したい(余計なので)ので、rbjoy.pyも差し替えた。ついでに、ゆっくり走らせやすいよう、ジョイスティックの係数を調整した。
laseroffset.pyを見る
rbjoy.pyを見る
次はレーザー測域センサの座標系をデフォルトのlaserからbase_scanに変更する。hokuyo_nodeの設定だ。今回、これに気づかなくて、相当苦労した。
hokuyo_nodeのパラメータframe_idに"base_scan"をセットすればいいので、ローンチファイルを修正する。rb_base.launchに下記を追加するだけだ。
<param name="hokuyo_node/frame_id" value="base_scan"/>
rb_base.launchを見る
これで修正は終わり。テストした時は気づかなかったが、レーザースキャンのトピック名もbase_scanに変更すればチュートリアルどおり。これを変更するにはローンチファイルに下記を追加すればいいはず。
<remap from="scan" to="base_scan" />
テスト中気がついたのは、ラップトップを立ち上げたとき、レーザー測域センサのポートが、ACM0になったりACM1になったりと、一つのポートに固定されないことだ。USBシリアル変換器などは、結構同じポートに割り当てられるのだが、これはちょっと勝手が違う。ローンチファイルで起動していると、ポートがオープンできなくともエラーにならないが、データは入ってこないので、原因不明のトラブルになりがちだ。
ローンチが成功したかどうは、測域センサのアタマの小さなLEDの点灯状態でわかる。点いたままならOKだが、点滅しているならポート違いの可能性がある。
【後日追加】残念ながら、LEDの点滅は必ずしもそうならないようだ。最初に起動したときに、rvizでレーザーが見えるかどうか、確認する必要がある。
次回は実際にマップを作ってみる。
« gmappingに入門する | トップページ | roombaプラットフォームとgmappingでマップを作る »
「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)
コメント