3、Delta机器人运动学:从机构简图到工作空间

大家好,我是你们的老朋友。今天我们来聊聊Delta机器人运动学。说实话,Delta机器人是我个人非常喜欢的一种并联机构。为什么?因为它结构简洁,但运动学解算却藏着不少门道。我在做高速分拣项目时,就曾因为正解算得太慢,导致控制周期跟不上,后来优化了算法才搞定。今天就把这些经验分享给你。

3.1 Delta机构简图与参数

先看结构。Delta机器人本质上是一个空间三自由度并联机构。它由固定基座、三条运动链和动平台组成。每条链都是一个闭环:从基座上的驱动电机开始,经过主动臂(上臂)、万向节、从动臂(下臂,通常是平行四边形结构),最后连接到动平台。

嗯,这里要注意:从动臂的平行四边形结构是关键。它保证了动平台始终与基座平行,也就是只有平动,没有转动。所以Delta机器人的输出就是三个平移自由度(X, Y, Z)。

常用的参数定义如下:

符号 含义 典型值(参考)
R 基座半径(主动臂铰点分布圆半径) 200 mm
r 动平台半径(从动臂铰点分布圆半径) 50 mm
L1 主动臂长度 300 mm
L2 从动臂长度 800 mm
θ1, θ2, θ3 三个主动关节的转角 范围通常 -45° ~ +45°

你想想看,有了这些参数,我们就能建立几何模型了。每条链的几何关系其实就是一个空间三角形。基座上的铰点坐标是已知的,动平台上的铰点坐标是未知的(取决于末端位置),而主动臂和从动臂的长度是固定的。这就构成了一个约束方程组。

3.2 Delta正解几何法

正解,就是已知三个电机转角θ1, θ2, θ3,求末端位置P(x, y, z)。

几何法的思路很直观。对于每条链,我们可以根据转角算出主动臂末端(即万向节中心)的位置。然后,以这个点为球心,以从动臂长度L2为半径,画一个球面。三个球面的交点,就是动平台中心的位置。

具体步骤:

  1. 根据θi计算第i条链上主动臂末端坐标Ai。
  2. 以Ai为球心,L2为半径,建立球面方程。
  3. 联立三个球面方程,求解交点。

理论上,三个球面相交于两点(对称解),我们需要根据机构装配方式选择合理的那一个。我在项目中遇到过,如果参数测量有误差,三个球面可能并不交于一点,而是形成一个小的“模糊区域”。这时候就需要用最小二乘法来逼近了。

核心要点:几何法直观,但求解三个球面交点需要解二次方程组,计算量不小。而且当机构接近奇异位形时,球面几乎相切,数值稳定性会变差。

3.3 Delta正解数值法(Newton-Raphson)

既然几何法有局限性,那数值法就派上用场了。我个人习惯用Newton-Raphson法来做正解。说白了,就是把问题转化为求解非线性方程组。

定义误差函数:对于给定的末端位置P,我们可以计算出每条链对应的理论转角,与实际转角做差。当这个差为零时,P就是正解。

设F(P) = [f1(P), f2(P), f3(P)]^T,其中fi(P) = 实际θi - 由P反算出的θi。

Newton-Raphson迭代公式:

P_{k+1} = P_k - J^{-1} * F(P_k)

其中J是雅可比矩阵,3x3的。每次迭代需要计算F和J,然后解一个线性方程组。

代码实现大致如下:

// 伪代码
P = [0, 0, -L2]  // 初始猜测,通常取工作空间中心
for (int i = 0; i < maxIter; i++) {
    computeF(P, theta_actual, &F);  // 计算误差
    if (norm(F) < epsilon) break;   // 收敛判断
    computeJacobian(P, &J);         // 计算雅可比
    solveLinearSystem(J, -F, &deltaP); // 解 J * deltaP = -F
    P += deltaP;
}
我的经验:初始猜测很重要。如果猜得太离谱,迭代可能发散。我一般用上一控制周期的正解结果作为当前周期的初始值,这样通常2-3次迭代就收敛了。另外,当机构接近奇异位形时,雅可比矩阵会接近奇异,这时候需要加阻尼(Levenberg-Marquardt变种)。
避坑指南:我曾经在调试时发现,Newton-Raphson法在边界附近收敛很慢。后来加了自适应步长,效果好了很多。另外,浮点精度也要注意,单精度float在迭代中容易累积误差,建议用double。

