当前位置: 首页 > news >正文

智能驾驶功能软件平台设计规范第三部分:预测功能服务接口

1 规范应用范围

本规范规定了智能驾驶功能软件平台的预测功能服务接口。

本规范适用于设计开发 GB/T《汽车驾驶自动化分级》[2]所定义的 2 级及以上的驾驶自动化系统即智能驾驶系统。

2 规范引用文件

本规范的引用和参考文件见下表:

[1] GB/T《汽车驾驶自动化分级》

[2] 智能驾驶功能软件平台设计规范 第一部分:系统架构

[3] 智能驾驶功能软件平台设计规范 第二部分:感知融合功能服务接口

[4] 智能驾驶功能软件平台设计规范 第四部分:定位功能服务接口

[5] 智能驾驶功能软件平台设计规范 第五部分:决策规划功能服务接口

3 缩略语

文档中可能使用到的缩写说明如下所示:

缩略语 英文全名 中文解释

AD Autonomous Driving 自动驾驶

ADAS Advanced driver-assistance systems 高级辅助驾驶系统

SAE Society of Automotive Engineers 国际汽车工程师学会

ODD Operational Design Domain 设计运行区域

4 预测功能概述

智能驾驶功能软件平台基于不同厂商的技术实现方案进行功能抽象,共分为传感器抽象功能、感知融合功能、预测功能、决策规划功能、定位功能和执行器抽象功能等 6 个功能模块。主机厂基于自身策略,在设计和开发功能软件时可以选择不同的功能模块和算法组件,实现拼插式功能组合,灵活构建智能驾驶系统级解决方案。

图 1 智能驾驶功能软件平台架构

image-20220902171748794

预测功能是指根据高精度地图、定位服务、感知融合服务提供的自车位置和周边的环境模型,来针对当前场景下其它交通参与者的行为模式进行分析,并评估其未来一段时间范围内的轨迹走向,以此提升智能驾驶系统在复杂场景下决策规划的能力。

image-20220902171824382

5 预测功能接口

本规范规定了预测功能服务的逻辑接口,定义了服务所提供信息的语义和数据类型,逻辑接口主要由数据包头和数据体两部分组成。

  • 数据格式 Integer 表示整数类型,Float 表示实数类型;

  • 可选必选列表明信号在接口中是否必选,M 代表必选,O 代表可选。

5.1 行为预测服务接口

行为预测服务接口主要提供交通参与者的未来行为预测服务,其中交通参与者包括车辆、行人、非机动车等,行为包括左转、右转、调头、变道、通过马路等。

image-20220902171852510

5.2 轨迹预测服务接口

轨迹预测服务接口提供所有跟踪目标在接下来若干秒的具体轨迹信息输出,并对每条轨迹的可能性以概率描述。

image-20220902171906836

6 数据结构定义

6.1 标准元数据头

标准元数据包头是预测功能服务的通用包头,主要包含算法组件信息、版本信息,序列号、时间戳、采用坐标系信息,模块状态信息等。

image-20220902171925972

6.2 行为预测数据

行为预测数据提供了对感知融合功能模块中跟踪目标的行为预测判断,包括目标标识,持续时间和对目标行为的预测。

image-20220902172033326

image-20220902172043349

6.3 轨迹预测数据

轨迹预测数据提供了对感知融合功能模块中跟踪目标的轨迹预测判断,包括目标标识,持续时间,对目标行为轨迹的预测。

image-20220902172108372

image-20220902172140861

image-20220902172153171

6.4 单个交通参与者轨迹预测数据

单个交通参与者轨迹预测数据提供了轨迹概率和具体的轨迹信息。

image-20220902172233052

6.5 轨迹点信息

轨迹点信息提供了对目标的预测轨迹点位置,时间和方向信息。

image-20220902172246827

附 录A(资料性附录)预测功能服务接口 protobuf 描述

A.1 数据结构描述

