运动与路径规划
碰撞检测
碰撞检测,就是针对机器人的某一种姿态,问出一个干脆的是或否的问题:在这个确切的姿态下,机器人有没有哪个部位和障碍物重叠——或者和它自己重叠?它正是那个告诉规划器一种姿态落在界线哪一边、是自由还是禁止的工具。其内部其实是几何运算:软件为机器人的各个连杆和障碍物都准备了简单的替身形状(长方体、圆柱、球),然后检验这些形状里有没有谁相交。要是什么都没重叠,这个姿态就是安全的;只要有任何重叠,这个姿态就处于碰撞之中。
这个不起眼的检验是运动规划的主力,因为规划器在搜索路线时会成千上万次、乃至上百万次地调用它,所以它首先必须够快。这里还藏着一个更隐蔽的陷阱:只检查单个姿态是不够的。机器人在一小段移动的起点是安全的、终点也是安全的,却可能在中途径直穿过一堵墙。所以规划器还得对每一个候选步骤做连续检测或扫掠检测——把那一小段运动整个都验一遍,而不只是验它的两个端点。碰撞检测里始终存在一种张力:速度对抗谨慎——检得太粗,会漏掉一次碰撞;检得太细,规划又会慢如蜗牛。
为了提速,机器人手臂会先被一圈粗略的包围球套起来。如果这些大球连障碍物的边都挨不上,这个姿态立刻被判定为安全;只有当它们确实重叠时,检测器才会放大到精确的连杆形状,去做最终的裁定。
先做一次廉价的粗检,只在必要时才做精确检测——这是让碰撞检测保持快速的标准做法。
只检查一段移动的两个端点并不够;它们之间扫掠过的整条路径也必须检查,否则机器人可能直接“穿”过一个薄障碍物。
又称
另见