Crazyflie firmware(4)-Controller

有了state estimation, Crazyflie就知道了 where it is,那么我们接下来要知道where it wants to go,这可以通过high level commander(作为crazyswarm project的部分实现)或者set-points(由地面站上的CFclient 给出)或者直接from scripts using Crazyflie python lib。具体关于Crazyflie无人机的动力学,可以参考Demystifying Drone Dynamics!

针对Crazyflie的控制器,可以有多种,如下图

Possible controller pathways

Cascaded PID controller

在Crazyflie的firmware上默认的控制器就是PID,上图中的第一个。

INDI Controller

INDI控制器是 Incremental Nonlinear Dynamic Inversion控制器的缩写。这是一个很新的addition to the Crazyflie firmware。它是基于2016年发表于AIAA的Journal of Guidance, Control, and Dynamics的文章Adaptive incremental nonlinear dynamic inversion for attitude control of micro air vehicles而实现的。其中position controller还是和第一个Cascaded PID controller的一样。我们还没有完全test it out。如果你有,可以在Bitcraze Forums分享。

Mellinger Controller

作为Crazyswarm project(Merging Crazyswarm functionality into the official Crazyflie firmware)的一部分,Daniel Mellinger发表在2011 ICRA的论文Minimum snap trajectory generation and control for quadrotors中的控制器有在Crazyflie firmware上实现。它是一种All-in-one的控制器,即给定期望的translational位置和速度,控制器直接算出desired thrusts。该控制器能使得无人机会有更光滑的轨迹,所以it’s advised to use when the Crazyflie has a precise position estimate (例如lighthouse and mocap,毫米级精度)。但是由于它比较aggressive,因此精度差一点的位置估计(例如flowdeck or Loco Positioning System,厘米级精度)就最好不要用该控制器。具体的关于Mellinger Controller的控制器,请参考Creating trajectories for the High-level Commander with Bezier curvesIROS 2019的demo

Leave a Comment