汽车底盘控制系统Autosar初步接触

        最近接触到汽车底盘控制部分,作为小白,原以为汽车底盘也是要自己手敲代码,结果发现完全不是。记录一下最近的学习心得,初步接触东西不全,但可以当作参考。

        对于底盘控制部分的简单理解:simulink做汽车底盘的仿真,类比于RoboMaster中平衡车的控制算法,将各类传感器参数、Heave、Pitch、Roll、加速度等等进行计算,放在simulink中就是将这部分模块化,仿真无误后可以自动生成代码。但是在生成代码之前,需要对汽车相关数据进行标定,所谓标定就是使用CANape查看曲线,调整参数,类比于比赛中的PID参数调参,不过不同的是更为复杂参数更多。

        使用的软件:Matlab的simulink仿真、CANape、CANoe。

因为是新手所以软件的具体使用方法不做说明。

        生成的代码是Autosar代码,因此这里记录一下我对Autosar的浅浅理解和总结

1、AUTOSAR

 Autosar好处是将汽车电子控制单元(ECU)的软件底层做了一个标准的封装。类似于Linux中将内核驱动都封装好(所谓的底层软件都写好),只需要在应用层进行编写程序。

1.1 AUTOSAR架构:

传统嵌入式软硬件无法分割开,AUTOSAR架构隔离了应用软件层、基础软件层(BSP驱动)。摆脱了以往ECU软件开发与验证时对硬件系统的依赖。

AUTOSAR架构中共分六层:

应用软件层(Application Layer):由多种SWC(软件组件)组成,包括控制策略、软件算法、传感器参数计算、执行器控制

运行环境RTE(Runtime Environment):各个架构之间必须经过RTE封装的API进行数据交互,同时还有虚拟功能总线VFB(所有的Component(包括SWC、ECU抽象、服务、复杂驱动)之间的通信),AUTOSAR提供的所有通信机制的总和,SWC之间的通信

基础软件BSW

1 服务层(Services Layer):服务层的目的在于提供给应用层可用的服务内容,主要包括:诊断、操作系统、通信、内存管理等

2 ECU抽象层(ECUAbstraction Layer):ECU层的目的在于使上层软件与ECU硬件电路设计剥离开。其中包括了关于ECU上的芯片驱动和外部设备的IO接口。

3 微控制器抽象层(Microcontroller Abstraction Layer):MCU层的目的在于使上层软件与MCU处理器的型号选型剥离开。其中包括了关于MCU的驱动。

4 复杂驱动(Complex Device Drivers):复杂设备驱动组件的目的在于提供复杂传感器和执行器的驱动,使应用层可直接访问硬件资源。

1.2 基本概念

1.2.1 SWC(software Component):

封装了部分或者全部汽车电子功能的模块,其中包括了具体功能的实现以及对应的描述。

SWC分类:Atomic component(最小的逻辑单元,无法再分)、Composition(可以包含数个SWC的逻辑集合)

1.2.2 Port

Port是SWC之间通信用,算是SWC的组成部分。

Port Interface分两类:R/S port、C/S port

R/S与C/S是AUTOSAR在定义接口模板里比较常用的两种类型

1 R/S接口(receiver/sender)
  1. 生成代码来看:采用接口全局变量的方式传递数据
  2. 通过Data Element Prototypes进行交互。

Data Element是一个全局变量,通过Rte_Write_<name>,Rte_Read_<name>对全局变量进行读写。

2 C/S接口(client/server):
  1. 生成代码来看:采用的是函数的方式传递数据
  2. C/S通过operation prototye实现交互

在swc和swc之间 每一个operation都是一个函数,这个函数在Server端实现,在client端调用。

3 Port prototype和Port Interface

port prototype可以理解成端口,定义两个不同的component连接点,用于两者之间通信。可以是Port提供者或者Port接收者(PPortPrototype、RPortPrototype),看自己怎么定义了。

Port Interface是将两个component连接起来的桥梁。

1.2.3 Runnables:

swc组成的部分,运行在RTE里面,由RTE周期事件触发或者其他事件触发调用,里面包含了实际运行的函数

