3. 轨迹规划基础
大家好,我是你们这堂课的老朋友。今天咱们聊点实在的——轨迹规划的基础。很多新手工程师容易把“路径规划”和“轨迹规划”混为一谈,觉得不就是找条路走嘛。嗯,这里面的门道可不少。我当年刚入行时也犯过这个错,结果在实车测试时差点撞上锥桶,从那以后我就把这两个概念刻在骨子里了。
路径规划 vs 轨迹规划:到底差在哪?
说白了,路径规划只关心“走哪条路”,它输出的是空间上的一条几何曲线。比如从A点到B点,绕过障碍物,路径规划告诉你:沿着这条线走就行。它不考虑时间,也不管速度。
而轨迹规划呢?它要回答“怎么走”。不仅要知道路径,还要知道每个时刻的位置、速度、加速度,甚至加加速度。说白了,轨迹 = 路径 + 时间信息。
我举个例子你就明白了。你开车去公司,导航给你规划了一条路线——这就是路径规划。但具体什么时候加速、什么时候减速、路口怎么平稳通过——这就是轨迹规划的事。你想想看,如果只有路径没有轨迹,车开到路口突然急刹,乘客不骂娘才怪。
核心区别一句话总结:
- 路径规划:空间上的几何曲线,无时间维度
- 轨迹规划:时间上的运动状态序列,包含位置、速度、加速度
我在项目中遇到过最典型的场景是:路径规划给出了一条完美的避障路径,但轨迹规划没跟上,结果车辆在弯道处速度过快,直接冲出车道。所以这两个模块必须协同设计,缺一不可。
为什么需要Frenet坐标系?
好了,路径和轨迹的区别搞清楚了。那问题来了:我们用什么坐标系来描述轨迹?
常见的笛卡尔坐标系(x, y)在直道上挺好用,但一遇到弯道就麻烦了。你想想看,一条弯曲的道路,用笛卡尔坐标描述,每个点的x和y都在变,而且道路曲率越大,计算越复杂。更头疼的是,车辆的横向和纵向运动在笛卡尔坐标系下是耦合的,解耦起来非常麻烦。
这时候,Frenet坐标系就派上用场了。它把问题简化成两个独立的方向:
- 纵向(s):沿着道路中心线的距离
- 横向(d):偏离道路中心线的距离
说白了,Frenet坐标系就是“贴着路走”的坐标系。道路怎么弯,坐标系就怎么弯。这样一来,车辆的横向控制(比如变道)和纵向控制(比如加减速)就可以分开处理,互不干扰。
我个人习惯:在做轨迹规划时,先用Frenet坐标系把问题拆成横向和纵向两个子问题,分别求解,再合并成完整的轨迹。这样代码结构清晰,调试也方便。
Frenet坐标系与笛卡尔坐标系的转换
实际应用中,我们通常需要在Frenet坐标系和笛卡尔坐标系之间来回切换。比如传感器数据是笛卡尔坐标系的,但规划是在Frenet坐标系下做的,最后控制指令又要转回笛卡尔坐标系。
转换公式其实不复杂,但要注意几个关键点:
| 转换方向 | 输入 | 输出 | 关键参数 |
|---|---|---|---|
| 笛卡尔 → Frenet | (x, y, θ, v, a) | (s, d, ṡ, ḋ, d̈) | 参考线位置、曲率 |
| Frenet → 笛卡尔 | (s, d, ṡ, ḋ, d̈) | (x, y, θ, v, a) | 参考线位置、曲率 |
这里我特别提醒一点:参考线的质量直接决定了转换的精度。如果参考线本身不平滑,转换出来的轨迹也会有问题。我曾经因为参考线采样点太稀疏,导致轨迹在弯道处出现抖动,查了两天才找到原因。
避坑指南:我曾经在Frenet转笛卡尔时忽略了道路曲率的变化率,结果生成的轨迹在曲率突变处出现加速度跳变。后来我加上了曲率的一阶导数补偿,问题才解决。记住:曲率变化率不可忽略!
Frenet坐标系下的轨迹表示
在Frenet坐标系下,一条完整的轨迹可以表示为:
纵向轨迹:s(t) = s₀ + ṡ₀·t + ½·a_s·t² + ...
横向轨迹:d(t) = d₀ + ḋ₀·t + ½·d̈·t² + ...
实际工程中,我们通常用多项式来表示。比如五次多项式可以保证位置、速度、加速度都连续。我一般用五次多项式做横向规划,用四次多项式做纵向规划——这样既能保证平滑性,又不会过拟合。
你可能会问:为什么横向和纵向用不同阶数的多项式?嗯,这是因为横向运动(比如变道)对平滑性要求更高,而纵向运动(比如跟车)更关注响应速度。这是我踩过几次坑后总结出来的经验。
知识体系总览
为了让你更直观地理解本章的知识结构,我画了一张图:
这张图把本章的核心内容串起来了。你仔细看,路径规划和轨迹规划是并列关系,Frenet坐标系是它们之间的桥梁,坐标转换和轨迹表示则是具体实现手段。搞懂这四个模块,轨迹规划的基础就算打牢了。
本章要点回顾:
- 路径规划只关心空间路径,轨迹规划还要考虑时间
- Frenet坐标系把横纵向解耦,简化规划问题
- 坐标转换时注意参考线质量和曲率变化率
- 多项式拟合是常用的轨迹表示方法,阶数选择有讲究
好了,今天就聊到这儿。这些概念看起来简单,但真正用好还需要大量实践。我建议你找个开源轨迹规划库,把Frenet坐标系的转换代码跑一遍,亲手调调参数,感受会更深。