基础数学预备:向量微积分、曲线参数化、Frenet-Serret 坐标系简介
各位同学好,我是你们的老朋友。今天咱们要聊的这部分内容,说实话,是整门课程里最「劝退」但也最核心的一块。很多做路径规划的朋友,一看到数学公式就头疼,我当年也一样。
但后来我发现,搞不懂这些,你写出来的规划算法就像在迷雾里开车——能跑,但不知道什么时候会撞墙。所以,咱们今天就把这些基础数学工具,掰开了揉碎了讲清楚。
1. 向量微积分:路径规划的「语言」
先问大家一个问题:一条路径,怎么描述它的变化?
答案就是向量微积分。说白了,就是用导数来描述路径上每一点的变化趋势。
核心概念:
- 位置向量 r(t):描述路径上某一点在时刻 t 的位置
- 速度向量 v(t) = dr/dt:位置随时间的变化率
- 加速度向量 a(t) = d²r/dt²:速度随时间的变化率
我在做自动驾驶项目时,遇到过一个问题:车辆在弯道中,速度向量和加速度向量之间的夹角,直接决定了车辆的稳定性。如果夹角太大,车辆就会侧滑。嗯,这里要注意,向量微积分不仅仅是数学工具,它直接对应着物理世界的真实约束。
2. 曲线参数化:把路径变成「可计算」的形式
你想想看,一条弯弯曲曲的道路,怎么用数学来描述?
曲线参数化就是干这个的。我们把路径上的每个点,用一个参数 t(通常是时间或弧长)来表示。
// 二维曲线参数化示例
// 参数 t 从 0 到 1
x(t) = a₀ + a₁t + a₂t² + a₃t³
y(t) = b₀ + b₁t + b₂t² + b₃t³
我个人习惯用弧长 s 作为参数,而不是时间 t。为什么?因为弧长参数化后,曲线的几何性质(曲率、挠率)与速度无关,计算起来更干净。
避坑指南: 我曾经用时间参数化做路径平滑,结果发现同样的路径,车速不同时曲率居然会变。后来改用弧长参数化,问题就解决了。记住:几何问题用几何参数,别混用。
3. Frenet-Serret 坐标系:路径规划的「本地视角」
这个坐标系,说白了就是给路径上的每一点,都建立一个「本地坐标系」。它由三个互相垂直的向量组成:
| 向量名称 | 符号 | 含义 | 我的理解 |
|---|---|---|---|
| 切向量 | T | 指向路径前进方向 | 就是车头朝向 |
| 法向量 | N | 指向曲线弯曲方向 | 转弯时指向弯心 |
| 副法向量 | B | 垂直于 T 和 N 构成的平面 | 三维路径才用得到 |
为什么这个坐标系这么重要?因为路径规划中的很多约束,都是在 Frenet 坐标系下表达的。比如:
- 速度约束:沿切向量方向的速度不能超过限速
- 曲率约束:法向量方向的加速度受限于轮胎抓地力
- 横向偏移:车辆偏离参考线的距离,就是沿法向量方向的位移
注意: Frenet 坐标系在曲率为零(直线段)时,法向量方向会变得不确定。我在做高速路径规划时,就因为这个原因导致过几次「跳变」。解决方案是:在直线段使用上一时刻的法向量方向,或者做平滑过渡。
4. 知识体系总览
下面这张图,是我自己总结的本章知识体系。你可以把它当作一张「地图」,随时回来查阅。
5. 实际应用中的思考
讲到这里,我想分享一个实际案例。有一次我在做园区无人车的路径规划,车辆需要经过一个 S 型弯道。如果用传统的笛卡尔坐标系,约束条件写起来非常复杂。但切换到 Frenet 坐标系后,问题就清晰了:
- 沿切向量方向:控制车速,确保不超过 5m/s
- 沿法向量方向:控制横向加速度,确保不超过 0.3g
- 曲率约束:路径曲率不能超过 0.1 m⁻¹(对应最小转弯半径 10m)
你看,三个约束条件,在 Frenet 坐标系下各司其职,互不干扰。这就是数学工具的力量。
个人建议: 刚开始学这些概念时,别急着看公式。先在纸上画一条曲线,标出切向量和法向量,感受一下它们的方向。我当年就是这么过来的,画了十几张纸后,突然就通了。
好了,今天的基础数学预备就讲到这里。这些工具就像工具箱里的扳手和螺丝刀,单独看没什么,但组合起来就能解决大问题。下一节,我们会把这些工具真正用起来,开始构建速度与曲率的联合优化模型。