一、操作步骤
车辆动力学仿真是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我们可以快速的在不同工具之间进行集成,而不需要进行大规模的模型移植或是繁琐的联调。
相关文章









