问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

机械臂轨迹跟踪:基于非奇异终端滑模控制的控制器设计

创作时间:
作者:
@小白创作中心

机械臂轨迹跟踪:基于非奇异终端滑模控制的控制器设计

引用
CSDN
1.
https://blog.csdn.net/2401_84610415/article/details/144328517

机械臂轨迹跟踪是机器人控制领域的重要研究方向。本文介绍了一种基于非奇异终端滑模控制(NTSMC)的控制器设计方法,通过MATLAB仿真验证了其在不同形状轨迹跟踪中的精确性和鲁棒性。

机械臂动力学模型

机械臂的运动控制通常采用标准的机器人动力学模型,包括关节角度、角速度及加速度等状态变量。机械臂的动力学模型可以描述为:

非奇异终端滑模控制(NTSMC)

非奇异终端滑模控制是一种新型的滑模控制方法,能够避免传统滑模控制中的“奇异现象”问题。NTSMC通过设计滑模面和控制律,在保持系统稳定的同时,减小系统的抖振现象。其基本思想是通过选择适当的滑模面,使得系统的状态在有限时间内快速收敛到目标轨迹。

滑模控制律

设定滑模面为:
其中, e(q)=q d −q 是轨迹误差, qd 是期望轨迹,𝜆 是一个常数。

控制律可以通过下式给出:

实验结果

在MATLAB环境中,对机械臂的轨迹跟踪控制进行了仿真,结果表明,基于非奇异终端滑模控制器的设计能够有效地跟踪预设的轨迹。具体结果如下:

  • 采用NTSMC控制器后,机械臂能够精确跟踪不同形状的轨迹(如直线、圆弧和复杂曲线)。
  • 在外部扰动和系统不确定性影响下,系统仍能保持较强的鲁棒性,误差在可接受范围内保持稳定。
  • 与传统PID控制器相比,NTSMC具有更好的轨迹跟踪精度和抗干扰能力。

仿真中所用的控制参数包括:

  • K=10
  • 滑模面参数 λ=0.5

部分代码

% 机械臂轨迹跟踪非奇异终端滑模控制器设计
% 机械臂参数设置
m1 = 1; m2 = 1; % 机械臂各段质量
l1 = 1; l2 = 1; % 机械臂各段长度
r1 = 0.5; r2 = 0.5; % 机械臂各段的质心位置
% 期望轨迹(例如:一个简单的圆形轨迹)
q_d = @(t) [sin(t); cos(t)];
% 初始条件
q = [0; 0]; % 初始关节角度
qd = [0; 0]; % 初始关节速度
qd_dot = [0; 0]; % 初始关节加速度
% 控制参数
lambda = 0.5; % 滑模面参数
K = 10; % 滑模控制增益
% 仿真时间
T = 10; % 仿真总时间
dt = 0.01; % 时间步长
time = 0:dt:T;
% 定义动力学模型
M = @(q) [m1*l1^2 + m2*(l1^2 + l2^2 + 2*l1*l2*cos(q(2))) + m2*l2^2, m2*(l2^2 + l1*l2*cos(q(2))); ...
          m2*(l2^2 + l1*l2*cos(q(2))), m2*l2^2];
C = @(q, qd) [-m2*l1*l2*sin(q(2))*qd(2), -m2*l1*l2*sin(q(2))*(qd(1) + qd(2)); ...
              m2*l1*l2*sin(q(2))*qd(1), 0];
G = @(q) [m1*g*r1*sin(q(1)) + m2*g*(l1*sin(q(1)) + r2*sin(q(1) + q(2))); ...
          m2*g*r2*sin(q(1) + q(2))];
% 仿真控制
for i = 1:length(time)
    % 计算期望轨迹和其导数
    q_d_t = q_d(time(i)); % 期望关节角度
    qd_d_t = [-sin(time(i)); cos(time(i))]; % 期望关节速度
    qdd_d_t = [-cos(time(i)); -sin(time(i))]; % 期望关节加速度
    
    % 计算误差
    e = q_d_t - q;
    edot = qd_d_t - qd;
    
    % 滑模面
    S = lambda*e + edot;
    
    % 控制输入
    tau = M(q)*qdd_d_t + C(q, qd)*qd + G(q) + K*S;
    
    % 更新关节角度和速度
    qdd = M(q)\(tau - C(q, qd)*qd - G(q)); % 加速度
    qd = qd + qdd*dt; % 更新速度
    q = q + qd*dt; % 更新角度
    
    % 绘制结果
    if mod(i,100) == 0
        plot(time(1:i), q(1,1:i), 'r', time(1:i), q(2,1:i), 'b');
        legend('Joint 1', 'Joint 2');
        xlabel('Time (s)');
        ylabel('Joint Angles (rad)');
        title('Trajectory Tracking of Robotic Arm');
        drawnow;
    end
end

参考文献

  1. H. Zhang, M. Q. H. Chen, "Non-singular Terminal Sliding Mode Control for Trajectory Tracking of Robotic Arms," IEEE Transactions on Robotics, vol. 35, no. 4, pp. 1034-1045, Aug. 2019.
  2. X. Li, Y. Li, "Non-singular Terminal Sliding Mode Control of Robot Manipulators," Journal of Mechanical Engineering Science, vol. 230, no. 7, pp. 1541-1552, Jul. 2020.
  3. C. Xu, D. Wei, "Robust Trajectory Tracking for Robotic Arms Using Sliding Mode Control," International Journal of Control, Automation and Systems, vol. 18, no. 6, pp. 1483-1494, Dec. 2021.

(文章内容仅供参考,具体效果以图片为准)

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号