机器人阻抗控制通俗理解与仿真实践

       机器人阻抗控制是一种控制方法,其核心思想是让机器人在与环境交互时能够像具有某种“阻抗”特性的物体一样作出反应。这种阻抗特性是通过模拟物体的力学行为,如质量、阻尼和弹簧等属性来实现的。

通俗地说,阻抗控制就像是给机器人装上了“弹簧和阻尼器”。当机器人与环境(如地面或其他物体)接触时,这些“弹簧和阻尼器”会帮助机器人更柔顺地适应外界的变化。例如,如果机器人碰到一个障碍物,阻抗控制会使机器人像受到弹簧的反弹一样,稍微后退然后稳定下来,而不是猛烈地撞击障碍物。

d11ab9b32bb405432b62432320263ead_6b48790bf4d749e8a33803654f26360f.png

       机器人机械阻抗可以理解为机器人在受到外力作用时抵抗这种作用力的能力。它类似于电路中的阻抗,即电路对交流电的阻碍作用。在机器人领域,机械阻抗可以描述为机器人的柔性以及机器人与环境的交互力量。机械阻抗的大小取决于机器人的结构、材料以及所执行的任务。通过调整机器人的机械阻抗,可以实现对机器人行为的精确控制,使其在特定环境下表现出所需的运动特性。

       固有阻抗是机器人自身固有的力学特性,它描述了机器人在没有外部控制作用时,由于自身结构、质量分布、关节摩擦等因素而产生的阻抗。固有阻抗是机器人设计过程中需要考虑的一个重要因素,它影响着机器人的动态性能和稳定性。例如,一个具有高固有阻抗的 机器人可能更难以被外力推动或改变其运动状态,而一个低固有阻抗的机器人则可能更容易受到外界环境的影响。

       在机器人控制中,阻抗控制是一种常用的方法,它通过对机器人机械/固有阻抗的调节,使机器人能够适应不同的工作环境和任务需求。通过模拟虚拟弹簧和阻尼器,机器人可以表现出期望的阻抗特性,从而实现对机器人行为的精确控制。

       当机器人与环境交互时,阻抗控制会生成一个修正的轨迹以响应环境的作用力。这个修正轨迹是基于阻抗控制律计算得到的期望位置,而不是原始的目标轨迹。要使机器人跟踪这个修正轨迹,通常会结合位置控制或速度控制策略。假设有一个简单的质量-弹簧-阻尼系统代表机器人的末端执行器,并使用一个基本的PD(比例-微分)控制器来跟踪阻抗控制生成的修正轨迹。

de839e17abfe927aba7e1401cb6ec911_f0f555a839834892872c9464015e8b8e.png

          下面这个MATLAB程序可以实现一个简单的阻抗控制算法,用于模拟一个机器人跟踪一个期望轨迹的过程,并考虑到了机器人与环境之间的交互。

image.png

image.png

image.png

image.png

% 初始化参数  

dt = 0.01;         % 时间步长  

t_end = 10;        % 仿真结束时间  

time_vec = 0:dt:t_end; % 时间向量  

  

% 期望轨迹

x_desired = sin(time_vec);  

  

% 阻抗参数  

b_desired = 2; % 期望阻尼  

k_desired = 5; % 期望刚度(调整这个值以改善性能)  

  

% 机器人和环境交互的参数  

m_robot = 1; % 机器人的质量(简化模型)  

k_env = 100; % 环境的刚度(假设)  

  

% 初始状态  

x = 0; % 初始位置  

v = 0; % 初始速度  

f_contact = 0; % 初始接触力  

  

% 存储仿真数据  

position_vec = zeros(size(time_vec));  

velocity_vec = zeros(size(time_vec));  

control_input_vec = zeros(size(time_vec));  

contact_force_vec = zeros(size(time_vec));  

  

% 阻抗控制循环  

for t = 1:length(time_vec)  

    % 计算跟踪误差  

    e = x_desired(t) - x;  

      

    % 如果是第一个时间步,de设为0,否则计算de  

    if t == 1  

        de = 0;  

    else  

        de = (x_desired(t) - x_desired(t-1)) / dt; % 简单的差分近似  

    end  

      

    % 计算期望的接触力(阻抗控制)  

    f_desired = -k_desired * e - b_desired * de;  

      

    % 根据机器人的简化动力学模型计算控制输入  

    % m_robot * dv/dt = u - b_desired * v - f_contact  

    % 假设加速度为0,得到控制输入u  

    u = b_desired * v + f_contact + f_desired;  

      

    % 更新速度和位置  

    v = v + (u - b_desired * v) / m_robot * dt;  

    x = x + v * dt;  

      

    % 计算实际接触力(考虑环境刚度)  

    % f_contact = k_env * (x_env - x)  

    % 假设x_env是环境的位置  

    f_contact = k_env * (x_desired(t) - x);  

      

    % 限制接触力不超过10N  

    f_contact = min(max(f_contact, -10), 10);  

      

    % 存储数据  

    position_vec(t) = x;  

    velocity_vec(t) = v;  

    control_input_vec(t) = u;  

    contact_force_vec(t) = f_contact;  

end  

  

% 绘制结果  

figure;  

 

plot(time_vec, x_desired, 'r', time_vec, position_vec, 'b');  

xlabel('Time (s)');  

ylabel('Position (m)');  

legend('Desired Position', 'Actual Position');  

title('Position Tracking with Impedance Control');  

grid on;  

  

figure;

plot(time_vec, velocity_vec);  

xlabel('Time (s)');  

ylabel('Velocity (m/s)');  

title('Velocity Over Time');  

grid on;  

  

figure;

plot(time_vec, control_input_vec);  

xlabel('Time (s)');  

ylabel('Control Input');  

title('Control Input Over Time');  

grid on;  

  

figure;

plot(time_vec, contact_force_vec);  

xlabel('Time (s)');  

ylabel('Contact Force (N)');  

title('Contact Force Over Time');  

grid on;

上面这段程序模拟了机器人使用阻抗控制算法跟踪一个正弦波期望轨迹的过程,并考虑了机器人与环境之间的相互作用。通过调整阻抗参数,可以控制机器人对位置误差的响应,并模拟不同的运动特性。同时,通过限制接触力的大小,可以模拟机器人与环境的交互过程中可能出现的物理限制。

       机器人阻抗控制是一种控制方法,它使机器人能够根据外界的力或力矩变化做出适应性的响应。阻抗控制的核心思想在于模拟物体的力学特性,使机器人在与环境交互时具有某种“阻抗”,即机器人对外界施加力或力矩的响应特性。这种阻抗可以通过控制机器人关节扭矩、末端执行器力/力矩或刚性连接件的刚度、阻尼和质量等参数来实现。机器人阻抗控制是一种使机器人能够灵活适应外界环境变化的控制方法,通过模拟物体的力学特性,实现对机器人位置和力的精确控制,从而实现对外部物体的稳定操控和避免对物体造成损害。

参考文献:

【1】Hogan, N. (1984, June). Impedance control: An approach to manipulation. In 1984 American control conference (pp. 304-313). IEEE.

【2】Love, L. J., & Book, W. J. (1995, May). Environment estimation for enhanced impedance control. In Proceedings of 1995 IEEE International Conference on Robotics and Automation (Vol. 2, pp. 1854-1859). IEEE.