さて、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-カメラを使って自分で実行-
ということでカメラを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-カメラを使って自分で実行-
非常に勉強になっています!
返信削除roscose -> roscore のような気がしました!
ありがとうございます!
削除直しときます!