ADD加速驱动阻尼控制策略由来||惯容器动力学模型建立

        相比天棚控制,加速度驱动阻尼(Acceleration Driven Damper, ADD)控制将与理想天棚之间安装 的阻尼器替换成了“理想惯容器”,利用惯容器来实现车身振动的抑制,同时在判断策略中将簧上速度替换成了簧上加速度。理想建模和实际建模分别如下:

                           

   分别列出两个模型的动力学方程如下:

\begin{cases}M\ddot{z}=k(z_{t}-z)-b\ddot{z}\\m\ddot{z}_{t}=kt(z_{r}-z_{t})-k(z_{t}-z)\end{cases}

\begin{cases}M\ddot{z}=-k(z-z_t)-c\left(\dot{z}-\dot{z}_t\right) \\ m\ddot{z}_t=k(z-z_t)+c\left(\dot{z}-\dot{z}_t\right)-k_t(z_t-z_r)\end{cases}

        理想天棚惯容控制到实际阻尼控制的转换,是指虚拟的天棚惯容系数 b 到实际可控阻尼系数 c 的转换。真实控制中,就是对可控阻尼系数 c 的连续可调。牢记ADD控制是针对车身的控制策略,所以虽然运动微分方程中同时写出了车轮 m 的部分,但只需留意如下两个等式是等效的。

\begin{cases}M\ddot{z}=-k(z-z_t)-c\left(\dot{z}-\dot{z}_t\right) \\ M\ddot{z}=k(z_t-z)-b\ddot{z}\end{cases}

        也就是说 c\left(\dot{z}-\dot{z}_t\right)=b\ddot{z} ,从而得到可控阻尼系数

 

        对于惯容系数 b ,只是一个预先设定的固定参数,一旦经过标定确认,算法中不会再有变化。

        而对于开关式半主动悬架来说,可控阻尼系数 c 只有两个取值,即c_{min}c_{max}

        所以当\frac{\ddot z}{\dot z-\dot z_t}为负值时,c取最小值c_{min}。当\frac{\ddot z}{\dot z-\dot z_t}为正时,c取最大值c_{max}

        为方便计算机计算,将除法判断条件更改为乘法判断,也就有以下控制策略:

c_{in}=\begin{cases}c_{\min}\rightarrow \ddot{z}(\dot{z}-\dot{z}_t)\leq0 \\ c_{\max}\rightarrow \ddot{z}(\dot{z}-\dot{z}_t)>0\end{cases}


惯容器

        减振元件惯容器具有质量属性, 同时惯容器突破了质量块单端子接地的限制, 是一种双端子减振元件[12].滚珠丝杠式惯容器具有结构简单、成本低、便于安装等优点, 是一款被广泛应用的惯容器.

        滚珠丝杠式惯容器的理想动力学模型可以表示为

(1)

式中:F为惯容器两端所受到的力; m为飞轮的质量; r为飞轮的半径; p为滚珠丝杠副的导程; v为惯容器两端的相对运动速度; b为惯容器的惯质系数.

        也就是说,在对惯容器元件进行动力学建模时,惯容器施加的力为b\ddot{z}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