3.4 Delta逆解解析法

逆解就简单多了。已知末端位置P,求三个电机转角。因为Delta机构的结构特点,每条链是独立的,可以分别求解。

对于第i条链:

  1. 已知P,可以算出动平台上铰点坐标Bi。
  2. 已知基座上铰点坐标Ai0(固定)。
  3. 从动臂长度L2固定,所以主动臂末端必须位于以Bi为球心、L2为半径的球面上。
  4. 同时,主动臂末端又必须位于以Ai0为圆心、L1为半径的圆弧上(因为主动臂绕基座铰点旋转)。
  5. 球面和圆弧的交点,就是主动臂末端位置。进而可以反算出转角θi。

解析解公式(以第i条链为例):

// 先计算中间变量
x = Bi.x - Ai0.x;
y = Bi.y - Ai0.y;
z = Bi.z - Ai0.z;

// 然后求解转角
// 这里涉及到平面几何关系,最终可化为一个关于tan(θi/2)的二次方程
// 具体推导略,直接给出结果形式
double A, B, C; // 由x, y, z, L1, L2计算得出
double t1 = (-B + sqrt(B*B - 4*A*C)) / (2*A);
double t2 = (-B - sqrt(B*B - 4*A*C)) / (2*A);
double theta_i = 2 * atan(t1); // 选择合理的一个解

逆解有解析解,所以计算速度非常快。在实时控制中,逆解通常用于轨迹规划——给定末端轨迹,反算出电机角度轨迹,然后做前馈控制。

注意:逆解存在多解问题。每个链的二次方程给出两个解,对应主动臂的“上翘”和“下垂”两种姿态。实际装配时,主动臂都是向下垂的,所以选择角度较小的那个解。

3.5 工作空间分析

工作空间,就是末端能够到达的所有位置的集合。对于Delta机器人,工作空间是一个近似倒扣的碗状区域。

影响工作空间的因素:

  • 杆长限制:L1和L2的比例决定了工作空间的形状和大小。L2越长,工作空间越大,但刚度会下降。
  • 关节角度限制:电机转角范围、万向节摆动角度限制,都会切掉工作空间的边缘。
  • 连杆干涉:三条从动臂之间可能发生碰撞,这也会限制工作空间。
  • 奇异位形:某些位置机构会失去自由度,这些位置通常在工作空间边界附近。

我一般用蒙特卡洛法来可视化工作空间:随机生成大量关节角度组合,计算正解,然后绘制散点图。这样能快速看到工作空间的轮廓。

下面是我画的一张Delta机器人运动学知识体系图,帮你理清思路:

Delta机器人运动学知识体系 Delta机器人运动学 机构参数 R, r, L1, L2, θi 正解 已知θ → 求P 几何法 数值法(N-R) 逆解 已知P → 求θ 解析法 工作空间分析 形状、边界、奇异 正解用于状态估计,逆解用于轨迹规划,工作空间分析用于设计验证

工作空间分析在实际工程中非常重要。比如,你要设计一个Delta机器人来抓取传送带上的物品,就必须确保所有抓取点都在工作空间内。我曾经遇到过一个案例,客户要求的工作空间很大,但受限于电机安装位置,实际工作空间被切掉了一大块。后来我们调整了基座半径R和主动臂长度L1的比例,才满足了需求。

实用建议:在做工作空间分析时,别忘了考虑末端执行器的尺寸。动平台本身有半径,加上夹爪或吸盘,实际可达空间会比理论计算的小一圈。我一般会在理论工作空间的基础上,向内收缩一个安全余量(比如20mm),作为实际可用区域。

好了,这一章的内容就到这里。Delta运动学是后续动力学、轨迹规划和控制的基础,把这些搞透,后面的路就好走了。


公众号:蓝海资料掘金营,微信deep3321