机器人阻抗控制和导纳控制的深度解析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


1 阻抗&导纳力控

1.1 原理

这两种控制的基本控制目的,是希望在执行器(例如机器人电机、液压缸)的作用下,将负载移动到绝对位置为 x 0 x_0 x0的目标位置。但一般在移动的过程中,负载不会顺利移动到 x 0 x_0 x0的位置,而是在中途会碰到障碍物。这时,柔顺控制(导纳或者阻抗控制)依据算法不同,修正执行器的行为。最终使执行器停止在一个平衡位置。这个平衡位置不等于 x 0 x_0 x0。就是说以牺牲位置精度的方式,实现柔性接触(接触力取决于算法),从而对碰撞物体进行保护,反过来也对执行器有所保护。

1.1.1 牛顿第二定律

在这里插入图片描述

假设外骨骼大腿杆相对固定时,外骨骼膝关节的力学模型

F = m x ¨ F h ⋅ l = J ⋅ θ ¨ k (转动) (1) F = m\ddot{x}\\ F_h\cdot l=J\cdot \ddot{\theta}_k\text(转动)\tag{1} F=mx¨Fhl=Jθ¨k转动)(1)

其中 F h F_h Fh为交互力,转动惯量为 J J J,角加速度为 θ ¨ k \ddot{\theta}_k θ¨k,在一定的交互力下,转动惯量越小,关节的转动加速度就越大。一定程度上,这里的转动惯量 J J J是我们期望的转动惯量

实际情况中,没有什么东西可以直接控制关节的角加速度,只能通过控制电机的驱动力实现关节的运动。电机施加扭矩 τ k \tau_k τk、人机交互力 F h F_h Fh、和关节实际的转动惯量 J k J_k Jk,共同决定了外骨骼关节角加速度 θ ¨ k \ddot{\theta}_k θ¨k,因此实际的外骨骼膝关节的动力学方程如下:
F h ⋅ l + τ k = J k ⋅ θ ¨ k (2) F_h\cdot l+\tau_k=J_k\cdot \ddot{\theta}_k \tag{2} Fhl+τk=Jkθ¨k(2)
我们期望交互力按照式(1)的规律,另一方面,实际的外骨骼关节动力学关系又不得不按照式(2)来进行。因此将式(1)看作一个约束条件,代入式(2),就得到了**“在交互力满足式(1)下的电机应该施加的扭矩”**:
τ k = ( J k − J ) ⋅ θ ¨ k τ k = ( J k J − 1 − 1 ) ⋅ F h l (3) \tau_k=(J_k-J)\cdot\ddot{\theta}_k\\ \tau_k=(J_kJ^{-1}-1)\cdot F_hl\tag{3} τk=(JkJ)θ¨kτk=(JkJ11)Fhl(3)
J J J是我们设定的期望转动惯量, J k J_k Jk是关节实际的转动惯量 , θ ¨ k \ddot{\theta}_k θ¨k可以通过膝关节编码器得到,但是在控制系统中,通常不使用测量的加速度量。比起使用加速度计的信号,通常使用力传感器的力信号会更可靠一些。

1.1.2 胡克定律和粘性定律

m x ¨ = F + F e x t (4) m\ddot{x}=F+F_{ext}\tag{4} mx¨=F+Fext(4)

上式描述了质量块的动力学,表述了主动力与外部力的关系。

