【机器人】无人车-运动规划-参考线Frenet框架下横纵分离关系推导

本文详细介绍了如何在参考线Frenet框架下,对无人车的运动状态进行横纵分离,推导了车辆在参考线上的l、l'、l''、s、s'、s''的运动参数,适用于自动驾驶的轨迹规划算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器人/无人车-运动规划–车辆运动状态在参考线上的纵横分离推导

背景简介

  • 车辆(ego)位于笛卡尔坐标系中,运动状态 ( x e , y e , v e , a e , θ e , k e ) (x_e,y_e,v_e,a_e,\theta_e,k_e) (xe,ye,ve,ae,θe,ke)
  • 参考线(referenceline)位于笛卡尔坐标系中,利用Frenet框架对其进行描述,坐标点 ( s r , x r , y r , θ r , k r , k r ′ ) (s_r, x_r, y_r, \theta_r,k_r,k_r') (sr,xr,yr,θr,kr,kr)
  • 求解车辆运动状态在参考系的Frenet框架下的横纵分离后的运动参数 ( l , l ′ , l ′ ′ , s , s ′ , s ′ ′ ) (l,l',l'',s,s',s'') (l,l,l,s,s,s)

初始条件

车辆(Ego)运动状态 ( x e , y e , v e , a e , θ e , k e ) (x_e,y_e,v_e,a_e,\theta_e,k_e) (xe,ye,ve,ae,θe,ke)

笛卡尔坐标系中的运动状态

  • x e x_e xe:笛卡尔坐标系中车身的位置,x值
  • y e y_e ye:笛卡尔坐标系中车身的位置,y值
  • v e v_e ve:笛卡尔坐标系中车身的速度,沿车身方向,非向量
  • a e a_e ae:笛卡尔坐标系中车身的加速度,沿车身方向,非向心加速度,非向量
  • θ e \theta_e θe:笛卡尔坐标系中的车身朝向,非前轮朝向,非方向盘转角
  • k e k_e ke:笛卡尔坐标系中的车身运动曲率

参考线(referenceline)上的坐标点 ( s r , x r , y r , θ r , k r , k r ′ ) (s_r, x_r, y_r, \theta_r,k_r,k_r') (sr,xr,yr,θr,kr,kr)

Frenet框架下的参考点,也是当前车辆的投影点

  • s r s_r sr:参考点坐标,在FF坐标系下的参考线上的坐标点s值,里程/距离
  • x r x_r xr:在笛卡尔坐标系中的x值
  • y r y_r yr:在笛卡尔坐标系中的y值
  • θ r \theta_r θr:在笛卡尔坐标系中的角度值,朝向
  • k r k_r kr:参考点处的曲率值(笛卡尔坐标系中)
  • k r ’ k_r’ kr:参考点处的曲率的变化率(对s求导)(笛卡尔坐标系中)
注意: l l l 有正负之分
  • 在参考线坐标系上, l l l有正负之分
  • 沿着参考线前进,位于参考线左侧的点为正 l > 0 l>0 l>0,右侧的点为负 l < 0 l<0 l<0
注意: k r k_r kr 有正负之分
  • 在参考线坐标系上, k r k_r kr有正负之分,
  • 沿着参考线前进,逆时针旋转为正 k r > 0 k_r>0 kr>0,顺时针旋转为负 k r < 0 k_r<0 kr<0

关系推导

将车辆运动状态转化到参考线的Frenet框架上,按横纵 l − s l-s ls进行分解,并求解出0阶、1阶、2阶的导数 ( l , l ′ , l ′ ′ , s , s ′ , s ′ ′ ) (l,l',l'',s,s',s'') (l,l,l,s,s,s)

前提假设

  • 车辆Ego沿现有车身方向做微量匀速运动(不是匀加速),当运动量过大时,误差会明显增大,此时计算失去意义。
  • 微量运动情况下,运动的弧长由线段长度代替,如 D ⌢ ≈ Δ D 、 E ⌢ ≈ Δ E \overset{\frown}{D}\approx\Delta D、\overset{\frown}{E}\approx\Delta E DΔDEΔE
  • 弧长无方向性,永远为非负值,即 Δ D > = 0 、 Δ E > = 0 \Delta D>=0、\Delta E>=0 ΔD>=0ΔE>=0永远成立,取值范围为 [ 0 , ∞ ) [0,\infty) [0,)
  • 半径无方向性,永远为非负值,即 R e > = 0 、 R r > = 0 R_e>=0、R_r>=0 Re>=0Rr>=0永远成立,取值范围为 [ 0 , ∞ ) [0,\infty) [0,)
  • 曲率具有方向性,逆时针旋转为正,顺时针旋转为负,即 k e 、 k r k_e、k_r kekr的取值范围为 ( − ∞ , ∞ ) (-\infty,\infty) (,)

运动关系示意图

运动关系示意图

横向求解,对 s s s 求导

0阶: l l l
大小求解

∣ l ∣ = ( x e − x r ) 2 + ( y e − y r ) 2 |l| = \sqrt{(x_e-x_r)^2+(y_e-y_r)^2} l=(xexr)2+(yeyr)2

正负判断
  • 沿着参考线左侧为正,右侧为负,可以用向量外积求解,可参考此文

V e = ( ( x e − x r ) , ( y e − y r ) , 0 ) V s = ( c o s ( θ r ) , s i n ( θ r ) , 0 ) V e × V s = ∣ x ⃗ y ⃗ z ⃗ ( x e − x r ) ( y e − y r ) 0 c o s ( θ r ) s i n ( θ r ) 0 ∣ \begin{aligned} V_e &= ((x_e-x_r),(y_e-y_r),0)\\ V_s &= (cos(\theta_r),sin(\theta_r),0) \\ V_e \times V_s &= \begin{vmatrix} \vec{x} & \vec{y} & \vec{z} \\ (x_e-x_r) & (y_e-y_r) & 0 \\ cos(\theta_r) & sin(\theta_r) & 0 \\ \end{vmatrix} \end{aligned} VeVsVe×Vs=((xexr),(yeyr),0)=(cos(θr),sin(θr),0)=x (xexr)cos(θr)y (yeyr)sin(θr)z 00

  • z ⃗ \vec{z}
### 坐标系变换的基本概念 坐标系变换的核心在于通过数学方法将一个点的位置从一种坐标系表示形式转换为另一种坐标系中的对应位置。这种变换通常涉及旋转矩阵、平移向量以及其他几何操作。 #### 1. ROS 中的 TF 变换 在机器人操作系统(ROS)中,TF 库的主要功能是管理多个坐标系之间的关系并提供高效的坐标变换能力[^1]。具体来说,TF 使用一棵树形结构来表示不同坐标系的关系,其中每个节点代表一个坐标系,边则表示两个坐标系间的相对变换。 任何一点 \( P \) 的位置可以通过其所在坐标系与目标坐标系之间的变换矩阵进行映射。假设已知某点在源坐标系下的齐次坐标 \( P_{source} \),那么该点在目标坐标系下可以表示为: \[ P_{target} = T_{target\_to\_source} \cdot P_{source} \] 这里 \( T_{target\_to\_source} \) 是从源坐标系到目标坐标系的变换矩阵。 --- #### 2. 相机成像中的坐标系变换 相机成像过程中涉及到四个主要坐标系:世界坐标系、相机坐标系、图像坐标系和像素坐标系[^2]。这些坐标系之间的变换过程如下: - **世界坐标系 → 相机坐标系**:这一阶段主要是刚体运动引起的变换,包括旋转和平移。设旋转矩阵为 \( R \),平移向量为 \( t \),则有: \[ P_c = R \cdot P_w + t \] - **相机坐标系 → 图像坐标系**:此步骤完成的是投影变换,即将三维空间中的点投影到二维平面。对于针孔相机模型而言,可写为: \[ p_u = f_x \frac{X}{Z}, \quad p_v = f_y \frac{Y}{Z} \] 其中 \( X, Y, Z \) 表示相机坐标系下的坐标分量;\( f_x, f_y \) 是焦距参数。 - **图像坐标系 → 像素坐标系**:最后一步是对齐实际传感器上的像素网格,这需要考虑主点偏移等因素。 --- #### 3. Frenet 坐标系与笛卡尔坐标系的互转 Frenet 坐标系是一种局部曲线坐标系,在自动驾驶领域应用广泛[^3]。它的核心思想是以道路中心线作为参考路径,并定义沿路径的距离 \( s \) 和偏离距离 \( l \) 来描述车辆相对于车道的位置。 - 若已知某个点在笛卡尔坐标系中的位置 \( (x, y) \),可通过插值法找到最近的道路点及其切向矢量方向,从而求得对应的 \( s \) 和 \( l \)。 - 反之,当知道 \( (s, l) \) 后,则可以根据道路几何形状重建出原点处的具体 \( x \)-\( y \) 值。 --- #### 4. 地理信息系统中的 WGS-84 坐标系变换 全球定位系统(GPS)采用 WGS-84 协议存储卫星轨道数据及地面站点信息[^4]。为了方便分析处理,经常需在这套标准框架内执行各种类型的转化运算,比如把经纬度高度组合转化为三维直角坐标或者反过来做逆向推导。 例如,如果要实现大地坐标 (\(\phi,\lambda,h\)) 到直角坐标 (\(X,Y,Z\)) 转化的话,公式大致如下所示: ```python a = 6378137.0 # 长半轴长度(m) e_sq = 0.00669437999014 # 第一偏心率平方 N_phi = a / sqrt(1 - e_sq * sin(phi)**2) X = (N_phi + h) * cos(phi) * cos(lambda) Y = (N_phi + h) * cos(phi) * sin(lambda) Z = ((1-e_sq)*N_phi + h) * sin(phi) ``` 上述代码片段展示了如何利用椭球体参数计算地理坐标的三维表达。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值