在C#中查找文本框中显示值的平均值,该值不断更改GPS导航程序的浮动值

时间:2013-08-02 12:25:01

标签: c# navigation gps

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

2 个答案:

答案 0 :(得分: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;
}
...

答案 1 :(得分:0)

如果GPS仅在8英尺范围内准确,这意味着你的目标实际上是一个直径16英尺的圆形区域,对吧?因此,您可以在整个区域设置方位,而不是在点上创建方位。

我的想法是,当您获得更新的机器人位置位置时,您需要进行测试以查看当前航向是否与目标8英尺内的任何点相交。如果是这样,请不要改变你的roobot标题。即使您的位置指示波动,因为您正朝着更大的区域行驶,您的航线修正应该最小化。

此外,您可能需要考虑距目标的距离。离目标越远,你需要的准确度就越低。