牛顿-欧拉算法是机械臂动力学建模与计算的核心利器,理解后就能明白 Pinocchio 在底层是如何高效、实时地算出每个关节所需力矩的。

问题:如果想让机械臂按照一条精确的轨迹运动(比如快速趋近),必须实时知道每个关节电机要出多大的力(力矩),才能克服手臂自身的重量和惯性,完美跟上轨迹。
它的核心思想有两步:首先,把一整条机械臂,拆解成一个个独立的连杆;然后,对每个连杆应用牛顿定律(力)和欧拉方程(力矩),通过关节将它们串联起来。
对每一个单独的连杆,将它的质心视为一个质点:

,连杆 i 受到的合外力,等于它的质量乘以质心加速度。

,连杆 i 受到的合力矩,等于它绕质心的转动惯量乘以角加速度,再加上一个角速度带来的陀螺力矩。对于陀螺项,即使角加速度为零,只要它在旋转(ωi≠0),改变它的转轴方向就需要额外的力矩。
这两个方程给了分析单个连杆的工具,但连杆之间是靠关节连接的,关节处有约束力和约束力矩在传递作用。

算法通过两次计算,遍历整条手臂,完成全部计算。
目标:在已知 q,q˙,q¨的前提下,计算出每个连杆的角速度 ω、角加速度 α 和质心线加速度 ac。
原理:就像波浪一样,运动从基座开始,通过关节一层层向外传递。

(父连杆的角速度,加上自身关节速度带来的额外角速度)

(父连杆角加速度 + 自身角加速度 + 一项耦合项)

(父原点加速度 + 因转动产生的切向、向心加速度)

目标:利用已知的各连杆加速度,从末端开始,逐级向基座计算每个关节所需的力矩 τi。
原理:根据作用力与反作用力原理,要把末端的外力(六维力传感器测到的接触力)和运动所需的惯性力,一层层传导回基座。
1. 计算该连杆运动所需的合力和合力矩(基于正向递推算出的 aci,αi,ωi):

2. 隔离连杆,分析受力:连杆 i通过关节 i 与父连杆 i−1连接,并通过关节 i+1与子连杆 i+1连接。
3. 建立力/力矩平衡方程:

4. 提取关节力矩:关节 i是一个有特定运动轴(如 zi)的约束机构,所需的驱动力矩 τi,就是父连杆对它的作用力/力矩在关节轴方向上的投影。
5. 传递下去:现在 fi,μi 成为给父连杆 i−1 的力和力矩,开始下一轮计算,直到基座。

以的实际作业机械臂为例:
这个过程将末端一个微小的力误差,如何层层累加到每个关节,计算得一清二楚。
牛顿-欧拉算法,就是通过正向递推算加速度,反向递推算力,这两个高效步骤,为机械臂的逆动力学问题提供了工程解。 它把复杂的整臂动力学,分解成每一步都清晰明确的递推计算,不仅计算快,而且能天然地集成重力效应和末端外力,是未来实现高精度力矩前馈、全臂碰撞检测等功能的基石。