我正在使用node ar drone modules。我的无人机是parrot ar drone 2.0 gps版本我成功获得了parrot ar drone gps数据。我想将parrot ar无人机送到操纵的gps位置。但是我无法将gps数据发送给parrot ar无人机。
有没有办法将操纵的gps数据发送到我的parrot ar无人机?
答案 0 :(得分:2)
有两种方法可以做到这一点。
首先,艰难的方式。node-ar-drone
与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,例如, 是一个高级库,可以让你编写这样的代码(取自this example):
# set the default travel speed
vehicle.airspeed=3
point1 = LocationGlobalRelative(-35.361354, 149.165218, 20)
vehicle.simple_goto(point1)