自动驾驶地图数据传输协议ADASIS v2

ADASIS(Advanced Driver Assistance Systems Interface Specification)直译过来就是 ADAS 接口规格,它要负责的东西其实很简单,就是为自动驾驶车辆提供前方道路交通相关的数据,这些数据被抽象成一个标准化的概念:ADAS Horizon。

数据从地图应用来,要传输到车内的 ADAS 软件应用中。我们常见的互联网传输协议是 Http,内容封装协一般是 json、protocol buffer、xml 等等。但汽车中的数据通信不同于互联网,一般走 CAN 通信,类似于 json,ADASIS v3 就定义了如何在汽车这个大平台下进行数据传输。

简而言之,ADASIS v3 就是一个用于地图数据传输的通信协议。

3. ADASIS 基础概念

3.1 基本要素

AHP(ADAS Horizon Provider) 电子地平线内容提供者
AHR(ADAS Horizon Reconstructor) 数据重构者
ADAS Application
ADASIS v3 Protocol
AHP、AHR、ADAS Application 它们代码可以位于不同进程,甚至不同的 ECU,这算异构技术,当然,高度自动驾驶没有那么多 ECU, 那么它们也可以在同一个域控制器或者中央计算平台当中。

在 ADASIS v3 中地图如何表示

地图信息很多,对于地图的表示也可以按照功能要求从简单到复杂。

ADASIS 倾向于尽可能简单。

如上图所示,你没有必要把每条街道推送给汽车软件,因为很多不需要,所以最简单也是可行的就是尽量推送少但有用的信息。

什么是少但有用的信息呢?

ADASIS v3 给出答案是:

前方道路
可能的道路
于是,Path 的概念就应运而生,可以看看上图那根红线。

Path 精简了地图数据,它只关注汽车可能行驶的路线。

3.2 Path

世上的路千万条,但你每次驾驶时都是走一条确定的路线,这条路线就叫做 Path,它是一种驾驶的可能性。

有了 Path 就可以将路网压缩成线性地图表示。

说是线性,我们可以将 path 看作是一条线,线上挂着许多类别的铃铛、星星等等。

有了这根线和这些铃铛,ADAS Horizon 就差不多成了。

当然,如果只有一条 path 也就是太粗鲁简单了,path 的表示也有粗细之分。

先看看这么一个路网信息:

汽车要向前方行驶,Path 信息可以简略表达,也可以复杂点表达。

3.2.1 Simple Path Representation
Simple Path 代表简略表达路网的策略。

如果告诉汽车,要去上图中 Link235 处,那么,有 2 种路由:

200 -> 210 -> 230 -> 215 -> 235
200 -> 205 -> 220 -> 235

把每种可能的路径用 Path 表示出来,而不是把所有的 Link 展示出来就是 Simple Path 的思想,会产生如下结果。

前面说的两种可能,其实就可以用 Path3 和 Path5 表示。

Simple Path 存在冗余,比如上图中所有的 Path 是有相同的起点的,也就是存在重复的数据,大量的重复数据会加剧通信带宽的压力,所以这需要一定的优化。

这涉及到 Path 的另外一种表示:Optimized Path Representation.

3.2.2 Optimized Path Representation
ADASISv3 使用 Optimized Path Representation 表示 Path。

它主要为了减少冗余,并且有了主从之分:

root path
sub path

因为有了主从之分,所以 path 可以形成层次表达。

ADAS Horizon 构造器会将汽车最有可能继续行驶的 Path 作为 root path,一般也是 MPP(Most Prefere Path),而 root-path 下的第一层 sub-path 会作为备选路径。

比如,上图中汽车向前,大概率会沿着 Path2 的方向,但 Path4、Path1、Path3 也是有可能的。

Path 是 ADAS Horizon 最主要的实体,像道路上的路标、十字路口、车道几何信息什么的可以当作 Path 当中的 Attributes。

所以,AHP 首要任务是要传输 Path 信息,AHR 首要任务是要根据 Path 进行路径重建。

3.2.3 Horizon Length

ADAS Horizon 由一系列的 Path 组成,随着汽车位置的移动,有些新的 Path 会添加进来,一些过时的 Path 就删掉了。

这牵扯到一个视窗的大小,在 ADASIS v3 中由 Horizon Length 决定
horizonlength = greatestoffse – smallestoffset.

