康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(一)
功能模型接口FMI(Functional Mock-up Interface)是一个开放且与工具解耦的标准。FMI包含了一个C-API(接口),一个用于描述接口的XML文件以及可交换的功能模型单元FMU(Functional Mock-up Unit),通常会是“zip”文件。FMI实际上是提供了容器化形式的模型,能够在不同的目标上轻松进行重复使用和部署,实现在不同的自动驾驶仿真工具之间动态交换仿真模型和联合仿真。
目录
一、FMI的使用
1、导入和导出工具
2、FMU文件结构
3、FMI 2.0和FMI 3.0
二、FMI 3.0.1中的联合仿真
1、多个仿真程序耦合
2、子系统耦合
3、示例
4、同步和误差管理
作者介绍
崔工
一、FMI的使用
1、导入和导出工具
通常来说在使用FMI时会有包含导入和导出工具。

导出工具通常是开发模型的地方,能够将模型按照FMI标准打包为FMU;导入工具通常独立于导出工具,可以在外部设置由C-API定义的一个变量、一个值或是触发一个计算步骤,在接收FMU后在,可以在导入工具中与其他模型结合并实现联合仿真。
实际上FMI标准只定义了一个FMU的接口,在多个FMU进行耦合并实现联合仿真时,FMI标准并不涉及到的联合仿真算法或是FMU 的求解器。
2、FMU文件结构
FMU作为模型的容器能够自由的进行分发,通常来说是一个以".fmu"结尾的zip文件。


在一个FMU文件中,至少包含了一个模型描述文件,其描述了模型变量、接口、能力以及模型架构扩展限制的元数据信息。
还至少包含了一个二进制的模型表示,在Linux系统下是.so文件,在window系统中是dll文件。也可以是C源码,能够让使用者进行重新编译创建一个新的二进制文件用于新的目标,这一部署机制可以方便的扩展到不同的系统平台上。
除此以外,可能还包括额外的文件,比如模型文档和相关的头文件。
3、FMI 2.0和FMI 3.0
FMI2.0包括:
带有事件的常微分方程(ODEs),这些方程描述了系统的动态行为,需要通过数值求解器来进行求解;
连续和离散变量,即FMI的模型中,变量可能是随时间变化,也可以是在特定时间点发生变化;
时间概念,或可以理解为更广泛的独立变量,或是自变量,比如可以是一个角度,从而表述系统的动态变化。
FMI3.0增加:
不仅限于动态方程,也支持纯代数方程,可以处理不随时间变化的静态关系;
进一步支持了复杂的离散行为,即通过使用始终和模型分区来管理模型的顺序和同步;
同时不仅仅是基于物理的方程还可以:
-
vECU模型
-
机器学习模型
-
AI模型
-
......
二、FMI 3.0.1中的联合仿真

