坐标系与车辆模型:Frenet坐标系、笛卡尔坐标系、自行车模型、车辆运动学方程

各位同学,今天我们来聊聊轨迹规划里最基础、也最绕不开的两个东西——坐标系和车辆模型。

说实话,我刚入行那会儿,觉得坐标系嘛,不就是个坐标轴吗?有什么好讲的。直到我第一次在实车上调试轨迹跟踪算法,发现规划出来的路径明明很平滑,但车就是走不直。查了半天,原来是坐标系选错了。嗯,从那以后,我再也不敢小看这个环节了。

为什么需要两种坐标系?

你想想看,我们平时开车,导航告诉你的信息是什么?是「前方500米右转」、「距离出口还有2公里」。这些都是沿着道路走的距离,而不是「向东走100米,再向北走50米」。对吧?

笛卡尔坐标系(就是咱们中学学的x-y坐标系)适合描述绝对位置,但在道路场景下有个致命问题——道路是弯曲的。一条弯弯曲曲的路,用笛卡尔坐标表示,那方程能写到你手酸。

而Frenet坐标系,说白了就是「贴着路走的坐标系」。它把问题分解成两个方向:

  • 纵向(s):沿着道路中心线走了多远
  • 横向(d):偏离道路中心线多少

这样做的好处是什么?我举个例子。你在高速上变道,用笛卡尔坐标你得算一大堆三角函数,用Frenet坐标就简单了——纵向保持匀速,横向从当前车道中心平滑过渡到目标车道中心。就这么简单。

核心思想:Frenet坐标系把三维的轨迹规划问题,解耦成两个独立的一维问题。这是自动驾驶轨迹规划里最经典的思想之一。

Frenet坐标系 vs 笛卡尔坐标系

咱们来对比一下这两种坐标系在实际应用中的区别:

特性 笛卡尔坐标系 Frenet坐标系
坐标含义 绝对位置 (x, y) 沿道路距离 (s) + 横向偏移 (d)
道路适应性 差,弯曲道路需分段拟合 好,天然贴合道路几何
约束表达 复杂,需额外计算道路边界 简单,d 直接表示偏离程度
速度规划 需处理方向变化 纵向速度独立控制
典型应用 全局路径、地图定位 局部轨迹规划、行为决策

我个人习惯是:全局路径规划用笛卡尔坐标,因为地图数据本身就是经纬度;但一旦进入局部规划层,立刻切换到Frenet坐标系。这样处理起来清爽很多。

Frenet与笛卡尔的相互转换

实际工程中,这两个坐标系需要来回切换。比如传感器给的障碍物位置是笛卡尔坐标,但规划器需要的是Frenet坐标。转换公式长这样:

// 笛卡尔 → Frenet(简化版)
s = 找到参考线上最近点的弧长
d = 点到参考线的有向距离(左为正,右为负)

// Frenet → 笛卡尔(简化版)
x = x_ref(s) - d * sin(theta_ref(s))
y = y_ref(s) + d * cos(theta_ref(s))

这里 x_ref(s) 和 y_ref(s) 是参考线上弧长 s 对应的点坐标,theta_ref(s) 是该点的切线方向角。

避坑指南:我曾经在计算有向距离 d 时,忘了考虑参考线的曲率方向,结果在弯道处 d 的符号反了。车明明在道路右侧,系统却认为它在左侧。嗯,这个bug调了我整整一个下午。

自行车模型——把四轮车简化成两轮

好了,坐标系搞定了,接下来得说说车辆本身怎么建模。

真实的车辆有四个轮子,转向系统复杂得很。但咱们做轨迹规划,不需要那么精细的动力学模型。这时候,自行车模型就派上用场了。

说白了,就是把前后轮分别合并成一个虚拟轮,假设车辆像自行车一样运动。这个模型在低速场景下(比如泊车、城区道路)精度足够,而且计算量小。

自行车模型的假设条件:

  • 车辆在平坦路面上行驶(忽略垂向运动)
  • 轮胎侧偏角忽略不计(低速假设)
  • 前后轮转向角满足阿克曼几何关系
  • 车辆刚体,不考虑悬架变形

车辆运动学方程

有了自行车模型,我们就可以写出车辆的运动学方程了。这是轨迹规划的「物理基础」——你规划的轨迹,必须满足这组方程,否则车开不出来。

状态量通常取:

  • x:车辆后轴中心 x 坐标
  • y:车辆后轴中心 y 坐标
  • θ:车辆航向角(车头朝向)
  • v:车辆速度(沿车头方向)
  • δ:前轮转向角

运动学方程:

dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
dv/dt = a
dδ/dt = ω

其中 L 是轴距(前后轮距离),a 是加速度,ω 是转向角速度。

注意:这个模型假设车辆是「后轮驱动、前轮转向」。如果你的车是四轮转向或者差速转向(比如某些AGV),方程需要调整。我在做园区物流车项目时就踩过这个坑——那车是四轮转向,直接用自行车模型算出来的轨迹,实车根本走不出来。

知识体系结构图

下面这张图,是我自己梳理的本章知识脉络。你可以把它当作一个「思维导图」来看:

坐标系与车辆模型 坐标系 车辆模型 笛卡尔坐标系 Frenet坐标系 绝对位置 全局路径 纵向s 横向d 自行车模型 运动学方程 两轮简化 阿克曼转向 状态方程 约束条件 核心思想:解耦与简化 Frenet解耦道路约束,自行车模型简化车辆动力学

实际应用中的选择策略

讲了这么多理论,最后聊聊实际工程中怎么选。

我个人的经验是:

  1. 低速场景(< 30 km/h):用自行车模型 + Frenet坐标系,精度够用,计算快。泊车、园区接驳车都这么干。
  2. 中高速场景(30-80 km/h):自行车模型勉强能用,但最好加入轮胎侧偏角补偿。我在高速代驾项目里吃过亏——车一上60,自行车模型算出来的轨迹就开始飘。
  3. 高速场景(> 80 km/h):必须上动力学模型了。自行车模型只适合做参考线跟踪,不能直接用于规划。

一个小技巧:如果你不确定该用哪种模型,先跑个仿真。把自行车模型和动力学模型的轨迹画在一起,看看偏差有多大。偏差在可接受范围内,就用简单的。别一开始就上复杂的——复杂模型参数多,调起来能让你怀疑人生。

好了,坐标系和车辆模型这部分就聊到这儿。记住一句话:好的轨迹规划,一半靠算法,一半靠模型选得对。下次你看到一条漂亮的轨迹,不妨想想——它是在哪个坐标系下规划的?用的什么车辆模型?想明白了,你离高手就不远了。

可可精品资料库