2016/12/10

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

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

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


まずはカメラをROSで動かすことが必要です

ということでそれ用のパッケージを入れます

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

実行手順は

roscose
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つ以上ある場合、どっちのカメラか選びたい場合があると思います

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

そんなときは

ls /dev/video*

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

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

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

rosparam set /usb_cam/video_device /dev/video1

としたあと

rosrun usb_cam usb_cam_node

すれば違うUSBカメラになります

このままでもまぁ動きますが、カメラには個体差があり、

それぞれに合わせたパラメータを計算することでより正確に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-カメラを使って自分で実行-

0 件のコメント:

コメントを投稿