MATLAB Simulink中四旋翼无人机PID与ADRC控制效果大比拼
MATLAB simulink仿真四旋翼无人机自抗扰控制adrc与pid仿真模型。 pid与adrc控制效果比较。 。
在无人机控制领域,选择合适的控制算法至关重要。今天咱就来唠唠在MATLAB Simulink里,四旋翼无人机采用PID和ADRC(自抗扰控制)算法的仿真模型以及它们控制效果的比较。
一、搭建PID控制的四旋翼无人机模型
PID控制算是控制领域的“老大哥”了,简单且经典。在Simulink里搭建它的模型,首先要搞清楚四旋翼无人机的动力学模型。假设四旋翼无人机的动力学方程简化为:
\[

\begin{cases}
m\ddot{x} = -b\omega1^2\sin(\theta) + b\omega3^2\sin(\theta) \\
m\ddot{y} = b\omega2^2\sin(\phi) - b\omega4^2\sin(\phi) \\

m\ddot{z} = \sum{i = 1}^{4}b\omegai^2 - mg \\
Ix\ddot{\phi} = l b(\omega2^2 - \omega4^2) - kr\omega2^2 + kr\omega_4^2 \\
Iy\ddot{\theta} = l b(\omega1^2 - \omega3^2) - kr\omega1^2 + kr\omega_3^2 \\

Iz\ddot{\psi} = kr(\omega1^2 - \omega2^2 + \omega3^2 - \omega4^2)
MATLAB simulink仿真四旋翼无人机自抗扰控制adrc与pid仿真模型。 pid与adrc控制效果比较。 。
\end{cases}

\]
这里 \( m \) 是无人机质量, \( b \) 是升力系数, \( kr \) 是阻力系数, \( l \) 是臂长, \( \omegai \) 是各旋翼的角速度。
在Simulink中,我们可以用一系列的模块来实现PID控制。比如下面这段简单的MATLAB代码来设置PID参数:
Kp = 10;
Ki = 0.1;
Kd = 1;
在Simulink里,将这几个参数输入到PID Controller模块中。这个模块接收目标值(设定值)与当前状态值的差值,然后根据 \( Kp \) (比例系数)、 \( Ki \) (积分系数)、 \( Kd \) (微分系数)计算出控制输出。比例部分让输出快速响应误差变化,积分部分消除稳态误差,微分部分预测误差变化趋势提前调整输出。
二、构建ADRC控制的四旋翼无人机模型
ADRC相对来说比较新,它把系统中的未知部分当作“扰动”来处理,然后进行估计和补偿。搭建ADRC模型稍微复杂点。ADRC主要包括跟踪微分器(TD)、扩张状态观测器(ESO)和非线性状态误差反馈控制律(NLSEF)。

先看跟踪微分器的代码实现(以一阶为例):
function [x1, x2] = TD(r, h, x1, x2)
d = r * h;
a0 = x2;
y = x1 - r;
a1 = sqrt(d * d + 8 * r * abs(y));
a = (a0 + sign(y) * (a1 - d)) / 2;
a = a0 + sign(a) * (a - abs(a0));
x1 = x1 + h * a;
x2 = x2 + h * (-r * sign(a));
end
这段代码实现了跟踪微分器的功能,它可以安排过渡过程并且提取微分信号。
扩张状态观测器也有类似的代码实现,用来估计系统的状态和总扰动:
function [z1, z2, z3] = ESO(b0, beta01, beta02, beta03, h, u, y, z1, z2, z3)
e = z1 - y;
z1 = z1 + h * (z2 - beta01 * e);
z2 = z2 + h * (z3 - beta02 * fal(e, 0.5, 0.2) + b0 * u);
z3 = z3 - h * beta03 * fal(e, 0.25, 0.2);
end
function y = fal(e, alpha, delta)
if abs(e) > delta
y = abs(e)^alpha * sign(e);
else
y = e / (delta^(1 - alpha));
end
end
最后通过非线性状态误差反馈控制律计算控制量。
三、PID与ADRC控制效果比较
在同样的仿真环境下,给四旋翼无人机设定一个位置跟踪任务。从仿真结果来看,PID控制在初始阶段响应速度较快,因为比例环节的作用能快速对误差做出反应。但当遇到一些外界干扰或者模型参数不准确时,它的稳态误差就比较明显了,尤其是积分环节参数设置不好时,还容易出现超调。
而ADRC控制呢,由于它能实时估计并补偿系统的未知扰动,在面对外界干扰和模型不确定性时,表现得更加稳健。虽然它在初始响应速度上可能稍逊于PID,但能更快地达到稳定状态,而且稳态误差更小。

比如说,当我们给无人机模型加入一个随机的风扰时,PID控制下的无人机位置可能会出现较大波动,而ADRC控制的无人机依然能较好地跟踪目标位置。
综上所述,PID简单易用,适用于一些干扰较小、模型较准确的场景;而ADRC虽然实现复杂些,但在应对复杂多变的环境和模型不确定性方面有着明显优势,为四旋翼无人机的稳定控制提供了更可靠的保障。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)