物体的动力学关系除了牛二定律外,还有黏性定律、胡克定律。粘性定律描述力与速度的关系,通过阻尼系数 b b b 表征,胡克定律描述力与位移的关系,通过刚度系数 k k k 表征,三者合起来的一个经典模型就是阻抗模型。用质量-弹簧-阻尼二阶系统表现出的特性来等效出阻抗特性。阻抗模型中,物体与环境施与的力(交互力)的关系为下式:
F = m x ¨ + b x ˙ + k x (交互力与位移形式) τ = J θ ¨ + b θ ˙ + k θ (交互扭矩与转角形式) (5) F=m\ddot{x}+b\dot{x}+kx\text(交互力与位移形式)\\ \tau=J\ddot{\theta}+b\dot{\theta}+k\theta\text(交互扭矩与转角形式)\tag{5} F=mx¨+bx˙+kx交互力与位移形式)τ=Jθ¨+bθ˙+kθ交互扭矩与转角形式)(5)
在这里插入图片描述
让交互力与关节运动呈现牛二关系,从而让电机施加的扭矩呈式(3)那样,这种控制方法可以叫“牛二控制法”。那么,让交互力与关节运动呈现式(4)中的关系,从而让电机按一定规律施加扭矩,这种控制方法就叫做阻抗控制法

1.2 区别和联系

阻抗控制

  • 已知末端位置,带入质量-弹簧-阻尼模型中,来获取与外界的虚拟交互力,再将这个力逆解分配到各个关节;
  • 具体一点,结合已经求得的外骨骼膝关节实际的转动惯量 J k J_k Jk 和理想的转动惯量 J J J ,实际的阻尼 b k b_k bk 和理想的阻尼 b b b ,实际的刚度 k k k_k kk 和理想的刚度 k k k ,如果知道膝关节运动量:角加速度 θ ¨ k \ddot{\theta}_k θ¨k,角速度 θ ˙ k \dot{\theta}_k θ˙k,角度 θ k \theta_k θk,就能求得扭矩 τ k \tau_k τk,输出力。

导纳控制

  • 通过力传感器获取外界对末端的外力,然后带入质量-弹簧-阻尼模型中,通过调整末端的位置、速度等实现与外力的平衡,再将末端的位置、速度逆解分配到各关节空间;
  • 具体来说结合已经求得的外骨骼膝关节实际的转动惯量 J k J_k Jk 和理想的转动惯量 J J J ,实际的阻尼 b k b_k bk 和理想的阻尼 b b b ,实际的刚度 k k k_k kk 和理想的刚度 k k k ,如果知道扭矩 τ k \tau_k τk,则可以求出膝关节的运动量:角加速度 θ ¨ k \ddot{\theta}_k θ¨k,角速度 θ ˙ k \dot{\theta}_k θ˙k,角度 θ k \theta_k θk,输出运动

对应着两种实现方法

  • 阻抗控制:测量实际位置与目标位置的差,调整末端的力,输入运动输出力;
  • 导纳控制:测量末端受到的力,调整末端的速度,输入力输出运动;

在这里插入图片描述
在这里插入图片描述

  • 导纳控制

    • 基于末端六维力传感器获取外力/力矩,然后经过导纳控制器(二阶导纳模型)产生位移修正量,叠加到期望位置上。位置内环,力外环

    • 简单来说就是导纳控制是通过外力改变了机器人的期望位置,而机器人从当前位置到期望位置的控制输入是导纳控制的内环问题,是单纯的位置控制,只需要给机器人发送位置指令即可,不需要机器人的动力学模型。

    • 在机器人做导纳控制时,控制器是导纳(输入力,输出位置),机械臂是阻抗(输入位置,输出力)。机械臂在得到位置指令后需要再将位置信息转换为关节力矩信息,因为给机器人的指令都必须是各个关节的力矩信号,通过力来接改变机器人运动状态(位置),力矩信号又转化为关节电机的电流来控制。

    • 根据末端力矩传感器检测外力,采用导纳控制器计算出末端位移和速度,通过位置和运动学逆解求出关节的运动信息,所以不需要动力学

  • 阻抗控制

    • 基于动力学模型,在力矩环做补偿力控制。位置外环,力内环
    • 阻抗控制最终机械臂是一个导纳,即直接给机械臂发送关节扭矩指令,就可以直接改变机器人运动状态(位置)

2 阻抗力控

输入运动,输出力