2 参考文章: 

AUTOSAR Port原理概念详解

我淡定地撸了一遍AUTOSAR的基本概念

整体来讲AUTOSAR更多用于汽车行业,如果想要入职汽车底盘控制相关,还是建议学习一下。只是小白,希望有经验的人看到可以提出宝贵的意见和学习方法~~

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

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

相关文章

大数据技术基础

一、大数据平台 1.大数据平台方案步骤&#xff1a; ①市场上有哪些大数据平台 ②硬件、系统、业务增长等方面 ③方案是否通过 通过后&#xff1a;按照一期目标投入 先虚拟环境部署联系&#xff0c;再实际部署 《大数据架构介绍》《Hadoop架构解析》《Hadoop集群规划》 《H…

PX4 运行 make px4_sitl_default gazebo 报错

报错原因&#xff1a;最开始我把依赖一直都是在base环境下安装的&#xff0c;没有conda deactivate&#xff0c;而pip install的东西应该装在系统环境&#xff0c;不能装在base环境下&#xff0c;sudo apt 是装在系统环境的 1.检查ros 用鱼香ros安装 wget http://fishros.…

南平建网站公司推荐 好用的b2b独立站模板

床品毛巾wordpress独立站模板 床单、被套、毛巾、抱枕、靠垫、围巾、布艺、枕头、乳胶枕、四件套、浴巾wordpress网站模板。 https://www.jianzhanpress.com/?p4065 打印耗材wordpress自建独立站模板 色带、墨盒、碳粉、打印纸、硒鼓、墨盒、墨水、3D打印机、喷头wordpress…

Pr 2024下载安装,Adobe Premiere pro2024剪辑软件下载合集获取

Premiere Pro 2023中文版简称Pr&#xff0c;pr2023是一款视频编辑软件。 pr 2023不仅可以帮助用户对各种视频进行剪辑、旋转、分割、合并、字幕添加、背景音乐等基础的处理&#xff0c;还能帮助用户进行视频颜色校正、颜色分级、稳定镜头、调整层、更改片段的持续时间和速度、效…

Sentinel规则持久化Push模式两种实现方式

文章目录 sentinel持久化push推模式微服务端的实现具体实现源码分析读数据源写数据源的实现 微服务端解析读数据源流程 修改源码的实现官方demo修改源码实现配置类flowauthoritydegreadparamsystemgateway修改源码 测试补充 前置知识 pull模式 sentinel持久化push推模式 pull拉…

Pycharm 导入 conda 环境

使用时经常在此处卡壳&#xff0c;在此做个记录。 这个位置选择 conda 安装路径下的 python.exe 文件即可

自学鸿蒙HarmonyOS的ArkTS语言<十>@BuilderParam装饰器

作用&#xff1a;当子组件多处使用时&#xff0c;给某处的子组件添加特定功能 一、初始化 1、只能被Builder装饰的方法初始化 2、使用所属自定义组件的builder方法初始化 3、使用父组件的builder方法初始化 - 把父组件的builder传过去&#xff0c;参数名和子组件的builderPar…

ESP32部署TensorFlow Lite

本来是想找一篇中文教程&#xff0c;不过只看到一个英文官方的&#xff0c;也行吧&#xff0c;虽然效率会慢丢丢。 GitHub - espressif/esp-tflite-micro: TensorFlow Lite Micro for Espressif Chipsets 看了一圈&#xff0c;有个中文的&#xff1a; esp-dl/README_cn.md a…

TS 入门(七):TypeScript模块与命名空间

目录 前言回顾泛型编程1. 模块a. 导入和导出b. 默认导出c. 重命名导入和导出 2. 命名空间a. 定义命名空间b. 嵌套命名空间 3. 动态导入与条件导入a. 动态导入b. 条件导入 结语 前言 在前几章中&#xff0c;我们学习了 TypeScript 的基础知识、函数与对象类型、接口与类、以及泛…

K8S 上部署 Emqx

