一、机构自由度DoF

自由度M根据Grubler公式:

对于该机构:

  • 总构件数(虎克铰作为一个高副看待,不计算中心十字)

  • 运动副(高副)数(虎克铰作为一个高副看待)

  • 总自由度(低副)数(一个连杆两端的两个球铰有一个局部自由度,看作一个球铰和一个虎克铰)

因此:

该并联机构自由度数为2,2电机输入在A1,A2,末端构件脚部有两个旋转自由度,为全驱动机构。

Image Token: BVukbpAjIozvl9xTPRicPLhxnBc

二、逆向运动学

1. 建立坐标系

为了计算方便,把世界坐标系建在虎克铰中心,以初始姿态时的虎克铰两个副的方向作为X轴,Y轴(如上图)。

则脚部构件的旋转矩阵R为YX欧拉角(注意先后顺序,如果虎克铰两轴机械设计相反,则顺序相反)。

记为 ,则旋转矩阵R为:

众擎代码为:

2. 计算BA_bar旋转角度θ

注意到B点既在BA_bar,又在CB_rod上,因此B点在以C为圆心,rod长为半径的球面上,同时又在A为圆心,bar长为半径的空间圆上。

首先计算BA_bar初始向,圆心与球心向量

将B点带入球面约束方程:

代码中:

即:

由于电机轴线沿Y方向,因此可表示为:

因此:

代码:

即:

因此:

用三角等式消去其中余弦项,得到:

求解一元二次方程:

该方程有两个根,对应的是两种不同的构型,构型由初始构件安装条件确定,在运动过程中构型不会变化(除非在奇异点处有可能发生构型变化),本构型求根时取+号。

之后,可以根据求解角度计算出机构任何一点的空间位置,得到逆向运动学。

三、雅克比矩阵

雅克比矩阵的目的是推导末端欧拉角速度 与电机输入速度 的关系。

需要通过速度之间的关系推导 。

1. 欧拉角速度与角速度转换

如果脚部输入速度是,求脚部的 。

加上线速度:

代码中的计算:

2. 以沿杆速度建立等式

对于一个刚体杆,各点沿杆方向的线速度均相等,以此建立等式。

2.1 从电机端计算沿杆速度

设电机速度为 ,转轴均沿Y轴正方向 ,则B点沿BC杆速度可表示为:

对于两个支链:

代码中 的计算:

2.2 从脚部计算沿杆速度

设脚部构件原点的速度为 ,则C点沿BC杆速度可表示为:

对于两个支链:

代码中的计算

3. 计算雅克比矩阵

由沿杆速度相等,以及欧拉角速度和角速度关系:

因为:

所以:

代码中计算了 和 :

4. 力雅克比矩阵

上面探讨的是速度之间的关系,下面讨论电机输入力与脚部力的关系。

由虚功原理可得:

两边转置:

因此:

相关代码:

四、正向运动学

大部分并联机构的正向运动学没有解析解,一般采用数值迭代的方式进行计算。最常见的迭代算法是Newton-Raphson算法(一种梯度下降法),众擎采用的就是这个方法。

1. Newton-Raphson迭代法

Newton-Raphson 迭代法具体迭代过程如下所述:

  1. 输入电机角度 ,初始脚部欧拉角 ,误差极限ER,最大迭代次数m

  2. 计算 下的逆解 和雅克比矩阵

  1. 计算,

  2. 若的范数小于ER,则迭代结束,正解为 ;否则,跳至第二步;

  3. 检查迭代次数,若其超过m ,则输出迭代过程不收敛

2. 代码

这个方法的收敛性有待验证,但是好在实际应用过程中基本上用不到运动学正解。

五、实际部署

由于URDF无法表示并联机构,因此一般直接将关节放在脚部进行简化,即训练时使用代替。但是在实际部署时,实际控制的是电机。

Image Token: R8NObZyyYoR8qzxHw9lcEnyan2c

六、PD增益

Image Token: ZKqRbWB8AoEznYx8hD7cRO9Gn4g

Image Token: FoYvbRRTlozR7zxXSAyc4fZJn7N

Image Token: LkvIbTU3woJKwHxjz6zceigkne7

此方法计算量较大,但是如果想要将PD控制器做在伺服里,则应该采取该方法。

附:众擎并联完整代码

close_chain_mapping.h

close_chain_mapping.cpp