DJI串级PID算法架构

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。

相关文章
相关标签/搜索