首页 > Python资料 博客日记
自动驾驶仿真:python和carsim联合仿真案例
2024-07-14 10:00:07Python资料围观384次
前言
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_solver
class 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 = True
else:
exist_flag = False
print(f'can not get dll api, please check the dll {dll_path}')
else:
exist_flag = False
print(f'please check dll_path or simfile_path existence or not')
return exist_flag
def 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 = 0
while 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
,具体内容如下图所示。
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程