MDC300的ADSFI框架介绍

article/2025/10/20 7:09:54

文章目录

  • 什么是ADSFI框架?
  • ADSFI应用框架图
  • MDC300上有哪些ADSFI框架?
  • 各个ADSFI框架的联系
  • 单个ADSFI框架的构成
  • 单个ADSFI框架中的yaml文件

什么是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框架为例。
Control框架

单个ADSFI框架的构成

每个ADSFI框架是由一个类组成的,类里面提供了Init()、Get()、Send()和Stop()等相应的系统函数,而且发送与接收数据的结构体类型也已经确定好了。开发者只用进行相应的算法开发。

以Control框架为例:
使用Control控制框架需要组合“adsf/control_base.h”中定义的ControlBase类的实例,调用其Init()接口进行初始化,调用其Stop()接口释放资源。

主线程中依次调用:

  1. Init函数初始化资源。
  2. 调用GetLocation、GetEgoTrajectory、GetBodyReport、GetChassisReport接口接收最新数据。
  3. 调用SendBodyCommand、SendChassisCommand接口发送数据。
  4. 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 idchassisReportInstanceID : 1  #接收底盘数据的instance idegoTrajectoryInstanceID : 103  #接收planning节点数据的instance idlocationInstanceID : 113  #接收location节点数据的instance id
sendInstanceID:bodyCmdInstanceID : 1  #发送车身控制命令的instance idchassisCmdInstanceID : 1  #发送底盘控制命令的instance id

————
2021.12.30
家中


http://chatgpt.dhexx.cn/article/MisRj296.shtml

相关文章

论文阅读笔记(4-2)---吴恩达DNN算法分析和仿真实现

算法开发 该深度卷积神经网络以原始心电图数据(以200Hz或每秒200个样本为样本)作为输入,并且每256个样本(或每1.28秒)生成一个预测,我们称之为输出间隔。网络仅以原始心电图样本为输入,网络架构…

LightGBM的基本原理以及使用

LightGBM的基本原理以及使用 LightGBM的基本原理 LightGBM是一款常用的GBDT工具包,由微软亚研院开发,速度比XGBoost快,精度稍低 。他的设计理念是:1.单个机器在不牺牲速度的情况下,尽可能使用上更多的数据。2.多机并…

从心电信号分类过渡到心音信号分类

首先刚接手这种关于信号的分类问题,以下可能会有不对的地方,接下去通过学习会对不正确的地方进行更正或者补充。 心电信号分类参考文献:Cardiologist-LevelArrhythmiaDetectionwithConvolutionalNeuralNetworks目标:对传感器采集…

LightGBM调参

GBDT模型的另一个进化版本:LightGBM。LigthGBM是boosting集合模型中的新进成员,由微软提供,它和XGBoost一样是对GBDT的高效实现,原理上它和GBDT及XGBoost类似,都采用损失函数的负梯度作为当前决策树的残差近似值&#…

XGBoost调参步骤及常见问题

XGBoost xgboost中的基学习器除了可以是CART(gbtree)也可以是线性分类器(gblinear) xgboost在目标函数中显示的加上了正则化项,基学习为CART时,正则化项与树的叶子节点的数量T和叶子节点的值有关。 正则项…

LightGBM原理介绍

