全局坐标系与车身坐标系转换

Posted 穿越临界点

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了全局坐标系与车身坐标系转换相关的知识,希望对你有一定的参考价值。

在学习资料满天飞的大环境下,知识变得非常零散,体系化的知识并不多,这就导致很多人每天都努力学习到感动自己,最终却收效甚微,甚至放弃学习。我的使命就是过滤掉大量的无效信息,将知识体系化,以短平快的方式直达问题本质,把大家从大海捞针的痛苦中解脱出来。

文章目录

0 前言

做规划控制必然离不开坐标和坐标变换。一般涉及到的就是全局坐标系和车身坐标系互转,还有笛卡尔坐标系和自然坐标系之间的转换。坐标转换一般会涉及到三角函数、向量、复数、矩阵等知识。

本篇先介绍全局坐标系与车身坐标系之间的转换,为后续的内容热一下身。

1 全局坐标系和车身坐标系

1.1 全局坐标系

一般全局坐标系是将地球作为参考系进行定义的,也就是大地坐标系。

对于行车来说,车辆在大地上的位置信息通常来自于卫星导航系统,位置坐标在WGS-84坐标系(地理坐标系,使用经纬度表示任意位置)中表示。为了方便计算距离和面积,还需要通过通用横轴墨卡托(Universal Transverse Mercator, UTM)网络系统将其转换至笛卡尔坐标系。

但对于局部泊车系统来说,不需要全局定位,也就无需考虑地理坐标系因素,只需要在地图上选取一点作为原点构建全局坐标系即可。

1.2 车身坐标系

车身坐标系是将车辆自身作为参考系建立的坐标系。原点一般选取车辆后轴中心点或者车辆的质心。

车辆上安装的各种传感器(比如摄像头、雷达)的位置,以及车辆的轮廓(如果是用矩形逼近车辆轮廓,则通常使用四个角点表示车辆轮廓)都需要使用车身坐标系下的坐标。

2 坐标系转换

2.1 旋转矩阵推导

2.1.1 坐标变换和向量旋转的关系

一个向量 O P → \\overrightarrowOP OP 旋转 θ \\theta θ 角度,相当于先把坐标系A旋转 θ \\theta θ 角度得到坐标系B,然后在坐标系B中取与 O P → \\overrightarrowOP OP 相同坐标值的向量 O Q → \\overrightarrowOQ OQ ,最后再把 O Q → \\overrightarrowOQ OQ 的坐标映射回坐标系A。

相应地,将坐标系B(相对于坐标系A的夹角为 θ \\theta θ)中的一个坐标值映射到坐标系A的操作就等同于——在坐标系A中先取和坐标系B中相同坐标值的向量,然后将其旋转 θ \\theta θ 角度。

为什么会有这种等价关系呢?

因为坐标和向量是等价的,坐标只是向量的一种表示方法。坐标系和向量空间也是等价的,坐标轴就是相互正交的单位向量,对坐标轴的操作等价于/可以代替对整个向量空间中向量的操作。

Tips:对概念的深入理解很重要,尤其是等价变换。因为这往往是公式推导和证明的思路。

2.1.2 基于复数和欧拉公式推导

在复平面上使用复数乘法等价向量旋转运算。
O Q → = O P → ⋅ e i θ = ( x p + i y p ) ⋅ ( c o s θ + i s i n θ ) = ( c o s θ ⋅ x p − s i n θ ⋅ y p ) + i ( s i n θ ⋅ x p + c o s θ ⋅ y p ) (1) \\beginalign \\overrightarrowOQ &= \\overrightarrowOP \\cdot e^i\\theta \\\\[2ex] &=(x_p+iy_p) \\cdot (cos\\theta + isin\\theta)\\\\[2ex] &=(cos\\theta \\cdot x_p - sin\\theta \\cdot y_p) + i(sin\\theta \\cdot x_p + cos\\theta \\cdot y_p) \\endalign \\tag 1 OQ =OP eiθ=(xp+iyp)(cosθ+isinθ)=(cosθxpsinθyp)+i(sinθxp+cosθyp)(1)
易得:
[ x q y q ] = [ c o s θ , − s i n θ s i n θ , c o s θ ] ⋅ [ x p y p ] = R ⋅ [ x p y p ] (2) \\beginaligned \\left[ \\beginarraycc x_q \\\\ y_q \\endarray \\right ] &= \\left[ \\beginarraycc cos\\theta,& -sin\\theta \\\\ sin\\theta,& cos\\theta \\\\ \\endarray \\right ] \\cdot \\left[ \\beginarraycc x_p \\\\ y_p \\\\ \\endarray \\right ]\\\\[3ex] &=R \\cdot \\left[ \\beginarraycc x_p \\\\ y_p \\\\ \\endarray \\right ] \\endaligned \\tag2 [xqyq]=[cosθ,sinθ,sinθcosθ][xpyp]=R[xpyp](2)
其中, R R R即为旋转矩阵。

2.1.3 基于纯向量运算推导

如图所示,坐标系B( x 1 o 1 y 1 x_1o_1y_1 x1o1y1) 相对于坐标系A( x 0 o 0 y 0 x_0o_0y_0 x0o0y0) 旋转了 θ \\theta θ 角度。两个坐标系内的任意两个坐标值相同(指在各自坐标系中的坐标值)的两个向量均相差 θ \\theta θ角度。

所以,求坐标系B中的某一坐标值(向量)在坐标系A中的坐标值(向量投影),就等价于求坐标系B的坐标轴(基底)在坐标系A上的坐标值(投影)。

则有
R = [ X 1 0 , Y 1 0 ] = [ x 1 ⋅ x 0 , y 1 ⋅ x 0 x 1 ⋅ y 0 , y 1 ⋅ y 0 ] = [ c o s θ , c o s ( π 2 + θ ) s i n θ , s i n ( π 2 + θ ) ] = [ c o s θ , − s i n θ s i n θ , c o s θ ] (3) \\beginalign R &= [X_1^0, Y_1^0] \\\\[3ex] &= \\left[ \\beginarraycc x_1 \\cdot x_0,& y_1 \\cdot x_0 \\\\ x_1 \\cdot y_0,& y_1 \\cdot y_0 \\\\ \\endarray \\right ] \\\\[3ex] &= \\left[ \\beginarraycc cos\\theta,& cos(\\frac\\pi2+\\theta) \\\\ sin\\theta,& sin(\\frac\\pi2+\\theta) \\\\ \\endarray \\right ]\\\\[3ex] &= \\left[ \\beginarraycc cos\\theta,& -sin\\theta \\\\ sin\\theta,& cos\\theta \\\\ \\endarray \\right ] \\endalign\\tag3 R=[X10,Y10]=全局坐标系与车身坐标系转换

全局坐标系与车身坐标系转换

matlab simulink三自由度汽车模型

一线 | 谷歌自动驾驶测试车遭遇车祸 车身损毁严重

八自由度垂向模型车辆悬挂参数优化

操作系统车辆抖动方向盘异响?