gmappingが上手くできない…
直線コースがうまく地図にできない…まっすぐができない
症状:
gmapping中に直線コースをたどるとき、rviz上で、自己位置tfが戻ってしまう。つまり、まっすぐの距離が縮んでしまい、尺の合わない地図が生成されてしまう。
この状態だと、costmapしたときに、地図上の障害物と実際の障害物が不一致になるため、思ったとおりの動きをしない。
原因は何だろう
考えられる原因としては、
(1) エンコーダーの問題(ちゃんと距離を取れていない)
(2) tfの問題(/odomと/base_linkの変換が上手くいっていない)
(3) gmappingのパラメーターがおかしい
(1)について
エンコーダーの数値は、移動車をまっすぐ進めたらそれだけ増えるので、おかしいとは思えない…
(2)について
/odomと/base_linkの変換はRosAriaというノードによって行われている。
おかしいとしたらこの変換なんだけどなあ…
→rvizでtfを可視化して確かめてみた。すると、tfだけなら位置のズレはまったく起こっていない
ちゃんと進んだ分だけrviz上のtfも動く。つまり、実測値とコンピューター上の値との齟齬はない
では、gmappingのやり方がおかしい。
ところで自分は、/odom -> /base_link -> camera_linkという変換をしている
しかし、 このページでは、間にfootprintをかませている。
つまり、/odom -> /base_footprint -> /base_link -> camera_link
でやっている。
これを直すか?
または、 (3)について、パラメーターがおかしいのか。
この様にやっている人もいる
$ rosrun gmapping slam_gmapping _xmin:=-5.0 _ymin:=-5.0 _xmax:=5.0 _ymax:=5.0 _maxUrange:=59.0 _maxRange:=63.0 _map_update_interval:=5.0 _linearUpdate:=0.2 _angularUpdate:=0.15 _particles:=50 _delta:=0.02
パラメーターの扱いはまだよくわかっていない…
このページをみて勉強しよう
そもそも
なぜマップを正確に取りたいかというと、move_baseを使いたいから
しかし、用意されたマップを用いるならば、こんな作業はおそらく必要ない。
正確なマップを使ってみるのも手段ではある…
0 件のコメント:
コメントを投稿