我正在使用node ar drone modules 。我的无人机是 parrot ar 无人机 2.0 gps 版 我成功获取了 parrot ar 无人机 gps 数据。我想将 parrot ar 无人机发送到操纵的 GPS 位置。但我无法将 GPS 数据发送到 parrot ar 无人机。
有什么方法可以将受操纵的 GPS 数据发送到我的 Parrot AR 无人机吗?
最佳答案
有两种方法可以做到这一点。
首先,困难的方法。 node-ar-drone
用于与 AR.Drone 通信的协议(protocol)没有任何方法可以直接为无人机提供飞行坐标,但您可以自己进行计算。
- 启用无人机的磁力计(请参阅 https://github.com/wiseman/webflight-traffic/blob/master/index.js#L19)。
- 校准磁力计:命令无人机起飞,然后执行
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
使用的协议(protocol)之外,AR.Drone还支持MAVLink许多业余爱好者和商业无人机使用的协议(protocol)。该协议(protocol)有一种方法可以告诉无人机直接移动到特定坐标。您可以使用类似 QGroundControl 的应用程序将无人机发送到特定的纬度、经度,或者您可以使用现有的 MAVLink 库之一向无人机发送消息以执行相同的操作。
DroneKit-Python,例如, 是一个高级库,可让您编写如下代码(取自 this example ):
# set the default travel speed
vehicle.airspeed=3
point1 = LocationGlobalRelative(-35.361354, 149.165218, 20)
vehicle.simple_goto(point1)
关于node.js - 我如何将 GPS 数据发送到 parrot ar 无人机并转到我的无人机的 GPS 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42897828/