echarts y轴坐标值距离坐标线的间距_开发者说丨无人驾驶中的坐标转换

本文由百度Apollo自动驾驶工程师陈光撰写,详细讲解无人驾驶中的坐标转换,包括大地坐标到平面直角坐标转换、不同坐标系间的关联与转换。在自动驾驶中,传感器数据需统一到自车坐标系,涉及平移和欧拉旋转。文中还提及Echarts在图表展示中的坐标调整问题。
摘要由CSDN通过智能技术生成

2247bed7f1a04430e6b51f7efebe63df.png

知识点 敲黑板,本文需要学习的知识点有 坐标系欧拉旋转 绕轴旋转旋转矩阵 坐标值平移矩阵  

坐标转换空间实体的位置描述,是从一种坐标系统变换到另一种坐标系统的过程。通过建立两个坐标系统之间一一对应关系来实现,两个及以上的坐标转换时由极坐标相对参照确定维数空间。

其中,我们常见的坐标转换有以下几种:大地坐标(BLH)对平面直角坐标(XYZ)、北京54全国80及WGS84坐标系的相互转换、任意两空间坐标系的转换、在十进制角度和度/分/秒格式之间进行转换、在经纬度和 UTM 坐标之间进行转换。

在当今的驾驶领域中,无论是高级负载驾驶ADAS系统,还是自动驾驶系统,一个必不可少的重要工作就是计算自己的位置,以及自己与道路、车辆、行人等交通元素之间的相对位置关系、速度关系,为了描述这些复杂的空间、时间关系,建立一套时空坐标体系,是实现各种环境感知、决策规划算法的前提条件。

自动驾驶中的坐标系统包括有:摄像机坐标系统、激光雷达坐标系系统、车载坐标系系统、世界坐标系系统,在实际应用中,我们需要通过不同传感器确定障碍物与自动驾驶汽车间的相对位置,这就需要将不同的坐标系关联起来,并建立他们之间的转换关系。

本文由百度Apollo智能汽车事业部 自动驾驶工程师——陈光撰写,对无人驾驶中的坐标转换进行了详细讲解,希望这篇文给感兴趣的同学带来更多帮助。

  以下,ENJOY  

c7eb41af8760cd0169b154975b84b967.png

在第十一期的分享中,以CAN总线的解析为例,介绍了如何通过解析CAN总线的消息,获取传感器的数据。这一期的分享将会集中在如何将传感器坐标系下的数据转换到自车坐标系下。

无人车上拥有各种各样的传感器,每个传感器的安装位置和角度又不尽相同。对于传感器的提供商,开始并不知道传感器会以什么角度,安装在什么位置,因此只能根据传感器自身建立坐标系。无人驾驶系统是一个多传感器整合的系统,需要将不同位置的传感器数据统一到一个固定的坐标系——自车坐标系下,才能分析当前无人车所在的道路场景。

4a8726c2985088f6fbab7895b90c0b33.png

ffc9e3e03e489381936bc7ee9f25ca3f.png

不同的无人驾驶团队对于坐标系的定义可能不同,但这并不影响开发,只要团队内部达成一致即可。

以百度Apollo提供的自车坐标系为例,自车坐标系的定义为:

  • z轴 – 通过车顶垂直于地面指向上方;

  • y轴 – 在行驶的方向上指向车辆前方;

  • x轴 – 自车面向前方时,指向车辆右侧;

车辆坐标系的原点在车辆后轮轴的中心,如下图所示。

801c492b38a73dd64dcf193e66a2c879.png

车辆坐标系的原点位置

图片出处:https://github.com/ApolloAuto/apollo/blob/master/docs/specs/coordination_cn.md

18789b0cdcc5e1232ca6abeecf695c09.png

对于无人车的传感器安装位置,业内大同小异,比如奥迪A8的传感器配置如下图所示。

5b6debc9c0f65f28cb01cd09dc132f2a.png

奥迪A8的传感器配置

以安装在无人车左前方的角雷达(Corner Radar)为例,进行后面的介绍,角雷达的安装位置和坐标系如下图绿线所示。

98b8f136905e368f07f1aebd9abb2cf1.png

雷达的安装位置和坐标系

角雷达检测到的障碍物如图中的绿点所示,绿点在雷达坐标系下的坐标为(x1,y1),为了便于理解暂不加入z方向的坐标。

绿点转换到自车坐标系下需要经过一定的数学运算。基本思路是这样的:

平移

先将角雷达坐标系的O点平移到与自车坐标系的O点重合,此时(x1,y1)需要减去两个坐标系在x和y方向的距离,如下图所示。

3a434e850a3c42014977f4aac92b7418.png

平移

旋转

在两个坐标系的O点重合后,将角雷达坐标系沿着z轴进行一定角度的旋转,这样(x1,y1)就转到了自车坐标系上。这个过程在数学上称为欧拉旋转

