2. 基础概念回顾:机器人运动学与动力学基础,配置空间(C-Space)概念,路径与轨迹的区别
各位同学好,我是你们的老朋友。今天咱们不急着上算法,先把地基打牢。说实话,我见过太多人一上来就怼RRT、A*,结果连“路径”和“轨迹”都分不清,最后调参调到怀疑人生。嗯,咱们今天就把这些基础概念掰扯清楚。
2.1 机器人运动学与动力学:一个管“能不能到”,一个管“怎么到”
先问大家一个问题:你让机械臂去抓杯子,它能不能碰到杯子?这是运动学问题。它怎么用力、用多大力气去抓,才不会把杯子捏碎?这是动力学问题。
运动学,说白了就是研究位置、速度、加速度这些几何关系,不考虑力。我习惯把它分成两类:
- 正运动学:已知关节角度,求末端位姿。比如你告诉机器人“关节1转30度,关节2转45度”,它就知道手在哪儿。
- 逆运动学:已知末端位姿,求关节角度。比如你告诉机器人“手要伸到那个点”,它得自己算每个关节该转多少。
我在项目里遇到过最坑的事,就是逆运动学多解问题。同一个位置,机械臂可以“弯着肘”去,也可以“伸着肘”去。你选哪个?选错了可能撞到旁边的设备。所以,逆运动学一定要加约束条件,比如“优先选肘部朝上的解”。
动力学就复杂一些了。它研究力、力矩、惯量这些东西。你想想看,一个重物突然掉下来,机械臂的关节要承受多大的冲击?这就是动力学要算的。我建议初学者先别碰动力学,把运动学玩明白了再说。
核心区别一句话:运动学告诉你“能不能到”,动力学告诉你“怎么安全地到”。
2.2 配置空间(C-Space):把机器人“压缩”成一个点
这个概念太重要了。我刚开始学的时候,总觉得“配置空间”是个玄学。后来做了一次避障规划,才恍然大悟。
想象一下,你的机器人有6个关节。每个关节的角度就是一个维度。6个关节,就是6维空间。在这个空间里,每一个点都对应机器人唯一的一个姿态。这就是配置空间。
为什么要搞这么复杂?因为真实世界里的机器人是有体积的,障碍物也是立体的。碰撞检测非常麻烦。但如果你把机器人“压缩”成一个点,把障碍物按照机器人的形状“膨胀”一下,问题就变成了:一个点在障碍物空间里找路。是不是简单多了?
我给大家画个图,看看这个逻辑:
你看,左边真实世界里,机器人是个有形状的物体,障碍物也是。右边配置空间里,机器人变成了一个点,障碍物被“膨胀”了。这样规划路径就变成了:这个点怎么从起点走到终点,不碰到那些膨胀区域。
避坑指南:我曾经在配置空间里吃过亏。当时用C-Space做避障,结果机器人还是撞了。后来发现,我忘了考虑机器人自身的碰撞——比如两个关节靠太近,自己打到自己。所以,C-Space不仅要考虑外部障碍物,还要考虑自碰撞。
2.3 路径与轨迹:一字之差,天壤之别
这两个词经常被混用,但在我眼里,它们完全是两码事。
| 对比项 | 路径(Path) | 轨迹(Trajectory) |
|---|---|---|
| 定义 | 空间中的几何曲线,只关心位置 | 带时间信息的路径,关心位置+速度+加速度 |
| 包含信息 | 一系列空间点(x, y, z) | 每个点还有时间戳、速度、加速度 |
| 典型问题 | “这条路能不能避开障碍物?” | “以这个速度走,会不会抖动?” |
| 我的比喻 | 地图上的路线 | 开车时的油门、刹车、方向盘操作 |
我举个例子你就明白了。你让机器人从A点走到B点。路径规划告诉你:先直走10米,再右转走5米。但轨迹规划会告诉你:前2秒加速到0.5m/s,中间3秒匀速,最后1秒减速到0。你看,路径只告诉你“走哪条路”,轨迹告诉你“怎么走”。
为什么这个区别重要?因为光有路径,机器人可能跑得一顿一顿的。我在做AGV(自动导引车)项目时,一开始只做了路径规划,结果车在拐弯时急停急起,货物全倒了。后来加上轨迹规划,做了速度平滑,才解决问题。
注意:很多初学者以为“路径规划”就是“轨迹规划”。其实,路径规划是几何问题,轨迹规划是时间问题。做运动规划时,先找路径,再生成轨迹,这是标准流程。
2.4 三者关系:一张图说清楚
好了,咱们把运动学、动力学、C-Space、路径、轨迹串起来。我画个框架图,帮你理清思路:
你看,整个流程是这样的:
- 运动学/动力学是基础,告诉你机器人的能力和限制。
- C-Space把问题简化成“点找路”。
- 路径规划在C-Space里找一条几何路径。
- 轨迹规划给路径加上时间信息,生成平滑的运动。
我个人习惯,做项目时先确认运动学模型对不对,再建C-Space,然后才跑路径规划算法。顺序搞反了,后面全是白费功夫。
一句话总结:运动学告诉你“能不能”,C-Space告诉你“在哪儿找”,路径告诉你“走哪条路”,轨迹告诉你“怎么走”。四者缺一不可。
好了,今天的基础概念就聊到这儿。这些内容看着简单,但真用起来,坑不少。我建议你动手写个小程序,建一个2自由度的C-Space,感受一下“点找路”到底是怎么回事。下节课咱们就开始讲具体的规划算法了。