我正在使用节点 ar 无人机模块。我的无人机是 parrot ar 无人机 2.0 gps 版我成功获取了 parrot ar 无人机 gps 数据。我想将鹦鹉 ar 无人机发送到被操纵的 gps 位置。但我无法将 gps 数据发送到 parrot ar 无人机。
有什么方法可以将操纵的 gps 数据发送到我的 parrot ar 无人机?
我正在使用节点 ar 无人机模块。我的无人机是 parrot ar 无人机 2.0 gps 版我成功获取了 parrot ar 无人机 gps 数据。我想将鹦鹉 ar 无人机发送到被操纵的 gps 位置。但我无法将 gps 数据发送到 parrot ar 无人机。
有什么方法可以将操纵的 gps 数据发送到我的 parrot ar 无人机?
有两种方法可以做到这一点。
首先,艰难的道路。用于与 AR.Drone 对话的协议node-ar-drone
没有任何方法可以直接提供无人机要飞到的坐标,但您可以自己进行计算。
client.calibrate(0)
(参见https://github.com/felixge/node-ar-drone#clientcalibratedevice_num)。navdata.magneto.heading.fusionUnwrapped
。navdata.gps.latitude
从和获取无人机的当前坐标navdata.gps.longitude
。计算从无人机当前位置到目的地所需的航向。这有一些微妙之处,但对于大多数应用程序,您可以遵循http://www.movable-type.co.uk/scripts/latlong.html中描述的过程:
θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 - sin φ1 ⋅ cos φ2 ⋅ cos Δλ ) 其中φ1,λ1是起点,φ2,λ2是终点(Δλ是经度差) .
由于 atan2 返回 -π ... +π 范围内的值(即 -180° ... +180°),因此将结果归一化为罗盘方位(范围 0° ... 360°,使用-ve 值转换为范围 180° ... 360°),转换为度数,然后使用 (θ+360) % 360,其中 % 是(浮点)模数。
确定无人机是否需要顺时针或逆时针旋转以达到所需的航向,并酌情调用client.clockwise
或client.counterClockwise
。
当无人机朝向正确的航向时,告诉它向前移动client.front
。
一旦无人机朝着正确的方向前进,每次获得新的导航数据时,都应检查当前航向,重新计算所需航向,并告诉无人机在需要时顺时针或逆时针转动。一旦您在目标目的地的某个阈值内(5 英尺?50 英尺?),请告诉无人机停止client.stop
。
除了node-ar-drone
使用的协议外,AR.Drone 还支持MAVLink协议,被许多业余爱好者和商业无人机使用。该协议有一种方法可以告诉无人机直接移动到特定坐标。您可以使用QGroundControl之类的应用程序将无人机发送到特定的纬度、经度,或者您可以使用现有的 MAVLink 库之一向无人机发送消息以执行相同的操作。
例如,DroneKit-Python 是一个高级库,可让您编写如下代码(取自此示例):
# set the default travel speed
vehicle.airspeed=3
point1 = LocationGlobalRelative(-35.361354, 149.165218, 20)
vehicle.simple_goto(point1)