好的,我有这个程序,它利用 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。无论如何,任何帮助将不胜感激。