前回の失敗をもとにいろいろと調べた結果
・センサがtfツリーに関連付けられていない
ということがわかった。
これは由々しき事態である。
わい「tfってなんや」
tf「わいはtransformや」
なるほどわからん
で調べてみました。
ざっくりいうと
・ ROSではセンサやロボットのプログラムを走らせるノードが分散しているので、それぞれで座標系が存在してしまう。
・ 実際動かすのは一斉に動作するため相対的な位置がわからないとこまる
・ それを解消するために先に座標系の関系を決めてしまおう
ってことみたい(間違ってるかも)
詳しくはこの辺かなぁ
チュートリアルはこっち
なんかクォンターニオンというかっこいい単語が出てきてますが、要はどの軸に何度回転してるかの姿勢を表現しているそうです
でとりあえずtfの便利なコマンドがあって
$rosrun tf view_frames
で動いてるフレーム(一つの座標系くらい?)がわかる
といったpdfファイルが出力される(便利なもんでゲソ)
mapフレームがあってその子フレームにodomフレーム、その子フレームにbase_linkフレームがあるよってかんじ
センサのフレームがないってわけね
ということでbase_linkの子フレームにしたりする必要があると・・・
どうするんですかねー
とりあえずセンサのフレームの名前をbase_linkにすればいけるやろ(なぜそうなった)
$rosparam set hokuyo_node/frame_id "base_link"
でhokuyo_nodeのフレーム名がbase_linkになったのでとりあえずツリー内には入った(かなり強引)
・・・・・・・・・・・・・
とりあえず前回のwrningで動かなかったgmappingは動いた
まぁ当たり前か。
でもたぶんフレーム間のパラメータとかぐちゃぐちゃ・・・
この辺もパラメータセットのコマンドで解消できるのかね
正直ランチャファイルを書けばいちいち設定しなくて良さそうなのでそこら辺もやらないと
・・・・
なんか全然tfについて勉強できてない気がする
勉強しなきゃ行けないことばっかですね、もうちょっと勉強続けます。
【追記】
とりあえずあとで研究室ぐるっと動かして作った地図。
やっぱりいろいろずれてるみたい。
ルンバに直進指示だしても右にぶれてたからそのへんも影響してそう。
キャリブレーションしないといけませんねぇ・・・(遠い目