康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(终)
在之前的文章中,我们介绍了如何构建简单的车辆模型,并基于FMI2.0构建了其FMU,其最终结构为:

今天将会和大家分享如何在aiSim中,通过UDP和aiSim车辆动力学API(Vehicle Dynamics Interface, VDI)来实现和外部的FMU车辆动力学模型的联合仿真。
一、操作步骤
车辆动力学仿真是aiSim的核心组件,能够根据驾驶指令来确定车辆的运动变化。基于准确可靠的车辆动力学模型,可以确保车辆模拟更加真实。在aiSim可以将FMU单独视作动态库来实现车辆动力学,也可以基于VDI和UDP来实现和FMU的联合仿真。

1、实例化VDI
VDI中提供了5种不同的车辆动力学模型,包括:
(1)2d:横向自行车模型
(2)23d:底盘俯仰和侧倾分离的横向自行车模型
(3)3d:具有3D刚性车身和独立车轮悬挂的横向轮胎模型(计算量很大)
(4)拖车模型:用于牵引车辆
(5)FMU:基于FMI对于车辆动力学的不同描述
整个联合仿真的进程可以分四个部分:
(1)根据车辆名称匹配对应的ego
(2)在VehicleDB.json或是ego自己的asset包中确认所定义的车辆动力学模型
(3)实例化专属的VDI来处理FMU,定义必须的输入/输出数据
(4)通过socket和pyfmi处理FMU
在实例化VDI时,我们将会遵循以下四个部分来获取车辆动力学的相关数据

2、通过UDP实现FMU的读取
在实例化VDI的同时,初始化一个UDP接口来处理收到的数据。

如果我们通过UDP来实现FMU的读取(为了分布式系统),那么我们还需要pyfmi和socket来协助我们读取和写入FMU的数据,整个脚本主要实现功能为:
(1)创建UDP的socket,用于监听和读取来自VDI的数据

(2)解析来自VDI的数据,获取动力学数据和标志信号,后者主要用于步进操作

(3)基于标志信号步进式执行仿真

(4)基于fmipy读取FMU中定义的各种动力学数据,并将其打包成UDP,在读取时,同样遵循modelDescription.xml中的定义。

