2023-02-16自动驾驶中坐标系转换简介

在自动驾驶中,经常需要在各种坐标系下来回转换,此时需要了解坐标系转换的基本概念及使用方法。

一、坐标系的旋转变换

从一个坐标系到另一个坐标系的旋转转换有多种方法:欧拉角法、方向余弦矩阵法、四元数法等。

1、欧拉角法

核心思想是:一个坐标系可以用另一个参考坐标系的三次空间旋转来表达欧拉角是由三个角组成,这三个角分别是Yaw,Pitch,Roll。

定义一个xyz坐标系,这个我们称呼为世界坐标系,先在xy平面里面旋转可以有一个矩阵啊即绕z轴,再xz平面内旋转即绕y轴,

再在zy平面内旋转即绕x轴,这就转了三次了,三次的矩阵如何操作呢,不断的左乘啊(这里左乘是数学上定义的问题,旋转矩阵都左乘)

但是欧拉角容易造成奇异性问题

2、四元素

四元数常用于表示三维空间的旋转变换,注意它表示一个变换,不是一个状态。常使用Eigen::Quaterniond来表示。

3它描述了一个旋转轴[α, β, γ]和角θ,对应的四元数为Q = [cos(θ/2), α*sin(θ/2), β*sin(θ/2), γ*sin(θ/2)],一般我们使用右手坐标系,逆时针旋转为正。

与其它旋转表示方法相比,例如欧拉角、矩阵,四元数并不直观,但具有以下优点

1、四元数不存在欧拉角中的 “gimbal lock” 问题,翻译成中文叫“万向节死锁”,名字很装B有木有,其实就是当三个轴中的两个轴由于旋转重合了,导致旋转失去了一个自由度。

2、四元数只有四个数,矩阵表示变换一般都是 4*4 的,存储计算量更小。

3、两个四元数之间更容易插值,比如球面线性插值。

但是也存在一些缺点

四元素在多次运算后,会存在累计误差,需要定期归一化处理。

四元数是高维空间下的表示方法,使用者不能直观地理解其所代表的旋转过程,因此确定旋转表达式是一件令人头疼的事情,经常会出现错误二、坐标系的平移变换坐标原点发生变化,而坐标轴的方向不发生改变,这样的变化成为坐标系的平移变化。

三、坐标系的整体变换

整体变换就是平移+旋转变换,在自动驾驶领域中,变换通常都是刚体变换的,常常使用Eigen::Isometry3d来表示。

把整体变换用(R,T)矩阵形象表示,把位姿变换用delt r与 delt t展开,就可以发现最本质核心的东西;

旋转矩阵的差值跟坐标系的相对关系 没有关系,只跟角度变换有关。

四、举例说明

将utm坐标下的车道线点转换到像素坐标系下

车辆侧视图

车辆俯视图

转换过程

utm坐标->novatel坐标->vehicle坐标->⻋头坐标->相机坐标 :由外参完成

相机坐标->像素坐标 :由内参完成。

获取在相机坐标系下的点的坐标camera_point=T_front_to_camera*T_vehicle_to_front*R_vehicle*T_novatel_to_vehicle*T_utm_to_novatel*utm_point

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注


往期评论