机械臂笔记(六)机械臂的动力学模型(牛顿-欧拉方程)
通过欧拉-拉格朗日方程在步骤上可以方便地对机器人进行动力学建模,但是最后得到的公式会比较复杂,难以计算。最终工程上还是会用牛顿-欧拉法对机器人进行动力学建模,更利于控制算法的设计。
一般来说,我们(忽略地球的自转和公转等)选择机械臂底座的中心作为世界坐标系(惯性系);如果底座也在动,我们需要选择地面上的一个固定点作为坐标系的原点。
这个坐标系不加速、不转动,或者相对真正的宇宙惯性系只做匀速直线运动
推导过程
我们假设上图蓝色的物体是一个刚体,我们选择刚体上的某一点,在此点上定义了一个与该刚体固连的坐标系B,即本体系。假设该刚体是均匀的,是由许多微元组成。最终,我们希望得到外力与刚体相对惯性系的速度与加速度的关系式。
符号定义
比较容易搞混的概念就是不同坐标系下的变换,所以符号相对于哪个坐标系非常重要。
| 符号 | 表示坐标系 | 说明 |
|---|---|---|
| 代表刚体的动能,必须相对于惯性系,不然坐标系选择会影响数值 | ||
| 刚体相对于惯性系的动量,用本体系的坐标表示 | ||
| 刚体相对于惯性系的角动量,用本体系的坐标表示 | ||
| 刚体相对于惯性系的速度,用本体系的坐标表示 | ||
| 刚体相对于惯性系的角速度,用本体系的坐标表示 | ||
| 刚体相对于惯性系的速度,用惯性系的坐标表示 | ||
| 刚体相对于惯性系的角速度,用惯性系的坐标表示 | ||
| 刚体微元 | ||
| 向量 | ||
| 向量 | ||
| 向量 | ||
| 向量 | ||
| - | 表示刚体的质量 | |
| - | 刚体的惯量矩阵,相对于本体系 | |
| B | 刚体所受的合外力,在本体系下的表示 | |
| B | 刚体所受的合外力矩,在本体系下的表示 |
其中有一些定义公式,可能对以后的推导有帮助:
- 质心
- 标准向量恒等式(对称的)
- 惯量矩阵
- 对于任意向量
,其在惯性系与本体系之间的导数关系为欧拉动力学方程所示:
- 向量微分
计算刚体动能
刚体的动能等于所有微元的动能之和:
由于刚体上任意微元的运动都可以分解为参考本体系的平动和转动,因此微元的速度可以表示为线速度和转动诱导速度之和:
联立式
计算刚体动量
动能对速度求导,即可得到动量:
动能对角速度求导,即可得到角动量:
计算动能/动量与合外力的关系
在惯性系下,角动量与力矩的关系如下:
但是到本体系里面,结合式
在惯性系下,结合
同样,对于公式
整理后得到矩阵的形式:
简写成如下形式:
其中:
表示第j 个连杆; 表示连杆j 相对于惯性系的速度和角速度组成的六维向量,在本体系下表示。 表示一个六维变换矩阵,可以将j+1 系下的力变化到j 系下 表示连杆收到的外力,外力矩在j 系下的表示。
建模示例--平面2R 机械臂
如果不想看上面公式,可以简单捋一下,下面的步骤。
机构与参数定义
- 关节变量:
,对应的角速度 ,角加速度 - 连杆参数:
- 长度:
- 质心到前一关节的距离:
- 质量:
- 转动惯量:
- 长度:
- 重力:
- 旋转矩阵:
,表示坐标系i 相对于坐标系i−1 的方向 - 矩阵
,表示把一个在i−1 系下表达的向量,转换为在 i 系下的表达
正向递推(速度与加速度)
因为底座(惯性系)固定在地面,有:
因为每个质点都会受到向下的重力加速度
对于连杆i 的角速度和角加速度有:
其中
关节原点的加速度:
其中:
很自然可以联想到这是关节到上一关节的拓扑参数。
这里可以看到一个关键点:
连杆的质心加速度:
其中
反向递推(力与力矩)
假设末端无外力,则从末端到基座的力与力矩为:
本关节惯性力与惯性矩:
递推到关节:
关节驱动力矩
对于转动关节:
整理后可以得到标准形式:
显示结果
为简化表示令
惯性矩阵
科氏/离心项
重力项
注意的点
上面步骤只适用于旋转关节,如果想添加平动环节(旋转矩阵是单位矩阵),还需要作出如下改动:
加速度递推
角加速度递推
线速度递推
总结
根据上面的建模步骤,可以看到,即使公式推导过程难以理解,但是实际建模却非常有规律,如果用编程实现的话可以看到函数是可以递归调用的。
运动学和动力学可以通过以下方式进行有机的结合:
期望末端轨迹 x_d(t)
↓ 逆运动学 / 雅可比
期望关节轨迹 q_d(t), ẋ_d(t), q̈_d(t)
↓ 反馈控制律
误差 e = q_d - q
↓
期望关节加速度 q̈_cmd
↓ 逆动力学(前馈)
期望力矩 τ_cmd
↓
电机驱动器 → 实际机器人 → 传感器反馈感谢ChatGPT/Gemini/Calude!
算是一点疑惑或者抱怨
本人虽学习过一段经典控制理论,但是还没毕业基本都还给老师了。作为一个程序员,是否要耗费大量精力去了解和学习理论推导过程?
- 学:会陷入无尽的公式推导,数学基础薄弱;
- 不学:没有一个可靠的输入,去网上也很难找到一个容易扩展的工具或案例
是我的方向错了吧
AI 回复说:
如果你真把牛顿–欧拉、拉格朗日、完整控制理论全补完,你得到的能力,90% 在真实项目里用不上。 而你现在最缺的,其实是:
一个可跑通的控制框架
一套自证正确的测试方法
一种不会把你拖进数学深渊的学习节奏
参考资料
- 机器人动力学建模之牛顿欧拉法推导
- 关于地转偏向力(科氏力)。在旋转的坐标系中,物体脱手后相对于惯性系是匀速直线运动,但是相对于旋转系则是曲线运动,像是被某个力改变了运动轨迹一般。
