1. 硬约束与软约束:轨迹规划中的“交通规则”与“驾驶习惯”
想象一下,你正在教一个新手开车。你会告诉他一些绝对不能违反的规则,比如“红灯必须停”、“不能压实线”,这些就是硬约束,是铁律,违反了就会直接导致事故或违章。同时,你也会教他一些“好习惯”,比如“尽量与前车保持安全距离”、“过弯时最好减速”,这些就是软约束。司机不一定每次都能完美做到,但努力朝这个方向去做,会让驾驶更安全、更舒适。
在机器人、无人机、自动驾驶车的运动规划里,硬约束和软约束扮演着完全类似的角色。它们共同构成了轨迹优化的“双轨策略”,是让机器从“能走”到“走得好”的关键。
硬约束是必须被100%满足的底线要求。在数学上,它们通常表现为等式约束或不等式约束。比如:
- 等式约束:轨迹必须精确地经过某个航点(Waypoint),起点和终点的位置、速度必须严格等于指定值。
- 不等式约束:轨迹上每一点的速度、加速度、加加速度(Jerk)都不能超过机器人本体的物理极限(电机扭矩、结构强度等);轨迹必须完全位于一个安全的“飞行走廊”或“通道”内部,绝对不能碰到任何障碍物。
如果生成的轨迹违反了任何一条硬约束,那么这个解就是不可接受的,就像一辆闯红灯的车,规划直接失败。硬约束规划的目标,就是在所有这些“条条框框”划定的狭窄空间内,找出一条可行的轨迹。
软约束则不同,它更像是一种“引导”或“偏好”。我们并不强制要求轨迹必须满足某个条件,但如果它满足了,我们会给它“加分”;如果它偏离了,我们会给它“扣分”。这个“分数”就是优化算法中的目标函数(代价函数)。常见的软约束包括:
- 轨迹光滑性:希望轨迹尽可能平滑,减少急转弯和剧烈抖动,这样控制起来更容易,能耗也更低。
- 安全裕度:不仅要求不撞上障碍物,还希望轨迹尽量远离障碍物,留下充足的安全缓冲空间。
- 能量最优:希望消耗的能量尽可能小。
软约束不保证绝对安全,但它通过优化,引导轨迹朝着更优、更鲁棒的方向发展。它处理的是“好不好”的问题,而硬约束处理的是“能不能”的问题。
在实际项目中,我常常需要在这两者之间做权衡。纯硬约束的方法虽然安全可控,但有时过于严格,导致问题无解(就像交通规则太多,车可能就没法开了);纯软约束的方法灵活优化能力强,但万一优化没收敛或者代价函数设计有瑕疵,可能会产生一条理论上“最优”但实际上会撞墙的轨迹。因此,成熟的运动规划系统,几乎都是“双轨并行”,用硬约束守住安全的底线,用软约束追求性能的极限。
2. 硬约束优化:在“安全走廊”内绘制光滑曲线
硬约束优化的核心思想是“先画框,再作画”。我们首先定


79

被折叠的 条评论
为什么被折叠?



