0

わかりました、ウェイポイントに到達するために必要な移動方向を見つけるために GPS 座標を利用するこのプログラムがあります。GPS座標を2つのテキストボックス(経度、緯度)に表示しています。私が抱えている問題は、GPS 座標 (8 フィートまでしか正確でなく、常に変動しているため) の方向が一定に保たれているという事実です。したがって、テキストボックスに表示されているデータの平均 (5 ~ 10 の読み取り値) を何らかの形で取得し、これから見出しを取得できれば、おそらく見出しはより長く一定に保たれると考えました。他の誰かがこれを行う方法についてアイデアを持っていない限り。

コードの場合:

string[] locate=nav.Split(',');// array from a coordinate value recieve from listbox    
float nlat = (float)Math.Round((float.Parse(locate[0])),5);
float nlong = (float)Math.Round((float.Parse(locate[1])),5);
float gpslong = (float)Math.Round((float.Parse(longTxt.Text.ToString())),5);//value from GPS
float gpslat=(float)Math.Round((float.Parse(latTxt.Text.ToString())),5);//value from GPS
double pi = Math.PI;

float diffy = nlong- gpslong;
float diffx = nlat -gpslat;

double heading=(double)(Math.Atan2(diffy,diffx)*180/pi);

while (compassBearing > heading)//compassBearing is current heading, heading is needed
{
     Serialport.Write("l"); //turn left Motorcontroller is designed to keep going in a direction till another order is recieved
    return;
 }
while (compassBearing < heading)
{
     Serialport.Write("r");//turn right
     return;
 }
Serialport.Write("w");//drive forward
 if (nlong == gpslong  && nlat == gpslat)
 {
      Serialport.Write(" ");//stop
  }

私のコード(ロボットをナビゲートしている)では、GPS座標が一定ではないため、彼は前進し、すぐに方位を失い、左と右に曲がってから、もう一度行くと...現在の方位は少し変動していますが、GPS ほどではありません。とにかく助けていただければ幸いです。

4

2 に答える 2

0

reduce_accuracy 変数を使用して、もう少し不正確にすることができますが、より長く一定に保つことができます。これは迅速かつ簡単ですが、5 ~ 10 の読み取りごとに平均を取ることがどれほど良いかはわかりません... それは依存しますあなたが達成しようとしていることについて

...
double reduce_accuracy = 1;

while (compassBearing > heading + reduce_accuracy)//compassBearing is current heading, heading is needed
{
     Serialport.Write("l"); //turn left Motorcontroller is designed to keep going in a direction till another order is recieved
    return;
 }
while (compassBearing < heading - reduce_accuracy)
{
     Serialport.Write("r");//turn right
     return;
}
...
于 2013-08-02T12:50:27.373 に答える
0

GPS が 8 フィート以内の精度しかない場合、ターゲットは実際には直径 16 フィートのほぼ円形の領域であることを意味します。したがって、ポイントに方位を作成する代わりに、領域全体に方位を設定することができます。

私の考えでは、更新されたロボットの位置を取得したら、現在の進行方向がターゲットから 8 フィート以内の任意の点と交差するかどうかをテストします。その場合は、roobot の見出しを変更しないでください。位置表示が変動しても、より広いエリアに向かって運転しているため、コースの修正は最小限に抑える必要があります。

また、ターゲットまでの距離を考慮することもできます。ターゲットから遠ざかるほど、精度が低くなる必要があります。

于 2013-08-02T12:55:00.817 に答える