2016/12/10

LSD-SLAMをROSで試す2-カメラの設定とキャリブレーション-

https://noshumi.blogspot.jp/2016/12/lsd-slamros1.htmlの続きです.

さて、LSD-SLAM、折角ですので自分でカメラを動かしてやってみましょう
usb_camっていうノードを入れて、キャリブレーションします

まずはカメラをROSで動かします

ということでカメラをROSでよめるようにするパッケージを入れます

sudo apt-get install ros-indigo-usb-cam

実行手順は

roscore
rosrun usb_cam usb_cam_node


エラーが出るならフォーマットの指定が必要な可能性があります。rosrunの前に

rosparam set /usb_cam/pixel_format yuyv

そのカメラのフォーマットによってmjpeg, yuyv, uyvyどれかのはずです(デフォルトはmjpeg)

そして表示

rosrun image_view image_view image:=/usb_cam/image_raw

動きましたでしょうか

カメラの選び方

カメラが2つ以上PCにつながっている場合、どっちのカメラか選びたい場合があると思います

USBカメラ動かしたいのにパソコンに付属してるカメラが起動しちゃうとか

ls /dev/video*

とコマンドラインに書くと接続されているカメラが表示されます

/dev/video0
とか
/dev/video1
とか

/dev/video1を動かしたいなら

rosparam set /usb_cam/video_device /dev/video1
rosrun usb_cam usb_cam_node

すれば/dev/video1が動きます

キャリブレーション
このままでも動きはするが、カメラには個体差があり
それぞれに合わせたパラメータを計算することでより正確にSLAMをすることができます
これをキャリブレーションといいます。キャリブレーションもここでやってしまいましょう。

参考はここ
http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration

キャリブレーション用ソフトをインストールします

rosdep install camera_calibration
rosmake camera_calibration


で、キャリブレーションボードを使ってキャリブレーションしますが、wikiにのってるやつhttp://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf
めちゃくちゃでかいのでうまく印刷するのが難しいかもです。使える人は使ってください

小さいのなら、PTAMっていうSLAM用のキャリブレーションボードhttps://github.com/ethz-asl/ethzasl_ptam/blob/master/ptam/calib_pattern.pdf
が手頃かな

キャリブレーションボードはクニャクニャしないように板とかに貼り付けるのが理想です

roscore
rosrun usb_cam usb_cam_node

でカメラノードを起動したあと

PTAMのキャリブレーションボードを使うなら

rosrun camera_calibration cameracalibrator.py --size 11x7 --square 0.02 image:=/usb_cam/image_raw

そうするとカメラ画像と、その横に3つのボタンがでてきます

しばらくいろんな角度からキャリブレーションボードを見せていると

calibrateボタンが光って押せるようになります

そこからまたいろんな角度からsaveボタンを押して保存していきます

適当にとったらcommitをおすと

ost.txtとost.yamlが出力されます

コンピュータの中のtmpの中のcalibrationdata.tar.gzの中にあります

usb_camを実行したとき、unable to open calibration〜

と、〜という場所の〜というファイルを参考したんだけどありませんでしたーって

でるとおもいますが、そこに今回はつくったost.yamlのファイルをいれ、
指定された名前に変えればオーケーです

これができているならば、
usb_camを起動し、
rostopic echo /usb_cam/camera_info
としたとき、0ではないパラメータがはいった情報が流れてきます

これをもってキャリブレーション終了です

続きはLSD-SLAMの導入3-カメラを使って自分で実行-

2 件のコメント:

  1. 非常に勉強になっています!
    roscose -> roscore のような気がしました!

    返信削除
    返信
    1. ありがとうございます!
      直しときます!

      削除