2. 运动学基础:正逆运动学快速回顾,DH参数对避障路径的影响

做机械臂避障,绕不开运动学。说白了,你得知道机器人“能到哪里”和“怎么到那里”。

我见过不少新手,一上来就调避障参数,结果路径规划总失败。为什么?因为运动学模型就没建对。你想想看,连末端位置都算不准,避什么障?

这一章,我们快速回顾正逆运动学,重点聊聊DH参数——这个看似枯燥的参数表,其实直接影响你的避障路径质量。

2.1 正运动学:从关节空间到笛卡尔空间

正运动学很简单:给定一组关节角度,算出末端执行器的位置和姿态。

公式长这样:

T = A1 * A2 * A3 * ... * An

每个A_i就是相邻两个连杆的变换矩阵。把所有矩阵乘起来,就得到了末端位姿。

我个人习惯用标准DH法。为什么?因为参数定义清晰,不容易搞混。来看一下DH参数的四个核心量:

参数 符号 物理含义 对避障的影响
连杆长度 ai-1 zi-1到zi沿xi-1的距离 决定工作空间大小,影响可达区域
连杆扭角 αi-1 zi-1到zi绕xi-1的转角 影响姿态变化率,奇异性位置
连杆偏距 di xi-1到xi沿zi的距离 影响关节偏移,避障时的冗余自由度
关节角 θi xi-1到xi绕zi的转角 直接控制变量,路径规划的核心
我的经验:建DH参数表时,一定要画坐标系。别偷懒。我在项目里见过有人凭感觉填参数,结果仿真跑得挺好,一上真机就撞。后来发现是a和d搞反了。

2.2 逆运动学:从笛卡尔空间回到关节空间

逆运动学就麻烦多了。给定末端位姿,求关节角度。这是个多解问题,有时候还没解。

常用的方法有:

  • 解析法:适合特定构型,比如6轴球腕机器人。速度快,能拿到所有解。
  • 数值法:通用性强,但迭代慢,可能陷入局部最优。
  • 几何法:直观,适合简单构型,比如2轴、3轴平面臂。

避障时,我建议优先用解析法。为什么?因为你能拿到所有可能的关节构型,然后从中选一个不撞的。

避障路径规划的核心思路:

在笛卡尔空间规划路径 → 用逆运动学映射到关节空间 → 在关节空间做碰撞检测 → 调整路径或选不同解

2.3 DH参数对避障路径的影响

你可能觉得DH参数就是个建模工具,跟避障没关系。其实关系大了去了。

第一,DH参数决定工作空间形状。

a和d的值直接决定了机械臂能伸多远、能弯多大角度。如果工作空间本身就有空洞,那避障路径规划器再怎么调也没用。

第二,DH参数影响奇异性分布。

奇异性位置附近,逆运动学不稳定,关节速度会突变。避障路径一旦经过奇异点,轻则抖动,重则报错。

第三,DH参数影响冗余自由度利用。

对于7轴臂,多出来的自由度可以用来避障。但前提是DH参数建得准,冗余运动学模型正确。

我曾经踩过的坑:有一次做7轴臂避障,怎么调参数都避不开一个障碍物。后来发现是DH参数里d3的符号搞反了,导致冗余运动学模型错误,自运动方向完全反了。改过来之后,问题迎刃而解。

2.4 知识体系:运动学与避障的关系

下面这张图,是我自己总结的运动学与避障路径规划的关系框架。你看一眼,心里就有谱了。

运动学与避障路径规划关系框架 DH参数表 正运动学 逆运动学 末端位姿 关节角度(多解) 避障路径规划 碰撞检测 + 路径搜索 + 轨迹优化 无碰撞关节轨迹 参数调整反馈 DH参数影响工作空间、奇异性、冗余自由度 → 直接影响避障路径的可行性和质量

2.5 实战:快速验证你的DH参数

光说不练假把式。我教你一个快速验证DH参数的方法。

  1. 画坐标系:在纸上画出每个关节的坐标系,标出z轴和x轴方向。
  2. 填参数表:按标准DH或改进DH,逐行填写a、α、d、θ。
  3. 仿真验证:用Python或MATLAB,给一组随机关节角,算末端位姿。
  4. 交叉检查:换一组关节角,看末端运动是否合理。
  5. 真机测试:让机械臂走几个简单路径,看实际位置和计算位置是否一致。
小技巧:验证时,让所有关节角为0,看末端是不是在“零位”。如果不在,说明DH参数有问题。我每次建完模型,第一件事就是检查零位。

2.6 避障路径规划中的运动学选择

实际做避障时,你需要在笛卡尔空间和关节空间之间来回切换。我的建议是:

  • 笛卡尔空间规划:适合直线路径、圆弧路径。直观,但需要频繁调用逆运动学。
  • 关节空间规划:适合点到点运动。计算快,但路径不可控,容易撞。
  • 混合规划:先笛卡尔规划关键路径点,再关节空间插值。兼顾可控性和效率。

嗯,这里要注意:笛卡尔空间规划时,逆运动学求解一定要处理多解问题。我一般会按“最小关节变化”原则选解,但如果那个解会撞,就换一个。