わかりました、ウェイポイントに到達するために必要な移動方向を見つけるために 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 ほどではありません。とにかく助けていただければ幸いです。