// common.proto
message Header{
    required uint32 ModuleID=1;
    message VersionID{
        required uint32 major=1;
        required uint32 minor=2;
        required uint32 patch=3;
    }
    required VersionID vid=2;
    required uint32 sequenceNum=3;
    message timeStamp{
        required uint64 timeStampS=1;
        required uint64 timeStampNs=2;
    }
    required timeStamp TimeStamp=4;
    enum FRAMETYPE{
        NA=0;
        VCS=1;
        WGS84=2;
        UTM=3;
    }
    required FRAMETYPE Frame=5;
    emum STATUS{
        GOOD=0;
        MED=1;
        FAILURE=2;
    }
    required STATUS Status =6;
}
Message BehaviorPredictionMeta{
    required uint32 ObjectsID =1;
        enum BehaviorPredictionType {
        UNKNOWN = 0;
        STOP = 1;
        STATIONARY = 2;
        MOVING = 3;
        C_CHANGE_LANE_LEFT = 4;
        C_CHANGE_LANE_RIGHT = 5;
        C_CONSTANT_SPEED=6;
        C_SLOW_ACCELERATION = 7;
        C_HIGH_ACCELERATION = 8;
        C_SLOW_DECELERATION = 9;
        C_HIGH_DECELERATION = 10;
        C_U_TURN=10;
        C_TURN_LEFT=11;
        C_TURN_RIGHT=12;
        P_WAITING=13;
        P_ACROSSING=14;
        P_APPROACH=15;
        P_DEPART=16;
    }
    Required BehaviorPredictionType type=2;
    Required double BehaviorProbability=3;
    Required double Period=4; 
}
Message ObjectTrajectoryPoint{
    Required Point2D ObjectPoint=1;
    Required double ObjectHeading=2;
    Required double TimeStamp=3;
}
Message TrajectoryP{
    Required double TrajProbability=1;
    Repeated ObjectTrajectoryPoint ObjectTrajectory=2;
}
Message TrajectoryPredictionMeta{
    Required uint32 ObjectsID =1;
        Required double TimeStart =2;
    Required double Period=3;
    Optional BehaviorPredictionType type=4;
    Repeated TrajectoryP ValidTrajs=5;
}

A.2 行为预测服务接口

// BehaviorPredictionsService.proto
import common.proto
    message BehaviorPredictionsService{
    required Header head=1;
    repeated BehaviorPredictionMeta BehaviorPredictions=2; 
}

A.3 轨迹预测服务接口

// TrajectoryPredictionsService.proto
import common.proto
    message TrajectoryPredictionsService {
    required Header head=1;
    repeated TrajectoryPredictionMeta TrajPredicts=2;
}

相关文章:

  • 网课搜题公众号在线制作
  • Linux性能优化思路和方法
  • 什么是数据仓库?
  • 01|一条SQL查询语句是如何查询的?
  • NLP基础
  • 公众号查题系统平台
  • 129、LeetCode-392.判断子序列
  • Python面向对象编程
  • java计算机毕业设计霍山石斛网站源码+数据库+系统+lw文档+mybatis+运行部署
  • Python文件处理与垃圾回收机制
  • java计算机毕业设计基于MVC框架的在线书店设计源码+数据库+系统+lw文档+mybatis+运行部署
  • 计算机毕业设计springboot+vue基本微信小程序的外卖点餐订餐平台
  • 文件用手机拍照片打印时,打印出来总是有黑阴影,如何去掉黑色阴影打印清晰的图片
  • okhttp3与旧版本okhttp的区别分析
  • 学习C++第二课
  • 【刷算法】从上往下打印二叉树
  • eclipse(luna)创建web工程
  • ES6语法详解(一)
  • iOS | NSProxy
  • java中的hashCode
  • Just for fun——迅速写完快速排序
  • OSS Web直传 (文件图片)
  • Phpstorm怎样批量删除空行?
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 二维平面内的碰撞检测【一】
  • 记一次删除Git记录中的大文件的过程
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 深入浅出Node.js
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • ​TypeScript都不会用,也敢说会前端?
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • #FPGA(基础知识)
  • #Lua:Lua调用C++生成的DLL库
  • #图像处理
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • $(function(){})与(function($){....})(jQuery)的区别
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (二)PySpark3:SparkSQL编程
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (简单) HDU 2612 Find a way,BFS。
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (原創) 物件導向與老子思想 (OO)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • ??在JSP中,java和JavaScript如何交互?
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?