応用機能とトラッキング
本章では、システムの自動トラッキング機能(カラートラッキング、顔トラッキング、QR コードトラッキング)と、ターゲットロック機構およびパラメータチューニングについて詳しく説明します。
自動トラッキングモードの概要
システムは 3 つの自動トラッキングモードに対応しています:
- カラートラッキング:指定した色の物体をトラッキングします
- 顔トラッキング:顔をトラッキングします
- QR コードトラッキング:QR コードをトラッキングします
カラートラッキング
色の選択
システムは複数の色のトラッキングに対応しています:
- 赤
- 緑
- 青 プログラム内では、キー操作で色を切り替えられます:
X:赤を選択Y:緑を選択Z:青を選択
カラートラッキングの使用手順
Cを押してジンバルに接続します2を押してカラートラッキングモードに入ります- ターゲットとなる色の物体を画面中央に置きます
Tを押してターゲットをロックします- ターゲットを移動させ、ジンバルの追従効果を観察します
シンプルなカラートラッキングの例
シンプルなカラートラッキングのサンプルプログラムを使用することもできます:
python
python examples/04_color_track_simple.py --camera 0 --port COM3 --color redこのプログラムは最も基本的なカラートラッキング機能を提供しており、学習に適しています。
顔トラッキング
顔トラッキングの原理
システムは OpenCV の Haar カスケード分類器を使用して顔検出を行います。顔が検出されると、システムはターゲット位置を自動的に計算し、ジンバルを制御して追従させます。
顔トラッキングの使用手順
Cを押してジンバルに接続します1を押して顔トラッキングモードに入ります- 顔を画面中央に合わせます
Tを押してターゲットをロックします- 顔を動かすと、ジンバルが自動的に追従します
顔検出の成功率を高めるためのヒント
- 照明を十分に確保し、逆光を避ける
- 顔をカメラに正面向きにする
- 適切な距離を保つ(1〜3 メートルを推奨)
- 複数の顔が映る状況を避けるか、ロック機構を使用してトラッキング対象を固定する
QR コードトラッキング
QR コードトラッキングモードは、OpenCV の QRCodeDetector を利用して QR コードの認識と位置特定を行います。使用方法は前述の 2 つのトラッキングモードと同様です:
- ジンバルに接続し、QR コードトラッキングモードに入ります
- QR コードを画面中央に置き、
Tを押してロックします - QR コードを移動させ、ジンバルの追従効果を観察します
ターゲットロック機構
ロックの役割
ターゲットロック機構はシステムの重要な機能であり、以下の役割があります:
- ロック時のターゲットの中心位置とサイズを記録する
- 複数のターゲットが出現した場合、ロックポイントに最も近いターゲットを優先的に選択する
- ターゲットが頻繁に切り替わるのを防ぎ、トラッキングの安定性を維持する
ロックの手順
- ターゲット物体を画面中央に置きます
Tを押してロックします- ロックに成功すると、システムはロック時と最も類似したターゲットを優先的にトラッキングします
Sを押すとロックを解除し、トラッキングを停止できます
ロック時の選択ロジック
システムはロック後のターゲット選択において、2 つの要素を総合的に考慮します:
- 距離:ターゲット中心とロックポイントとの距離(重み 70%)
- サイズ:ターゲットサイズがロック時とどの程度類似しているか(重み 30%)
- システムは総合スコアが最も高いターゲットを選択してトラッキングします
トラッキング制御パラメータのチューニング
src/trackers/tracking_controller.py には、以下の調整可能なパラメータがあります:
| パラメータ名 | デフォルト値 | 説明 |
|---|---|---|
| kp_pan | 0.08 | 左右トラッキングの比例ゲイン |
| kp_tilt | 0.12 | 上下トラッキングの比例ゲイン |
| dead_zone | 30 | デッドゾーン範囲(ピクセル)。この範囲内ではジンバルを動かしません |
| min_move_interval | 0.15 | 最小移動間隔(秒)。ジンバルの動作頻度を制限します |
パラメータの調整方法
- トラッキングが遅い:
kp_panとkp_tiltを大きくする - トラッキングが敏感すぎて振動する:
kp_panとkp_tiltを小さくするか、min_move_intervalを大きくするか、dead_zoneを大きくする - 頻繁な微調整で振動する:
dead_zoneを大きくする - 方向が逆:
calculate_moveメソッド内のdelta_panまたはdelta_tiltの符号を反転する
トラッキングの完全な使用例
以下は完全な使用手順の例です:
- プログラムを起動します:
python
python examples/auto_tracking_demo.py --camera 0 --port COM3 --color redCを押してジンバルに接続します2を押してカラートラッキングモードを選択します- 赤い物体を画面中央に置きます
Tを押してターゲットをロックします- 物体を移動させ、ジンバルの追従効果を観察します
- 緑に切り替える場合は、
Yを押した後に再度Tを押してロックします Sを押してトラッキングを停止し、Rを押して中央に戻しますQを押して終了します
発展的な開発のヒント
機能をカスタマイズしたり、二次開発を行ったりする場合は、以下を参考にしてください:
src/sc_servo.py:サーボ通信の低レベル層src/gimbal.py:ジンバル制御src/trackers/tracking_controller.py:トラッキングコントローラーsrc/detectors/:各種ターゲット検出器

