検証日時
02/14/2015 (Sat)
概要
Gazeboのチュートリアル第五弾「Sensors」。
シミュレーションのセンサは環境を分析し、センサになるべくよく似たデータストリームを生成します。
チュートリアルでは、センサの使い方と修正方法について説明します。
今回はその「Camera Distortion」編です。
公式サイトを適当に翻訳しただけですので、あしからず。
レベル
BEGINNER
環境
PC | : | Lenovo ThinkPad X240 |
Prosessor | : | Intel Core i7-4600U (2.10GHz, 4MB, 1600MHz) |
RAM | : | PC3-12800 DDR3L (8GB) |
OS | : | Ubuntu 14.04 LTS 64bit |
Kernel | : | 3.13.0-44-generic |
Gazebo | : | Version 5.0.1 |
参考
はじめに
カメラのレンズはたいてい光学の角度ゆがみがあり、これにより、イメージ(像)が歪む。例として、タスクを実行したり、物体を発見するのに、より広い範囲の環境視野を確保する目的でロボティクスの分野で広く使用されている、魚眼カメラが挙げられる。
MatlabやOpenCVのようなカメラキャリブレーションツールを使うと、カメラ固有のパラメータに付随した、歪み係数をなしにすることができる。そのような歪み系数とともに、Gazeboの中に歪んだカメラセンサを生成することができる。
現在の実装
Gazeboでは、現在、Brown’s distortion model#Software_correction)に基づいたカメラのシミュレーションをサポートしています。このモデルでは、カメラのキャリブレーションツールから取得できる歪み系数をk1
、k2
、k3
、p1
、p2
としている。k
という係数は歪みモデルの放射状の構成であり、p
という係数はタンジェントの構成を示す。
現在の実装には以下のようないくつかの制限がある。
樽状の歪みだけがサポートされており、たいていは、
k1
の値が負である。歪みは、カメラのイメージテクスチャに適用されています。これは、イメージデータを生成し、ねじっているだけのものを使っていることを意味する。このことは、最終的なイメージ(特に角では)が現実の樽状の歪みを持ったカメラレンズよりも、狭い視野になるという警告を持つことになる。この現象を償う一つの解決策はGazeboの中で、カメラセンサの視野を増加させるという方法である。
カメラを歪みとともに生成する
歪みのあるカメラモデルを追加するには:
- モデルのディレクトリを作る
1
|
|
model.config
ファイルを生成する
1
|
|
model.config
に以下の内容をコピペする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
~/.gazebo/models/distorted_camera/model.sdf
ファイルを生成する
1
|
|
model.sdf
に以下の内容をコピペする。以下のモデルはスタンダードなカメラモデルに歪みを付加したものです。:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
|
- Gazeboを起動する
1
|
|
歪みを付加したカメラモデルを挿入する : 画面左側の枠の中で、Insertタブを選び、Distorted Cameraをクリックする。その後、シミュレータにそれを設置する。
歪みを付加したカメラモデルを観測する : Topis Selectorを表示するために、Window->Topic Visualazationをクリックする(もしくは、
Ctrl-T
を押す)。/gazebo/default/hokuyo/link/camera/image
のような名前のトピックを探し、クリックしたら、Okayをクリックしてください。すると、カメライメージが表示されたウィンドウが見えるはずです。
手順は、以下の動画を参照ください。また、動画でご覧いただくように、カメラのイメージは湯がんでおり、箱のエッジが曲がって見えます。歪みを調整するには、model.sdf
ファイルにある、k1
,k2
,k3
,p1
,p2
の歪み係数を変更するだけでよいです。