这里我们提供一个简单的MATLAB程序来对ABB-IRB-1200进行动力学模型建立和正逆运动学分析,供参考: 1. 正运动学分析 正运动学问题是指根据机器人各个关节的角度计算机器人末端执行器的位置和姿态。我们可以使用 Robotics Toolbox for MATLAB 提供的 `fkine` 函数来实现正运动学分析。 ```matlab % 定义机器人模型 robot = robotics.RigidBodyTree; % 定义机器人的各个关节参数 L1 = Link('d', 0.290, 'a', 0, 'alpha', pi/2, 'qlim', [-2*pi/3, 2*pi/3]); L2 = Link('d', 0, 'a', 0.270, 'alpha', 0, 'qlim', [-pi/2, pi/2]); L3 = Link('d', 0, 'a', 0.070, 'alpha', -pi/2, 'qlim', [-pi, pi]); L4 = Link('d', 0.302, 'a', 0, 'alpha', pi/2, 'qlim', [-2*pi/3, 2*pi/3]); L5 = Link('d', 0, 'a', 0.302, 'alpha', -pi/2, 'qlim', [-pi, pi]); L6 = Link('d', 0.072, 'a', 0, 'alpha', 0, 'qlim', [-2*pi/3, 2*pi/3]); % 添加各个关节到机器人模型中 robot = addLink(robot, L1, 'base'); robot = addLink(robot, L2, 'L1'); robot = addLink(robot, L3, 'L2'); robot = addLink(robot, L4, 'L3'); robot = addLink(robot, L5, 'L4'); robot = addLink(robot, L6, 'L5'); % 随机生成一个关节角度 q = randn(6,1); % 计算末端执行器的位置和姿态 T = robot.fkine(q); ``` 2. 逆运动学分析 逆运动学问题是指根据机器人末端执行器的位置和姿态计算机器人各个关节的角度。我们可以使用 Robotics Toolbox for MATLAB 提供的 `ikine` 函数来实现逆运动学分析。 ```matlab % 定义机器人模型 robot = robotics.RigidBodyTree; % 定义机器人的各个关节参数 L1 = Link('d', 0.290, 'a', 0, 'alpha', pi/2, 'qlim', [-2*pi/3, 2*pi/3]); L2 = Link('d', 0, 'a', 0.270, 'alpha', 0, 'qlim', [-pi/2, pi/2]); L3 = Link('d', 0, 'a', 0.070, 'alpha', -pi/2, 'qlim', [-pi, pi]); L4 = Link('d', 0.302, 'a', 0, 'alpha', pi/2, 'qlim', [-2*pi/3, 2*pi/3]); L5 = Link('d', 0, 'a', 0.302, 'alpha', -pi/2, 'qlim', [-pi, pi]); L6 = Link('d', 0.072, 'a', 0, 'alpha', 0, 'qlim', [-2*pi/3, 2*pi/3]); % 添加各个关节到机器人模型中 robot = addLink(robot, L1, 'base'); robot = addLink(robot, L2, 'L1'); robot = addLink(robot, L3, 'L2'); robot = addLink(robot, L4, 'L3'); robot = addLink(robot, L5, 'L4'); robot = addLink(robot, L6, 'L5'); % 定义末端执行器的目标位置和姿态 T = transl(0.5, 0.3, 0.4) * rpy2tr(0, pi/2, 0); % 计算机器人的逆运动学解 q = robot.ikine(T); ``` 3. 动力学模型建立 动力学模型建立是指根据机器人的结构和质量参数,计算机器人的动力学模型,包括质量、量、关节摩擦等参数。我们可以使用 Robotics Toolbox for MATLAB 提供的 `inertia` 函数来实现动力学模型建立。 ```matlab % 定义机器人模型 robot = robotics.RigidBodyTree; % 定义机器人的各个关节参数 L1 = Link('d', 0.290, 'a', 0, 'alpha', pi/2, 'qlim', [-2*pi/3, 2*pi/3], 'm', 1, 'r', [0 0 0], 'I', [1 0 0; 0 1 0; 0 0 1]); L2 = Link('d', 0, 'a', 0.270, 'alpha', 0, 'qlim', [-pi/2, pi/2], 'm', 1, 'r', [0 0 0], 'I', [1 0 0; 0 1 0; 0 0 1]); L3 = Link('d', 0, 'a', 0.070, 'alpha', -pi/2, 'qlim', [-pi, pi], 'm', 1, 'r', [0 0 0], 'I', [1 0 0; 0 1 0; 0 0 1]); L4 = Link('d', 0.302, 'a', 0, 'alpha', pi/2, 'qlim', [-2*pi/3, 2*pi/3], 'm', 1, 'r', [0 0 0], 'I', [1 0 0; 0 1 0; 0 0 1]); L5 = Link('d', 0, 'a', 0.302, 'alpha', -pi/2, 'qlim', [-pi, pi], 'm', 1, 'r', [0 0 0], 'I', [1 0 0; 0 1 0; 0 0 1]); L6 = Link('d', 0.072, 'a', 0, 'alpha', 0, 'qlim', [-2*pi/3, 2*pi/3], 'm', 1, 'r', [0 0 0], 'I', [1 0 0; 0 1 0; 0 0 1]); % 添加各个关节到机器人模型中 robot = addLink(robot, L1, 'base'); robot = addLink(robot, L2, 'L1'); robot = addLink(robot, L3, 'L2'); robot = addLink(robot, L4, 'L3'); robot = addLink(robot, L5, 'L4'); robot = addLink(robot, L6, 'L5'); % 计算机器人的动力学参数 robot = robot.inertia(q); ``` 以上是一个简单的MATLAB程序,可以用于对ABB-IRB-1200进行动力学模型建立和正逆运动学分析。需要注意的是,这个程序只是提供了基本的框架和函数,具体实现还需要根据实际情况进行调整和修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@Duang~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值