康谋分享 | 自动驾驶联合仿真——功能模型接口FMI(四)

在上一篇文章 "康谋分享 | 自动驾驶联合仿真------功能模型接口FMI(三)",我们讲述了在构建FMU中,如何通过fmi_simple_car.cpp来实现FMI2.0,即如何实现一个简单的车辆模型来进行车辆动力学仿真。今天康谋接着展示如何通过simple_car.cpp和simple_car.h构建车辆模型本身。


目录

一、操作步骤

1、实例化

2、关注参数

[3、Cmake 编译](#3、Cmake 编译)


一、操作步骤

首先simple_car.cpp主要构建了车辆所需的多个动力学参数,包括底盘的位姿、车轮的状态等,而simple_car.h提供多个函数来实现基于FMI2.0标准将参数写入到车辆中。

simple_car.cpp主要分为三部分:

  • 初始化车辆动力学参数

  • 计算参数并更新车辆的运动变化

  • 根据车辆的位姿计算车轮的坐标

在头文件中,除了定义相关函数外,还提供了车辆的一些静态参数,用于协助动力学参数的计算,比如给定车辆的转向传动比、轴距、最大附着加速度、车轮半径等。

1、实例化

我们来看一个simple_car.cpp中实现车辆状态更新的简单示例:

复制代码
const double wheel_angle =val_refs[STEERING_ANGLE] / m_steer_transmission_ratio;
const double curvature = wheel_angle / m_wheelbase
const double yaw_rate = curvature * val_refs[CHASSIS_SPEED]

这三个分别计算了转向角、曲率和偏航率。基于这个三个值,再结合车辆的静态参数,我们可以计算并推算出其他的车辆运动姿态参数。

我们也会通过加速踏板和刹车踏板的状态来计算车辆(底盘的纵向加速度),其中m_max_adh_acc为在头文件中预先定义的最大附着加速度:

复制代码
if val_refs[BRAKE_PEDAL_POSITION] < 0.0
{
val_refs[CHASSIS_LONGITUDINAL_ACCELERATION] = val_refs[BRAKE_PEDAL_POSITION] * m_max_adh_acc;
}

可以注意到我们使用了宏定义的STEERING_ANGLECHASSIS_LONGITUDINAL_ACCELERATIONBRAKE_PEDAL_POSITION

使用这一方式的原因:一是为了计算不同参数时清晰明了,此外更重要的是这和FMU中的modelDescription.xml文件所对应,modelDescription.xml规定了FMU的结构,其结构可以参考FMI系列的第二篇文章: "康谋分享 | 自动驾驶联合仿真------功能模型接口FMI(二)"。

2、关注参数

在XML文件中,需要关注的参数类型为name和valuReference,STEERING_ANGLE这一name对应的valuReference值为3,那么为了方便我们使用这些参数,可以把这些定义的宏写入到value_reference_ids.h中,当然也可以写入simple_car.h这一头文件里。

3、Cmake 编译

在完成simple_car.cpp、simple_car.h和FMU描述文件modelDescription.xml文件的构建,最后一步就是要将其编译成为所需FMU文件并生成我们的动态库文件(.so/.dll)。

我们采用Cmake来进行编译,除了定义源文件、添加库、指定目录、链接库(主要是glm和fmi2_interface)以外,我们还需要针对FMI平台进行配置:

以上就是基于FMI2.0构建FMU的全部内容,在下一期中我们将介绍在仿真软件aiSim中通过车辆动力学API来实现和FMU的联合仿真。


如您对上述产品和解决方案感兴趣,

欢迎联系康谋自动驾驶团队了解更多信息。

我们将竭诚为您服务!

期待与您的交流!

康谋aiSim自动驾驶仿真模拟平台 - 端到端的ADAS/AD仿真工具 | 物理级传感器仿真 | 高精度环境模拟康谋自动驾驶仿真软件-aiSim,全球首个通过ISO 26262 ASIL D认证的汽车仿真工具。搭载自研确定性仿真引擎aiSim AIR Engine,提供物理级传感器仿真和高精度环境模拟,可基于真实场景建模,支持多路视频并行输出,提供完整测试报告和分析指南。https://keymotek.com/adas-simulator-aisim/

相关推荐
冬奇Lab18 小时前
每日一个开源项目(第121篇):tiktoken - OpenAI 出品的极速 BPE 分词器
人工智能·开源·openai
冬奇Lab18 小时前
Agent 系列(12):Agent 评估框架——怎么知道你的 Agent 到底好不好
人工智能·agent
Elastic 中国社区官方博客18 小时前
Kibana:使用 AI Chat 及 MCP 轻松创建 AI 原生仪表板
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·信息可视化
MartinYeung518 小时前
[论文学习]LLM 与其他 AI 模型的隐私考量:输入与输出隐私框架方法
人工智能·学习
Thomas_YXQ18 小时前
Unity无GC读取图片与网格完整方案
大数据·人工智能·unity·微信·产品运营
qcx2318 小时前
【AI Daily】AI日报 2026-06-02
人工智能·产品设计·ai agent
搭贝19 小时前
低代码+AI赋能文化传媒财务结算:搭贝平台技术架构与实战解析
人工智能·低代码·架构
城事漫游Molly19 小时前
AI赋能质性研究(一):质性编码全流程 AI Prompt 包
人工智能·prompt·ai for science·定性研究
王牌狮AIen19 小时前
商业重构——当AI开始“自己开会”:品牌智能体的觉醒与超级个体的崛起
人工智能·重构