一文讲清自动驾驶中的时空坐标系
共 7585字,需浏览 16分钟
·
2023-10-23 21:48
点击上方“小白学视觉”,选择加"星标"或“置顶”
来源 | 智驾最前沿
坐标间的转换关系
简单来讲,从摄像机坐标系到像平面坐标系存在以下简单映射关系。
其中f为摄像机焦距。
从以毫米为单位的像平面坐标系到以像素为单位的图像坐标系,存在线性转换关系:
其中sx,sy是图像上每个像素在像平面上所对应的物理尺寸,单位是像素/毫米。(Cx, Cy)是像平面中心在图像中的位置,单位是像素。
摄像机的内参和外参
摄像机的焦距f, 像素尺寸sx,sy,和图像中成像中心的位置(Cx, Cy)在计算机图形学中被称为摄像机的内部参数,简称内参,用来确定摄像机从三维空间到二维图像的投影关系。实际应用中摄像机的内参会更为复杂,还包括图像的畸变率等参数。在自动驾驶应用中,摄像机的内参为常数,使用中不会发生变化,但需要在使用前做好标定工作。
摄像机的拍摄过程,可以抽象成是从三维摄像机坐标系映射到二维像平面坐标系,再映射到图像坐标系的过程。图像感知算法则是这一过程的逆过程,通过二维图像推断物体在三维摄像机坐标系中的位置,例如获得距离(深度)信息。
如果需要获得物体在世界坐标系中的位置,则还需要知道摄像机在世界坐标系中的位姿。这一位姿表示被称为摄像机的外部参数,简称外参,用来决定摄像机坐标与世界坐标系之间相对位置关系。自动驾驶应用中,得到这一位置关系还需要一系列的标定和定位工作。在后边的坐标系关联中进行介绍。
激光雷达坐标系系统
激光雷达是自动驾驶,特别是无人驾驶中最重要的传感器之一。目前世界上几乎所有L4级别以上的自动驾驶试验测试车都配备了不同型号的激光雷达。
激光雷达的基本原理非常简单。多线激光雷达基本上可以看做是按一定角度绑在一起,并且不停旋转的高速激光测距仪。从激光雷达的英文名(Lidar, Light Detection and Ranging, 光学检测与测距)中也可以看出,它的最基本功能就是测距,只不过它测距的速度非常快。
以Velodyne生产的64线激光雷达HDL64为例,其在垂直方向上可以几乎同时在64个方向上发射激光。根据反射回的激光在空中的飞行时间(TOF, time of fly)就可以计算出激光雷达距离物体表面的距离。这64束垂直分布的激光,随上部机体一起旋转,从而完成对环境360度的扫描。大量的数据点绘制在3维空间中,形成了云状分布,被称为激光点云(Point Cloud)。
64线激光雷达进行环境扫描过程
(上:单帧扫描数据;下:全周扫描数据)
单束激光的测距结果是一个1维数据,我们需要建立三维坐标系,并对原始测距数据进行转换,才能得到空间中的三维点云数据。
如下图,旋转式激光雷达一般选择激光发射中心作为坐标系原点,向上为Z轴正方向,X轴Y轴构成水平平面。图中红色线条为激光雷达发出的激光束,在任意静止时刻形成平行于Z轴,垂直于XY平面的扇形扫描区。每束出射激光在竖直方向上的俯仰角θi为固定值,在设计制造时确定,属于激光雷达的内部参数。扇形扫描平面绕Z轴旋转的角度φ(t)随时间变化,并会在原始测量数据中给出。
例如,第i束激光在某t0时刻照射到某物体表面的P点,测距结果显示P点与激光雷达间的距离为L,则该测量点P的原始测量数据可以极坐标形式(φ(t0), θi, L )来表示。同时,P点在激光雷达的正交坐标系(XL,YL,ZL)中表示为P(xL,yL,zL),存在如下转换关系。用正交坐标系表示的点云数据,在实际中更为常用。
如果需要得到P点在世界坐标系中的位置,则还需要一系列的标定和定位工作。在后边的坐标系对齐中进行介绍。
在车辆动力学分析中,ISO定义的车体坐标系较为常见。SAE定义的车体坐标系与航空航天领域常用的机体坐标系相一致。基于IMU定义的车体坐标系,则在IMU的相关应用中较为常见。无论使用哪一种坐标系定义,只要使用正确,都可以完成对车身位姿的描述,以及确定周围物体和本车间的相对位置关系。研发人员可以根据应用需求和使用习惯来选择车体坐标系。
古老的世界地图
WGS-84经纬坐标系
WGS-84坐标系一种国际上采用的地心坐标系。坐标原点为地球质心,其地心空间直角坐标系的Z轴指向BIH (国际时间服务机构)1984年定义的协议地球极(CTP)方向,X轴指向零子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系,称为1984年世界大地坐标系统。GPS广播星历是以WGS-84坐标系为根据的。
WGS-84坐标系采用大地经度、纬度、和大地高程来描述地球上任意一点的位置。经纬线相互交织构成经纬网,用经度、纬度表示地面上点的位置就是地理坐标。
用经纬度表示的大地坐标是一种椭球面上的坐标,不能直接应用于测绘。因此需要将他们按一定的数学规律转换为平面直角坐标。在平面直角坐标系中我们能较方便地计算地表(公路上)两个物体的相对距离和位置关系。
UTM坐标系
在测绘(例如高精地图的绘制)和导航(例如无人车的导航)中,常常需要用米为单位表示距离和大小。然而GPS的定位结果所使用的wgs84坐标却是用经纬度表示位置。于是需要一种坐标转换或者映射关系将经纬度坐标转换为以米为单位的平面直角坐标。
目前,这种坐标映射关系有多种标准,比如国际上通用的UTM坐标系,我国的北京54坐标系和西安80坐标系。其基本思想都是把椭球形的地球表面按照小的区块展开,投影到一个曲面(圆柱面或椭圆柱面)上,曲面再次展开铺平成平面,进而构成平面直角坐标系。这里对国际上较为常用的UTM坐标系做一个简单介绍。
UTM(Universal Transverse Mercartor, 通用横轴横墨卡托)坐标系统使用UTM投影将椭球面分区块映射到平面直角坐标系中。这种坐标系统及其所依据的投影已经广泛用于地形图,作为卫星影像和自然资源数据库的参考格网以及要求精确定位的其他应用。
UTM投影是等角横轴割圆柱投影,圆柱割地球于南纬80度、北纬84度两条等高圈,之间的地球表面积按经度6度划分为南北纵带(投影带)。从180度经线开始向东将这些投影带编号,从1编至60(北京处于第50带)。UTM投影沿每一条南北格网线比例系数为常数,在东西方向则为变数,中心格网线的比例系数为0.9996,在南北纵行最宽部分的边缘上距离中心点大约 363公里,比例系数为 1.00158。
从传感器坐标系到车体坐标系
自动驾驶汽车一般都装有多个传感器,每个传感器安装的位置、方向都不一样。同一个目标(如车辆、行人)在各个传感器视野中出现的位置也都不同。为了将不同传感器间彼此独立的结果关联起来,建立统一的环境模型,我们需要找到各个传感器与车体间的位置关系,这也是自动驾驶中感知融合算法的最基本步骤。传感器在车体上的安装位置一旦确定,在运行中就会保持固定,所以可以采用离线标定的方法确定各传感器相对车体的精确位置。
传感器离线标定的方法有很多,这里不一一介绍。算法的总体思想是通过调整各坐标系之间的转换关系,使同一个物体(如下图中的棋盘格标定板)通过多个传感器感知得到的独立结果,经过坐标系转换后,可以在车体坐标系下精确吻合,形成统一结果。
从车体坐标系到世界坐标系
车体坐标系和世界坐标系之间的关系是由车辆本身的位置和姿态决定的,这一转换关系可以从车辆的定位结果中直接得到。通过车体和世界坐标系的转换关系,可以确定车体在高精地图中的位置和方向,进而可以计算出车体和其他道路元素,例如车道线、红绿灯、停止线,之间的相对关系。
时间坐标系统
自动驾驶应用所应对的是一个随时间变化的环境,所以时间坐标系统的设立于统一也是至关重要的一环。自动驾驶中一般使用多种不同类型的传感器,彼此独立地对环境进行感知。这样会造成各传感器收集的环境数据并不在同一个时间点。即便空间坐标系已经建立了完美的转换关系,在时间上也无法将环境数据进行统一。所以除了空间坐标系需要进行精确标定外,各个设备之间的时间坐标系也需要进行同步。
统一的时间系统
自动驾驶系统中含有多个主机、传感器、和控制器,一般都具有自己独立的时钟。为了建立统一的时间坐标系统,让各个设备使用相同的时间基准,一个高精度授时系统是必不可少的。
自动驾驶中一般采用GPS的时钟系统作为各个系统的时间基准。GPS时间系统规定1980年1月6日零时为时间坐标系的原点,时间向上累加,系统授时精度可以达到纳秒量级。同时自动驾驶中所使用的大部分设备都具备接受外部授时的功能。以Velodyne激光雷达为例,设备可以接收标准的PPS(Pulse per Second,秒脉冲)和NMEA报文(一种串口通讯格式)的授时方法。
硬件同步触发
一些设备的数据采集可以通过外部触发的方式进行激活,于是可以使用同一个外部信号,同时激活多个传感器,从而得到同一个时间点上的环境信息。
例如摄像机的曝光可以通过外部开关信号进行触发,于是自动驾驶汽车上的多个摄像机可以使用同一个开关信号进行曝光和采样的硬同步。进而,这一开关信号还可以与激光雷达等其他传感器进行协同,完成不同种类传感器间的同步触发操作。
软件时间对齐
另一些传感器的采样不支持外部触发,同时有些设备的工作频率也不一致,无法做到严格的硬时间同步,这就需要在软件中进行处理。
有了前面提到的统一的时间系统,通过不同传感器获得的环境信息即便不在同一个时间点上,也有着统一的时间标记。这样通过软件计算,对非同步采样结果进行差值或外推,就可以近似得到同一个时间点上的环境信息,成为决策控制系统进行判断的依据。
声明:部分内容来源于网络,仅供读者学习、交流之目的。文章版权归原作者所有。如有不妥,请联系删除。
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲 在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲 在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~