2016/12/13
LSD-SLAMの導入3-カメラを使って自分で実行-
LSD-SLAMをROSで試す1-インストールとビルドとクイックスタート-
LSD-SLAMをROSで試す2-カメラの設定-
の続きです。
自分のカメラでのLSD SLAMと同時にROSのトピックのリマッピングを学びます。
まず、LSD SLAM を起動します
$roscore
$rosrun lsd_slam_viewer viewer
$rosrun lsd_slam_core live_slam image:=/image_raw camera_info:=/camera_info
ここで
$rostopic list
すると、いろんなトピックを介してデータをやり取りしていることがわかるとおもいます。
中でも、/image_rawと/camera_infoは画像データと、カメラキャリブレーションの入力するであり、ここにデータが入ることでSLAM が実行されます
ここで、lsd_slam_coreを終了した後(コントロール+c)、今度は
$rosrun lsd_slam_core live_slam
としてみます。
そして再び
$rostopic listとすると
/image_rawだったトピックが/imageになっています
つまり、
image:=/image_raw camera_info:=/camera_info
というのは、そのまま実行したら/imageというトピックから画像を読み込むんだけど、この実行ではimageの代わりに/image_rawから読み込むということです。これをremapといいます。
そして、/camera_infoの方も必要があれば書き換えてくださいねってことです
これは全トピックに関して実行できます
次に、その/imageの型がどのようであるか調べます
$rostopic type /image
とすると/imageの型が
sensor_msgs/Image
であることがわかります
これで、入出力の型(メッセージ)が同じなら名前が違っても簡単にやり取りできることがわかりました。
次に、その画像自体を出力する、USBカメラの吐き出すトピックはどうなるか確認します。
一度今まで立てた端末は落としてください。
$roscore
$rosrun usb_cam usb_cam_node
でカメラが起動します。
$rostopic list
とするとカメラが
/usb_cam/image_raw
を出力していることがわかりました。
$rostopic type /image_raw
とすると
sensor_msgs/Imageであり、
LSD SLAM の入力と型があっていることがわかります
これをリマップして、
LSD_SLAM を実行するときは
image:=/usb_cam/image_raw
とすればいいことがわかります
もう一つ、入力に必要な
/camera_info
がありました。これはカメラキャリブレーションデータとなります
$rostopic listをすると、
usb_cam_nodeで対応するのは
/usb_cam/camera_info
であると見当がつきます。
よって、
camera_info:=/usb_cam/camera_info
とリマップすれば良いです
LSD-SLAMを実行するときまとめ
まず、rosの起動
$roscore
カメラの起動
$rosrun usb_cam usb_cam_node
LSDSLAM をリマップして起動
$rosrun lsd_slam_viewer viewer
$rosrun lsd_slam_core live_slam /image:=/usb_cam/image_raw /camera_info:=/usb_cam/camera_info
で動きます。
ちなみに
$rosrun rqt_reconfigure rqt_reconfigure
でいろんなパラメータをいじると、だいぶLSD-SLAMの精度を上下させることができます
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