キャリブレーション方法


河原林研究室 >> 研究メモ >> キャリブレーション方法

VisionTracking?

ここではpv-vision-tracking2007を用いてのVisionTracking?方法についてまとめる。

pv-vision-tracking2007を使用する際には事前にcamera-feedbackを用いてキャリブレーションを行う必要がある。

また、環境が変わるごとにキャリブレーションをやり直す必要がある。

キャリブレーション

まずcamera-feedbackでのキャリブレーション方法について説明する。

キャリブレーション起動方法

端末を開き、camera-feedback/scripts/に移動し、以下のコマンドを実行

./camera-modules.sh

パスワードを要求されるのでアカウントのパスワードを入力し、次のコマンドを実行

./camera-calibration.py

以上でキャリブレーションを起動できる。

傾き補正

キャリブレーションを起動すると、まず以下のような2種類の画面が表示される。 (この時、上の画像しか表示されない場合は、カメラが認識できていない可能性があるので、カメラのコードを1度抜き差しする)

 

Field Grid.png

 

グリッドカメラ画像.png

2種類の画面が表示されたら、まず上の青と緑の画面をタスクバーのField Gridのタスクを右クリックして移動を選択し、フィールド画面の中央に移動させる。

次に下のカメラ画像の画面で、以下のように画面に表示されている■をマウスでドラッグしてグリッドの角に合わせていく。  

グリッドカメラ画像_ポイント.png

すべて合わせ終わると以下のようになる。

グリッド完了.png

すべて合わせ終わったらカメラ画像画面でエンターを押す。するとカメラ画像画面が消えるので、次にタスクバーでField Gridのタスクを右クリックしてField Gridの画面を閉じる。

ここで別の画面が新たに表示され、赤丸認識操作に移る

この時、camera-feedback/data/内に以下の3つのファイルが作成される。

cameraplane.grid
fieldplane.grid
transform.calbr

赤丸認識

傾き補正での操作画面を2つとも閉じると以下の画面が表示される。(キャリブレーションのデータが無い状態の場合は明るい画面になる)

(注)この時、通常のUbuntu画面の場合、赤色のデスクトップ画面となるため、フィールドの画像をフィールド画面に表示させておく。
認識1.png

この画面での操作は以下のようにする。

  • まず、マイクロロボットの認識マーカー(マイクロロボットの上に被せる赤丸と白黒パターンのもの)を上の画像のようにフィールドとなるディスプレイ上の端に置く(この時、複数置くと作業が楽)
  • 次に以下の画像のように赤丸をマウスドラッグで選択して(上の画像の様に赤丸の部分だけがくっきり赤く表示されるまで)認識させる(1度では認識できない場合が多いので複数回)
(注)この時、赤丸以外のところまでドラッグして選択すると、その部分の色まで赤色として認識してしまうため、
赤丸以外を選択してしまった場合は、camera-feedback/data/内のmarker.blobを消してもう一度認識しなおす。
認識方法.png

認識がうまくいくと、赤丸にマウスを合わせた際に以下の画面のように赤丸の部分だけ色が変わった明るい画像が常に表示させる。(この時、時々暗い画面が表示される場合は認識が不十分)

認識OK.png

この操作フィールド全体で行い、認識できないとこがなくなったらエンターを押し完了する。この時、camera-feedback/data/内に以下のファイルが作成される。

marker.blob

ここでまた別の画面が新たに表示され、IDと方向決定の操作に移る。


IDと方向決定

赤丸認識操作の画面を閉じると以下の様な傾きが補正された画面が表示される。

ラスト画面1.PNG

前の赤丸認識操作がうまくいっていれば、マーカーの赤丸にマウスを合わせると以下の画像のように矢印が表示される。

方向&ID1.PNG

矢印の向きをマーカーの前(赤外線受信ポート用の切れ込みがあるほう)に合わせ左クリックすると、以下の画像のように方向が決定されIDが割り振られる。(クリックした順番に00,01,02…となる)

ラスト画面3.PNG

この時、複数のマーカーを置いた際に、IDふったマーカーと別のマーカーを間違えて認識する場合には、赤丸認識をもう一度行うか、マーカーのパターンを別のものに変えたほうがよい。また、矢印が時々消える場合には、赤丸認識をもう一度行う。

IDと方向の決定が終わったら、エンターを押し完了する。この時、camera-feedback/data/内に以下のファイルが作成される。

marker.pttrn

以上でキャリブレーションは終了である。

VisionTracking?実行

VisionTracking?を実行する際には、以下の手順で実行する。

  • まず、camera-feedback/data/内のファイルをすべてコピーしてpv-vision-tracking/内に貼り付ける(すべて上書き)。
  • 端末を開き、pv-vision-tracking/に移動して以下のコマンドを実行
    make clean
    make
  • VisionTracking?を起動するには以下の<hostIPアドレス><port><マーカー縦><マーカー横><player数><ディスプレイの大きさ横><ディスプレイの大きさ縦>を指定してコマンドを実行
    sudo ./vt_mock <hostIPアドレス> <port> --numplayers <player数> <ディスプレイの大きさ横> <ディスプレイの大きさ縦>
    transform.calibr marker.blob marker.pttrn <マーカー縦> <マーカー横>
  • 2011.5.12現在の環境では以下のコマンドを実行
    sudo ./vt_mock localhost 3301 --numplayers 4 640 480 transform.calibr marker.blob marker.pttrn -70 -60

これでVisionTracking?を実行できる。

以下に違う環境での実行方法を記す。

  • サッカーサーバと別のPCで実行する際には<hostIPアドレス>のところにサーバーを動かしているPCのIPアドレスを書く。
  • player数を変更したい場合は<player数>の値を変える
  • ディスプレイに表示されるロボットの位置と実際のロボットの位置がずれる場合、<マーカー縦> <マーカー横>の値を変えて調節する。