坐标系的平移和旋转是两件相互独立的事情,先平移再旋转和先旋转再平移并不会影响最终的结果。

以上是感性的分析过程,下面我们将这整个过程在数学上实现。

平移

平移步骤根据传感器安装位置和自车后轴的距离进行计算,仅仅是xyz三个方向加减运算。

旋转

绕轴旋转需要引入角度,不是简单的加减运算,所以我们通过图示来推导一下。

先将两个坐标系变换到正常的视角,如下图所示:

d656eac4cf9730cb32915be2a5d64cb7.png

旋转

障碍物在角雷达坐标系下的坐标为(x1,y1),假设障碍物在自车坐标系下的坐标为(x0,y0),需要根据安装角度α(可测量),用x1,y1,α这三个已知量表示x0,y0,求得他们的数学关系。

通过做辅助线进行计算,如下图蓝线所示:

7dca4661b3c448c185c42077b585d7d7.png

几何关系可用以下两个等式表示:

9312594a30215ad9e80a22724049b0b7.png

使用矩阵表示,可以简化表达,用一个等式代替两个等式,是这样的

59d28c007daf23f65194a907d48c45a7.png

由于这次旋转是绕z轴旋转,因此旋转前和旋转后的z值是保持不变的

8861f991ffc6c4ad8d0d40e9ffa9cf6c.png

将z方向的值也放到上面的等式中,即可得到

04a644e66a8966a00b912755e9d7f2c7.png

那就意味着,只要把角雷达采集到的障碍物坐标值与上面这个矩阵进行矩阵乘法运算,即可完成沿Z轴的旋转。在这里我们把这个矩阵叫做Z轴旋转矩阵RZ,那必然还有沿着X轴和Y轴的旋转矩阵RXRY

角雷达目标的坐标依次右乘这三个矩阵,就完成了沿着Z轴,Y轴,X轴的旋转,得到的结果就是自车坐标系下的坐标值了。即

a23d5fcb374eee0c9785df263a89ebc6.png

再加上一个平移的矩阵,就能够完整描述整个坐标转换的关系了

ccad48b57ab1d1b46ae30701cbed68e2.png

不同的坐标系定义,会有不同的RX,RY和RZ,因此需要根据实际情况计算旋转矩阵平移矩阵

9bf818cac02310cfd9c600777a6c5ecc.png

以上过程也称为欧拉旋转,但是欧拉旋转会有一个不可避免的问题——万向锁。欧拉旋转的过程中在某些特殊情况时,会导致少一个维度。万向锁通过文字解释起来会有点困难,可以看一个讲解万向锁的小视频进行了解。

欧拉旋转所存在的问题—万向锁

视频出处:《欧拉旋转

为了解决欧拉旋转所带来的万向锁问题,业界引入了四元数。四元数除了解决万向锁的问题外,还能在一定程度上简化计算。因而百度Apollo也选择了四元数作为各个传感器安装位置和角度的存储介质。有关四元数的定义和使用方法这里不做详细讨论,可参看Apollo的《Calibration》模块。

4367ce6371d524590ce5d017ef7f0827.png

实际参与到开发中你才会发现,自己在大学学习的高数和线性代数等都是很重要的数学工具,而不是仅仅用来考试的。

以上就是有关无人驾驶技术中传感器到车体坐标系的坐标转换原理及数学推导,该原理不仅用在无人车领域,同时在机器人、无人机、三维建模等领域也得到了广泛使用。

文章中使用的软件CANad++Editor下载+安装方法及Mobileye车道的原始.dbc文件,可以关注陈光的公众号:自动驾驶干货铺,在后台回复关键字"CAN"获取。

本文部分内容参考链接:

*《欧拉旋转》

【https://link.zhihu.com/target=https%3A//v.youku.com/v_show/id_XNzkyOTIyMTI

%3D.html%3Fspm%3Da2h0k.11417342.soresults.dtitle】

*《Calibration》

【https://link.zhihu.com/target=https%3A//github.com/ApolloAuto/apollo/tree/master/modules/calibration】

2f636aa1cf338b3b608f5a32218aaffb.gif

08840da2286260424379d799c253b480.png

* 以上内容为开发者原创,不代表百度官方言论。

内容来自开发者知乎专栏:

https://zhuanlan.zhihu.com/p/41263701,欢迎大家收藏点赞。

5542c19b44a005d5dbb2a811dcfd2484.png

0afe06f45838a03a903a36e51fb774b1.png

fb9c630d6b3e5cb328ebf46d3fbbbf88.png

41f76d3706524748e9c430b4acc211c4.png

6d8822785bf263a73dd5c7c94da71200.png

6fc766c9f2a942b9f329e7f32683c891.gif

71360539b530cf290e3e7842cd1e05ff.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值