1.獲得當前位置xyzcode
2.獲取當前poll,pitch,yawit
3.求出當前位置離一開始的位置是否有誤差,誤差距離爲,xyzclass
4.根據設定的值看看還要走多遠,用設定的值減去xyz表示剩下的距離。sed
5.設置角度誤差的極限值。0.01745329252*yawDesiredfloat
double yawDesiredRad = DEG2RAD*yawDesired; //角度誤差 double yawThresholdInRad = DEG2RAD*yawThresholdInDeg; //角度最大誤差 float32_t posThresholdInM = posThresholdInCm/100; //位置最大誤差,默認爲5 int elapsedTime = 0; //執行的次數 int speedFactor = 2; //定義的xy的閾值,單位米
6.指望誤差絕對值大於2米則取移動距離爲2米,小於兩米等於自己。高度的話無限制,直接當前高度+指望高度就好了。im
7.根據第4步計算的值去和咱們定的最小距離0.05進行比較,若是比這個偏差大就進行調整。移動
8.若是比偏差大就進行移動。移動的距離就是第六步的結果。co
9.而後獲取當前位置,並和初始位置比較,看下仍須要走多遠。計算出已經走得xyz向量。time
10.求出還須要走的距離向量xyz,用總距離減去已經走過的。ps
11.最後看剩下的距離是否大於2米,大於兩米繼續,不然進行微調。
timeoutInMs默認10000,10000/20*20=10000ms=10s,因此一次得移動最多執行500次,耗時10s。