2017-03-20 43 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) 
相關問題