我是靠谱客的博主 高高背包,这篇文章主要介绍【自动驾驶】19.自动驾驶各个坐标系,现在分享给大家,希望可以做个参考。

WGS84 : 世界坐标系,即经纬高坐标系【经度(longitude),纬度(latitude)和高度(altitude)即LLA坐标系】

UTM: 世界坐标系
ENU: 世界坐标系,东北天
ENU 和 UTM 的区别:

  • ENU局部坐标系采用三维直角坐标系来描述地球表面,实际应用较为困难,因此一般使用简化后的二维投影坐标系来描述。
  • UTM: 在众多二维投影坐标系中,统一横轴墨卡托(The Universal Transverse Mercator,UTM)坐标系是一种应用较为广泛的一种。 UTM坐标系使用基于网格的方法表示坐标,它将地球分为60个经度区,每个区包含6度的经度范围,每个区内的坐标均基于横轴墨卡托投影。

FLU: 车身坐标系,前左上
SL: SL坐标系:某点距离车子的横向和纵向距离,纵向距离为s,横向距离为l

以下是坐标系俯视图:

各个坐标系图示在这里插入图片描述

车辆坐标系的原点根据不同车可能会有所不一样。一般情况下,车辆坐标系原点的高度和IMU的高度保持一致,xy相交于两个前轮中心。
现在少部分车就把IMU设为车辆坐标系原点,只是imu坐标系和车辆坐标系的xy方向不一样(见上图),所以需要绕Z轴旋转90度,转化为车身坐标系。
imu2car文件的参数:

header:
  seq: 0
  frame_id: car
  stamp:
    secs: 0
    nsecs: 0
child_frame_id: imu
transform:
  rotation:
    x: 0
    y: 0
    z: -0.707
    w: 0.707
  translation:
    x: 0
    y: 0
    z: 0

上面的参数translation是平移向量:

  • x 、 y 、 z x、y、z x、y、z都为0,就是IMU坐标系和车辆坐标系原点原点重合。
  • 如果 x 、 y 、 z x、y、z x、y、z不为0,就说明中心不重合;
  • 如果 z z z为0,就说明两个中心 的高度一致。

上面的参数rotation是旋转四元数:
x = 0 、 y = 0 、 z = − 0.707 x=0、y=0、z=- 0.707 x=0、y=0、z=−0.707、 w = 0.707 w= 0.707 w=0.707,

注: s i n ( π 4 ) = 0.707107 sin(frac{pi}{4})=0.707107 sin(4π​)=0.707107

即
x = x ′ ∗ s i n θ 2 = 0 x=x'*sinfrac{theta}{2}=0 x=x′∗sin2θ​=0、

y = y ′ ∗ s i n θ 2 = 0 y=y'*sinfrac{theta}{2}=0 y=y′∗sin2θ​=0、

z = z ′ ∗ s i n θ 2 = − 0.707 z=z'*sinfrac{theta}{2}=-0.707 z=z′∗sin2θ​=−0.707、

w = c o s θ 2 = 0.707 w=cosfrac{theta}{2}=0.707 w=cos2θ​=0.707,

其中 x ′ , y ′ , z ′ x',y',z' x′,y′,z′是旋转轴的三个方向的大小。由w可以求解出 θ = π 2 theta=frac{pi}{2} θ=2π​或者 θ = − π 2 theta=-frac{pi}{2} θ=−2π​。

再根据前面的联立方程组,可以得出旋转向量(0,0,1)对应的 θ = − π 2 theta=-frac{pi}{2} θ=−2π​,或者旋转向量(0,0,-1)对应的 θ = π 2 theta=frac{pi}{2} θ=2π​。
但是因为Z轴正方向是(0,0,1),所以最终求得的结果是第一个结果,即旋转向量(0,0,1)对应的 θ = − π 2 theta=-frac{pi}{2} θ=−2π​,也就是四元数表示的是绕Z轴旋转 θ = − π 2 theta=-frac{pi}{2} θ=−2π​。

由于四元数表示的是坐标点的变换矩阵,不是坐标轴的变换矩阵,所以得到的角度也是坐标点的变换。我们知道,坐标轴旋转的角度是坐标点变换的角度的相反数,请参考【自动驾驶】29.坐标变换与坐标轴旋转,所以imu坐标系的点经过旋转角度 − 90 ° -90° −90°的四元数表示的变换之后,得到车辆坐标系的点。

但是imu坐标系绕 Z Z Z轴旋转 + 90 ° +90° +90°,得到车辆坐标系。

想想上面为什么是 θ 2 frac{theta}{2} 2θ​呢?
想找到答案,可以参考这篇博客:【Unity技巧】四元数(Quaternion)和旋转。


x方向被放在前面表述,例如:

  • 东北天坐标系,东就是表示x方向;
  • 北西天坐标系,北就是表示x方向;
  • 右前天坐标系,右就是表示x方向;
  • 前左上坐标系,前就是表示x方向;

东北天坐标系也叫右前天坐标系,前左上坐标系也叫北西天坐标系,只是叫法不同,两种叫法根据上北、下南、左西、右东进行对应。

并且,同一种坐标系叫法,可以用在不同地方,他们的坐标系原点也可能不一样,因为不同传感器或车身的坐标系原点不同。
如:车身坐标系和激光雷达坐标系都是前左天坐标系,但是他们的坐标系原点却不一样。

最后

以上就是高高背包最近收集整理的关于【自动驾驶】19.自动驾驶各个坐标系的全部内容,更多相关【自动驾驶】19内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(302)

评论列表共有 0 条评论

立即
投稿
返回
顶部