使用GPS/指南针/加速度计算法达到航点?

3
我目前有一个装备了GPS、加速度计和罗盘等传感器的机器人。我希望让它去到我输入的GPS坐标位置。请问是否已经存在实现此功能的算法?我不需要源代码,只需要操作步骤,以便我理解我的操作过程……假设我可以每次都访问到GPS坐标,因此不需要Kalman滤波。虽然这有些不切实际,但我仍想一步步地进行编程,而Kalman是下一步。如果有任何想法,请告诉我……
4个回答

1
要计算两个经纬度点之间的方位角(指正北方向的正角度),请使用以下代码:
bearing = mod(atan2(sin(lon2-lon1)*cos(lat2),(lat1)*sin(lat2)-sin(lat1)*cos(lat2)*cos(lon2-lon1)),2*pi)
注意 - 角度可能需要用弧度来表示,这取决于您的数学包。
但对于较小的距离,您可以计算出在您所在位置每一度纬度和经度相当于多少米,然后将它们视为平面 X、Y 坐标。
对于典型的 45 度纬度,大约是 111.132 千米/度纬度,78.847 千米/度经度。

0

1) 将您的机器人朝向目的地。

2) 向前移动,直到您和目的地之间的距离开始增加,然后返回步骤1)

3) 但是...如果您足够接近(低于阈值),则认为您已到达目的地。


你好,感谢您的回答。我想知道如何从机器人和目的地的GPS坐标计算方位角。我猜这涉及到经度和纬度的一些计算,但我在谷歌上找不到相关信息。 - user740316

0
你可以使用 Location 类。它的 BearingTo 函数计算出到达另一个位置需要遵循的方位角。

0

有一个非常好的页面,解释了基于GPS的距离、方位等计算公式,我一直在使用:

http://www.movable-type.co.uk/scripts/latlong.html

我目前正在尝试自己进行这些计算,并发现Martin Becket的答案中存在错误。如果您将其与该网页的信息进行比较,您会发现中间部分:

(lat1)*sin(lat2)

实际上应该是:

cos(lat1)*sin(lat2)

本来想留下评论的,但还没有足够的声望...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接