机械臂的动力学:牛顿欧拉法

本文详细介绍了机械臂动力学的牛顿欧拉法和拉格朗日法。通过牛顿欧拉法,讨论了刚体动力学,解释了力矩与角动量的关系,以及如何推导机械臂的动力学方程。拉格朗日法则从能量角度简化了动力学问题,避免了对约束力的直接分析。递归算法的正向传递和反向传递分别用于计算速度、加速度和力矩。
摘要由CSDN通过智能技术生成

《运动学好像够用了,我们为什么还需要动力学》
干货 | 机械臂的动力学(一):牛顿欧拉法
干货 | 机械臂的动力学(二):拉格朗日法
干货 | 机械臂的动力学(三):理解动力学方程上篇
干货 | 机械臂的动力学(四):理解动力学方程下篇

我们知道,机械臂是由关节和连杆组成的:关节能够对它所连接的连杆在特定方向施力;连杆则是有质量、有大小(所以惯性张量不可忽略)、不会变形的刚体。由此可见,机械臂动力学的实质就是刚体动力学。


欧拉第一运动定律(牛顿定律): 线性动量的变化率等于物体所受的外力

刚体可以看作是无数个particle【质点】的集合,刚体的线性动量等于这些particle线性动量的总和。
在这里插入图片描述
最终,我们得到结论:刚体的线性动量为刚体质量与它的质心线速度的乘积。这个结论表明,在考虑刚体的线性运动时,我们只需要考虑质心的线性运动就够了。
在这里插入图片描述


维基:欧拉运动定律

欧拉第二运动定律

力臂与力的叉乘即为力矩
在这里插入图片描述
(相对于这个定点的)角速度等于从定点出发到粒子的位置向量与(相对于这个定点的)粒子线速度的叉乘。
在这里插入图片描述
引入角动量(angular momentum)的概念:一个粒子相对于某个定点的角动量等于其质量与角速度的乘积
在这里插入图片描述

从牛顿定律F = ma 出发,等式两边用位置向量叉乘可以得到:
在这里插入图片描述
于是我们可以得到类似“物体线性动量的变化等于所受外力”的

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
六轴机械臂动力学建模可以采用牛顿-欧拉法进行求解,具体步骤如下: 1.建立机械臂的运动学模型,包括机械臂的关节角度、关节速度、关节加速度、末端位姿等参数。 2.计算机械臂的质心位置、质心加速度、惯性矩阵、科氏力矩等参数。 3.根据牛顿-欧拉法公式,计算机械臂的广义力和关节加速度之间的关系。 4.编写MATLAB程序,基于所得到的机械臂动力学模型和求解公式进行数值求解,得到机械臂的关节加速度。 以下是MATLAB程序实现部分: ``` % 机械臂动力学参数 m = [0.5 1.2 0.8 0.7 0.5 0.3]; % 每个关节的质量 Ixx = [0.03 0.08 0.05 0.04 0.02 0.01]; % 每个关节的惯性矩 Iyy = [0.04 0.09 0.06 0.05 0.03 0.02]; Izz = [0.02 0.05 0.03 0.03 0.02 0.01]; l = [0.2 0.3 0.4 0.3 0.2 0.1]; % 每个关节的长度 g = 9.8; % 重力加速度 % 机械臂状态量 q = [0 0 0 0 0 0]; % 关节角度 qd = [0 0 0 0 0 0]; % 关节速度 qdd = [0 0 0 0 0 0]; % 关节加速度 % 计算机械臂的运动学参数 T = eye(4); for i = 1:6 DH(i,:) = [0 l(i) 0 q(i)]; T = T * DH2T(DH(i,:)); p(:,i) = T(1:3,4); z(:,i) = T(1:3,3); end Jv = zeros(3,6); Jw = zeros(3,6); for i = 1:6 Jv(:,i) = cross(z(:,i),p(:,6)-p(:,i)); Jw(:,i) = z(:,i); end J = [Jv; Jw]; % 计算机械臂动力学参数 for i = 1:6 I(:,:,i) = [Ixx(i) 0 0; 0 Iyy(i) 0; 0 0 Izz(i)]; r(:,i) = p(:,i)-p(:,6); r_cross = [0 -r(3,i) r(2,i); r(3,i) 0 -r(1,i); -r(2,i) r(1,i) 0]; I_hat(:,:,i) = I(:,:,i) + m(i)*(r_cross*r_cross'); I_inv(:,:,i) = inv(I_hat(:,:,i)); f(:,i) = m(i)*Jv(:,i); n(:,i) = I(:,:,i)*Jw(:,i) + cross(Jw(:,i),I(:,:,i)*Jw(:,i)); end % 计算机械臂动力学方程 M = zeros(6,6); C = zeros(6,1); G = zeros(6,1); for i = 1:6 M = M + J(:,i)'*I_inv(:,:,i)*J(:,i); C = C + (J(:,i)'*I_inv(:,:,i)*n(:,i)-J(:,i)'*I_inv(:,:,i)*J(:,i)*qd')'; G = G + m(i)*g*r(3,i)*Jv(:,i); end tau = M*qdd' + C + G; ``` 其中,DH2T函数用于计算机械臂的变换矩阵,可自行编写或使用MATLAB Robotics Toolbox中的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值