2013年6月21日金曜日

オドメトリをパブリッシュする

slamするためには パッケージを探すよりも、必要なデータを出力することが必要
そこで、
Subscribed Topics
マップを作るために入力されるデータ
tf (tf/tfMessage)   
 レーザーと本体と推定された現在位置を変換するために必要

scan (sensor_msgs/LaserScan) 
マップを作るための赤外線データ

自己位置をパブリッシュするためには、 Odometryを取ってこないといけない。
navigationスタックを利用して、自己位置(オドメトリ)をパブリッシュするコードを書く。

http://www.ros.org/wiki/navigation/Tutorials/RobotSetup/Odom
上のリンク先にパブリッシャのコードが載っている
ただ、navigationのチュートリアルはgroovyに対応していないので、
多少書き換える必要がある

$ cd catkin_ws/src
$ catkin_create_pkg robot_odom_test roscpp tf geometry_msgs nav_msgs

パッケージ作成時にnav_msgsを追加する
パッケージ名は適当に、robot_odom_test

$ cd src
$ emacs odom_test.cpp &

でsrcフォルダ内にodom_test.cppを作成し、リンク先のコードをコピペ

$ cd  ..
$ emacs CMakeLists.txt &

でrobot_odom_test直下に戻り、CMakeList.txtの末尾に

add_executable(odom_test src/odom_test.cpp)
target_link_libraries(odom_test ${catkin_LIBRARIES})

を追加
catkin_wsに戻って、

$ catkin_make

パブリッシュされてるか確認

$ roscore
$ rosrun robot_odom_test odom_test
$ rostopic list
/odom
/rosout
/rosout_agg
/tf


今度はリスナーを書く(そっちの方が難しそう・・・)
参考にする
http://www.ros.org/wiki/ja/navigation/Tutorials/RobotSetup/TF

0 件のコメント:

コメントを投稿