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



我目前有一个带有一些传感器的机器人,如GPS,加速度计和指南针。我想做的是我的机器人到达我输入的GPS坐标。我想知道是否已经存在任何算法来做到这一点。我不想要源代码,这没有任何意义,只是我的机器人要遵循的程序,让我能够理解我做什么......目前,让我们想象一下我每次都可以访问GPS坐标,所以不需要卡尔曼滤波器。我知道这是不现实的,但我想一步一步地编程,卡尔曼是下一步。

如果有人有想法...

要在两个经度点之间获取方位角(北以东的正角),请使用:

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公里/度。

1)将机器人定向到目的地。

2)前进,直到你和目的地之间的距离增加,你应该回到1)

3)但是...如果您足够近(低于阈值),请考虑您已到达目的地。

您可以使用

Location类。它BearingTo函数计算到达另一个位置时必须遵循的方位。

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

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

我目前正在尝试自己进行这些计算,刚刚发现马丁贝克特的答案中存在错误。如果您与该网页的信息进行比较,您将看到中间的部分:

(lat1)*sin(lat2)

实际上应该是:

cos(lat1)*sin(lat2)

本来会留下评论,但还没有声誉...

最新更新