车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义

(115) 2024-06-04 12:01:01

转载资料:自动驾驶控制算法(一)坐标系,车辆运动学模型 - 知乎

大部分是转载,少部分是补充简化。

目录

1. 坐标系的定义

1.1 坐标轴的方向

1.2 旋转角的方向

1.3 常用坐标系

1.3.1 大地坐标系

1.3.2 车辆坐标系

1.3.3 轮胎坐标系

1.3.4 Frenet坐标系


1. 坐标系的定义

1.1 坐标轴的方向

首先给出坐标系的基本定义:过空间定点O,作三条互相垂直的数轴,它们都以O为原点,具有相同的单位长度.这三条数轴分别称为X轴(横轴).Y轴(纵轴).Z轴(竖轴),统称为坐标轴。

那么我们该如何确定不同坐标轴之间的顺序呢,这个时候要引入右手坐标系和左手坐标系进行区分。

顾名思义,在右手坐标系中,我们使用右手的大拇指指向X轴,食指指向Y轴,中指指向Z轴,还记得初高中经常拿着手扭来扭去的样子,基本和下图一样。

其实笔者常用的是用右手四指从X轴正向弯曲抓向Y轴正向,大拇指的方向即为Z轴正向。

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第1张

而左手坐标系使用左手大拇指指向X轴,食指指向Y轴,中指指向Z轴,也是如下图所示。

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第2张

1.2 旋转角的方向

确定了不同的坐标轴的顺序之后,我们还要确定一点,那就是旋转角的正负问题,这个也比较简单,可以记住一句话:从轴的正方向看向原点,左手坐标系下 :顺序时针方向即是旋转正向;右手坐标系下:逆时针方向即是旋转正向,左右手坐标系的区别,就是某一坐标轴的方向相反。

接下来的话比较重要,事实上,左手和右手坐标系的应用场景不同,在计算机中通常使用的是左手坐标系,而在数学、物理中使用的则是右手坐标系,而这在自动驾驶中是需要注意的,由于存在计算机专业和传统工科等不同专业的人们涉猎自动驾驶控制岗位,所以采用不同的坐标系,可能会导致统一物理量的正负不同,这会在在初期给不少人带来困扰。

在这里简单举一个例子,以地面对轮胎的侧向力,轮胎的侧偏刚度,轮胎的侧偏角为例。

在《汽车理论》中,采用的是右手坐标系,轮胎侧偏刚度是一个负数,所以一个正向的侧偏力会导致轮胎负的侧偏角,如下图所示,注意下图中的坐标系是轮胎的坐标系,一个正向的侧偏力F,会导致轮胎的侧偏角α为负(从Z轴看向原点是顺时针,或者在汽车理论里偏向轮胎坐标系Y轴正向为正,偏向负向为负)。

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第3张

而在百度Apollo代码中,采用了左手坐标系,定义轮胎的侧偏刚度是正值,导致同一侧偏角在右手系中为负值,在左手系中成了正值,于是正的侧偏角x正的侧偏刚度=正的侧向力。这样结果又变成一样了。

1.3 常用坐标系

自动驾驶中常用的几种坐标系有大地坐标系、车身坐标系、轮胎坐标系、Frenet坐标系、传感器坐标系、空间坐标系等。这里主要介绍前三种,需要说明的是,下面的推导过程中,采用的均是右手坐标系。

1.3.1 大地坐标系

即全局坐标系,一个基准。

1.3.2 车辆坐标系

车辆坐标系也比较简单,原点常常定义为车辆的质心,或者后轴中点(龚建伟老师的《无人驾驶模型预测控制》),这并没有什么太大的区别。

假设你是司机,可以这么想象,你朝前看就是X轴的正方向,你朝左看就是Y轴的正方向,你抬头看就是Z轴的正方向,而各个角度是以右手坐标系下为准:从轴的正方向看向原点,逆时针方向即是正向。

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第4张

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第5张

1.3.3 轮胎坐标系

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第6张

1.3.4 Frenet坐标系

自动驾驶汽车路径规划技术的难点之一在于规划过程中难以表达车辆与道路之间的相对位置, 导 致二者之间的相对关系不明确. 因此, 传统规划算 法在笛卡尔坐标系下规划出的路径对于开放道路有 良好的效果, 但是对于公路环境, 忽略车道信息导 致路径的自由度太高而容易违反道路交通规则. 在 DAPRA 汽车挑战赛期间, 由斯坦福大学所提出的路 径规划算法将横向偏移 (lateral offset) 定义为相对于 基础路径 (base frame) 的垂直距离. 由于基础路径为 道路中心线, 这样的定义方式使得道路与车辆之间 的关系更为直观。(摘自基于 Frenet 坐标系的自动驾驶轨迹规划与优化算法 魏民祥† , 滕德成, 吴树凡)

Frenet坐标系是一种以比传统x,y笛卡尔坐标更直观的方式表示道路位置的方式。

用Frenet坐标,我们使用变量 s和d描述车辆在道路上的位置。该s坐标表示沿道路的距离(也称为纵向位移)和d坐标表示道路上的左右位置(也称为横向位移)。

为什么使用Frenet坐标?想象一下像下面这样一条弯曲的道路,笛卡尔坐标系就位于它的上面。

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第7张

使用这些笛卡尔坐标,我们可以尝试描述车辆通常在路上行驶的路径...

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第8张

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第9张

注意这条路是多么弯曲!如果我们想要方程式来描述这个动作,那就不容易了!

x(t)= ?

y(t)= ?

理想情况下,描述这种常见驾驶行为在数学上应该很容易。但我们如何做到这一点?一种方法是使用新的坐标系。

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第10张

在这里,我们定义了一个新的坐标系统。在我们的底部s = 0表示我们正在考虑的道路段的开始d = 0表示该道路的中心线。在中线的左侧d为负。

那么,在Frenet坐标系下呈现的典型轨迹是什么样的?

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第11张

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第12张

它看起来很直

事实上,如果这辆车以恒定的速度行驶 v 0,可以写车辆为位置的数学描述:

s( t )=v t

d ( t )= 0

我们将与Frenet一起协调课程的其余部分,因为直线比弯曲的线条容易得多。

车辆动力学建模时,为什么要定义多个坐标系?_车身坐标系的定义 (https://mushiming.com/)  第13张

而Frenet坐标系重要的是,可以将车辆的纵向和横向运动进行解耦,也就是大地坐标系和Frenet坐标系的相互转化,涉及的数学知识比较多,贴个链接参考。

Frenet坐标系相关知识系统学习_David-Chow的博客-CSDN博客_frenet坐标系

Apollo项目坐标系研究_知行合一2018的博客-CSDN博客_apollo 坐标系

THE END

发表回复