ADASIS V3浅析

ADASIS V3浅析

ADASIS简介

随着汽车产业发展,自动驾驶的实现对高精度地图依赖越来越强烈,ADASIS(Advanced Driver Assistance Systems Interface Specification)翻译过来的意思就是高级驾驶员辅助系统接口规范。它主要负责的内容就是传输车辆前方相关的地图数据。ADASIS至今(2022年)已经发布了三个版本:

版本描述ADASIS v12005 年发布,ADASISv1仅能支持车辆前方的单一路径,且被认为对于主机厂的实际开发和生成环境来说界面太过复杂,因此基本没有人用。ADASIS v22008年发布,从ADASISv1中汲取的经验教训进行了简化和增强,增加了多条路径。ADASIS v32019年发布,侧重于自动驾驶,主要增强功能包括更高的分辨率(厘米级)、多个道路网络表示树、详细的车道和线条几何图形,以及其他属性(例如,地标,道路边界等)

ADASIS V3应用意义

ADASIS v3 就是一个用于地图数据传输的通信协议。ADASIS V3能够协同各个厂商提供一套有效的高精度地图传输接口,通过车载以太网将高精度地图信息传给所需的各个模块,用于辅助车辆完成自动驾驶功能。带有自动驾驶的车辆中一般都装有雷达和摄像头用来获取当前行驶的动态信息,但是雷达和摄像头有空间局限性(比如距离过长或者被遮挡等等),这就需要高精度地图辅助传感器共同实现自动驾驶功能,由于高精度地图数据量大ADASIS提出了一种Horizon的概念可以翻译成地平线或者视野。可以理解为是一种为车辆提供其行驶趋势的地图信息(比如当前车辆的前2公里和后500米的高精度地图信息这种部分地图信息减少了数据传输量),如曲率、坡度、车道(如车道线形状、车道属性)、红绿灯(如位置、轮廓)等信息。通过汽车自身的传感器和获取到的高精度地图融合处理可以获取到更加精确的数据用于自动驾驶。这里举一个例子,ACC自适应巡航功能,属于L2级别的自动驾驶,可以实现自动跟车,我们需要通过车辆自身的传感器来获取前车的位置速度等信息,我们也需要高精度地图提供的限速红路灯等传感器无法获取的信息,只有将所有需要的信息融合在一起才能实现更加安全、完善的功能。

ADASIS V3基本概念

AHP(ADAS Horizon Provider) 电子地平线内容提供者
AHR(ADAS Horizon Reconstructor) 数据重构者
ADAS Application 需要ADAS数据的模块(ADAS应用)
ADASIS v3 Protocol 通过谷歌protocol序列化和反序列化
AHP、AHR、ADAS Application 它们代码可以位于不同进程,甚至不同的 ECU,这算异构技术,当然,高度自动驾驶没有那么多 ECU,那么它们也可以在同一个域控制器或者中央计算平台当中。
一般消息流通方式是AHP提供电子地平线数据,AHR收到AHP提供的电子地平线数据按照自己的需求进行消息筛选重构一份自己所需的数据;再将重构完的数据发送给需要的ADAS应用。这其中涉及到的传输方式全部由protocol完成。

ADASISv3 Horizon 的分支深度可以限制为不同的等级。每个等级附加在Horizon Tree 上的信息都会比上一级更多。分支等级可分为:
1.仅单路经:无分支路径及其相关信息
2.可行驶路径:仅包含自车可以行驶的路径
3.全路径:包含其他道路使用者可以通行的路径或者轨迹
Horizon Provider 需要设定路径总数的上限,这样会进一步限制 Horizon 分支的深度。

path

Path是一种驾驶的可能性。有了 Path 就可以将路网压缩成线性地图表示。我们可以将 path 看作是一条线,线上挂着许多类别的属性(例如这条路限速多少)等等。
这里先说明下几种Path概念:
1.Root Path 是 Horizon 预测树的起始 Path,它没有 父 Path,在一个预测树中只能存在一个 Root Path,从Root Path 可以延申到达预测树中任何一个Path。
2.Vehicle Path 是车辆所在的”可能性”最高的Path,可能性由自车在地图数据中的位置匹配情况而定。
3.MPP 表示车辆沿着该路线行驶可能性最高的 Path 集合,MPP 的起点是Vehicle Path,终点是期望目的地的Path,MPP是从起点到终点之间完整的路线。

关于Horizon 路径的表示,有以下三种形式:
1.Links相关的路径表示
2.单路径表示
3.最佳路径表示
下面简单用图说明一下(Links相关的路径表示):

ADASIS V3浅析
通过上图可以看出是一个简单的路网信息各个link相互连接,如果我们从link200想要去link235那么我们有两种方式可以到达:
  1. link200 -> link210 -> link230 -> link215 -> link235
  2. link200 -> link205 -> link220 -> link 235
    下面我们用单路径表示将上图表示出来:
    ADASIS V3浅析
    通过这个图片我们就可以了解到上面说的两种可能分别对应这个图中的path3和path5。通过这个图我们很清楚的看出有很多共同的冗余数据。下面我们对这个图中的冗余数据进行处理形成了。
    最佳路径表示方式:
    ADASIS V3浅析
    上图表示减少了数据冗余,节省了数据传输量同时也有了主从之分,ADAS Horizon 构造器会将汽车最有可能继续行驶的 Path 作为 Root Path,一般也是 MPP(Most Prefere Path),而 Root-Path 下的第一层 Sub-Path 会作为备选路径。比如,上图中汽车向前,大概率会沿着 Path2 的方向,但 Path4、Path1、Path3 也是有可能的。