简介 是GBDT模型的一个进化版本,其主要思想是利用弱分类器(决策树)迭代训练以得到最优模型,该模型具有训练效果好、不易过拟合等优点(备注:容易出现过拟合的风险,需要限制树的最大深度来防止过…

lightbgm参数_参数调优LightGBM-商品分类-代码

1.直接调用LightGBM内嵌的cv寻找最佳的参数n_estimators(弱分类器数目) Otto商品分类数据 导入必要模型import lightgbm as lgbm import pandas as pd import numpy as np from sklearn.model_selection import GridSearchCV from sklearn.model_selection import StratifiedKF…

Xgboost回归四种调参方法及Python简单实现

前言 Xgboost对特征工程和数据处理比较友好,相比之下调参成为用好Xgboost重要的一环,本文分别从参数、调参方法、Python实现的维度进行梳理,作为调参思路的记录。 本文将关注以下几个问题: 1.Xgboost哪些参数需要调参&#xff…

Python机器学习10——梯度提升

本系列所有的代码和数据都可以从陈强老师的个人主页上下载:Python数据程序 参考书目:陈强.机器学习及Python应用. 北京:高等教育出版社, 2021. 本系列基本不讲数学原理,只从代码角度去让读者们利用最简洁的Python代码实现机器学…

【机器学习】集成学习代码练习

课程完整代码:https://github.com/fengdu78/WZU-machine-learning-course 代码修改并注释:黄海广,haiguang2000wzu.edu.cn import warnings warnings.filterwarnings("ignore") import pandas as pd from sklearn.model_selection …

Keras 1.0 与 2.0 中 Convolution1D 的区别(其实是tf1.0 2.0 区别)

1.0 Convolution1D: 一维卷积层 nb_filter: 卷积核的个数 filter_length: 每个卷积核的长度 init: 权重初始化函数名称 weights: 权重初始化 border_mode: valid, same or full 如果是‘valid ’ 进行有效的卷积,对边界数据不处理,‘same表示保留…

数据挖掘入门_Task04

线性回归模型 线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。 可以直接使用sklearn建立线性模型: from sklearn.linear_model import LinearRegression model LinearRegression(n…

task4 建模调参

1 读取数据 import pandas as pd import numpy as np import warnings warnings.filterwarnings(ignore)note: 将整型变量的类型尽量压缩,逐步判断并转化为int8,int16,int32,int64 def reduce_mem_usage(df):""" iterate through all the columns …

深度学习与神经网络(七)——卷积神经网络之池化pooling 上采样upsample与降采样downsample(下采样)(subsample)(nn.MaxPool2d)

池化层pooling与采样 upsample与downsample upsample(interpolating)是上采样,是图片的放大 unpool是上采样的一种 downsample(subsample)是下采样,是图片的缩小 在卷积神经网络中使用的采样方式就是pooling,有点类似下采样,但不太…

有放回随机抽样:重要参数subsample

原理透析 确认了有多少棵树之后,我们来思考一个问题:建立了众多的树,怎么就能够保证模型整体的效果变强呢?集成的目的是为了模型在样本上能表现出更好的效果,所以对于所有的提升集成算法,每构建一个评估器&…

Subsample子采样(CloudCompare软件)

之前一直以为CC软件里面没有子采样这个功能,不过找了找之后发现还是有的,感觉这些小的功能挺有意思的,所以也就记录一下。 文章目录 一、Random采样二、space采样三、octree采样四、小结 一、Random采样 有时候我总是喜欢使用一些小的样本来…

Android Content Providers(三)——Contacts Provider

接着上篇Android Content Providers(二)——Contacts Provider继续,接下来要说明的是顶层的Contacts,Contacts是聚合联系人表,在之前讨论的RawContacts是原始联系人表,在Android通讯录的架构中,…

Android contacts 的详解

一、包结构分析 相关联的的projects 1、Contacts相关 联系人分为了Contacts和ContactsCommon,与sim卡联系人相关的是在Telephony中,数据库是在ContactsProvider,apk要push到/system/priv-app/Contacts下 2、Contacts的包结构 3、ContactsComm…

由ContactsProvider的升级引发的OTA首次开机卡白米问题分析

上午的宁静被一个OTA卡白米问题打破,接下来不断有人反馈不同机型都复现了OTA后卡白米,10.9号OTA升级到10.10号的版本,全机型问题,线刷没有问题,好吧,接下来就根据这些信息开始初步分析log吧! 初…

Android Content Providers(二)——Contacts Provider

Contacts Provider是Android中一个强大并且灵活的组件,负责管理系统通讯录的数据,对外提供访问接口来对系统通讯录进行访问和操作。 以下是Contacts Provider的组织结构图: 可以看出Android的系统通讯录是三层架构,通过URI进行访…