康谋分享 | 自动驾驶联合仿真——功能模型接口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 ...
随机推荐
- Python代码将大量遥感数据的值缩放指定倍数的方法
本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像文件的方法. 首先,看一下本文的具体需求.我们现有一 ...
- JMeter非GUI模式执行,jtl文件请求与响应数据为空?这里有答案!
JMeter非GUI模式执行,jtl文件请求与响应数据为空?这里有答案! 问题描述 在使用JMeter进行性能测试时,很多用户会选择非GUI(图形用户界面)模式来执行测试,因为这样可以减少客户端的负担 ...
- SCCPC2024 游记
打了一堆板子,一个都没用上. 队友:zhicheng,nityacke 开场发现 H 是签到,NIT 签了.然后盯 F(圆向某个方向运动,问存不存在一个时刻使得全在长方形之内),发现不外乎一堆二次方程 ...
- 流程控制之break、continue和goto
#### 实例1: ```javapackage com.yeyue.struct; public class BreakDemo { public static void main(String[] ...
- 小程序开发实战案例五 | 小程序如何嵌入H5页面
在接入小程序过程中会遇到需要将 H5 页面集成到小程序中情况,今天我们就来聊一聊怎么把 H5 页面塞到小程序中. 本篇文章将会从下面这几个方面来介绍: 小程序承载页面的前期准备 小程序如何承载 H5 ...
- mybatis - [12] 日志工厂
题记部分 001 || 日志工厂 如果一个数据库操作出现了异常,需要通过日志定位问题. 002 || Log4j Log4j是Apache的一个开源项目,通过使用Log4j,可以控制日志信息输送的目的 ...
- mybatis - [09] 动态SQL
题记部分 一.if & test 如果id,name,age不为空,则按照指定的值进行查询.如果这三者都是空(null和空字符串),则该sql执行结果为全表查询的结果集. <select ...
- docker - [05] 部署Nginx
题记部分 一.查找镜像 docker search nginx 二.拉取镜像 docker pull nginx 三.启动镜像 Nginx默认端口号为80,可以在启动时指定Nginx使用的端口号(例如 ...
- Sqoop2 - [01] 安装部署
1.启动Hadoop集群 2.将Sqoop2的安装包上传到合适的目录中解压 tar -zxvf sqoop-1.99.7-bin-hadoop200.tar.gz 3.修改Hadoop的配置文件cor ...
- Week09_day05(Hbase的安装搭建)
搭建完全分布式集群 HBase集群建立在hadoop集群基础之上,所以在搭建HBase集群之前需要把Hadoop集群搭建起来,并且要考虑二者的兼容性.现在就以5台机器为例,搭建一个简单的集群. 软件版 ...