用常规方法控制机械臂的运动,同时在运动收到干扰而产生偏移的时候,根据偏移量输出一个反方向的力,即先规划运动,再由运动偏移量决定反力,即阻抗控制需要我们能够获取位置信息,并且能控制机器人的关节力矩

四足机器人站立、步行,相当于立足于地面来操作自己身体的机械臂,应为阻抗控制。

阻抗控制的特点是不直接控制机器人与接触环境的作用力,而是根据机器人末端的位置(或速度)和末端作用力之间的关系,调整反馈位置误差、速度误差或刚度来控制作用力

当把力反馈信号转换为位置调整量时,力控制成为刚度控制;当把力反馈信号转换为速度修正量时,力控制成为阻尼控制;当把力反馈信号同时转换为位置和速度修正量时,力控制成为阻抗控制。

阻抗控制系统由内部的力闭环控制和外部的阻抗计算环节组成。

根据系统的期望运动状态( X d , X ˙ d , X ¨ d X_d,\dot{X}_d,\ddot{X}_d Xd,X˙d,X¨d)和实际运动状态( X , X ˙ , X ¨ X,\dot{X},\ddot{X} X,X˙,X¨)以及期望阻抗模型参数( K d , B d , M d K_d,B_d,M_d Kd,Bd,Md),外环计算出为实现期望阻抗模型需要作用在机器人末端的参考力 F d F_d Fd,通过内环的力控制器使机器人与环境之间的实际作用力跟踪该期望接触力,从而实现机器人与环境作用的等效模型为期望阻抗模型。
− F d = K d ( X − X d ) + B d ( X ˙ − X ˙ d ) + M d ( X ¨ − X ¨ d ) (6) -F_d=K_d(X-X_d)+B_d(\dot{X}-\dot{X}_d)+M_d(\ddot{X}-\ddot{X}_d)\tag{6} Fd=Kd(XXd)+Bd(X˙X˙d)+Md(X¨X¨d)(6)
其中, F d F_d Fd——阻抗控制的输出期望力,通过计算得到;

X , X ˙ , X ¨ X,\dot{X},\ddot{X} X,X˙,X¨——根据编码器得到的关节位置计算出的末端执行器的实际位置、速度、加速度,已知; X = L ( q ) , q 为机器人关节角, L ( q ) 表示机器人运动学正解; 由雅可比矩阵得速度: X ˙ = J v ( q ) q ˙ ; 通过对速度求导获得加速度: X ¨ = J ˙ v ( q ) q ˙ + J v ( q ) q ¨ X=L(q),q为机器人关节角,L(q)表示机器人运动学正解;\\由雅可比矩阵得速度:\dot{X}=J_v(q)\dot{q};\\通过对速度求导获得加速度:\ddot{X}=\dot{J}_v(q)\dot{q}+J_v(q)\ddot{q} X=L(q)q为机器人关节角,L(q)表示机器人运动学正解;由雅可比矩阵得速度:X˙=Jv(q)q˙通过对速度求导获得加速度:X¨=J˙v(q)q˙+Jv(q)q¨

X d , X ˙ d , X ¨ d X_d,\dot{X}_d,\ddot{X}_d Xd,X˙d,X¨d——期望的位置、速度、加速度,已知;

K d , B d , M d K_d,B_d,M_d Kd,Bd,Md——用户自己设定的期望阻抗参数,不代表机器人模型的刚度阻尼质量,是用户自己设定的力与位置的关系,已知;

