先上结论: 在构型空间(也就是C空间中),不管机器人的构型如何,有几个自由度,它在构型空间中都只是一个点!!! 1. Work-Space与C-Space的关系:
方向 | 操作 | 特点 |
---|---|---|
C-Space => Work-Space | 正运动学 | 满射 |
Work-Space => C-Space | 逆运动学 | 多解、奇异点 |
既然机器人在构型空间中就是一个点,那么在C-space中设计的planning算法就不再是局限于某一机器人系统的planning算法,而是理论上可以扩展到任意机器人系统。
2. 对于平面移动机器人来说: 它的构型空间是通过对障碍物进行膨胀小车的大小得到的,此消彼长,因此小车缩成了一个点。
3. 对于平面二连杆臂来说: 它的构型空间是
,即它的关节空间,对于二连杆来说也就是一个平面,它对应的拓扑平面是一个环,也就是下图中的(b)图
4. 障碍物到C-Space的转换 Work-space中的障碍物在C空间中一般都是超曲面,在C-space中应用规划时,一般要把机械臂工作空间内的障碍物在C空间中用数学来描述。 障碍物B在robot的构型空间表示为:
思路:
- step1:使用解析函数描述障碍物表面
- step2:使用机器人最大直径膨胀障碍物
- step3:将膨胀后的障碍物表面的点与机器人的位置关系表示为函数形式,用于碰撞检测
- step4:应用搜索算法,如RRT等
其实使用RRT等采样算法时,完全可以随机撒多维点,然后使用正运动学来判断是否与障碍物发生干涉(注意,这里的正运动学是广义的,要判断每个连杆是否发生碰撞,常用的碰撞检测算法有AABB等),此时障碍物是描述在Work-space的,这样就避免了障碍物到C-Space的转换!
本文只是简要介绍一下关于C空间的理解,真正要应用运动规划在机器人上,还需要有很多坑要踩:如何均匀采样、如何碰撞检测、如何快速求逆解等等等等. 推荐一本比较经典的运动规划书籍《Principles of Robot Motion – Theory, Algorithm and Implementation》 > 声明:本文部分内容整理自网络,侵删