什么是ADSFI框架?
ADSFI(Autonomous Driving Service Framework Initiative)
ADSFI对外提供各种自动驾驶领域常用的应用框架,其中应用框架覆盖感知类的框架,融合类的框架,规划控制类框架,定位类的框架,场景分析管理类框架。
ADSFI提供的功能:
提供自动驾驶服务框架:MDC支持Adaptive AUTOSAR,Adaptive AUTOSAR提供通信机制和灵活的软件配置,但是Adaptive AUTOSAR的配置非常复杂且繁琐,容易配置错误。为屏蔽客户对Adaptive AUTOSAR的感知,MDC提供了自动驾驶功能软件通讯框架,方便用户更容易上手MDC平台。用户只需要继承此框架完成自己的算法部分,而无需关注Adaptive AUTOSAR通信。
ADSFI应用框架图
MDC300上有哪些ADSFI框架?
Camera目标检测框架,Camera目标跟踪框架,Lidar目标检测框架,Lidar目标跟踪框架,Camera+Lidar目标检测框架,Radar目标检测框架,Camera车道线检测框架,多传感器融合框架,道路特征提取框架,TrafficLight目标检测框架,TrajectoryPrediction轨迹预测框架,Navigation全局导航框架,Planning规划框架,Control控制框架,融合定位框架,SAMM场景分析管理框架
各个ADSFI框架的联系
主要是通过InstanceId来建立联系,以control框架为例。
单个ADSFI框架的构成
每个ADSFI框架是由一个类组成的,类里面提供了Init()、Get()、Send()和Stop()等相应的系统函数,而且发送与接收数据的结构体类型也已经确定好了。开发者只用进行相应的算法开发。
以Control框架为例:
使用Control控制框架需要组合“adsf/control_base.h”中定义的ControlBase类的实例,调用其Init()接口进行初始化,调用其Stop()接口释放资源。
主线程中依次调用:
- Init函数初始化资源。
- 调用GetLocation、GetEgoTrajectory、GetBodyReport、GetChassisReport接口接收最新数据。
- 调用SendBodyCommand、SendChassisCommand接口发送数据。
- Stop()退出所有框架线程并释放资源。
单个ADSFI框架中的yaml文件
ADSFI框架中的yaml文件作为框架中的配置文件,定义了很多配置信息。
比较重要的是recvInstanceID和sendInstanceID。
recvInstanceID定义了该框架从哪些模块或者框架接收消息。
sendInstanceID定义了该框架向哪些模块或者框架发送消息。
以下是control框架的yaml文件:
%YAML:1.0
appName: CTR #节点名称
description: Control module
priority: 0 #[0,12] 当前未使用
scheduleFrequency: 30 #当前未使用
isDetermineSchedule: false #{true, false} 当前未使用
logFile: ./ #日志路径,当logMode配置有指定文件存储时,使用本路径存储日志,日志文件名为${appName}.log
logMode: 6 #[0,6], 0: remote日志 1: console日志 2: 本地日志 3:remote日志+console日志
4:remote日志+本地日志 5:console日志+本地日志 6:remote日志+console日志+本地日志
logLevel: 2 #[0,6], 0:verbose, 1:debug, 2:info, 3:warn, 4:error, 5:fatal, 6:off
recvInstanceID:
bodyReportInstanceID : 1 #接收车身数据的instance id
chassisReportInstanceID : 1 #接收底盘数据的instance id
egoTrajectoryInstanceID : 103 #接收planning节点数据的instance id
locationInstanceID : 113 #接收location节点数据的instance id
sendInstanceID:
bodyCmdInstanceID : 1 #发送车身控制命令的instance id
chassisCmdInstanceID : 1 #发送底盘控制命令的instance id
————
2021.12.30
家中