理想状态下,力控制闭环通过关节力矩给机器人末端提供力 F c F_c Fc,满足 F c = − F d F_c=-F_d Fc=Fd,带入式(6)$易知可实现期望的阻抗模型:
F c ( s ) = Z ( s ) ( X − X d ) = ( M d s 2 + B d s + K d ) ( X − X d ) (7) F_c(s)=Z(s)(X-X_d)\\=(M_ds^2+B_ds+K_d)(X-X_d)\tag{7} Fc(s)=Z(s)(XXd)=(Mds2+Bds+Kd)(XXd)(7)
机器人关节驱动力参考值: τ d = J F T ( q ) F d \tau_d=J^T_F(q)F_d τd=JFT(q)Fd,力传感器测量的外力 F e F_e Fe映射到关节空间: τ e = J F T ( q ) F e \tau_e=J^T_F(q)F_e τe=JFT(q)Fe,将上述两个关节驱动力之差 τ = τ d − τ e \tau=\tau_d-\tau_e τ=τdτe输入到关节力矩控制器,实现机器人与环境间接触作用力控制,或者让机械臂与目标维持一个恒定的期望跟踪力 F d F_d Fd,用 F e − F d F_e-F_d FeFd实现力的跟踪。
在这里插入图片描述

假设,想运动1cm的机械臂撞到了0.9cm处的玻璃,此时玻璃会对机器人产生一个末端接触力 F e F_{e} Fe,这个力抵消会 F d F_d Fd的作用,让机械臂逐渐不再往前运动。平衡状态下, F d = F e F_d=F_e Fd=Fe ,机器人也会停在0.9cm多一点点的位置。其 X X X X r X_{r} Xr始终由一段距离,用来产生力 F d F_d Fd。让机械臂与墙维持一个恒定的期望跟踪力 F d F_d Fd,此时用 E = F e − F d E=F_e-F_d E=FeFd来代替 F e F_e Fe,就可以实现力的跟踪。
对于阻抗控制,根据式(6), X , X d X,X_d X,Xd为已知量,可以计算出 F d F_d Fd(期望执行器输出的力)。在控制器中力闭环的作用下,不断进行 F d F_d Fd F e F_e Fe(接触力)进行比较,将差值驱动执行器运动,形成力闭环。当 F e = F d F_e=F_d Fe=Fd时,系统就达到了平衡状态。

在这里插入图片描述

图中x0为期望位置,Fext为外部力,Fd为期望接触力

3 导纳力控

输入力,输出运动

先执行一个运动,然后测量此运动反馈的力,由反力决定运动,输入力输出运动。

比如抹布擦玻璃、打磨抛光等,由于运动方向决定了摩擦力的大小,应该用具有导纳特性的机械臂作用于该阻抗型的外界环境。

导纳控制由位置控制内环和外部的导纳计算环节组成,位置闭环

根据机器人与环境间的实际作用力 F e F_e Fe以及期望的阻抗模型参数( K d , B d , M d K_d,B_d,M_d Kd,Bd,Md),由控制系统外环计算出为实现期望导纳模型产生的位置修正量 Δ X \Delta X ΔX,将参考位置 X r X_r Xr、位置的修正量 Δ X \Delta X ΔX和实际位置 X X X输入到内环的位置控制器,使实际位置跟踪期望位置,从而实现机器人与环境接触作用模型为期望导纳模型。

由力\力矩传感器测量接触力 F e F_e Fe,在控制器外侧, F e F_e Fe经过力量导纳模型后输出轨迹修正量 e = Δ X = X − X r e=\Delta X=X-X_r e=ΔX=XXr,导纳控制器的计算公式为:
− F e = K d ( X − X r ) + B d ( X ˙ − X ˙ r ) + M d ( X ¨ − X ¨ r )   -F_e=K_d(X-X_r)+B_d(\dot{X}-\dot{X}_r)+M_d(\ddot{X}-\ddot{X}_r)\ Fe=Kd(XXr)+Bd(X˙X˙r)+Md(X¨X¨r) 
其中, F e F_e Fe——参考接触力,已知;

K d , B d , M d K_d,B_d,M_d Kd,Bd,Md——用户自己设定的导纳控制器期望参数,已知;

X r , X ˙ r , X ¨ r X_r,\dot{X}_r,\ddot{X}_r Xr,X˙r,X¨r——参考的位置、速度、加速度,即一切完美零误差时的位置,已知;

