3. 机器人学基础(二)

好,咱们接着聊机械臂。上一章我们把位姿描述和坐标变换打好了底,这一章就要真刀真枪地让机械臂动起来了。

核心就三个东西:正解、逆解、DH参数。说白了,正解就是我知道每个关节转了多少度,问末端在哪儿;逆解就是我知道末端要去哪儿,反推每个关节该转多少度。DH参数呢,是连接这两者的桥梁。

我个人习惯,讲运动学之前,先画一张图把整个知识体系串起来,这样你心里有个谱。

机械臂运动学知识体系结构图 机械臂运动学 DH参数建模法 正运动学(正解) 逆运动学(逆解) 连杆参数 坐标系建立 齐次变换矩阵 矩阵连乘 末端位姿 解析法 数值法 多解选择 工作空间分析 蒙特卡洛法 边界分析 可达空间 灵活空间 核心逻辑:DH参数 → 正解(唯一) → 逆解(多解) → 工作空间(边界与形状)

3.1 DH参数建模法——机械臂的“身份证”

DH参数法,说白了就是用四个参数来描述一个连杆和它相邻关节的关系。你想想看,一个机械臂那么多连杆,每个连杆怎么连到下一个?角度偏了多少?杆子多长?扭了多少?DH参数就是干这个的。

我记得刚入行时,师傅丢给我一本机器人学的书,让我自己看DH参数。我看了三天,脑子里全是α、a、d、θ这四个字母在打架。后来我自己动手建了一个六轴臂的模型,才真正搞明白。

3.1.1 四个参数的含义

参数 符号 物理含义 我的理解
连杆长度 ai-1 沿xi-1轴,从zi-1到zi的距离 杆子有多长
连杆扭角 αi-1 绕xi-1轴,从zi-1到zi的转角 杆子拧了多少
连杆偏距 di 沿zi轴,从xi-1到xi的距离 关节之间错开多少
关节角 θi 绕zi轴,从xi-1到xi的转角 关节转了多少
我的小技巧: 记这四个参数,你就想成“先走多长(a),再拧多少(α),然后错开多少(d),最后转多少(θ)”。顺序别搞反了,我刚开始就吃过这个亏。

3.1.2 坐标系建立步骤

建坐标系是DH参数里最容易出错的一步。我总结了一个口诀,你试试看:

  1. 找轴线: 每个关节的轴线就是z轴。
  2. 定原点: 相邻两轴线的交点或公垂线与z轴的交点。
  3. 画x轴: 沿公垂线方向,从当前z轴指向下一个z轴。
  4. 定y轴: 右手定则,y = z × x。

嗯,这里要注意:如果相邻两关节轴线平行,公垂线不唯一,这时候一般取使di = 0的位置。我曾经在一个协作臂项目里,因为平行关节的坐标系选得不对,导致正解算出来末端位置差了5厘米,查了两天才找到原因。

3.1.3 齐次变换矩阵

有了DH参数,相邻坐标系之间的变换矩阵就是标准形式了:

T = [ cosθ    -sinθ·cosα    sinθ·sinα    a·cosθ
      sinθ     cosθ·cosα   -cosθ·sinα    a·sinθ
       0        sinα         cosα          d
       0         0            0            1 ]

这个矩阵你不需要死记硬背,用的时候查一下就行。但你要理解它的结构:左上角3×3是旋转,右上角3×1是平移,最后一行是[0 0 0 1]。

3.2 正运动学(正解)——从关节空间到笛卡尔空间

正解,说白了就是“已知关节角度,求末端位姿”。

对于一个n自由度的机械臂,正解就是把这n个相邻变换矩阵乘起来:

T_0^n = T_0^1 · T_1^2 · T_2^3 · ... · T_{n-1}^n

结果是一个4×4的齐次变换矩阵,包含了末端的位置和姿态。

关键点: 正解是唯一的。给定一组关节角,末端位姿是确定的。这一点和逆解完全不同。

我举个例子,一个简单的2自由度平面臂:

  • 连杆1:a0 = L1, α0 = 0, d1 = 0, θ1 = 变量
  • 连杆2:a1 = L2, α1 = 0, d2 = 0, θ2 = 变量

正解结果:

x = L1·cosθ1 + L2·cos(θ1+θ2)
y = L1·sinθ1 + L2·sin(θ1+θ2)

你看,就是简单的三角函数叠加。但到了六轴臂,表达式会变得非常复杂,一般不会手算,都是用工具库(比如Robotics Toolbox)来算。

3.3 逆运动学(逆解)——从笛卡尔空间回到关节空间

逆解就麻烦多了。给定末端位姿,求关节角。这玩意儿通常有多解,甚至无解。

为什么会这样?你想想看,一个六轴臂,末端到了某个位置,手臂可以“弯着”过来,也可以“伸着”过来,肘关节可以朝上也可以朝下。这就是多解。

3.3.1 逆解的方法

方法 适用场景 优点 缺点
解析法(封闭解) 满足Pieper准则的臂(相邻三轴交于一点) 速度快,精度高 通用性差
数值法(迭代法) 任意构型 通用性强 速度慢,可能不收敛
避坑指南: 我曾经在一个项目里,直接用数值法做逆解,结果在奇异位形附近算法死活不收敛,机械臂在那抖得像筛糠一样。后来我改成解析法+数值法混合策略,才稳定下来。所以,能用解析法尽量用解析法。

3.3.2 多解的选择策略

逆解出来好几个解,选哪个?我一般按这个优先级来:

  1. 关节限位优先: 先排除超出关节物理限位的解。
  2. 行程最短: 选离当前关节角最近的解,减少运动时间。
  3. 避障: 如果前面两个条件打平,选能避开障碍物的那个。
  4. 构型偏好: 比如“肘部朝上”还是“肘部朝下”,根据工艺要求定。

3.4 工作空间分析——机械臂的“活动范围”

工作空间,说白了就是机械臂末端能到达的所有点的集合。这东西在选型和布局时特别重要。

我记得有一次做产线仿真,客户说“我这工位就这么大,你帮我看看这个臂能不能够到所有点”。我二话不说,先跑了个工作空间分析,结果发现有一个角落死活够不着。后来换了臂长更大的型号才解决。

3.4.1 工作空间的分类

  • 可达空间: 末端至少以一个姿态能到达的点集。
  • 灵活空间: 末端能以任意姿态到达的点集。
  • 灵巧工作空间: 末端能以一定范围内的姿态到达的点集(介于两者之间)。

3.4.2 蒙特卡洛法求工作空间

实际工程中,最常用的方法是蒙特卡洛法。步骤很简单:

  1. 在关节范围内随机采样N组关节角(N一般取10000~50000)。
  2. 对每组关节角做正解,得到末端位置。
  3. 把所有位置点画出来,就是工作空间的点云图。
我的经验: N取20000左右就够用了,再多边际效益递减。采样时注意关节限位要设准,不然画出来的工作空间会偏大,误导选型。

3.4.3 影响工作空间的因素

因素 影响
连杆长度 越长,工作空间越大,但精度和刚度下降
关节限位 限位越宽,工作空间越大,但可能产生奇异位形
构型 关节型臂工作空间是球壳状,SCARA是圆柱状
奇异位形 在工作空间边界附近,逆解困难,速度骤降
一句话总结: DH参数是建模工具,正解是正向映射(唯一),逆解是反向映射(多解),工作空间是可达域分析。这三者构成了机械臂运动学的核心闭环。