1.5 Frenet坐标系
category
type
status
slug
date
summary
tags
password
icon
All tragedy erased, I see only wonders. 我忘却了所有的悲剧,所见皆是奇迹。
—Hollow Knight 空洞骑士
🏰代码及环境配置:请参考 环境配置和代码运行!
Frenet坐标系是一种在几何学和物理学中常用的坐标系,特别是在轨迹规划和机器人控制中,它能够更直观地表示车辆在弯曲道路上的位置。
1.5.1 概念与优点
通常情况下我们会使用笛卡尔坐标系描述物体的位置,但笛卡尔坐标系对车辆来说信息并不直观,即使给出了车辆位置(x,y). 比如说我们很难直接根据道路边界,其他车辆的(x,y)坐标快速确定对方与自车的相对位置关系.
为了对这些问题进行简化, 在规划算法中经常使用到Frenet坐标系坐标系:
在Frenet坐标系中,车辆的位置由两个坐标描述:s和d。它将道路中心线作为参考线, s表示沿道路的纵向位移,即从道路起点到车辆当前位置的曲线距离;d表示横向位移,即车辆质心到道路中心线的法向距离。
这样做的好处有:
- 直观表达:Frenet坐标系能够直观表达车辆在道路上的行驶距离和偏离中心线的距离,从而简化了对车辆运动状态的描述。
- 解耦运动:在Frenet坐标系下,车辆的运动可以分解为沿道路中心线的纵向运动和垂直于道路中心线的横向运动。这种解耦使得车辆运动的规划和控制更加简单和高效。
- 适应复杂道路:由于实际道路大多不是笔直的,Frenet坐标系能够更好地适应曲线路径,提供比笛卡尔坐标系更准确的车辆位置信息。
这张图形象的展示了Frenet坐标系与Cartesian 坐标系的关系. 正是因为结构化道路存在一条较为清晰的参考线, 使得Frenet坐标系可以方便的应用到算法中.
1.5.2 仅需要低阶信息的坐标转换
在实际工程应用中,大部分场景下我们只需要获取转换后的0阶信息:(s,l). 这时可以用尽量少的计算来实现.
1.5.2.1 Cartesian → Frenet
首先我们给出定义:
- 是需要转换的笛卡尔点
- 是一个定义在笛卡尔坐标系下的指引线,是一系列点的集合
- 指引线上的点由参数化方程确定
- s是以指引线起点为原点的累积长度,
- L是指引线的总长度
- 是点处的法向投影长度
那么问题就是找到使得法向投影最短的指引线上的点. 就是转换后Frenet坐标系的, 就是Frenet坐标系的.
由于无法保证指引线与的相对位置关系, 所以这个问题大概率是非凸的. 在工程上, 指引线可能不是一条连续的样条, 也可能是一系列的离散点. 一般采取暴力遍历或者是增加一些剪枝来减少计算. 但是总的来说, 为了确定能够准确转换的(s,d), 需要计算出全局最优解.
遍历或者采样指引线上的点, 间隔越短精度越高. 使用向量的叉积即可快速计算, 从而计算出坐标转换结果
1.5.2.2 Frenet → Cartesian
Frenet向笛卡尔坐标系转换则简单的多, 只需要在指引线上获取坐标之后, 在该点的法向(根据d的方向决定顺时针法向还是逆时针法向)上, 延长距离即可
1.5.3 需要高阶信息的坐标转换
有的时候,我们不仅仅需要0阶信息, 可能还需要高阶信息, 比如Frenet坐标系下的等. (注意这里我们用l表达Frenet坐标系下的横向距离,而不是d)
或者是对转换精度有更高的要求, 这时就需要更复杂的计算.
在基础系列,我们仅展示坐标转换的最终公式, 而不做公式推导. 后续进阶教程会补充这一部分的公式推导.
- :Frenet纵坐标
- :Frenet坐标系沿s的速度
- :Frenet坐标系沿s的加速度
- :Frenet坐标系横向距离
- :Frenet坐标系沿s的横向速度
- :Frenet坐标系沿s的横向加速度
- :Frenet坐标系下转向角变化速度
- :Frenet坐标系下转向角变化加速度
- :笛卡尔和Frenet坐标系的朝向角度
- :笛卡尔和Frenet坐标系的曲率
- :笛卡尔和Frenet坐标系的速度
- :笛卡尔和Frenet坐标系的加速度
1.5.3.1 Cartesian → Frenet
已知,
求解
1.5.3.2 Frenet → Cartesian
已知,
求解
这两个转换Apollo代码中有完整实现:cartesian_frenet_conversion.cc
Apollo中代码中大部分情况, 都是用1.5.2的粗糙的低阶转换, 来获取Frenet坐标系的. 原因是一方面高阶计算代价太高, 另一方面是指引线很可能不是连续的曲线而是离散点集.
1.5.4 缺点
前文描述了Frenet坐标系的诸多优点,那么它又有那些缺点呢?
1.5.4.1 需要一条平滑的参考线
Frenet坐标系的建立非常依赖前置的平滑参考线, 可以说是Frenet坐标系的基石. 如果参考线不满足要求, 投影结果质量会很差. 在应用中, 很多无图的L2自动驾驶很难满足这个需求.
1.5.4.2 投影结果不唯一
举个极端的例子:如果指引线是一条圆弧,投影点是圆弧的圆心. 那么圆弧上的每一个点都是, 我们很难在Frenet处理它. 在曲率较大的道路上,由于投影点的位置难以唯一确定,可能导致连续的xy轨迹转换成不连续的sl轨迹 虽然可以通过一些工程手段改善, 但是无法根本上解决这个问题.
实际上,只有所有的投影点的l, 都小于指引线的最小曲率半径时, Frenet坐标系下的结果才是比较准确的.
此外,即使能实现一对一的转换,由于参考线曲率的变化,也可能导致转换后的轨迹不连续。这种不连续性会影响运动规划的准确性和稳定性。
1.5.4.3 投影结果变形
车辆在笛卡尔坐标系下一般由矩形表达, 转换之后也会存在严重的变形.
在Frenet坐标系中,车辆一般被简化为具有固定尺寸的矩形,甚至抽象成一个点,其边界通过向四周碰撞一定距离来形成。这种简化在道路曲率较小的情况下可能影响不大,但随着道路曲率的增加,车辆的形状在Frenet坐标系中会变得扭曲,与真实形状产生偏差。这种偏差可能导致常用的碰撞检测算法失效,从而增加碰撞的风险。
1.5.4.4 原始信息丢失
我们为了简化轨迹规划问题使用Frenet坐标系,比如Apollo把3维的轨迹规划问题(x, y, t), 经过 Frenet坐标系转换成了两个2维的(s, l)和(s, t). 但是简化的代价就是, 丢失了原始的准确信息. 笛卡尔坐标系下的数据虽然复杂和相对难以处理, 但是却是准确无误的. 转换到 Frenet坐标系以后, 信息就会丢失.
1.5.4.5 无法模拟汽车运动学
Frenet坐标系在模拟车辆的真实运动学方面存在一定的局限性。虽然可以通过引入真实的曲率约束来尽量接近真实的运动学,但在高阶方法上仍可能存在一定的误差。这种误差在复杂道路环境下可能更加明显,影响车辆的运动控制性能。
1.5.4.6 多车合作规划的困难
由于每个车辆都有自己的参考线,且参考线之间可能存在交叉或重叠,这会导致在Frenet坐标系下难以准确描述多车之间的相对位置和关系。
下一节, 我们会解析和运行代码.
参考链接:
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...