自动驾驶:车辆pose
坐标系
注意:坐标系等价于空间,一个坐标系就定义了一个空间,在这里可能会混用坐标系和空间,但它们的意思一致。
左手坐标系 右手坐标系
2d 坐标系一般来说大家都有默认: x轴朝右,y轴朝向。
研究第三维时,一般在桌面或纸面上研究,加的z轴,一般自然的垂直桌面或纸面向上,这就是我们常用的三维坐标系,是右手坐标系。
其实只改变任意一个轴的朝向,就可以使右手坐标系转为左手坐标系,反之亦然。
改变一个轴的朝向,相当于改边了另外两个轴的顺序,所以交换任意两个轴的值,也改变坐标系的左右手性。
世界坐标系 vs 局部坐标系
世界坐标系
世界坐标系,也叫作绝对坐标系| 全局坐标系 | 宇宙坐标系 ❕
世界坐标系是一个特殊的坐标系,它建立了我们所关心的最大的空间。
世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考系。也就是说,能够用世界坐标系描述其他坐标系的位置,而不能用更大的、外部的坐标系来描述世界坐标系。
有很多人定义世界坐标系是“我们所关心的最大坐标系”,通过这个坐标系可以去描述和刻画所有想刻画的实体。
Apollo项目使用全球地理坐标系(世界坐标系)表示高精地图( the high-definition map,HD Map)中各个元素的地理位置,通常包括:纬度(latitude)、经度(longitude)和海拔(elevation)。
全球地理坐标系普遍采用地理信息系统中用到的WGS-84坐标系来表示物体的纬度和经度。通过使用该标准坐标系统,我们可以使用2个数字:x坐标和y坐标来唯一的确定地球表面上除北极点之外的所有点,其中x坐标表示经度,y坐标表示纬度。WGS-84常用于GIS服务,例如地图绘制、定位和导航等。全球地理坐标系统的定义在下图中展示。
局部坐标系(物体坐标系)
局部坐标系,也叫作物体坐标系 | 本地坐标系 | 模型坐标系 ❕
- 坐标系以物体的中心为坐标原点,表示的物体的左方、上方、右方
- 物体坐标系与特定的物体关联
- 每个物体都有它们独立/特定的坐标系
- 不同物体之间的坐标系相互独立,可以相同,可以不同,没有任何联系。
- 同时,物体坐标系与物体绑定
- 当物体移动或改变方向时,和物体相关的坐标系也会改变。不会受世界坐标的影响
- 物体的旋转、平移等操作都是围绕局部坐标系进行的,这时,当物体模型进行旋转或平移等操作时,局部坐标系也执行相同的旋转或平移操作(物体坐标系和物体之间运动同步,相互绑定。)
举例说明一下物体坐标系:我们每个人都有自己的物体坐标系,当我们决定要往前走的时候,每个人实际前行的绝对方向都不一样,可能是向北,也可能向南,或者其他方向。这里前后左右是物体坐标系中的概念。当告诉张三往前走,就是张三同学沿着自己物体坐标系的前方运动。至于张三往前走是往东还是向北,这是张三的运动在世界坐标系下的描述。
为什么又叫做本地坐标系:
- 小明家住在东经120度、北纬23度,这就是世界坐标系;小红家住在小明家往东300米、往北100米,这就是本地坐标系。
- 现在有一个任务:在地图上标注出小明家和小红家的位置。有了经纬度,我们就能直接在地图上标出小明家的位置;但要标出小红家的位置,则要先找到小明家的位置,然后换算300米相当于多少经度,100米相当于多少纬度,再按照任务要求完成偏移。
- 乍一看,本地坐标系好像很不好用,还得先找到“小明家”这个参照点。其实不然,你觉得它不好用是因为我们这个任务要求是在地图上标注位置。如果我们换一个任务:你现在就在小明家,你要去小红家怎么走。这样的话,局部坐标系反而更直接。
- 所以,对于不同的目的,我们可能需要采用不同的坐标系才更方便。
全局坐标系和本地坐标系都是坐标系而已,没有什么不同。
为什么还要有全局坐标系和局部坐标系之分呢?
- 那是因为在一项任务中,可能会用到很多很多的坐标系,坐标系A、坐标系B、坐标系C…… 某物体o在坐标系A下的坐标是 a1,a2,a3,在坐标系B下的坐标是b1,b2,b3,在坐标系C下的坐标是c1,c2,c3……这么多组坐标,各不相同,相互之间很难比较,因此我们迫切需要一个统一的坐标系U,把坐标系A、B、C下的坐标都转换到坐标系U下的坐标,这样我们就能方便地进行比较了!我们就把这个统一的坐标系叫做全局坐标系。
- 所以,你也猜到了。理论上说,其实可以把任意一个坐标系作为全局坐标系。全局坐标系不过就是一个统一的”单位“。我说我有一根铅笔有1米长,你说你有一根铅笔有5英寸长,单位不同自然也就无法直接比较,要做单位转换才行,要么都转换到米,要么都转换到英寸,要么我们都转换到另一个新单位比如厘米。
- 但话又说回来,虽然理论上可以随便选一个坐标系作为全局坐标系,但根据人类活动的过往经验,还是有一些约定俗成的全局坐标系的(比如上文的地理坐标系)。如果大家都用同一套坐标系,就你不用,那你就费劲呗。
为什么要物体坐标系
- 导航中最基础的问题之一,就是要描述物体的位置、速度和姿态等参数。
- 然而,这些参数对物体本身而言是无意义的。比如在生活中,可能会产生这样的运动错觉:当观察夜空时,感觉月亮在云中穿梭;或乘坐列车时,无法分辨出启程的是自己乘坐的列车还是对面停靠的列车。因此,当我们需要确定物体的位置、速度和姿态等参数时,通常需要相对于某种形式的参考系来描述。
- 在描述时,首先需要选择被描述对象上的一点作为该对象的原点,该点可以是物体的质心、几何中心,或其他合适的点,比如天线的相位中心点等;然后,还需要选择一组轴系和一个原点,构成描述对象所需的参考系。
- 轴系和原点的选取并没有固定的要求,但为了描述方便,轴向间通常是正交的。如果要描述对象的方位或角运动,则至少需要三个非共面的正交轴。参考系的原点通常会选择太阳系的中心、地球的中心、当地的地标点等。
- 对象或参考系的原点和轴系一起构成了坐标系。一般我们都是用右手坐标系
导航中常用的坐标系有:地心惯性坐标系(Earth-centered inertial frame,ECI)、地心地固坐标系(Earth-centered Earth-fixed frame,ECEF)、当地导航坐标系(local navigation frame)和载体坐标系(body frame)。
自车坐标系 | 车辆坐标系
自车坐标系,也叫作车辆坐标系| 车身坐标系 ,它是一个局部坐标系。常用来表示车的位置。
不同的无人驾驶团队对于坐标系的定义可能不同,但这并不影响开发,只要团队内部达成一致即可。
以百度 Apollo 提供的自车坐标系为例,自车坐标系的定义为:
- x 轴 – 自车面向前方时,指向车辆右侧;
- y 轴 – 在行驶的方向上指向车辆前方;
- z 轴 – 通过车顶垂直于地面指向上方;
车辆坐标系的原点在车辆后轮轴的中心,如下图所示。
上面是右-前-天坐标(RFU)用的比较多。
不过一般在车辆设计中使用的是这种坐标车身坐标系前-左-天坐标(FLU):x轴平行地面指向行进方向,y轴指向汽车的左侧,z轴指向上方并垂直与地面,o点为汽车的质心
无人车的位置和姿态
自动驾驶中有一个自定位系统,它的作用是相对一个坐标系,确定无人车的位置和姿态。
- 位置:3个自由度,x、y、z
- 姿态:3个自由度,三个方向的旋转:横滚(roll)、俯仰(pitch)、航向(yaw)
位置(自车/车体坐标系)
- 车辆的位置(VRP, Vehicle Reference Point)一般选取一个车辆的基准点在世界坐标系的位置作为车辆位置。 在Apollo中选择车辆后轴中心作为车辆的基准点
也叫做自车坐标系,它是一个局部坐标系,它与N系或者导航坐标系、当地水平坐标系之间的旋转关系表示现在车的姿态。
roll、yaw、pitch是什么?
- pitch是围绕X轴旋转,也叫做俯仰角
- yaw是围绕Y轴旋转,也叫偏航角
- roll是围绕Z轴旋转,也叫翻滚角
pitch:
yaw:
roll:
车辆传感器布局
对于一个自动驾驶系统来说,一般都会有激光雷达、毫米波雷达、超声波雷达、相机、IMU/GPS等各种传感器,而每个传感器都有自己的坐标系定义,为了描述自动驾驶车辆在地图中的位置,一般还涉及到全局定位,这就还会包含全局坐标系,也称为世界坐标系。这些错综复杂的坐标系定义,不仅涉及到了不同传感器之间的内外参标定关系,也包含了许多与坐标系转换之间的操作,需要我们重点掌握和理解。
首先我们整体来看一下Apollo官方提供的传感器布置图:
从上面这张图中我们可以看出Apollo的Lincoln MKZ自动驾驶车辆上在车上不同位置布置有数量不同、种类繁多的传感器。
光从上面这张俯视图中我们可能没法清楚看出不同传感器的安装位置及坐标系定义,我们可以看下面这张图:
- 注意区分其中相机坐标系和激光雷达坐标系的方向定义,其中
- 激光雷达坐标系X轴向前,Y轴向左,Z轴向上
- 相机坐标系Z轴向前,X轴向右,Y轴向下。
- 另外在车的中间位置有一个紫色的传感器,上面写着Novatel,其实是诺瓦泰的GPS接收机,这个传感器的坐标系非常关键,因为Apollo中大部分传感器都是标定在该传感器坐标系下,Novatel坐标系定义为X轴向右、Y轴向前、Z轴向上。
无人车上拥有各种各样的传感器,每个传感器的安装位置和角度又不尽相同。对于传感器的提供商,开始并不知道传感器会以什么角度,安装在什么位置,因此只能根据传感器自身建立坐标系。无人驾驶系统是一个多传感器整合的系统,需要将不同位置的传感器数据统一到一个固定的坐标系 —— 自车坐标系下,才能分析当前无人车所在的道路场景。
参考
- Apollo 5.5 源码学习笔记 | transform模块 | Apollo中的坐标系统详解
- 三、APOLLO自定位技术详解(入门技术与基础知识)
- 开发者说丨无人驾驶中的坐标转换
- 3D数学基础(一) | 坐标系
自动驾驶:车辆pose相关推荐
- 基于自动驾驶车辆的NVIDIA-TensorRT推理实时优化
基于自动驾驶车辆的NVIDIA-TensorRT推理实时优化 Optimizing NVIDIA TensorRT Conversion for Real-time Inference on Auto ...
- 自动驾驶车辆在结构化场景中基于HD-Map由粗到精语义定位
点云PCL免费知识星球,点云论文速读. 文章:Coarse-to-fine Semantic Localization with HD Map for Autonomous Driving in St ...
- AI一分钟 | 北京开放自动驾驶车辆路测道路105公里;阿里将人工智能引入时尚界...
▌阿里巴巴集团与 GUESS 合作,将人工智能引入时尚界 (图片来自阿里足迹) 阿里巴巴集团与 GUESS 集团合作,将人工智能引入时尚界,并推出 Fashion AI 项目,今日( 4 日)于香港理 ...
- 基于自动驾驶车辆的激光雷达与摄像头之间的在线标定算法
原文首发于微信公众号「3D视觉工坊」--基于自动驾驶车辆的激光雷达与摄像头之间的在线标定算法 本文英文名为<Automatic Online Calibration of Cameras and ...
- 自动驾驶车辆何时实现?近期不会实现的五大原因
https://www.toutiao.com/a6665230889238135309/ 据外媒报道,虽然美国的匹兹堡(Pittsburgh)和硅谷(Silicon Valley)都在忙于研发和测试 ...
- 北京发自动驾驶车辆考试大纲 难度堪比普通人考驾照
来源:新京报 概要:自<加快推进自动驾驶车辆道路测试有关工作的指导意见>发布以来,北京进一步为自动驾驶车辆明确其性能测试与实际道路测试的"考试大纲". 自<加快推 ...
- 北京出台自动驾驶新规:自动驾驶车辆须配备司机应急
来源:人民日报 概要:在中国境内注册的独立法人单位,因进行自动驾驶相关科研.定型试验,可申请临时上路行驶. 记者今天从北京市交通委获悉,北京市交通委联合市公安交管局.市经济信息委等部门,制定发布了加快 ...
- 给卡车穿上“隐身衣”,让自动驾驶车辆撞上它!这场自动驾驶比赛,比谁攻得快...
萧箫 发自 凹非寺 量子位 报道 | 公众号 QbitAI 自动驾驶算法,在这场比赛中成了实验品: 24小时内,不仅要在特定的场景中,让它被攻破:还要在竞速情况下尽力优化它,让车跑得更快. 如果这两个 ...
- 自动驾驶车辆转向控制(通过扭矩控制实现方向盘转角控制)
本文介绍通过增量式PID控制器实现通过对自动驾驶车辆的EPS进行扭矩响应控制从而实现对期望方向盘转角的控制. 控制器采用增量式PID 对连续PID控制以一定离散化方法离散后就可以得到数字PID控制,离 ...
- 百度Apollo自动驾驶车辆将在苏州太湖面向民众开放
10月18日消息,苏州吴中区与百度Apollo共同举办的智能网联发展论坛在太湖国际会议中心召开.会上,由双方打造的全国首个"自动驾驶生态示范岛"正式落地,太湖生态岛自动驾驶车辆运营 ...
最新文章
- ava RMI 框架(远程方法调用)
- integral函数
- Vue.js not detected
- iOS 面试之Block
- SpringMvc项目中使用GoogleKaptcha 生成验证码
- 鸿蒙os芯片,没有了芯片,华为能靠鸿蒙OS系统打出差异化吗?
- uva 10048 Audiophobia(最小生成树)
- 了解java虚拟机---JVM的基本结构(1)
- 人力资源管理系统如何助力提升HR工作效率
- 企业架构之道(一)之企业信息化建设
- rp文件,怎么用浏览器预览
- 基于64QAM的LDPC编译码算法
- 什么PDCA循环+原则?
- 5G无线技术基础自学系列 | 5G RAN网络架构关键技术
- mybatis Parameter ‘XXX‘ not found
- C语言再学习 -- 关键字return和exit ()函数
- 百面机器学习01-特征工程
- 解密微信小程序加密的微信运动数据(java)
- 51单片机点阵屏实现俄罗斯方块
- 基于随机森林、svm、CNN机器学习的风控欺诈识别模型