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の精度を上下させることができます

0 件のコメント:

コメントを投稿