Path 是 ADAS Horizon 最主要的实体,像道路上的路标、十字路口、车道几何信息等都可以当作 Path 当中的属性。所以,AHP 首要任务是要传输 Path 信息,AHR 首要任务是要根据 Path 进行路径重建。将上图进一步抽象入下:

ADASIS V3浅析
这样可以清晰看出主从分支。

随着车辆的移动我们的ADAS Horizon需要对path进行维护(增删改),我们请求ADAS Horizon的大小在 ADASIS v3 中由 Horizon Length 决定。在设置大小时最小不能低于某个值,最大也不能超过某个值。

; profile

这个概念主要就是用来描述path中的具体属性。profile中的消息类型几乎涵盖了目前道路的所有情况。换而言之目前道路中的任何情况都可以用profile描述出来包含信息最多,包括车道线、车道中心线、路牌等。profile有以下插值类型:
1.Spot Interpolation(点插值):只在固定位置生效(例如禁止停车前方急转弯等只在当前固定位置生效)
2.Step Interpolation(分步插值):在指定位置开始生效直到收到下一个值才改变(例如限速在限速牌出现位置生效直到解除限速或者出现其他限速牌才会改变)
3.Linear Interpolation(线性插值):具有线性插值类型的 Profile 值在一定范围内是连续的,稳定的,线性变化的。
4.Higher Order Interpolation(高阶插值):高阶插值类型的 Profile(2次/3次多项式,spline等)是由一组指定位置和这些指定位置上的 Profile 值组成。高阶插值算法主要用于计算指定位置之间的 Profile 值,算法本身由 Profile 指定。
5.Special Interpolation(特殊插值):”特殊插值”仅限于特殊规则。

Profile 层级结构体现在 ADAS Horizon 的逻辑表现,共分为三个层级:
第一层级:也是基础层级,属于 Path 的 Profiles.

第二层级:更加细致,属于 Lane(车道)相关的 Profiles.

第三层级:Geometry Profiles.

可选预测树

在自车定位时有可能出现匹配到多个Path的情况,ADASISv3 协议规范不限制所有 Path 都源自 一个 Root Path 的单个预测树模式,相反,可以有多个预测树同时存在,每个预测树都有自己的 Root Path。因此,整个 ADASISv3 Horizon 实际上是一个”森林”结构。
预测森林的产生是由于车辆在地图数据中的位置可能匹配到多个 Path 上的结果,而这些 Path 之间没有相互连接。这种情况下,存在一颗”主”预测树,通常是车辆位置匹配程度最高的预测树。其他匹配位置形成的预测树就称作可选预测树。

ADASIS V3消息类型

Position:车辆在预测树上的位置信息
Profile:属性信息包含信息最多,包括车道线、车道中心线、路牌等
GlobalData: 系统状态,天气等全局数据
ProfileControl:地图拓扑关系、同步数据
PathControl:地图拓扑关系、同步数据
下面来具体说明下这些信息。

Position

Position 消息用于传递自车在预测树上的位置信息。位置信息通常是定期地发送至 Application 以反映车辆的移动状态。车辆在 Path 上的位置被描述为坐标 (path, offset) 。通常,由于一些不确定因素,车辆可能被定位到不止一个 Path 上。这使得位置信息需要使用附加匹配概率的坐标序列来表示。并且,作为提示,需要计算出车辆的绝对位置与在地图 Path 上的匹配位置之间的距离偏差。如果位置无法匹配到 Path 上,那么这个坐标序列可以为空。Position有下面几个状态:
1.off-road 完全匹配不到Path,也就是没有在路上
2.on-road, 匹配到1个 Path 上
3.on-road, 匹配到多于1个 Path 上
4.off-road, 靠近1个Path,并且这个 Path 有地图匹配位置
5.off-road, 正在靠近或者离开1个 Path
车辆位置信息中需要添加一个时间戳,该时间戳是用于计算车辆位置的原始传感器数据 (sensor data) 的接收时间。例如,接收 GNSS 绝对车辆位置的时间,或者用于航位推算 (dead reckoning) 的传感器数据时间。
时间戳应由 Horizon Provider 和 Receiver 之间共享的全局时间内给出,如果不存在全局共享时间,则应计算该时间戳与在传输介质上发送位置消息的时间之间的时间差。

ADASIS V3浅析
Position 中还有一个重要的信息就是 Preferred Path,它代表倾向性的驾驶路径,可以用来描述 MPP(Most Preferred Path),ADAS Horizon 假设汽车会最大可能沿着这条路径继续下去。
ADASIS V3浅析
左图表示,当前路径和推荐路径都是P1
右图表示,当前路径是 P1,而推荐路径是 P3,P1-P3的接续关系表示了MPP

