FMT自抗扰控制算法(ADRC)现已开源!

自抗扰控制(Active Disturbance Rejection Control, ADRC)是由韩京清先生于1998年正式提出,其独特之处在于它把作用于被控对象的所有不确定因素归结为“未知扰动”,而用对象的输入输出数据对它进行估计并补偿。自抗扰控制最大的优点就是不要求被控对象有精确的数学模型,是不依赖模型的控制算法,其控制结构图如下:

FMT飞控团队2018年就开始对ADRC算法的研究并将其成功应用在无人机控制上。经过多年的实践经验和总结,目前已经将ADRC算法在FMT台上基于Simulink实现,并且已经开源出来,合并到了FMT的Github主仓库中。
FMT Github:https://github.com/Firmament-Autopilot

ADRC算法取得了比传统串级PID更好的控制效果,控制跟踪更迅速,误差更小。特别是对于外界扰动的抵抗,比如挂重物,抵抗强风上,效果明显。

适配ADRC自抗扰控制算法的MFP450室内飞行实验

目前开源的ADRC算法及其参数是使用阿木实验室的MFP450无人机(搭载FMT的ICF5飞控)进行实现,基于该无人机可以直接复现视频中的飞行效果。

注:若是使用其它机型,可能无法保证获得类似的控制效果。

使用ADRC控制模型

运行FMT_Model.prj初始化工程后,点击上方的Project Path选项。在Manage Project Path页面中删除其它的控制器路径,并将ADRC-Controller的控制算法模型路径添加进去,如下图所示:

然后关闭FMT_Model的Simulink Project,重新运行FMT_Model.prj,即可看到ADRC-Controller被添加到了工程中(ADRC-Controller的目录点亮)。

编译ADRC控制算法

在FMT-Firmware中已经集成了ADRC控制器模型生成的代码,所以可以直接使用。若要在FMT-Firmware中使用ADRC控制器并将其编译烧写到飞控硬件中,只需要修改model.py,并将MODELS中的控制器改为control/adrc_controller并保存,然后重新编译下载固件即可。

启动飞控,可以看到飞控输出信息显示控制器模型的名称为ADRC Controller。
`


/ ()__ __ _ / /
/ _// / / ‘ \/ `/ ‘ \/ -) \/ __/
// /// ////\,////_////_/
Firmware………………FMT FW v1.0.0-rc
Target………………………Amov-ICF5
Vehicle……………………Multicopter
Airframe……………………………1
INS Model………………Base INS v1.0.0
FMS Model………………Base FMS v1.0.0
Control Model…….ADRC Controller v1.0.0
Task Initialize:
offboard…………………………OK
mavobc…………………………..OK
mavgcs…………………………..OK
logger…………………………..OK
status…………………………..OK
vehicle………………………….OK`

如需了解FMT中的ADRC算法实现原理,可前往阿木实验室公众号,后台回复” ADRC “,获取相关论文。

如果您对搭载ICF5飞控的基础款无人机SFP250和MFP450感兴趣,可添加下方客服微信,我们将给您提供专业的选购建议: