2017年7月
            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 31          

Amazonウィジェット

  • miniPC
  • 最近買った本
  • Raspberry Pi
  • クアッドコプター
  • 書籍ランキング

AdSense

  • 広告
無料ブログはココログ

« ROSのhector_slamを使ってマップを作る。 | トップページ | お手軽なPythonのはじめ方 »

2016年1月25日 (月)

ROS hector_slamを使ってマップを作る。<No.2>

一回目でhector_slamのパッケージをインストールしたら、後はhokuyo_nodeを使ってLRF(laser range finder)の情報をpublishしてhector_slamのマッピングをするノードにデータを入れればよい。

最終的にこんなマップが作れるようになった。
Ws000059

hector_slamを使うまでに、一番ネックになったのはTFの理解だった。
ROSでは座標変換をトピックを使って実施している。これを処理するのがTFノードで、各ノードはTFノードに座標変換情報を投げて、ほしい座標系を受け取っている。

hector_slamが必要としているフレーム(座標系)を持ったTFのトピックを、hector_slamノードに投げてやる必要がある。

hector_slamをLRFを手に持ってデータを取るだけなら、とりあえず難しいことはさておき、全ての座標変換を(x,y,z,roll,pitch,yaw)=(0,0,0,0,0,0)でやってしまっても問題なく動く。

TFを投げる方法として、TFパッケージのstatic_transform_publisherがある。
これを必要なだけlaunchファイルに書き出せばOK。


launchファイルの例。
















 

hokuyo_nodeを起動して、URG-04LXのデータをpublishする方法。 このデータがマッピングノードに送られることで、マップが生成される。











rvizの見方
Fixed Frameはmapにする。tfツリーのトップはmapにしてあるので、mapを基準としてLRFが動き回る。LRFがどこに居るかは/laserというフレームを見ればわかる。LRFの生データは/scanトピックを追加することで見られる。

mapの保存
mapの保存は、rvizではなくrosrunからのmapsaverで行う。

rosrun map_server map_saver -f ./mymap

これを間違いやすい。よくでるエラーは

[ WARN] [1452915362.940959897]: Using deprecated map server interface. Please switch to new interface. [ERROR] [1452915363.068600220]: Map_server could not open -f.

こういうのが出たらmap_saverの打ち間違い。すごく紛らわしいので注意。


mymap.pgmの例

Ws000060

mymap.yamlの例

「mymap.yaml」をダウンロード


次回はマップ作成の実践編

« ROSのhector_slamを使ってマップを作る。 | トップページ | お手軽なPythonのはじめ方 »

ROS」カテゴリの記事

コメント

初めまして,言いなりのコメント失礼いたします.
ブログを拝見させていただきまして,コメントさせていただきました.
私は某大学の工学部機械化専攻の3回生でございまして,PC,マイコン,linuxについて完全な初心者でございます.
ただいまraspberry pi2を用いて,移動ロボットの自己位置推定を行うことに挑戦しております.
ちなみに使用している環境認識センサーは北陽電気のURGです.
今,raspberry pi2にros(jade-base)をインストールし,hector-slamもインストールしまして,いざ,LRFで環境認識を行おうとしましたところ,rvizがros(jade-base)のパッケージに入っておらず,また,raspberry pi2に対応していないことにより,rvizがインストールできないので,hector-slamを使うことができません.
そこで,やはりLRFをraspberry pi2につなぎ,raspberry pi2とは別にrosが入ったPCを一台用意して,PC上でマッピングを行うことしか方法がないのでしょうか.

つまらない質問で大変恐縮ではございますが,何卒ご教授いただけましたらと思います.

長々と失礼しました.

raspberry pi2のようなARM-based CPUでrvizを実行しても、遅くて使い物にならないとの記載がありますので、よほどの理由が無い限りは別のPCを用意したほうが良いかと思います。
ご参照:http://wiki.ros.org/indigo/Installation/UbuntuARM

rvizは単なる可視化ツールであり、これが無くてもhector_slam自体は動きますし、mapトピックもちゃんと出てきます。
マップができる過程を見ることが出来ないだけで、マップの生成・保存自体は可能です。

研究頑張ってください。

コメントを書く

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

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/518723/63111659

この記事へのトラックバック一覧です: ROS hector_slamを使ってマップを作る。<No.2>:

« ROSのhector_slamを使ってマップを作る。 | トップページ | お手軽なPythonのはじめ方 »