; Global Data

Global Data 是传递与 Path 无关的全局数据。例如:Country Code,Region Code, 速度单位,版本信息等。但是Global Data使用 Profile 数据结构存储(Profile类型中存在国家编码这种类型这其实就是一个Global Data消息类型的数据但是使用的是Profile数据结构存储),使用 Global Data消息传递。所以其实Global Data类型的消息解析和Profile基本一致。

Profile

每一个 Profile 有一个 ID 编号InstanceID ,那么 profileValue 就可以根据要求进行 create、update、delete 操作了。可以说Profile消息是ADASIS V3中最主要的消息类型。这里有上百种Profile Type 就不一一介绍了。主要用于接收新的profile数据和更新旧的profile数据。通过path_id、offset和InstanceID可以指定唯一。

Profile Control

每次传来的消息就是需要删除的profile数据,这个消息传来了当前ADAS Horizon中指定Path_id的最小偏移量,如果当前profile列表中path_id和收到的Profile Control中的path_id相同并且偏移量小于收到的Profile Control的偏移量的profile都需要删除。
这里说一下个人理解,在车子行驶过程中假设我们需要使用车前方2Km的数据和车后方500M的数据组成一个当前ADAS Horizon,我们行驶时候就需要添加前方的数据并删除后方的数据。如果后方的数据是整个Path都删除了就会通过Path Control消息通知我们直接删除整个Path,但是如果我们要删除一个Path中的一部分数据那么就需要通过Profile Control来通知我们。下面是笔者简单画的一个草图,车辆向右方行驶。

ADASIS V3浅析
高精度数据车辆行驶方向和Path方向是相同的,所以我们要删除的就是所有当前profile列表中end_offset小于收到的Profile Control数据的offset的数据。这里说下为什么使用end_offset而不是offset,因为有些属性他的作用范围开始的位置在我们要删除的区域,但是这个属性作用范围结束的位置并不在我们要删除的范围,如果使用offset进行删除就会导致当前profile列表中的部分数据丢失。

; Path Control

每次收到一个Path列表表示当前ADAS Horizon的完整拓扑。
这个消息用于同步Path 数据,和Profile数据。
下面说一下收到Path Control类型数据应该做什么:
1.将收到的Path列表和本地的Path列表作比对删除本地多余的,增加本地没有的
2.如果本地Path列表需要删除,我们还需要删除对应的Profile列表中对应的数据(即Path_id为Path列表需要删除的Path_id的全部删除)
当我们收到一个空的消息就需要重置一下删除当前缓存的所有数据。

Provider 和Receiver 的同步规则

Provider

1.当 Provider 添加一个新 Path 时需要分配一个 Path ID,并且包含在将要发送的PathControlMessage 消息中。
2.如果新 Path 具有”父”Path,则其 Path ID 也包含其中,否则发送 0 表示是根 Path. “父”Path ID 只允许从 非0 到 0 的变化。
3.建议 Provider 在发送新 Path 有关的 Profile 数据之前,等待新 Path 相关的控制消息先发送。但是允许新 Path相关的Profile 数据先于其控制消息发送,这样会导致 Receiver 在本地创建该 Path,这称之为”隐式创建”,通过新 Path 控制消息创建 Path 的标准行为称之为”显式创建”。
4.新 Path 从分叉点开始,如果是 HD maps,则从 Lane 的分叉点开始。
5.ADASISv3 由 Provider 决定何时 Path 不再相关,并可以被删除。

Receiver

1.如果 Path 控制消息中的 Path 在本地不存在,则创建这个 Path.

2.如果本地存在的 Path 在 Path 控制消息中不存在,则删除这个 Path。同时也将删除这个 Path 相关的所有 Profile 数据。
3.如果接收到本地不存在 Path 相关的 Profile 消息,则创建这个 Path.

4.如果接收到本地不存在 Path 相关的 其他数据,比如:Position Message, Path 控制消息中的”父”Path ID,Node Profile 中的 sub-path ID,Lane 接续 Profile 中的 Path ID,此时 Receiver 按照原样存储数据,作为 悬挂引用(dangling reference)

传感器融合方式

在自动驾驶当中,摄像头和 GPS/IMU 结合地图一起做定位,而 ADASIS v3 没有强制只能有一个 Data Provider 存在。所以,可以形成一个主 AHP,一个辅助性的 AHP.地图的数据走主 provider,感知类的数据走辅助 providers。

ADASIS V3浅析

下行数据融合

Provider 只管发数据,在 AHR 进行融合

ADASIS V3浅析

; 上行数据融合

Provider 这一侧提前把信息进行融合,AHR 端直接做应用算法处理了。
上行数据融合是 ADASISv3 比较推崇的,直接适用于自动驾驶控制算法的方式。因此,传感器融合过程尽可能的接近 Provider 端。

ADASIS V3浅析

Original: https://blog.csdn.net/qq_33865609/article/details/123729808
Author: 乔以亦
Title: ADASIS V3浅析

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/559468/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球