基于simulink和adams的机械臂自适应控制

基于simulink和adams的机械臂自适应控制

github地址

https://github.com/zzy5510/adaptive_arm_simulink

模型构建

本想基于原来的七自由度机械臂做自适应控制,但发现自适应控制需要用到线性化的动力学参数矩阵,七自由度机械臂的参数矩阵太庞大和复杂了。所以新做了一个平面三自由度机械臂,如下图:
在这里插入图片描述
机械臂的质量均为10,z轴的惯量为1.05.

算法原理

欧拉拉格朗日法求动力学方程

首先,需要使用拉格朗日法求出机械臂的动力学方程:
H ( q ) q ¨ + C ( q , q ) q + G ( q ) = τ H(q) \ddot{q}+C(q, q) q+G(q)=\tau H(q)q¨+C(q,q)q+G(q)=τ
拉格朗日法的具体实现可以有不同的方法。本项目采用了霍伟《机器人动力学与控制》中的方法,比较便于编程实现。具体如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意以下几点:
1.该方法不依赖于建系方法,即普通DH和改进DH都可应用。但推荐使用改进DH,因为公式中的连杆i质心的坐标是在i系中表达的,如果采用普通DH,这一坐标随关节角度将变化。
2.惯性张量I以坐标系的原点为原点,并不以杆的质心为原点。
这部分算法的代码来自https://www.jianshu.com/p/6d04539f1cfe

自适应控制

本项目假定连杆3由于抓取了未知物体,质量和转动惯量变为未知。因此需要采用自适应算法来实现对机械臂的控制。算法的思路来自《漂浮基单_双臂空间机器人捕获目标过程接触碰撞动力学分析与镇定控制
设定系统位置误差为
e = q d − q e=q_{d}-q e=qdq
定义增广误差:
s = e ˙ + λ e s=\dot{e}+\lambda e s=e˙+λe
定义参考输入角速度和角加速度:
η = q ˙ d + λ e \eta =\dot{q}_{d}+\lambda e η=q˙d+λe
η ˙ = q ¨ d + λ e ˙ \dot{\eta} =\ddot{q}_{d}+\lambda \dot{e} η˙=q¨d+λe˙
带入动力学表达式,得到:
H s ˙ + C s = H η ¨ + C η ˙ − τ H \dot{s}+Cs=H \ddot{\eta}+ C \dot{\eta}-\tau Hs˙+Cs=Hη¨+Cη˙τ
设计控制输入力矩为:
τ = H ^ η ¨ + C ^ η ˙ + K s \tau=\hat{H} \ddot{\eta}+ \hat{C} \dot{\eta}+Ks τ=H^η¨+C^η˙+Ks
其中, H ^ \hat{H} H^ C ^ \hat{C} C^代表对H和C的估计。将该式带入上式:
H s ˙ + C s + K s = W ϕ H \dot{s}+Cs+Ks=W\phi Hs˙+Cs+Ks=Wϕ
其中,
W ϕ = ( H − H ^ ) η ¨ + ( C − C ^ ) η ˙ W\phi=(H-\hat{H})\ddot{\eta}+(C-\hat{C})\dot{\eta} Wϕ=(HH^)η¨+(CC^)η˙
ϕ \phi ϕ是待估计的动力学参数的真实值与估计值的差组成的列向量,即为[m3;Iz3]。该公式实际上将动力学参数与运动学参数q, q ˙ \dot{q} q˙, q ¨ \ddot{q} q¨的分离,完成了动力学参数的线性化。
最后,用自适应律:
ϕ = − γ W T s \phi=-\gamma W^{\mathrm{T}}s ϕ=γWTs
来更新动力学参数。关于自适应控制的稳定性证明略。

simulink控制图

在这里插入图片描述
四个函数分别为输入,s和 η \eta η的计算,自适应计算器,控制器。

运行效果

当输入为正弦信号时,机械臂运动跟踪效果如下:
在这里插入图片描述
跟踪效果还是非常好的。然而,对参数的估计并没有收敛到真值:
在这里插入图片描述
这是因为正弦输入信号不满足持续激励(PE)条件。尽管输出可以收敛到真值,但参数估计却无法收敛到真值。这也是自适应控制的一大特点。
当输入恒加速度信号时,跟踪效果也不错。
在这里插入图片描述
然而,对参数的估计依然不收敛。非常迷惑,加速度信号理论上是满足PE条件的。多次调试后依然不收敛。这个问题先放在这里,以后解决吧。
在这里插入图片描述

  • 9
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Simulink是一种流行的控制系统设计和仿真工具,能够在不输入代码的情况下进行建模、仿真和验证控制系统。同时,机械臂也是一种被广泛应用的工业机器人,能够自动化地执行复杂的任务。Simulink可以与机械臂集成,以控制机械臂的运动,从而实现机器人的精准控制。 首先,建立完整的机械臂模型并将其加载到Simulink中,这涉及到一些机械学、动力学和控制方程。然后,使用Simulink的图形界面设计控制系统模型,包括传感器、控制算法和执行器。通过对模型进行仿真,可以评估控制系统的性能并进行调优。最后,在真实的机械臂上进行验证。 Simulink可以与各种类型的机械臂集成,包括基于关节的机械臂和基于笛卡尔坐标的机械臂。通过使用Simulink,可以使机械臂执行复杂的任务,如装配、搬运和焊接。此外,在各种形态、大小和载荷的机械臂中应用Simulink控制系统可以大幅降低成本和开发周期,提高机器人性能和可靠性。 ### 回答2: Simulink是一个基于MathWorks公司 MATLAB软件的图形化编程环境,可以用于各种不同的工程领域。其中,在机械控制领域,Simulink可以帮助工程师们快速建立一个完整的机械臂控制系统,并进行实时仿真、测试和调试。 在Simulink中,可以通过将各种不同的块组合在一起来构建机械臂的模型。这些块包括传感器、执行器、控制器等等。通过这种方式,工程师们可以直观地构建一个复杂的控制系统,并且可以对其进行实时仿真,验证系统的正确性以及性能。 在控制机械臂上,Simulink提供了许多不同的控制算法,例如PID控制、模糊控制、自适应控制等,可以根据具体的应用需求来选择合适的控制算法。此外,Simulink还支持自动生成C代码和HDL代码,以便在实际的硬件平台上实现机械臂控制系统。 总之,Simulink是一个强大的机械臂控制工具,它提供了丰富的块和工具箱,可以帮助工程师们快速构建和测试一个完整的机械臂控制系统。同时,Simulink还支持多种控制算法和自动生成代码,使得机械臂控制系统在实际应用中能够实现高效、稳定的控制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值