二自由度机械臂的非奇异终端滑模控制matlab脚本M 参 考资料如图1所示。 跟踪性能如图2,3,4,5所示。 由于只是复现,以后系统模型并不是资料内,故没有把参数调到最优。

最近在研究二自由度机械臂的控制问题,采用了非奇异终端滑模控制方法,并用Matlab脚本来实现,在这里和大家分享一下过程与心得。

复现背景与目标

本次主要是对相关资料中的二自由度机械臂非奇异终端滑模控制进行复现。虽然之后实际应用的系统模型可能与参考资料不同,因此没有刻意将参数调到最优。参考资料里的内容为我们搭建控制框架提供了很好的基础,而跟踪性能在图2、3、4、5中展示,能直观地让我们看到控制效果。

Matlab脚本核心代码解析

模型建立部分

% 定义机械臂参数
m1 = 1; % 连杆1质量
m2 = 1; % 连杆2质量
l1 = 1; % 连杆1长度
l2 = 1; % 连杆2长度
g = 9.81; % 重力加速度

% 定义状态变量
syms q1 q2 q1_dot q2_dot real
q = [q1; q2];
q_dot = [q1_dot; q2_dot];

% 计算动能
T1 = 0.5 * m1 * l1^2 * q1_dot^2;
T2 = 0.5 * m2 * (l1^2 * q1_dot^2 + l2^2 * q2_dot^2 + 2 * l1 * l2 * q1_dot * q2_dot * cos(q2));
T = T1 + T2;

% 计算势能
V = m1 * g * l1 / 2 * cos(q1) + m2 * g * (l1 * cos(q1) + l2 / 2 * cos(q1 + q2));

% 计算拉格朗日函数
L = T - V;

% 计算广义力
tau = [diff(diff(L, q1_dot), 't') - diff(L, q1);
       diff(diff(L, q2_dot), 't') - diff(L, q2)];

在这段代码里,我们首先定义了机械臂的基本物理参数,像连杆质量、长度以及重力加速度。接着利用符号运算定义了机械臂的关节角度和角速度作为状态变量。通过动能和势能的计算公式得出拉格朗日函数,最后根据拉格朗日方程求出广义力,这为后续的控制算法设计提供了系统动力学模型基础。

非奇异终端滑模控制器设计

% 定义控制参数
lambda1 = 10;
lambda2 = 10;
alpha = 3/5;
beta = 2/5;
k1 = 10;
k2 = 10;

% 定义滑模面
s1 = q1_dot + lambda1 * q1^(alpha) * sign(q1);
s2 = q2_dot + lambda2 * q2^(alpha) * sign(q2);
s = [s1; s2];

% 控制律
tau_ctrl = double([-k1 * s1 - q1^(beta) * sign(q1);
                    -k2 * s2 - q2^(beta) * sign(q2)]);

这里我们设定了一系列控制参数,像 lambda1lambda2 用于滑模面的构建,alphabeta 是非奇异终端滑模控制特有的参数,决定了滑模趋近律的特性。通过状态变量构建滑模面 s,然后基于滑模面设计控制律 tau_ctrl,这个控制律会驱使系统状态向滑模面运动,并保持在滑模面上,从而实现对机械臂的稳定控制。

仿真部分

% 仿真参数
tspan = 0:0.01:10;
q0 = [pi/4; pi/4];
q_dot0 = [0; 0];
init_cond = [q0; q_dot0];

% 求解微分方程
[t, sol] = ode45(@(t, y) [y(3); y(4); double(subs(tau(1), {q1, q2, q1_dot, q2_dot}, y)); double(subs(tau(2), {q1, q2, q1_dot, q2_dot}, y)) + tau_ctrl(1); double(subs(tau(2), {q1, q2, q1_dot, q2_dot}, y)) + tau_ctrl(2)], tspan, init_cond);

% 提取结果
q1_sol = sol(:, 1);
q2_sol = sol(:, 2);
q1_dot_sol = sol(:, 3);
q2_dot_sol = sol(:, 4);

在仿真部分,我们设定了仿真时间范围 tspan,初始关节角度 q0 和初始角速度 q_dot0。然后利用 ode45 函数来求解机械臂的动力学微分方程,这里将动力学方程和控制律结合起来进行求解。最后从求解结果中提取出关节角度和角速度随时间的变化,用于后续分析跟踪性能,也就是和参考资料中图2、3、4、5类似的分析。

虽然本次只是复现,参数未达最优,但通过这个Matlab脚本,对二自由度机械臂的非奇异终端滑模控制有了更深入的理解,后续可以在此基础上针对实际系统模型进一步优化参数,提升控制性能。希望这篇博文能给同样研究相关方向的朋友一些启发。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