3

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

如果有人有想法...

4

4 回答 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 公里/度经度。

于 2011-06-28T19:50:53.103 回答
0

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

2) 向前移动,直到您和目的地之间的距离越来越大,您应该回到 1)

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

于 2011-05-14T07:41:23.487 回答
0

你可以使用Location类。它的BearingTo功能计算您必须遵循的方位才能到达另一个位置。

于 2011-06-28T18:30:52.857 回答
0

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

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

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

(lat1)*sin(lat2)

实际上应该是:

cos(lat1)*sin(lat2)

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

于 2017-05-08T21:43:52.833 回答