2. 机械臂运动学基础
在AI视觉引导机械臂系统中,视觉模块负责“看”,而机械臂负责“动”。要让机械臂准确抓取视觉识别到的目标,必须解决一个核心问题:如何用数学语言精确描述机械臂各关节与末端执行器在空间中的位置和姿态。这一章的内容是整个视觉引导系统的“空间语言基础”——如果坐标系定义不一致、旋转表达方式混乱、正逆运动学求解错误,那么视觉给出的坐标再精确,机械臂也无法完成抓取。本章将系统讲解刚体变换、旋转矩阵、欧拉角、四元数、齐次坐标以及正逆运动学的基本概念,并说明它们在视觉引导抓取场景中的具体应用方式。
上图展示了本章的核心知识框架:姿态表达方式(旋转矩阵、欧拉角、四元数)是描述机械臂末端朝向的数学工具;刚体变换与齐次坐标将旋转和平移统一为4×4矩阵,便于链式运算;正逆运动学则建立了关节空间与笛卡尔空间之间的映射关系。在视觉引导链路中,相机标定得到的坐标必须经过齐次变换转换到机械臂基座坐标系,再通过逆运动学求解各关节角度,最终驱动机械臂完成抓取。下面逐一展开讲解。
2.1 刚体变换与旋转矩阵
核心原理:刚体变换描述了一个物体在三维空间中不发生形变的运动,包含旋转和平移两个分量。在机械臂系统中,每个连杆、每个传感器(如相机)都有自己固连的坐标系,刚体变换就是连接这些坐标系的数学桥梁。旋转矩阵R是一个3×3的正交矩阵,满足RTR = I且det(R) = +1,其9个元素中只有3个独立自由度。旋转矩阵的列向量表示旋转后坐标系各轴在原坐标系中的方向余弦。
判断方法与操作流程:在实际工程中,判断一个矩阵是否为合法旋转矩阵,可验证两个条件:① 各列向量模长为1且两两正交;② 行列式为+1。若计算结果出现微小偏差(如浮点误差),可通过SVD分解或Gram-Schmidt正交化进行修正。旋转矩阵的乘法顺序至关重要——RAB · RBC = RAC表示先进行BC变换再进行AB变换,注意矩阵乘法不满足交换律。
| 表达方式 | 参数数量 | 优点 | 缺点 | 典型应用场景 |
|---|---|---|---|---|
| 旋转矩阵 | 9 | 无奇异、可直接运算 | 冗余参数多、不直观 | 坐标变换计算、运动学推导 |
| 欧拉角 | 3 | 直观、易理解 | 万向锁问题、插值不平滑 | 人机交互界面、姿态显示 |
| 四元数 | 4 | 无奇异、插值平滑、紧凑 | 不够直观、需转换理解 | 姿态控制、轨迹规划、滤波 |
| 等效轴角 | 4 | 物理意义明确 | 插值需特殊处理 | 旋转增量计算 |
实战场景:假设视觉系统检测到目标物体在相机坐标系下的位姿为Rc、tc,而机械臂基座坐标系与相机坐标系之间的变换为Tbc(通过手眼标定获得),则目标在基座坐标系下的位姿为:Tb = Tbc · Tc。这里的Tbc就是一个4×4齐次变换矩阵,其左上角3×3为旋转矩阵Rbc,右上角3×1为平移向量tbc。
2.2 欧拉角与四元数
核心原理:欧拉角通过绕三个坐标轴的依次旋转来描述姿态,常见的约定有ZYX(即RPY:Roll-横滚、Pitch-俯仰、Yaw-偏航)和ZYZ等。欧拉角最大的问题是万向锁:当中间旋转角为±90°时,第一次和第三次旋转轴重合,丢失一个自由度,导致姿态突变。四元数由1个实部和3个虚部组成,q = w + xi + yj + zk,满足||q||=1。四元数通过一个旋转轴和绕该轴的旋转角度来描述姿态,完全避免了万向锁问题,且两个四元数的乘积对应旋转的复合,计算效率高。
转换方法与操作流程:从旋转矩阵R转换为四元数的常用公式为:
w = sqrt(1 + R11 + R22 + R33) / 2
x = (R32 - R23) / (4w)
y = (R13 - R31) / (4w)
z = (R21 - R12) / (4w)
当w接近0时,需改用其他公式避免数值不稳定。从四元数到欧拉角的转换(ZYX约定)为:
roll = atan2(2(wx + yz), 1 - 2(x² + y²))
pitch = asin(2(wy - zx))
yaw = atan2(2(wz + xy), 1 - 2(y² + z²))
风险提示:在视觉引导抓取中,如果使用欧拉角进行姿态插值,当目标姿态经过万向锁区域时,机械臂末端可能出现剧烈抖动。因此,推荐在控制回路中使用四元数进行姿态表示和插值,仅在用户界面显示时转换为欧拉角。
案例拆解:某3C装配场景中,机械臂需要将手机壳从传送带抓取到装配工位。视觉系统给出的目标姿态用欧拉角表示为(180°, 89°, 45°),由于pitch接近90°,系统在轨迹规划时出现奇异。工程师将姿态表示切换为四元数后,规划出的路径平滑无突变,抓取成功率从92%提升至99.5%。这个案例说明,姿态表达方式的选择直接影响控制系统的稳定性和精度。
2.3 齐次坐标与变换矩阵
核心原理:齐次坐标将三维空间中的点(x,y,z)表示为四维向量(x,y,z,1),将旋转和平移统一到一个4×4矩阵中:
T = | R t |
| 0 1 |
其中R为3×3旋转矩阵,t为3×1平移向量。齐次变换矩阵的乘法可以串联多个坐标系变换,例如从相机坐标系到基座坐标系再到工具坐标系:Ttool_base = Tcam_base · Ttool_cam。逆变换T-1表示反向变换,其计算为:
T⁻¹ = | Rᵀ -Rᵀt |
| 0 1 |
操作流程:在视觉引导系统中,坐标变换通常遵循以下步骤:① 定义所有坐标系(基座、关节、末端、相机、目标);② 通过标定获得相邻坐标系间的变换矩阵;③ 使用齐次矩阵乘法计算目标在基座坐标系下的位姿;④ 将结果传递给逆运动学求解器。
| 变换链 | 矩阵表示 | 说明 |
|---|---|---|
| 相机→基座 | Tbase_cam | 手眼标定结果(Eye-to-Hand) |
| 末端→相机 | Tcam_end | 手眼标定结果(Eye-in-Hand) |
| 基座→末端 | Tend_base | 正运动学计算结果 |
| 目标→基座 | Ttarget_base | 视觉定位 + 坐标变换最终结果 |
经验提醒:在编写代码时,务必明确矩阵乘法的顺序。例如,numpy.dot(T_base_cam, T_cam_target)表示先将目标从相机坐标系变换到基座坐标系。建议在代码注释中明确标注每个矩阵的“源坐标系”和“目标坐标系”,避免混淆。
2.4 正运动学与逆运动学
核心原理:正运动学(Forward Kinematics, FK)已知各关节角度,求解末端执行器的位置和姿态;逆运动学(Inverse Kinematics, IK)已知末端位姿,求解满足条件的关节角度。对于6自由度机械臂,IK通常存在多组解(最多8组),需要根据关节限位、避障、能耗等条件选择最优解。正运动学通过DH参数(Denavit-Hartenberg)建模,每个关节用一个4×4齐次变换矩阵表示,末端位姿为所有关节矩阵的连乘。
判断方法与操作流程:IK求解方法分为解析法和数值法。解析法适用于满足Pieper准则的机械臂(相邻三关节轴交于一点或平行),求解速度快、精度高;数值法(如雅可比迭代、阻尼最小二乘法)适用于任意构型,但可能陷入局部最优。在实际视觉引导系统中,通常先使用解析法求候选解,再通过碰撞检测和关节限位筛选最优解。
实战案例:某焊接机器人工作站,视觉系统识别焊缝位置后给出末端目标位姿。工程师使用解析IK求解得到4组关节角解,其中两组超出关节限位,一组与工件发生碰撞,最终选择剩余一组能耗最小的解。整个求解过程耗时约2ms,满足实时控制要求。若采用数值法,平均耗时15ms且偶尔不收敛,因此优先使用解析法,数值法作为备选。
常见误区与总结复盘:
- 误区一:认为旋转矩阵是唯一的姿态表达方式,忽略欧拉角和四元数的互补优势。实际上,不同场景应选择不同表达方式。
- 误区二:在坐标变换时忘记考虑平移分量,只使用旋转矩阵,导致位置偏差。
- 误区三:IK求解后不验证解的可行性(关节限位、奇异位形、碰撞),直接下发执行。
- 误区四:忽视浮点误差累积,在长链路变换后未进行正交化修正。