我正在使用节点ar无人机模块。我的无人机是鹦鹉 ar 无人机 2.0 GPS 版我成功地获得了鹦鹉 ar 无人机 GPS 数据。我想将鹦鹉 ar 无人机发送到操纵的 GPS 位置。但我无法将 GPS 数据发送到鹦鹉无人机。
有没有办法将操纵的GPS数据发送到我的鹦鹉AR无人机?
有两种方法可以做到这一点。
首先,艰难的方式。node-ar-drone
用于与AR通信的协议。无人机没有任何方法可以直接给无人机提供飞行的坐标,但你可以自己计算。
- 启用无人机的磁力计(见 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
.
一旦无人机朝着正确的方向前进,每次获得新的 navdata 时,都应该检查当前航向,重新计算所需的航向,并在需要时告诉无人机顺时针或逆时针转动。 一旦你进入你想要的目的地的某个阈值(5英尺?50英尺?),告诉无人机停下来client.stop
。
除了node-ar-drone
使用的协议之外,AR。无人机还支持MAVLink协议,许多业余爱好者和商业无人机都使用该协议。 该协议有办法告诉无人机直接移动到特定坐标。 您可以使用QGroundControl之类的应用程序将无人机发送到特定的纬度,经度,或者您可以使用现有的MAVLink库之一向无人机发送消息以执行相同的操作。
例如,DroneKit-Python, 是一个高级库,可让您编写如下代码(取自此示例):
# set the default travel speed
vehicle.airspeed=3
point1 = LocationGlobalRelative(-35.361354, 149.165218, 20)
vehicle.simple_goto(point1)