X , X ˙ , X ¨ X,\dot{X},\ddot{X} X,X˙,X¨——真实位置,未知,通过计算得出,在导纳控制中,我们假设位置控制是没有误差的,指哪打哪,所以这里的真实位置 X , X ˙ , X ¨ X,\dot{X},\ddot{X} X,X˙,X¨也是期望位置 X d , X ˙ d , X ¨ d X_d,\dot{X}_d,\ddot{X}_d Xd,X˙d,X¨d

在频域中表示为:
e ( s ) = − F e ( s ) M d s 2 + B d s + K d e(s)=\frac{-F_e(s)}{M_ds^2+B_ds+K_d} e(s)=Mds2+Bds+KdFe(s)

  • 当机器人末端未与环境接触时,收到外界作用力为0( F e ≡ 0 F_e\equiv0 Fe0),对应的位置修正量 e ≡ 0 e\equiv0 e0,且 X = X r X=X_r X=Xr
  • 当机器人末端与环境接触时,假定位置控制没有误差,即 X ≡ X d X\equiv X_d XXd,则有 e = X d − X r e=X_d-X_r e=XdXr

在这里插入图片描述
以机器人撞玻璃为例,初始未接触玻璃时 F e = 0 F_e=0 Fe=0,故给机器人发送的 X = X r X=X_r X=Xr,也就是1cm;运动过程中,机械臂碰到玻璃, F e F_e Fe增大, X X X随之减小

对于导纳控制,系统只有一个位置闭环。控制器根据已知的 X r , F d X_r,F_d Xr,Fd值,根据导纳控制算法,计算出 x ( t ) x(t) x(t) x ( t ) x(t) x(t)是一个时间函数,控制器内部的位置闭环将驱动执行机构,不断向目标值 x x x逼近,最后稳定在 x ( t e n d ) x(t_{end}) x(tend)的位置上,即 x d ( t e n d ) x_d(t_{end}) xd(tend)处。

在这里插入图片描述

图中x0为期望位置,Fr为接触参考力,xd为期望的目标位置

本文参考《机器人与环境间力/位置控制技术研究与应用》

  • 4
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
机器人导纳控制是指通过力传感器等监测装置实时感知机器人末端执行器与环境相互作用的力、力矩等信息,根据设定的导纳参数,将机器人末端执行器的运动控制与环境相互作用的力进行实时调节和控制的一种方法。机器人导纳控制的实现需要编写相应的控制算法,并进行仿真和实验验证。 Matlab是一种功能强大的科学计算软件,可以进行数值计算、绘图和编程等操作。在机器人导纳控制的实现中,可以利用Matlab来进行算法的编写和仿真。 实现机器人导纳控制的Matlab源码主要包括以下几个方面: 1. 动力学模型的建立:根据机器人的结构特点和运动学参数,通过Matlab进行建模,并获取机器人末端执行器的位置、速度和加速度等信息。 2. 力传感器的数据获取:通过Matlab读取连接在机器人末端执行器上的力传感器数据,获取环境对机器人作用的力、力矩等信息。 3. 导纳参数设定:根据需求和控制目标,设定机器人导纳控制的参数,包括刚度和阻尼等。 4. 导纳控制算法的编写:根据机器人导纳控制的原理,利用Matlab编写相应的导纳控制算法,实现机器人末端执行器运动的调节和控制。 5. 控制指令的发送:通过Matlab将计算得到的控制指令发送给机器人控制器,实现对机器人末端执行器的运动控制。 6. 仿真与实验验证:利用Matlab进行导纳控制算法的仿真和实验验证,通过对机器人的位置、力传感器数据等进行监测和分析,评估导纳控制算法的性能和效果。 总之,通过编写Matlab源码来实现机器人导纳控制,可以有效地控制和调节机器人末端执行器在与环境相互作用时的运动,提高机器人在不同工作场景中的操作性能和灵活性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值