我想将遥控车从 A 点导航到 B 点。gps 模块用于查找当前位置坐标,即 A 点。用户根据 A 点输入 B 点坐标。我想知道我应该使用什么算法来移动遥控车,即这个算法应该告诉机器人前进或右转,直到它到达 B 点。
我一直在研究卡尔曼滤波算法。有没有我可以使用的另一种算法。
环境:机器人应在室内导航。我必须使用 GPS,因为这是一项要求。GPS 是机器人上唯一的导航传感器。
谢谢, 普拉文
我想将遥控车从 A 点导航到 B 点。gps 模块用于查找当前位置坐标,即 A 点。用户根据 A 点输入 B 点坐标。我想知道我应该使用什么算法来移动遥控车,即这个算法应该告诉机器人前进或右转,直到它到达 B 点。
我一直在研究卡尔曼滤波算法。有没有我可以使用的另一种算法。
环境:机器人应在室内导航。我必须使用 GPS,因为这是一项要求。GPS 是机器人上唯一的导航传感器。
谢谢, 普拉文
请记住,GPS 精度在 2-3 米之内,我想这对于一辆 RC 汽车来说将是一个真正的问题,因为这种程度的不准确性对它来说非常重要。
您的 GPS 接收器应输出 NMEA,其中包含一个称为 RMC 的 NMEA 语句。这句话的第 5 字段是以节为单位的地面速度,第 6 字段是以度为单位的航向。字段 1 和 2 为您提供当前位置坐标 A=(lat1, lon1),并且您已将目的地键入为 B=(lat2, lon2)
现在您想要的航向是使用 atan2 计算的,如下所示:
heading = atan2( sin(lon2-lon1)*cos(lat2), cos(lat1)*sin(lat2) - sin(lat1)*cos(lat2)*cos(lon2-lon1))
然后将其从弧度转换为度数,但您还需要为任何否定答案添加 180 度(因为航向的结果在 -180 和 180 之间)。
所以现在你有你的实际航向 hA,你应该在 hB 的航向。从另一个中减去一个(hA - hB),如果您的答案是肯定的,则开始向右转,如果您的答案是否定的,则开始向左转。
廉价接收器上的 GPS 距离在 2 米到 10 米之间。由于卫星能见度受限,室内情况会更糟。
一般来说,你花在接收器上的钱越多,准确度就越高。您可以使用 RTK 达到亚英寸的精度,但这在 10K 美元的范围内。
要开车到航点,您需要知道您当前的位置以确定从您到航点的航向。然后你需要知道你的车辆的航向,你可以根据你去过的路径稍微接近它。然后,您需要能够驾驶车辆,使其指向航路点。为了使您的车辆正确行驶,您可能需要监控转向角。
我已经用农场设备做到了这一点。高精度 GPS 接收器提供位置和速度。它的路径提供车辆航向信息,然后车轮角度传感器提供转向控制回路的反馈。