2017-03-20 42 views

回答

0

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

首先,困难的方式。 node-ar-drone与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.latitudenavdata.gps.longitude
  5. 计算所需的航向,从无人机的当前位置到达目的地。有微妙的这一点,但对于大多数应用程序,你可以按照程序http://www.movable-type.co.uk/scripts/latlong.html描述:

    θ= ATAN2(SINΔλ⋅COSφ2,COSφ1⋅罪φ2 - 罪φ1⋅COSφ2⋅COSΔλ)其中φ1 ,λ1是起点,φ2,λ2是终点(Δλ是经度差)。由于atan2返回范围-π... +π(即-180°... + 180°)中的值,因此要将结果标准化为指南针方位(范围为0°...)。 360°,其中-ve值转换为180°范围内的数值...),转换为度数然后使用(θ+ 360)%360,其中%是(浮点数)模。

  6. 找出无人机是否需要顺时针或逆时针旋转以实现所需的航向,并根据需要调用client.clockwiseclient.counterClockwise

  7. 当无人机面对正确的标题时,告诉它与client.front一起前进。

一旦无人机在正确的方向前进,每次你得到新的NAV数据时,您应检查当前航向,重新计算所需的标题,并告诉无人机顺时针或逆时针如果需要的话。一旦你在你想要的目的地的某个阈值(5英尺50英尺?)内,告诉无人机以client.stop停止。

除此之外node-ar-drone用途中,AR.Drone的也支持MAVLink协议的协议,由许多爱好者和商业无人驾驶飞机使用。该协议有办法告诉无人机直接移动到特定的坐标。您可以使用像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) 
相关问题