0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

康谋keymotek 2024-07-10 15:52 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在之前的两篇文章中(文末往期回顾中可查看),我们主要介绍了功能模型接口FMI的主要组成部分和一些使用场景,今天就以康谋自动驾驶仿真软件aiSim为例,来展示一下如何建立一个FMU并实现基于UDP和FMI联合仿真(co-simulation)数据通信

一、效果预览

wKgZomaOOyeAFzTUAIwGreSZv_s310.pngPC1 aiSim运行效果

wKgZomaOO0WATQ_6AIFwXAitS9s601.pngPC2 读取FMU和UDP通讯

二、相关配置

OS:Ubuntu22.05

仿真软件:aiSim 5.2.0

首先是要构建所需要的FMU,在一些动力学仿真软件上,如CarSim,可以直接导出动力学模型对应的FMU文件,但本次我们基于C++从零构建FMU文件。

需要编辑的6份文件分别是:

fmi_simple_car.cpp:根据FMI2.0标准实现一个车辆模型

simple_car.h:车辆模型的头文件

simple_car.cpp:车辆模型的实现文件

value_reference_ids.h:定义值应用ID的头文件

modelDescription.xml:定义FMU结构的根文件

simple_car_fmu.json文件:用于将构建的FMU文件映射到aiSim的车辆动力学中(非构建FMU所必须)

三、操作步骤

首先是fmi_simple_car.cpp文件主要包含了6个部分,最终实现为模拟控制一个简单的车辆模型,包括了实例化、设置参数,执行仿真步骤以及获取和设置模型参数的功能。

头文件:

include "fmi2Functions.h" (是FMI2.0标准的头文件,请参考FMI官网)

include

include

include "simple_car.h"

1、实例化

实例化FMU,在之前的文章中我们以C语言为例,本次采用C++来做示范。