3、效果展示
在完成以上工作后,可以启动整个进程,看一下分布式联合仿真的效果。FMU和对应的脚本运行在PC1上,aiSim运行在PC2上。
以上就是关于功能模型接口FMI的联合仿真的全部内容,通过FMU我们可以快速的在不同工具之间进行集成,而不需要进行大规模的模型移植或是繁琐的联调。
如果涉及到联合仿真,每个子系统都需要对应的仿真器进行求解,在通信时数据的交换频率和吞吐量都会对延时造成影响,从而造成仿真的偏差,可以优化不同的通信机制或是采用案例中主动触发的方式来减少负面影响。
康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(终)的更多相关文章
- 基于DRL和TORCS的自动驾驶仿真系统——之环境配置
基于DRL和TORCS的自动驾驶仿真系统 --之环境配置 玩TORCS和DRL差不多有一整年了,开始的摸爬滚打都是不断碰壁过来的,近来在参与CMU的DRL10703课程学习和翻译志愿者工作,也将自己以 ...
- 开源自动驾驶仿真平台 AirSim (1) - Unreal Engine
AirSim 官方Github: https://github.com/Microsoft/AirSim AirSim 是微软的开源自动驾驶仿真平台(其实它还能做很多事情,这里主要用于自动驾驶仿真研究 ...
- Carla 自动驾驶仿真平台的安装与配置指南
简介 Carla 是一款基于 Python 编写和 UE(虚幻引擎)的开源仿真器,用于模拟自动驾驶车辆在不同场景下的行为和决策.它提供了高度可定制和可扩展的驾驶环境,包括城市.高速公路和农村道路等.C ...
- 华为MDC自动驾驶
华为MDC自动驾驶 智能驾驶汽车中,包含四个核心子系统:传感器.计算平台.执行器与应用算法,华为MDC( Mobile Data Center: 移动数据中心)定位为智能驾驶的计算平台.此平台集成了华 ...
- 带你了解基于Ploto构建自动驾驶平台
摘要:华为云Solution as Code推出基于Ploto构建自动驾驶平台解决方案. 本文分享自华为云社区<基于Ploto构建自动驾驶平台>,作者:阿米托福 . 2022年6月15日, ...
- zz“老司机”成长之路:自动驾驶车辆调试实践
随着自动驾驶技术的发展,一辆新车从被改装到上路需要经过的调试流程也有了许多提升.今天,我希望结合自己之前的调车经验来跟大家分享一下我们是如何将系统的各个模块逐步上车.调试.集成,进而将一辆“新手”车培 ...
- 自动驾驶研究回顾:CVPR 2019摘要
我们相信开发自动驾驶技术是我们这个时代最大的工程挑战之一,行业和研究团体之间的合作将扮演重要角色.由于这个原因,我们一直在通过参加学术会议,以及最近推出的自动驾驶数据集和基于语义地图的3D对象检测的K ...
- 通过文件读写方式实现Matlab和Modelsim的联合仿真
虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...
- 深度学习与自动驾驶领域的数据集(KITTI,Oxford,Cityscape,Comma.ai,BDDV,TORCS,Udacity,GTA,CARLA,Carcraft)
http://blog.csdn.net/solomon1558/article/details/70173223 Torontocity HCI middlebury caltech 行人检测数据集 ...
- [原]JSBSim 自动驾驶(浅出)
jsbsim的脚本文件分为几大类: 1.系统脚本: systems 包含通用飞机各部分功能模块组件以及自动飞行控件:Autopilot.xml 和 自动飞行的算法控件:GNCUtilities.x ...
随机推荐
- SQL Server 2022新功能:将数据库备份到S3兼容的对象存储
SQL Server 2022新功能:将数据库备份到S3兼容的对象存储 本文介绍将S3兼容的对象存储用作数据库备份目标所需的概念.要求和组件. 数据库备份和恢复功能在概念上类似于使用SQL Serve ...
- 洛谷P1983 [NOIP2013 普及组] 车站分级 题解
思路 由题可知,在一趟车次的区间内,停靠的站点的等级恒大于不停靠的站点. 因此,对于每一趟车次的区间,给所有停靠的站点向所有不停靠的站点两两连有向边,然后求图中最长的路径长度,就能得到答案. 实现 因 ...
- datax从mysql迁移数据到OceanBase
datax部署 下载datax datax下载地址 安装datax tar -zxvf datax.tar.gz 使用datax 使用配置文件 { "job": { "s ...
- C# 获取计算机唯一标识
C# 获取计算机唯一标识 原文链接 private static string _sFingerPrint { get; set; } /// <summary> /// 计算机唯一标识 ...
- [CF494D] Birthday 题解
首先 \(S(u)\) 显然是 \(u\) 的子树. 假如 \(u\) 是定点,问题转化为区间求平方和,十分简单. 于是我们用线段树维护区间平方和,支持区间加,然后离线问题,在 \(u\) 的位置处理 ...
- 2分钟学会 DeepSeek API,竟然比官方更好用!
大家好,我是程序员鱼皮.最近 DeepSeek AI 太火了,效果也很强,但致命问题是 不稳定, 经常给我返回 服务器繁忙,请稍后再试,甚至让我怀疑自己被杀熟了. 也有网友说,第一次使用成功率很高,第 ...
- 深入解析:Jupyter Notebook 中魔法命令的使用技巧与应用
Jupyter Notebook 中的魔法命令为用户提供了诸多便利功能.魔法命令主要分为行魔法(Line magic)和单元魔法(Cell magic),行魔法前缀为"%",单元魔 ...
- 【由技及道】镜像圣殿建造指南:Harbor私有仓库的量子封装艺术【人工智障AI2077的开发日志009】
摘要:当容器镜像需要同时存在于8个平行宇宙时,就像在量子计算机里管理72个维度的镜像分身.本文记录一个未来AI如何通过Harbor搭建量子镜像圣殿,让容器分发成为跨越时空的瞬间传送. 动机:镜像管理的 ...
- Laravel11 从0开发 Swoole-Reverb 扩展包(三) - reverb广播驱动使用流程
前情提要 我们第一节的时候,已经大致介绍reverb,他 是 Laravel 应用程序的第一方 WebSocket 服务器,可将客户端和服务器之间的实时通信直接带到您的指尖.开源且只需一个 Artis ...
- leaflet生成地图封装成jquery插件使用
公司业务里一直都有使用leaflet地图插件来做地图展示.绘图等操作.公司有个项目已经有好几年了,由于项目原因一直在使用,今年由于google 地图 api过期,导致已经使用的地图无法加载.我作为现在 ...