自動運転:魚眼レンズカメラのキャリブレーション(再取組)

取組備忘録(18)でキャリブレーション操作が難航し同ページのボリュームが大きくなってきたので、ページを変更(追記)しました。

ここまでの課題をまとめます。

 1.GUI上で簡単に内部が見える「calibrationdata.tar.gz」が端末上では解凍操作が必要。
 2./tmp/ 内の「calibrationdata.tar.gz」は、再起動等で消えてしまう。
 3.消える前に必要な「ost.yaml」をコピーして置く必要がある。
 4.複数のロボットカメラの校正データは名前を変えて保存するとして、どの様に指定するのか方法が不明。

解る範囲で解決していきます。

<Try1>
 1.「SAVE」ボタンを何回押しても出来るフォルダー「calibrationdata.tar.gz」は1個
 2.「CALIBRATE」ボタンを何回押しても同様
 3.「COMMIT」ボタンでアプリが終了
 4.すべての端末を終了させても、/tmp/ 内の「calibrationdata.tar.gz」は消えない。
 5.PCの再立ち上げ、再起動で、/tmp/ 内の「calibrationdata.tar.gz」は消える。

<Try2>
 1.GUI上で「calibrationdata.tar.gz」を、/tmp/ 内からデスクトップ上へコピーして解凍した。
 2.解凍ファイル内の PIG データを削除後、ost.yaml をリネーム( camerav2_320x240_30fps.yaml )
 3.再度、各フォルダを /tmp/ 内に戻しPC電源の再起動させてみた。( すべて消えてしまう。)
   どこに保存させれば良いのか?現在不明
   調べて解った。Linux系の /tmp/ & /var/tmp/ 内のファイルは一定時間後削除される。( /var/tmp/ の方が保存時間が長いが永久ではない)
   自動削除を行っているのは、「 /etc/cron.daily/tmpwatch 」のようだ!!。





<Try3:URL概要説明>
これは、このURLを参考にしています。

内容は、PCにUSBカメラを取り付けた内容なので、今回の物とは異なりますが参考になります。
rosではカメラのノードは画像のトピック(/image_raw[sensor_msgs/Image])と
カメラのプロファイルのトピック(/camera_info[sensor_msgs/CameraInfo])をpublishしています。
正しいcamera_infoをpublishするための設定ファイルを得ることが目的です。歪みの補正用と画像の補正用のパッケージをインストールします。
( kinetic -> merodic )
 $sudo apt-get install -y ros-kinetic-camera-calibration   今回は使用しない。( e-Manual内容で実行 )
 $sudo apt-get install -y ros-kinetic-image-proc

 1.設定ファイルの取り出し( /tmp/calibrationdata.tar.gz )
   $tar -xvzf /tmp/calibrationdata.tar.gz
   $mv ost.yaml camera.yaml
 2.camera.yamlを開いて以下のように修正します。
   $camera_name: narrow_stereo  #この行を
   $camera_name: camera      #このように修正
 3.camera.yamlを適当な場所(今回はcam_lecture/config/)に移してここは終わりです。


 4.カメラ画像の補正
   カメラ画像の補正にはimage_procというノードを使います。
   このノードは/camera_infoと歪んでいる画像/image_rawをsubscribeして補正した画像/image_procをpublishします。
   launch ファイル

3行目の<param name="camera_info_url" value="file://$(find cam_lecture)/config/camera.yaml"/>で先ほどの設定ファイルをロードして
います。このように初めにfile://を付ける必要があります。

実行は、
 $roslaunch cam_lecture cam_proc.launch


これにより歪補正前と補正後の変化比較が出来ます。

<Try3:実行結果>
1.カメラキャリブレーションは、e-Manual のソフトで実行し /tmp/ 内に ost.yaml を作成。
2.<Try2>では、GUIで解凍、場所移動を行ったが、勉強の為CUIで実行してみます。
   < 設定ファイルの取り出し:( /tmp/calibrationdata.tar.gz )から、ost.yaml を取出しリネーム >
    $tar -xvzf /tmp/calibrationdata.tar.gz
    $mv ost.yaml camera.yaml


/tmp/ フォルダ内は、変化なし。( 圧縮ファイルが1個そのまま残っている )


解凍後のファイルは、/home/ 上に散らかっている。
ファイルネームを「ost.yaml」から「camera.yaml」リネームしたファイルも /home/ に保存されている。
これで /tmp/ 内の「calibrationdata.tar.gz」は消去されても良い、 /home/ 上の不要ファイルは整理した。


 camera.yamlを開いて以下のように修正します。
   $camera_name: narrow_stereo  #この行を
   $camera_name: camera      #このように修正

 修正前「camera.yaml」


修正後「camera.yaml」


画像補正用パッケージのインストール

 $sudo apt-get install -y ros-melodic-image-proc


すでに最新バージョンがインストールされている。

最後に、「camera.yaml」を適当な場所(今回は cam_lecture/config/ )に移します。

 $mkdir /cam_lecture/config
 $mv camera.yaml ~/cam_lecture/config/camera.yaml

ここまでは問題なく事が進んだが、最終下記のコマンドでカメラRAWデータと校正後の画像比較コマンドでエラーが出る。
原因は、cam_lecture.launch 内の記述にUVC_camera(USBカメラ)を前提に書かれているためと思われるが、解決方法が不明です。
エラー内容は、お決まりの cam_lecture は起動ファイルでも起動ファイル名でもないといメッセージが出る。

 $roslaunch cam_lecture cam_proc.launch



一応取組の限界なので、2台目のROSロボットで同様のキャリブレーションを行いどの様に変化するかを確認します。


Turtlebot3/2号機のキャリブレーションページへ移行します。