fmi2Component fmi2Instantiate( fmi2String /*实例名称*/, fmi2Type fmuType /*实例类型(ME/CO)*/, fmi2String /*唯一标识符*/, fmi2String /*资源位置*/, const fmi2CallbackFunctions* /*回调函数*/, fmi2Boolean /*是否可见*/, fmi2Boolean /*是否启用日志*/) {/*此处可以与用判断车辆实例是否在使用、检查FMU的类型是ME模型交换还是CO联合仿真、执行实例化车辆*/ car_is_used = True; //预先设置的标志变量,用于表示表示车辆是否正在使用 returen &only_one_car; //预先定义的全局SimpleCar对象only_one_car }

2、FMU交互

实例化完成后,我们要实现一系列函数用于FMU交互的具体实现,主要包含获取和设置变量,执行仿真步骤等。

① 获取类型

获取实数,通过遍历引用数组vr,获取对应的值并存储。

fmi2Status fmi2GetReal(fmi2Component /*c*/, const fmi2ValueReference vr[], size_t nvr, fmi2Real value[]){ for (size_t i = 0; i < nvr; ++i) { value[i] = only_one_car.GetValue(vr[i]); } return fmi2OK; }

同样还能够实现获取整数、布尔值和字符串值。

② 设置类型

设置实数,同样通过only_one_car.SetValue(vr[i], value[i])设置对应的值。

fmi2Status fmi2SetReal(fmi2Component /*c*/, const fmi2ValueReference vr[], size_t nvr, const fmi2Real value[]){ for (size_t i = 0; i < nvr; ++i) { only_one_car.SetValue(vr[i], value[i]); } return fmi2OK; }

同样还能够实现获取整数、布尔值和字符串值。

③ 执行仿真

获取实联合仿真函数(CO),可以是根据之前实数和证书引入导数计算,又或是引入仿真步骤的执行和取消数,通过遍历引用数组vr,获取对应的值并存储。

比如执行仿真步骤,其中DoStep将会在Simple_car.cpp中实现:

fmi2Status fmi2DoStep(fmi2Component /*c*/, fmi2Real /*currentCommunicationPoint*/, fmi2Real communicationStepSize, fmi2Boolean /*newStep*/){ log_to_file("fmi2DoStep()"); only_one_car.DoStep(communicationStepSize); return fmi2OK; }

同样还能够实现获取整数、布尔值和字符串值。

3、初始化和释放

除此之外,我们还需要注意在仿真过程中FMU实例的初始化和释放。

比如我们可以简单的通过设置car_is_used= false实现实例的释放,可以通过only_one_car = SimplerCar()来实现FMU的重置,其中SimplerCar类的具体实现在simple_car.cpp中。

以上就是基于FMI2.0实现车辆模型时所需的基本内容,剩余的内容我们将在后续的文章中进行分享。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9623

    浏览量

    157726
  • 仿真软件
    +关注

    关注

    21

    文章

    287

    浏览量

    32010
  • 自动驾驶
    +关注

    关注

    795

    文章

    15043

    浏览量

    181906
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    软件在环(SIL)测试方案及aiSim实现路径

    资源紧张、调试成本高、接口适配复杂、算法早期验证困难等问题,而成熟的SIL测试方案可有效破解上述困境。aiSim仿真平台所构建的SIL测试体系,是针对这些痛点的解决方案之一,其核心
    的头像 发表于 04-08 13:51 796次阅读
    软件在环(SIL)测试方案及<b class='flag-5'>康</b><b class='flag-5'>谋</b>aiSim实现路径

    如何构建适合自动驾驶的世界模型

    [首发于智驾最前沿微信公众号]世界模型经历了系统动力学阶段(1960年~2000年)、认知科学阶段(2001年~2017年)、深度学习阶段(2018年至今),但将其应用到自动驾驶汽车上,还是近几年才
    的头像 发表于 02-18 08:14 1.1w次阅读
    如何构建适合<b class='flag-5'>自动驾驶</b>的世界<b class='flag-5'>模型</b>?

    新闻 | 与Coppelia Robotics正式建立合作伙伴关系!

    我们很高兴地宣布:与全球领先的机器人仿真软件提供商CoppeliaRobotics正式建立合作伙伴关系。双方将整合各自在自动驾驶仿真测试
    的头像 发表于 02-09 17:33 4019次阅读
    <b class='flag-5'>康</b><b class='flag-5'>谋</b>新闻 | <b class='flag-5'>康</b><b class='flag-5'>谋</b>与Coppelia Robotics正式建立合作伙伴关系!

    自动驾驶场景生成方法及优选方案:aiSim 3DGS方案重塑行业标准

    生成技术应运而生,其中 aiSim 3DGS方案 凭借技术突破与工程化落地能力,成为自动驾驶场景生成领域的优选方案。 一、自动驾驶场景生成是什么?核心需求与传统痛点 (一)
    的头像 发表于 02-02 17:39 534次阅读

    自动驾驶仿真软件推荐:aiSim——ISO 26262 ASIL-D 认证的高保真选择

    、性价比高且符合自身研发需求的平台,成为众多企业和研究机构关注的重点。 本文基于权威行业信息,对主流自动驾驶仿真软件进行梳理,简单罗列国内外仿真平台有哪些,并重点解析
    的头像 发表于 01-22 16:49 638次阅读

    深度解析:双模态仿真测试解决方案!

    随着端到端自动驾驶架构的兴起,传统基于规则的仿真测试正面临“真实感不足”与“场景泛化难”的双重挑战。本文深入解析推出的双模态仿真测试解决
    的头像 发表于 11-21 17:32 9126次阅读
    深度解析:<b class='flag-5'>康</b><b class='flag-5'>谋</b>双模态<b class='flag-5'>仿真</b>测试解决方案!

    自动驾驶数据采集时间同步指南:方法、挑战、场景与解决方案

    自动驾驶数据采集面临多传感器协同与多总线协议割裂的挑战,时间同步精度直接影响系统安全与研发效率。科技推出"全以太网+gPTP"方案,通过硬件级时间戳、多协议转以太网聚合等技术
    的头像 发表于 11-21 16:48 2376次阅读

    L4级自动驾驶数据采集系统首选——科技DATALynx ATX4 &amp; BRICK系列全解析

    自动驾驶数据采集面临多源传感器融合、稳定性和实时性大挑战。科技推出DATALynx车载服务器和BRICK2记录设备,提供高性能解决方案:支持20+类传感器、极端环境稳定运行、50
    的头像 发表于 11-20 16:16 1132次阅读

    端到端智驾仿真软件推荐:全球首款ASIL-D认证平台助您突破自动驾驶测试瓶颈

    随着L4级自动驾驶商业化进程加速,行业面临"16亿公里实测困境"与"极端场景覆盖率不足95%"的双重挑战。科技推出的aiSim端到端智驾仿真平台,凭借全球首个ISO 26262 A
    的头像 发表于 11-19 13:26 757次阅读

    新闻 | 实力认证!aiSim荣获ASAM“自动驾驶仿真技术奖”

    、零部件供应商、科技公司及行业专家,共探先进数据与仿真技术融合、ASAM国际标准应用等核心热点。受邀参会并深度参与交流,凭借技术硬实力斩获“自动驾驶
    的头像 发表于 11-11 17:33 2425次阅读
    <b class='flag-5'>康</b><b class='flag-5'>谋</b>新闻 | 实力认证!<b class='flag-5'>康</b><b class='flag-5'>谋</b>aiSim荣获ASAM“<b class='flag-5'>自动驾驶</b><b class='flag-5'>仿真</b>技术奖”

    aiSim 携经纬恒润焕新 HIL 测试,诚邀集成商共建生态!

    在智能驾驶从“模块化”迈向“端到端”的技术浪潮中,高保真、全链路的仿真测试已成为行业刚需。科技推出的aiSim端到端智驾仿真软件,与经纬
    的头像 发表于 10-28 17:32 714次阅读
    <b class='flag-5'>康</b><b class='flag-5'>谋</b> aiSim 携经纬恒润焕新 HIL 测试,诚邀集成商共建生态!

    新闻 | 加入ASAM组织,全球首个ASIL-D认证自动驾驶仿真平台aiSim引领安全新标杆

    !ASAM作为国际汽车行业标准化领域的权威机构,致力于推动仿真、测试及数据交互的标准化进程。此次加入,标志着自动驾驶仿真技术领域的创新
    的头像 发表于 08-29 16:57 1315次阅读
    <b class='flag-5'>康</b><b class='flag-5'>谋</b>新闻 | <b class='flag-5'>康</b><b class='flag-5'>谋</b>加入ASAM组织,全球首个ASIL-D认证<b class='flag-5'>自动驾驶</b><b class='flag-5'>仿真</b>平台aiSim引领安全新标杆

    加入ASAM组织,自动驾驶仿真平台aiSim引领安全新标杆

    科技正式加入全球汽车标准化组织 ASAM(Association for Standardization of Automation and Measuring Systems),成为其正式会员单位!
    的头像 发表于 07-09 16:53 884次阅读
    <b class='flag-5'>康</b><b class='flag-5'>谋</b>加入ASAM组织,<b class='flag-5'>自动驾驶</b><b class='flag-5'>仿真</b>平台aiSim引领安全新标杆

    分享 | 基于多传感器数据的自动驾驶仿真确定性验证

    自动驾驶仿真测试中,游戏引擎的底层架构可能会带来非确定性的问题,侵蚀测试可信度。如何通过专业仿真平台,在多传感器配置与极端天气场景中实现测试数据零差异?确定性验证方案已成为自动驾驶研发
    的头像 发表于 07-02 13:17 4424次阅读
    <b class='flag-5'>康</b><b class='flag-5'>谋</b>分享 | 基于多传感器数据的<b class='flag-5'>自动驾驶</b><b class='flag-5'>仿真</b>确定性验证

    为什么仿真对于自动驾驶来说非常重要?

    [首发于智驾最前沿微信公众号]自动驾驶仿真是当前自动驾驶技术研发与验证体系中不可或缺的重要环节。它通过构建虚拟的道路场景、车辆动力学模型以及传感器感知环境,实现对
    的头像 发表于 05-23 09:13 1090次阅读
    为什么<b class='flag-5'>仿真</b>对于<b class='flag-5'>自动驾驶</b>来说非常重要?