文章目录 安装方式一&#xff1a;快速部署安装方式二&#xff1a;定制化部署1. 使用 Pod 直接部署 EMQX Broker2. 使用 Deoloyment 部署 Pod3. 使用 Services 公开 EMQX Broker Pod 服务4. 通过 kubernetes 自动集群 EMQX MQTT 服务器5. 修改 EMQX Broker 的配置 安装方式一&am…

Large Language Model系列之二:Transformers和预训练语言模型

Large Language Model系列之二&#xff1a;Transformers和预训练语言模型 1 Transformer模型 Transformer模型是一种基于自注意力机制的深度学习模型&#xff0c;它最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出&#xff0c;主要用于机器翻译任务。随…

【ollama】ollama运行GLM4-9B和CodeGeeX4-ALL-9B

一、下载GGUF模型 glm-4-9b-chat-GGUFcodegeex4-all-9b-GGUF 使用modelscope下载 先安装 pip install modelscope 命令1 modelscope download --modelLLM-Research/glm-4-9b-chat-GGUF --local_dir . glm-4-9b-chat.Q5_K.gguf命令2 modelscope download --modelLLM-Researc…

昇思25天学习打卡营第02天|张量 Tensor

一、什么是张量 Tensor 张量是一种特殊的数据结构&#xff0c;与数组和矩阵非常相似。张量&#xff08;Tensor&#xff09;是MindSpore网络运算中的基本数据结构。 张量可以被看作是一个多维数组&#xff0c;但它比普通的数组更加灵活和强大&#xff0c;因为它支持在GPU等加速…

【D3.js in Action 3 精译_015】1.3 D3 视角下的数据可视化最佳实践(下)

当前内容所在位置 第一部分 D3.js 基础知识 第一章 D3.js 简介 ✔️ 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知 1.2.1 HTML 与 DOM1.2.2 SVG - 可缩放矢量图形1.2.3 Canvas 与 WebGL1.2.4 CSS1.2.5 JavaScript1.2.6 Node 与 JavaScript 框架1.2.7 Observable 记事…

<数据集>猫狗识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;3686张 标注数量(xml文件个数)&#xff1a;3686 标注数量(txt文件个数)&#xff1a;3686 标注类别数&#xff1a;2 标注类别名称&#xff1a;[cat, dog] 序号类别名称图片数框数1cat118811892dog24982498 使用标…

美团看向7亿老铁的钱包,王莆中还有底牌吗?

文&#xff1a;互联网江湖 作者&#xff1a;刘致呈 7月12日&#xff0c;快手、美团宣布战略合作全面升级&#xff0c;未来三年快手美团合作范围将扩大至全国的“百城万店”。 数据上&#xff0c;过去双方的合作是有正向结果的。 美团商家在快手平台的GMV同比提升超38倍&…

FPGA CFGBVS 管脚接法

说明 新设计了1个KU040 FPGA板子&#xff0c;回来之后接上JTAG FPGA不识别。做如下检查&#xff1a; 1、电源测试点均正常&#xff1b; 2、查看贴片是否有漏焊&#xff0c;检查无异常&#xff0c;设计上NC的才NC&#xff1b; 3、反复检查JTAG接线是否异常&#xff0c;贴片是…

关于R语言单因素与多因素线性回归的平均值.

&#x1f3c6;本文收录于《CSDN问答解答》专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&…

【内网穿透】打洞笔记

文章目录 前言原理阐述公网sshfrp转发服务 实现前提第一步&#xff1a;第二步第三步第四步 补充第五步&#xff08;希望隧道一直开着&#xff09;sftp传数据&#xff08;嫌云服务器上的网太慢&#xff09; 前言 租了一个云服务器&#xff0c;想用vscode的ssh远程连接&#xff…

【前端】表单密码格式—校验。

如图&#xff1a;实现表单输入密码和确认密码的时候进行表单校验。 实现方式&#xff1a; 1.在代码的data里面定义&#xff0c;函数验证的方法。如图所示,代码如下 【代码】如下&#xff1a; const validatePassword (rule, value, callback) > {if (value ) {callback(n…