如何权衡阻抗控制性能与稳定性的关系

描述

阻抗控制性能提升后对稳定性有怎样的影响?如何权衡阻抗控制性能与稳定性的关系?

当阻抗控制性能提升时,往往需要更高的控制增益来实现更快的响应和更小的跟踪误差。

这会导致控制系统的稳定性受到挑战,因为高增益会导致系统出现振荡或不稳定的情况。因此,需要在性能和稳定性之间进行权衡。

一般来说,权衡性能和稳定性的最好方法是通过系统的频率响应特性进行分析。在频率域中,系统的增益和相位可以得到明确的量化,因此可以根据实际要求对控制增益进行优化。

此外,也可以使用一些经典的控制方法,如根轨迹设计或Bode图设计,来平衡性能和稳定性。最终,选择合适的方法取决于具体应用场景和系统要求。

阻抗控制一般可以通过一些实验进行验证,例如实验涉及阻抗控制的两个典型应用领域:机器人与人的稳定和安全交互,以及与未知、刚性但被动环境的接触。

要求机器人对与刚体动力学、有效载荷或接触环境相关的模型不确定性具有鲁棒性。增强控制方法的鲁棒性、性能和通用性。通过输入变量与输出变量之间的关系来衡量性能。

虽然交互性能的测量可能随着系统和任务的不同而变化,但它们最好由控制机器人的行为决定。当机器人被期望管理与几个不同或不确定性的环境的交互时,根据耦合系统的行为来指定性能(例如,固有频率、阻尼)可能是不切实际的。

机械阻抗是衡量结构在(谐波)力作用下抵抗运动的程度。阻抗的倒数是导纳。它是速度与力的比值。你可以想象用一定的频率推孩子的秋千。

摆动的导纳越低,达到相同的摆动速度所需的力就越大。一个有很高导纳的秋千只需要轻轻推一下,孩子就会荡到天上。

机器人

当你用一定的力击打重袋子(纯质量)时,加速度与袋子的质量成正比。

机器人

假设袋子像弹簧一样运动,当你用一定的力击打袋子时,袋子表面的位移将与袋子材料的刚度成正比,直到拳头的力和弹簧的力达到平衡。

水里面打拳,则效果图下图所示

机器人

阻尼力与速度成正比!

通过控制阻抗,通过定义其刚度和阻尼来控制机器人在与环境交互过程中的行为。可以让它表现得像一个非常松散的弹簧,具有很高的顺应性!

当机器人被推时,它会向后移动,直到一段时间后到达它的初始位置。如果我们增加一些阻尼,末端执行器甚至可能在位移后回到它的初始位置,没有任何振荡。相反,机器人只会移动,如果环境中有很大的力,如果刚度很高。

在位置控制中,命令一个特定的位置,机器人无论如何都要到达该位置。如果它不能很容易地到达位置,它会施加很高的力,这可能会造成损坏。

如果使用阻抗控制,可以间接控制力,从而避免这种破坏性的高力。如果有一些不确定因素,例如,钻孔稍微错位,这是特别好的。机器人会做出顺从的动作,也就是说,它会对接触做出轻微的反应。

如果机器人的末端执行器没有与另一个物体接触,力控制就会表现得很差,因为力会导致快速运动。想想爬楼梯,错误地认为最后还有一个台阶。

抬起脚,试着推到台阶上。因为没有建立联系,能量就会流失,必须努力保持平衡。

机器人

以下是一个简单的单自由度机器人阻抗控制的 MATLAB 程序示例,其中机器人的动力学模型是简化为一个弹簧阻尼系统:

% 机器人阻抗控制程序


% 机器人参数
m = 1;          % 质量
k = 10;         % 刚度
c = 1;          % 阻尼


% 阻抗控制参数
Kp = 20;        % 位置控制增益
Kv = 5;         % 速度控制增益
M = 5;          % 质量控制增益
B = 1;          % 阻尼控制增益


% 目标参考位置和力/力矩
qr = 1;         % 参考位置
fr = 0.1;       % 参考力/力矩


% 初始状态
x0 = [0; 0];    % 位置和速度
f0 = 0;         % 初始力/力矩


% 阻抗控制循环
t = 0:0.01:10;  % 时间向量
x = zeros(2, length(t));     % 位置和速度
f = zeros(1, length(t));     % 力/力矩
x(:,1) = x0;    % 初始状态
f(1) = f0;


for i = 2:length(t)
    % 计算误差和误差导数
    e = qr - x(1, i-1);     % 位置误差
    de = -x(2, i-1);        % 速度误差
    
    % 计算控制力/力矩
    fc = Kp*e + Kv*de + M*(fr-f(1)) + B*(-x(2,i-1));
    
    % 更新状态
    a = (fc - c*x(2,i-1) - k*x(1,i-1))/m;
    x(2,i) = x(2,i-1) + a*0.01;
    x(1,i) = x(1,i-1) + x(2,i)*0.01;
    
    % 记录控制力/力矩和位置
    f(i) = fc;
end


% 绘图
subplot(2,1,1)
plot(t, x(1,:), 'b', t, qr*ones(size(t)), 'r--')
xlabel('时间 (s)')
ylabel('位置 (m)')
legend('位置', '参考位置')
title('单自由度机器人阻抗控制')


subplot(2,1,2)
plot(t, f, 'b', t, fr*ones(size(t)), 'r--')
xlabel('时间 (s)')
ylabel('力/力矩 (N/m)')
legend('控制力/力矩', '参考力/力矩')

结果如下:

机器人

根据程序运行的结果和可视化图形可以看出,阻抗控制使得机器人的末端可以按照期望的阻抗响应,即在受到外界干扰时具有一定的柔性和减震性能,从而实现了对外部力的主动响应。

通过调节阻抗控制器中的参数,可以使机器人末端的运动更加平滑和稳定。此外,对于单自由度机器人来说,阻抗控制器在保证稳定性的同时还能够提高系统的动态性能,使得机器人在对外界干扰响应时的响应速度更快,具有更好的跟踪性能。

然而,阻抗控制器中的参数调节比较困难,需要根据实际情况进行经验性调整,同时阻抗控制器也容易出现过冲和振荡等问题,因此需要综合考虑性能与稳定性之间的权衡关系,进行合理的参数设计。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分