3

おもちゃの銃を表現するために手に持った携帯電話を使用して、それを動かし (「照準」とします)、方向データ (ピッチ、ヨー、ロール) をラップトップに転送します。ウェブカメラのフィードが前方を向いています。

ユーザーが携帯電話を正面に持っている間にラップトップの Enter キーを押すようにして、アプリケーションを開始します。これが最初のキャリブレーション手順であり、最初のヨー/ピッチを参考にして中心を目指します。

次に、十字線を描画するカメラ フィード ループ中に、これらの初期キャリブレーション値に対するピッチ/ヨーの変化を測定し、それらを使用して十字線を左/右/上/下に再描画します。十字線プログラム

これは私の現在のコードです:

  pitchDiff = initPitch - newPitch   #corresponds to Y axis
  yawDiff = 0-(initYaw - newYaw)     #corresponds to X axis
  pitchChangeFactor = 10
  yawChangeFactor = 10

  xC = int((imgWidth/2) + yawDiff*yawChangeFactor) 
  yC = int((imgHeight/2) - pitchDiff*pitchChangeFactor)

  ## THE TARGETING GUI
  cR = 40 #circle radius
  cv2.circle(img, (xC,yC), cR, (20, 20, 255), 3)

この質問で私が求めているのは、これをより正確かつスムーズに行う方法です。ジャイロ データはノイズが多いため、1 秒あたり 30 フレームごとにサンプリングすると、実際にはピッチ/ヨーについて約 60 のジャイロ読み取り値の中央値を取得します。

また、動的モデルが間違っていると思います。角度の変化に応じて、ターゲットの十字線を画面上で一定量だけ動かしているだけです。三角関数が必要だと思いますが、何を試せばよいかわかりません。カメラを 1 台しか使用していないため、明らかに深度データが不足しています。ただし、狙いたいターゲットは、たとえば、3〜4メートル前方にあると想定して問題ありません。

助けてくれてありがとう

4

1 に答える 1

2

どうすればこれをより正確かつスムーズに行うことができますか?

ジャイロスコープは、ヨー レート、ロール レート、およびピッチ レートを測定しますが、ロール、ピッチ、およびヨーを直接測定することはできません。携帯電話からピッチ角とヨー角を要求すると、ジャイロと加速度計のデータ (場合によっては磁力計のデータ) が組み合わされて、ピッチ角とヨー角の推定値が得られます。ジャイロデータとは、携帯電話が提供する推定ヨーとピッチを意味していると思います。ヨーレートやピッチレートなどではなく、ヨー角とピッチ角を使用していることを確認してください。

推定角度を使用している場合、計算を行う前に、これらの信号をフィルタリングするさまざまな方法を調べることができます。60サンプルのメディアンフィルターについて言及しました。他のフィルターは試しましたか?状況によっては、単純なローパス フィルターの方がパフォーマンスが良い場合があります。信号に大きな急激なスパイクが発生した場合はメディアン フィルターが適していますが、状況によってはローパス フィルターまたは移動平均がより適切に機能する場合があります。これを行う適切な方法は、しばらくの間データを取得しながら携帯電話の位置を固定し、ノイズの周波数成分を分析し、適切なカットオフ周波数を持つフィルターを選択して、できるだけ多くのノイズを除去することですが、これは、あなたがやろうとしていることに対してやり過ぎかもしれません。

まず、単純な移動平均またはローパス フィルターを試してみることをお勧めします。ソフトウェアでフィルターを実装する方法を示すリソースが Web 上にたくさんあります。 ( http://en.wikipedia.org/wiki/Low-pass_filter )

動的モデル

あなたの計算に関する限り、あなたの電話が上記のように速度ではなく角度を提供している限り、私には問題ないようです.

三角関数は必要ありません。角度を画面位置にマッピングしようとしているだけの場合は、x 度の角度の変化が画面位置の M*x ピクセルの変化に対応するように、行ったような単純な線形マッピングだけで十分です。

役立つもう 1 つのことは、携帯電話が 30 Hz よりも高速にデータを提供できるかどうかです。画面を 30 Hz で更新することはできますが、より高速にサンプリングすると、フィルタリングがより効果的になる場合があります。これはすべてノイズの性質に依存しますが、可能であればサンプリング レートを試してみてください。

あなたのプロジェクトで頑張ってください。

于 2013-07-24T16:11:15.827 に答える