1、多个仿真程序耦合
联合仿真时将多个仿真程序耦合在一起,最终实现由多个子系统组成整理自动驾驶HiL系统的行为。
2、子系统耦合
子系统之间是互相耦合的,也就是每个子系统的行为依赖于其他子系统的行为,所以联合仿真必须是以逐步计算的方式进行。
3、示例
每个仿真程序负责计算一个子系统的行为,比如在自动驾驶HiL系统中,aiSim负责场景和传感器仿真,CarSim负责车辆动力学,两个仿真程序互相使用对方产生的输出来进行计算。
CarSim中车辆动力学更新的频率时1kHz,那么需要同步aiSim中场景更新的频率也为1kHz,而且只有在收到动力学信息后才会进行下一步的仿真。
4、同步和误差管理
在联合仿真的过程中,可能会产生附加误差,需要通过合适的联合仿真算法或是通信模式来将其限制在可接受的范围内,比如设置更新步长等。
作者介绍
崔工
康谋科技仿真测试业务技术主管,拥有超过5年的汽车仿真测试及自动驾驶技术研发经验,熟练掌握仿真测试工具和平台,如aiSim、HEEX等,能有效评估和优化自动驾驶系统的性能和安全性。拥有出色的跨文化沟通能力,成功带领团队完成多项海外技术合作项目,加速了公司在自动驾驶技术上的国际化进程。作为技术团队的核心,领导并实施过大规模的自动驾驶仿真测试项目,对于车辆行为建模、环境模拟以及故障诊断具有独到见解。擅长运用大数据分析和人工智能技术,优化仿真测试流程,提高测试效率和结果的准确性。
如您对上述产品和解决方案感兴趣,
欢迎联系康谋自动驾驶团队了解更多信息。
我们将竭诚为您服务!
期待与您的交流!
康谋科技 - 您的一站式自动驾驶解决方案合作伙伴,助力自动驾驶商业化落地 - keymotek康谋科技有限公司是原虹科自动驾驶业务孵化出来的全新独立公司,专注于自动驾驶领域。我们以数据为驱动力,提供高性能的数据采集、记录、传输方案,针对各种驾驶场景进行精准的仿真模拟,以及对大量自动驾驶数据进行高效、高质量处理。我们的一站式服务能够满足自动驾驶领域研发测试的全流程需求,助力客户在自动驾驶领域取得更大突破。
https://keymotek.com/
相关文章:
康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(一)
功能模型接口FMI(Functional Mock-up Interface)是一个开放且与工具解耦的标准。FMI包含了一个C-API(接口),一个用于描述接口的XML文件以及可交换的功能模型单元FMU(Functional Mock-up Unit)&a…...
OPenCV中绘制多条多边形曲线函数polylines的使用
操作系统:ubuntu22.04OpenCV版本:OpenCV4.9IDE:Visual Studio Code编程语言:C11 功能描述 绘制多条多边形曲线 原型1 void cv::polylines ( InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar & color…...
气膜球幕影院:娱乐体验的新高度—轻空间
气膜球幕影院以其独特的全景沉浸体验和丰富的娱乐内容,成为了现代娱乐产业的重要组成部分。轻空间带您来探索一下气膜球幕影院带来的独特娱乐体验。 全景沉浸式体验 气膜球幕影院的360度全景沉浸式体验,彻底改变了传统观影方式。观众被包围在一个球形屏幕…...
阿里CEO个人投资的智驾公司,走了不一样的路
佑驾创新在去年8月和11月完成两轮融资,在今年5月底递表港交所,目前拿到了29家车企88款车型的量产订单。自动驾驶赛道不缺明星,这些因素本不足以凸显它的差异化。但是在招股书中,一条特殊的发展路线,却让佑驾创新显得不…...
Arduino平台软硬件原理及使用——无源蜂鸣器模块的使用
文章目录 一、蜂鸣器发声原理 二、无源蜂鸣器与有源蜂鸣器的区分 三、无源蜂鸣器模块在Arduino中的使用 一、蜂鸣器发声原理 上图为常见的不同封装及规格的蜂鸣器。 同蜜蜂、知了等昆虫发声原理一样,蜂鸣器同样靠振动来发出声音; 如上图为无源蜂鸣器的内…...
【Go】用 DBeaver、db browser 和 SqlCipher 读取 SqlCipher 数据库
本文档主要描述如何用 DBeaver、db browser 和 SqlCipher 上打开加密的 SQLite3 数据库(用 SqlCipher v3 加密) 软件版本 DBeaver:v24.1.0 SQLite-driver: sqlite-jdbc-3.46.0.0.jar dbbrowser-for-sqlite-cipher:3.12.2 SqlCipher cli(ubuntun)&am…...
ROS操作过程中的报错
文章目录 错误:E: Unable to locate package ros-noetic-desktop-full报错问题报错原因解决方法 错误2:ERROR: cannot download default source list from:报错问题错误原因解决办法 错误:E: Unable to locate package ros-noetic-desktop-fu…...
Qt项目学习-20240617
Qt项目学习 1.0 文件构建 1.1 预处理命令 C预处理命令是编译过程中的第一步,发生在编译器进行实际编译之前。预处理器(preprocessor)执行这些命令,它们不是C语言的一部分,但对源代码的编译过程至关重要。以下是一些常…...
加密好的WPSword文档,忘记密码怎么办?
在日常办公和学习中,我们经常使用WPS Word等文档处理软件来创建和编辑重要文件。为了保护这些文件不被未经授权的人访问,我们通常会选择给文档设置密码。然而,有时我们可能会因为时间久远或其他原因而忘记自己设置的密码,这时该如…...
C# WPF 读写CAN数据
C# WPF 读写CAN数据 CAN 分析仪 分析仪资料下载 官方地址:https://www.zhcxgd.com/1.html CSDN: 项目配置 复制Dll库文件 文件在上面的资料里面 设置不安全代码 CAN C#工具类 CAN_Tool.cs using Microsoft.VisualBasic; using System; using Sys…...
力扣2517.礼盒的最大甜蜜度
力扣2517.礼盒的最大甜蜜度 二分答案求最小值 排完序判断是否有k个差距至少为mid的元素别用i遍历 可能会越界 用 : 有多少取多少 class Solution {public:int maximumTastiness(vector<int>& price, int k) {ranges::sort(price);auto check [&](int mid) -&…...
多模块存储器
随着计算机技术的发展,处理的信息量越来越多,对存储器的速度和容量要求也越来越高;而且随着CPU性能的不断提高、IO设备数量不断增加,导致主存的存取速度已经称为了整个计算机系统的性能瓶颈。这就要求我们必须提高主存的访问速度。…...
Windows反截屏开发实现
文章目录 Windows反截屏开发实现1. SetWindowDisplayAffinity2. 反截屏系统3. 总结 Windows反截屏开发实现 最近在我们云桌面中需要做到反截屏能力,所谓反截屏就是我们无法通过截图软件(微信,QQ,截图等程序)截取桌面的…...
Android.mk的用法
前言 Android.mk 文件是 Android 编译系统中用于描述项目源文件、库和模块的 Makefile。它采用 GNU Make 的语法,但也包含了一些特定于 Android 编译系统的规则和变量。以下是对其语法和使用方法的详细解释及示例。 一:模块种类 一个Android.mk file用来向编译系统描述你的源…...
android studio CreateProcess error=2, 系统找不到指定的文件
【问题记录篇】 在AndroidStudio编译开发jni相关工程代码的时候,编译遇到的这个报错: CreateProcess error2, 系统找不到指定的文件。排查处理步骤: 先查看Build Output的具体日志输出 2.了解到问题出在了NDK配置上,此时需要根据自己的gra…...
jQuery如何把单选框设置为选中状态
在网页开发中,我们经常需要使用表单元素来收集用户数据。其中,单选框(radio button)是一种常见的表单元素,用于从一组选项中选择一个。使用jQuery,我们可以轻松地控制这些单选框的状态,包括将它…...
Mware Fusion Pro 13 mac版:一键掌控虚拟世界
VMware Fusion Pro 13是一款功能卓越的虚拟化软件,专为Mac操作系统量身打造。这款软件为用户提供了一个一站式的虚拟化解决方案,能够满足各种多样化的需求。 VMware Fusion Pro 13 Mac获取 VMware Fusion Pro 13的强大之处在于其采用了最 先进的虚拟化…...
PTA - 函数的定义与调用
编写一个名为collatz()的函数,它有一个名为number的参数: 如果number是偶数,那么collatz()就打印number加上2如果number是奇数,那么collatz()就打印number乘以2 函数接口定义: def collatz(number)裁判测试程序样例: /* 请在这里填写答案…...
Solr7.4.0报错org.apache.solr.common.SolrException
文章目录 org.apache.solr.common.SolrException: Exception writing document id MATERIAL-99598435990497269125316 to the index; possible analysis error: cannot change DocValues type from NUMERIC to SORTED_NUMERIC for field "opt_time"Exception writing…...
从2-3-4树开始理解红黑二叉树(JAVA代码手撸版)
经典的红黑二叉树在新增/删除数据时维持自平衡始终对应着一个2-3-4 树。本文只关注2-3-4 对应的经典红黑二叉树。 暂时不考虑 2-3 树对应的左倾红黑二叉树。 背景知识 2-3-4 树简介 一棵 2-3-4 树的结点分为 内部结点 (internal nodes) 和 叶子结点 (leaf nodes) ,…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...
Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
实战三:开发网页端界面完成黑白视频转为彩色视频
一、需求描述 设计一个简单的视频上色应用,用户可以通过网页界面上传黑白视频,系统会自动将其转换为彩色视频。整个过程对用户来说非常简单直观,不需要了解技术细节。 效果图 二、实现思路 总体思路: 用户通过Gradio界面上…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