做程序实现的时候,最小不能低于某个值,最大也不能超过某个值。

3.3 Profile

前面讲过,Path 可以看做是一根长长的线,上面挂了许多铃铛。

这些铃铛依附在线上,在 ADASIS v3 中用 Profile 表示。

Profile 有不同的类型,可以代表不同的道路相关信息,比如限制车速、路口位置、交通标志等等。

V2

  1. Profile

profile 是路径的属性,其相关信息是基于所在路径来确定的。而路径在 ADASIS v2 的概念里,是具有明确方向的,车辆沿着路径行驶的方向即为路径方向。因此,profile 所描述的属性信息,如道路曲率、坡度等,都是在这个既定的路径方向基础上进行表达的。在描述一段具有曲率的道路时,profile 中的曲率信息是针对车辆沿着该路径行驶方向而言的,正曲率可能表示车辆沿着路径行驶时向右侧转弯,负曲率则可能表示向左转弯 。这就意味着,虽然 profile 没有专门的方向字段,但它与有方向的路径紧密相连,从而间接体现了方向特性。

部分特定的 profile 类型能够更直接地反映方向信息。Heading Change profile 用于表示路径方向的变化情况,它通过描述相对于路径的航向变化角度,清晰地展示了路径方向的改变 。若该 profile 的值发生变化,就表明车辆在沿着路径行驶过程中,行驶方向出现了调整。再如,在一些与道路几何形状相关的 profile 中,如描述道路中心线走向的 profile,虽然没有明确的方向标识,但通过其对道路形状的描述,结合路径方向,可以推断出车辆在该路段行驶时的大致方向变化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/77779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 状态管理 Riverpod

Android Studio版本 Flutter SDK 版本 将依赖项添加到您的应用 flutter pub add flutter_riverpod flutter pub add riverpod_annotation flutter pub add dev:riverpod_generator flutter pub add dev:build_runner flutter pub add dev:custom_lint flutter pub add dev:riv…

【EasyPan】MySQL主键与索引核心作用解析

【EasyPan】项目常见问题解答(自用&持续更新中…)汇总版 MySQL主键与索引核心作用解析 一、主键(PRIMARY KEY)核心作用 1. 数据唯一标识 -- 创建表时定义主键 CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,use…

IcePlayer音乐播放器项目分析及学习指南

IcePlayer音乐播放器项目分析及学习指南 项目概述 IcePlayer是一个基于Qt5框架开发的音乐播放器应用程序,使用Visual Studio 2013作为开发环境。该项目实现了音乐播放、歌词显示、专辑图片获取等功能,展现了桌面应用程序开发的核心技术和设计思想。 技…

vscode 打开新页签

目录 vscode 打开新页签 完整settings.json内容: vscode 打开新页签 .vscode目录中 新建settings.json 在 settings.json 文件中,添加或修改以下行: json "workbench.editor.enablePreview": false 这将禁用预览模式&#xff0…

C语言高频面试题——常量指针与指针常量区别

1. 常量指针(Pointer to Constant) 定义: 常量指针是指向一个常量数据的指针,即指针指向的内容不能通过该指针被修改。 语法: const int* ptr;或者: int const* ptr;解释: const修饰的是指…

c++基础·列表初始化

目录 一、列表初始化的核心优势 二、基础数据类型与数组初始化 1. 基础类型初始化 2. 数组初始化 三、类与结构体初始化 1. 构造函数匹配规则 2. 注意事项 四、标准容器初始化 五、聚合类型(Aggregate Types)初始化 1. 聚合类型定义 2. 初始化…

数据分析与产品、运营、市场之间如何有效对齐

数据分析的重要性在于它能够将海量的原始信息转化为可操作的洞察。以产品开发为例,通过用户行为数据的分析,产品经理可以清晰了解哪些功能被频繁使用,哪些设计导致用户流失,从而优化迭代方向。运营团队则依靠数据分析来监控供应链效率、预测需求波动,甚至通过实时数据调整…

[C]基础11.深入理解指针(3)

博客主页:向不悔本篇专栏:[C]您的支持,是我的创作动力。 文章目录 0、总结1、字符指针变量2、数组指针变量2.1 数组指针变量是什么?2.2 数组指针变量怎么初始化? 3、二维数组传参的本质4、函数指针变量4.1 函数指针变量…

