1. 项目概述
在工业自动化和机器人控制领域,二自由度刚性机械臂作为基础研究对象,其轨迹跟踪精度直接影响作业性能。传统控制方法如PID在面对机械臂动力学中的强非线性、参数不确定性和外部扰动时,往往难以兼顾控制精度与鲁棒性。本文将详细介绍一种基于自适应终端滑模控制(ATSMC)的二自由度刚性机械臂控制方法,通过Matlab仿真验证其有效性。
2. 理论基础与问题描述
2.1 机械臂动力学模型
二自由度刚性机械臂的动力学模型可表示为:
M(q)q̈ + C(q,q̇)q̇ + G(q) = τ + d(t)
其中:
- q ∈ R²:关节角度向量
- M(q) ∈ R²ˣ²:对称正定惯性矩阵
- C(q,q̇) ∈ R²ˣ²:科里奥利力和离心力矩阵
- G(q) ∈ R²:重力向量
- τ ∈ R²:控制输入扭矩
- d(t) ∈ R²:外部扰动
2.2 控制目标与挑战
控制目标:设计控制律τ,使机械臂关节角度q跟踪期望轨迹q_d,即lim(t→∞)|q-q_d|=0。
主要挑战:
- 系统强非线性:惯性矩阵M(q)和科里奥利力矩阵C(q,q̇)都是关节角度q的非线性函数
- 参数不确定性:实际机械臂参数与标称值存在偏差
- 外部扰动:工作环境中存在不可测干扰
- 抖振问题:传统滑模控制存在高频切换导致的控制信号抖振
3. 自适应终端滑模控制器设计
3.1 终端滑模面设计
与传统线性滑模面不同,终端滑模面引入非线性项以实现有限时间收敛:
s = ė + λe + β|e|^γ sign(e)
其中:
- e = q - q_d:跟踪误差
- λ, β > 0:设计参数
- 0 < γ < 1:分数幂指数
3.2 自适应律设计
为克服传统滑模控制需要预先知道扰动上界的限制,设计自适应律在线估计不确定性上界:
ˆρ̇ = γ|s|, γ > 0
其中ˆρ为不确定性上界估计值,γ为自适应增益。
3.3 控制律设计
综合滑模面和自适应律,得到最终控制律:
τ = -M(q)(q̈_d - λė - βγ|e|^(γ-1)ėsign(e)) - C(q,q̇)q̇ - G(q) - (ˆρ + η)sign(s)
其中η > 0为设计参数,用于保证收敛性。
3.4 抖振抑制技术
为抑制控制信号抖振,采用边界层方法将符号函数sign(s)替换为饱和函数sat(s/Φ):
sat(s/Φ) = {
s/Φ, |s| ≤ Φ
sign(s), |s| > Φ
}
其中Φ > 0为边界层厚度。
4. Matlab仿真实现
4.1 仿真参数设置
matlab复制% 机械臂参数
m1 = 1.0; m2 = 0.8; % 连杆质量(kg)
l1 = 0.5; l2 = 0.4; % 连杆长度(m)
lc1 = 0.25; lc2 = 0.2; % 质心位置(m)
I1 = 0.05; I2 = 0.03; % 转动惯量(kg·m²)
g = 9.81; % 重力加速度(m/s²)
% 控制器参数
lambda = diag([5,5]);
beta = diag([3,3]);
gamma = 0.5;
eta = 0.1;
phi = 0.05; % 边界层厚度
gamma_adapt = 10; % 自适应增益
% 仿真设置
tspan = [0 10]; % 仿真时间
q0 = [0; 0]; % 初始位置
qd0 = [0; 0]; % 初始速度
4.2 主要函数实现
4.2.1 动力学模型函数
matlab复制function [M, C, G] = manipulator_dynamics(q, dq)
% 计算惯性矩阵M
M11 = m1*lc1^2 + m2*(l1^2 + lc2^2 + 2*l1*lc2*cos(q(2))) + I1 + I2;
M12 = m2*(lc2^2 + l1*lc2*cos(q(2))) + I2;
M21 = M12;
M22 = m2*lc2^2 + I2;
M = [M11 M12; M21 M22];
% 计算科里奥利力矩阵C
h = -m2*l1*lc2*sin(q(2));
C11 = h*dq(2);
C12 = h*(dq(1)+dq(2));
C21 = -h*dq(1);
C22 = 0;
C = [C11 C12; C21 C22];
% 计算重力项G
G1 = (m1*lc1 + m2*l1)*g*cos(q(1)) + m2*lc2*g*cos(q(1)+q(2));
G2 = m2*lc2*g*cos(q(1)+q(2));
G = [G1; G2];
end
4.2.2 ATSMC控制器函数
matlab复制function [tau, s, rho_hat] = atsmc_controller(t, q, dq, qd, dqd, ddqd, rho_hat_prev)
% 计算跟踪误差
e = q - qd;
de = dq - dqd;
% 终端滑模面
s = de + lambda*e + beta*abs(e).^gamma.*sign(e);
% 自适应律
rho_hat = rho_hat_prev + gamma_adapt*abs(s)*0.01; % 0.01为步长
% 计算控制律
[M, C, G] = manipulator_dynamics(q, dq);
% 计算ddq_ref
ddq_ref = ddqd - lambda*de - beta*gamma*abs(e).^(gamma-1).*de.*sign(e);
% 边界层处理
sat_s = min(max(s/phi, -1), 1);
% 最终控制律
tau = -M*ddq_ref - C*dq - G - (rho_hat + eta).*sat_s;
end
4.3 仿真结果分析
4.3.1 轨迹跟踪性能
设置期望轨迹为:
q_d1 = sin(t)
q_d2 = cos(t)
仿真结果显示:
- ATSMC在0.5秒内将跟踪误差收敛到±0.01rad以内
- 传统CTSMC需要约1.0秒才能达到相似精度
- ATSMC的超调量明显小于CTSMC
4.3.2 控制信号分析
- CTSMC控制扭矩存在明显高频抖振,幅值约±1.5N·m
- ATSMC控制扭矩抖振幅值降至±0.3N·m以内
- 边界层技术有效平滑了控制信号
4.3.3 自适应参数变化
自适应参数ˆρ随时间逐渐增大并趋于稳定,表明系统成功在线估计了不确定性上界,无需预先知道扰动范围。
5. 关键技术与注意事项
5.1 终端滑模参数选择
-
λ的选择:
- 影响误差收敛速度
- 通常取5-10之间的对角矩阵
- 过大会导致控制量过大
-
β和γ的选择:
- 决定非线性项的强度
- β通常取3-5
- γ取0.3-0.7效果较好
5.2 自适应增益调整
-
γ_adapt的选择:
- 影响参数估计速度
- 过大会导致估计值振荡
- 过小会使估计速度过慢
- 建议从5-20开始尝试
-
初始估计值:
- 可以设为0
- 如果有先验知识,可设为近似值加速收敛
5.3 边界层厚度设计
-
Φ的选择:
- 直接影响抖振抑制效果
- 过大会降低控制精度
- 过小抑制效果不明显
- 建议取0.01-0.1
-
实际应用建议:
- 可以先设为较小值(如0.01)
- 观察控制信号抖振情况
- 逐步增大直到抖振可接受
6. 扩展与改进方向
-
结合模糊逻辑:
- 用模糊规则调整滑模面参数
- 实现参数的自适应调整
-
神经网络补偿:
- 用RBF神经网络逼近系统不确定性
- 进一步降低保守性
-
事件触发控制:
- 减少控制更新频率
- 降低计算负担
-
实际系统验证:
- 考虑执行器饱和
- 加入测量噪声测试鲁棒性
在实际应用中,建议先进行充分的仿真测试,逐步调整参数,再移植到实际系统。机械臂的不同构型和负载情况可能需要重新调整控制器参数,但核心算法框架保持不变。
