ここではpv-vision-tracking2007を用いてのVisionTracking?方法についてまとめる。
pv-vision-tracking2007を使用する際には事前にcamera-feedbackを用いてキャリブレーションを行う必要がある。
また、環境が変わるごとにキャリブレーションをやり直す必要がある。
まずcamera-feedbackでのキャリブレーション方法について説明する。
端末を開き、camera-feedback/scripts/に移動し、以下のコマンドを実行
./camera-modules.sh
パスワードを要求されるのでアカウントのパスワードを入力し、次のコマンドを実行
./camera-calibration.py
以上でキャリブレーションを起動できる。
キャリブレーションを起動すると、まず以下のような2種類の画面が表示される。 (この時、上の画像しか表示されない場合は、カメラが認識できていない可能性があるので、カメラのコードを1度抜き差しする)
2種類の画面が表示されたら、まず上の青と緑の画面をタスクバーのField Gridのタスクを右クリックして移動を選択し、フィールド画面の中央に移動させる。
次に下のカメラ画像の画面で、以下のように画面に表示されている■をマウスでドラッグしてグリッドの角に合わせていく。
すべて合わせ終わると以下のようになる。
すべて合わせ終わったらカメラ画像画面でエンターを押す。するとカメラ画像画面が消えるので、次にタスクバーでField Gridのタスクを右クリックしてField Gridの画面を閉じる。
ここで別の画面が新たに表示され、赤丸認識操作に移る
この時、camera-feedback/data/内に以下の3つのファイルが作成される。
cameraplane.grid fieldplane.grid transform.calbr
傾き補正での操作画面を2つとも閉じると以下の画面が表示される。(キャリブレーションのデータが無い状態の場合は明るい画面になる)
(注)この時、通常のUbuntu画面の場合、赤色のデスクトップ画面となるため、フィールドの画像をフィールド画面に表示させておく。
この画面での操作は以下のようにする。
(注)この時、赤丸以外のところまでドラッグして選択すると、その部分の色まで赤色として認識してしまうため、 赤丸以外を選択してしまった場合は、camera-feedback/data/内のmarker.blobを消してもう一度認識しなおす。
認識がうまくいくと、赤丸にマウスを合わせた際に以下の画面のように赤丸の部分だけ色が変わった明るい画像が常に表示させる。(この時、時々暗い画面が表示される場合は認識が不十分)
この操作フィールド全体で行い、認識できないとこがなくなったらエンターを押し完了する。この時、camera-feedback/data/内に以下のファイルが作成される。
marker.blob
ここでまた別の画面が新たに表示され、IDと方向決定の操作に移る。
赤丸認識操作の画面を閉じると以下の様な傾きが補正された画面が表示される。
前の赤丸認識操作がうまくいっていれば、マーカーの赤丸にマウスを合わせると以下の画像のように矢印が表示される。
矢印の向きをマーカーの前(赤外線受信ポート用の切れ込みがあるほう)に合わせ左クリックすると、以下の画像のように方向が決定されIDが割り振られる。(クリックした順番に00,01,02…となる)
この時、複数のマーカーを置いた際に、IDふったマーカーと別のマーカーを間違えて認識する場合には、赤丸認識をもう一度行うか、マーカーのパターンを別のものに変えたほうがよい。また、矢印が時々消える場合には、赤丸認識をもう一度行う。
IDと方向の決定が終わったら、エンターを押し完了する。この時、camera-feedback/data/内に以下のファイルが作成される。
marker.pttrn
以上でキャリブレーションは終了である。
VisionTracking?を実行する際には、以下の手順で実行する。
make clean make
sudo ./vt_mock <hostIPアドレス> <port> --numplayers <player数> <ディスプレイの大きさ横> <ディスプレイの大きさ縦> transform.calibr marker.blob marker.pttrn <マーカー縦> <マーカー横>
sudo ./vt_mock localhost 3301 --numplayers 4 640 480 transform.calibr marker.blob marker.pttrn -70 -60
これでVisionTracking?を実行できる。
以下に違う環境での実行方法を記す。