1

我正在使用节点 ar 无人机模块。我的无人机是 parrot ar 无人机 2.0 gps 版我成功获取了 parrot ar 无人机 gps 数据。我想将鹦鹉 ar 无人机发送到被操纵的 gps 位置。但我无法将 gps 数据发送到 parrot ar 无人机。

有什么方法可以将操纵的 gps 数据发送到我的 parrot ar 无人机?

4

1 回答 1

2

有两种方法可以做到这一点。

首先,艰难的道路。用于与 AR.Drone 对话的协议node-ar-drone没有任何方法可以直接提供无人机要飞到的坐标,但您可以自己进行计算。

  1. 启用无人机的磁力计(参见https://github.com/wiseman/webflight-traffic/blob/master/index.js#L19)。
  2. 校准磁力计:命令无人机起飞,然后执行client.calibrate(0)(参见https://github.com/felixge/node-ar-drone#clientcalibratedevice_num)。
  3. 从 获取无人机的磁航向navdata.magneto.heading.fusionUnwrapped
  4. navdata.gps.latitude从和获取无人机的当前坐标navdata.gps.longitude
  5. 计算从无人机当前位置到目的地所需的航向。这有一些微妙之处,但对于大多数应用程序,您可以遵循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,其中 % 是(浮点)模数。

  6. 确定无人机是否需要顺时针或逆时针旋转以达到所需的航向,并酌情调用client.clockwiseclient.counterClockwise

  7. 当无人机朝向正确的航向时,告诉它向前移动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)
于 2017-04-10T23:24:07.040 回答