【漏洞复现】CVE-2024-38856(ApacheOfbiz RCE)

【漏洞复现】CVE-2024-38856(ApacheOfbiz RCE) 1. 漏洞描述 Apache OFBiz 是一个开源的企业资源规划(ERP)系统。它提供了一套企业应用程序,用于集成和自动化企业的许多业务流程。 这个漏洞是由于对 CVE-2023-51467 的…

C++入门小馆: 深入string类(二)

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…

【nginx】服务的信号控制

目录 1. 说明2. 常用信号及作用3. 信号控制的具体操作3.1 获取 Nginx 主进程 PID3.2 发送信号 4. 应用场景4.1 重新加载配置文件4.2 日志切割 5. 平滑升级 Nginx6. 注意事项 1. 说明 1.Nginx 的信号控制是其管理服务的重要机制,通过向主进程发送特定信号&#xff0…

Ubuntu下展锐刷机工具spd_dump使用说明

spd_dump使用说明 源码地址:https://github.com/ilyakurdyukov/spreadtrum_flash 编译环境准备: sudo apt update sudo apt install git sudo apt install build-essential sudo apt install libusb-1.0-0-devIf you create /etc/udev/rules.d/80-spd…

鸿蒙NEXT开发LRUCache缓存工具类(单例模式)(ArkTs)

import { util } from kit.ArkTS;/*** LRUCache缓存工具类&#xff08;单例模式&#xff09;* author 鸿蒙布道师* since 2025/04/21*/ export class LRUCacheUtil {private static instance: LRUCacheUtil;private lruCache: util.LRUCache<string, any>;/*** 私有构造函…

笔记:react中 父组件怎么获取子组件中的属性或方法

在子组件中我们可以使用下面两个方法去暴露你所要放行的属性或方法&#x1f447; 1.useImperativeHandle 2.orwardRef 搭配使用例子 import React, { useState, forwardRef, useImperativeHandle } from "react"function Son(props, ref) {const [data] useStat…

《浔川代码编辑器v2.0内测(完整)报告》

一、测试概述 浔川代码编辑器v2.0经过为期五周的封闭内测&#xff0c;累计提交了186份测试报告。本次内测主要针对v2.0新增的多语言支持、AI辅助编码、性能优化等核心功能进行全面验证。 二、测试环境 - 硬件配置&#xff1a;i7-12700H/16GB RAM/512GB SSD - 操作系统&#xf…

ubuntu18.04安装QT问题汇总

1、Could not determine which ”make“ command to run. Check the ”make“ step in the build configuration.” sudo apt-get install clang sudo apt-get install build-essential sudo apt-get install libqt4-dev 2、fatal error: sqlite3.h: No such …

基于单片机的BMS热管理功能设计

标题:基于单片机的BMS热管理功能设计 内容:1.摘要 摘要&#xff1a;在电动汽车和储能系统中&#xff0c;电池管理系统&#xff08;BMS&#xff09;的热管理功能至关重要&#xff0c;它直接影响电池的性能、寿命和安全性。本文的目的是设计一种基于单片机的BMS热管理功能。采用…

CSS基础-即学即用 -- 笔记1

目录 前言CSS 基础1. 层叠样式表来源理解优先级源码顺序经验法则继承inherit 关键字initial 关键字 2. 相对单位em 和 rem响应式面板视口的相对单位使用vw定义字号使用calc()定义字号自定义属性&#xff08;即CSS变量&#xff09; 3. 盒模型调整盒模型 前言 只需一分钟就能学会…

Linux中服务器时间同步

简单介绍 在 redhat 8 之前&#xff0c;时间同步服务是使用 NTP&#xff08;网络时间协议&#xff09;来实现的&#xff0c;在 redhat 8 及之 后使用是 NTP 的实现工具 chrony 来实现时间同步。 在 redhat 8 及之后&#xff0c;默认情况下已经安装好 chrony 软件并已经开机启…

让SQL飞起来:搭建企业AI应用的SQL性能优化实战

我上一篇文章已经讲解过了如何使用公开的AI模型来优化SQL.但这个优化方法存在一定的局限性.因为公开的AI模型并不了解你的数据表结构是什么从而导致提供的优化建议不太准确.而sql表结构又是至关重要的安全问题,是不能泄露出去的.所以在此背景下我决定搭建一个自己的AI应用在内网…