1

私は、超音波近接センサーによって部分的にナビゲートする自律ローバーに取り組んでいます。ハードウェアを実装する前に、シミュレーターを使用してアルゴリズムのテストを行いたいと思います。これは現在作成中です。

私が問題を抱えている1つのタスクは、超音波センサーの視野が60度であることです。オブジェクトが検出された場合、その半径でその60度の円弧に沿った任意のポイントにオブジェクトが含まれる可能性がありますが、その半径より下のすべてのポイントにはオブジェクトがないことが保証されます。

私がする必要があるのは、(x、y)座標と方位を与えられた関数を書いて(今のところこれを4つの枢機卿に制限しています)、半径内のピクセルのリストとその半径のピクセルのリスト。複数の場所と方位から繰り返しスキャンすると、すべてのオブジェクトを見つけることができます。

私の最初の考えは、反復的に作業することでした。センサーの前の列から開始し、徐々に幅の広いスキャン(1,1,3,3,5,5,7,7など)で前後にスイープします。ただし、最終的に半径は行との位置合わせを停止します。私の新しい検索パスは、ピクセルで円弧を描く方法を見つけてから、半径を最初の衝突までステップアップすることです。

この質問も同様の質問ですが、特定の点にしか興味がないので、根本的に違う問題だと思います。

与えられた点(経度、緯度)から与えられた半径内のすべての点(経度、緯度)を計算する方法は?

4

1 に答える 1

2

任意のFloodfillメソッドを使用して、セクター内のすべての整数ポイントを取得できます。開始角度と終了角度を次のように事前計算します

S_Angle = Center_Bearing - Pi/6
E_Angle = Center_Bearing + Pi/6

重要な値:

S_Cos = Cos(S_Angle)
S_Sin = Sin(S_Angle)
E_Cos = Cos(E_Angle)
E_Sin = Sin(E_Angle)

セクターの氾濫の国境条件:

(x-x0)*S_Sin-(y-y0)*S_Cos >= 0  //point is left to starting ray
(x-x0)*E_Sin-(y-y0)*E_Cos <= 0  //point is right to ending ray
(x-x0)^2+(y-y0)^2 <= R^2        //point is in the range

(おそらく、最初の不等式ペアで> =と<=を交換する必要があるかもしれません)

于 2013-02-14T05:36:48.597 に答える