自动驾驶仿真: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.mzph.cn/web/22520.shtml

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

相关文章

vuInhub靶场实战系列-DC-9实战

免责声明 本文档仅供学习和研究使用,请勿使用文中的技术源码用于非法用途,任何人造成的任何负面影响,与本人无关。 目录 免责声明前言一、环境配置二、信息收集2.1 主机发现2.2 端口扫描2.3 指纹识别2.4 目录扫描2.4.1 Nikto目录扫描2.4.2 dirsearch目录扫描 2.5 漏洞发现2.5.…

OTTO、亚马逊、Temu卖家如何运用测评补单来提高购买率?

在跨境电商的广阔舞台上,测评补单无疑是一股不可或缺的强劲动力。商家们深知,通过补单这一手段,能够快速为产品注入活力,使销量迅猛攀升,评论如潮涌至,进而在激烈的竞争中脱颖而出,勇攀销量之巅…

绘画新手必备!六款免费易用的绘图软件推荐

在当今的数字世界里有各种各样的设计创作工具,那么问题来了我们应该如何在众多免费绘图软件中选择呢?为了回答这个问题,我们将在本文中介绍和测评六个领先的绘图软件。每一个都有自己独特的特点和优势,适合不同的需求和用户。以下…

香港优才计划是什么?一文说明白2024香港优才政策、申请条件、流程及利弊

香港优才计划是拿香港身份比较热门的方式之一,对很多想要保留生活重心在内地,但是又需要香港身份为子女规划教育升学的人来说,申请香港优才计划是获取香港身份再好不过的方式。 我们刚开始了解香港优才计划可能会有各种各样的担心&#xff0…

Terraform安装+部署Azure Resource笔记

安装 下载 Terraform: 首先,访问 官方 Terraform 网站。找到适用于 Windows 的 Terraform 包,并下载 zip 文件。解压 Terraform 包: 将下载的 zip 文件解压到一个新文件夹中,命名为 “Terraform”。可以选择任何位置作…

IDC最新报告:预计到2027年全球数字化转型支出将近4万亿美元

根据国际数据公司(IDC)5月30日发布的《全球数字化转型支出指南》,预计到2027年全球数字化转型(DX)支出将接近4万亿美元。在人工智能(AI)和生成式人工智能(Generative AI)…

手机自动化测试笔记:1.appium的安装与使用

建议先安装前置的程序,同时建议使用anconda进行环境管理。 参考1: 深度学习笔记:1.anaconda安装-CSDN博客https://blog.csdn.net/weixin_42771529/article/details/139434840 参考2: 笔记:如何在pycharm中使用anaco…

EyeGlassesGAN——通过消除人脸所带的眼镜以提高人脸识别的精度

0. 引言 从人脸图像中自动去除眼镜的框架是一个具有挑战性的问题,因为它涉及到精确地识别和处理图像中的眼镜以及相关的眩光和有色镜片。以下是该论文可能提出的一些关键点: (1). 学习框架: 数据集构建:…

深入浅出mysql海量数据批量更新插入、批量查询

1. mysql的批量写 mysql 批量插入可以用下面这种,在values 之后跟上各种多个值列表。但这种写法可能导致sql长度超长、锁超时等问题。 insert into (field1,field1,field1,) values (value01,value02,value03),(value11,value12,value13),(value21,value22,value2…

使用springboot+vue实现阿里云oss上传

一、前言 我们后端开发中,时常需要用到文件上传的功能,无非是保存到服务器本地或者如阿里云、七牛云这种云存储的方案。本篇介绍一种使用后台springboot结合前端vue实现阿里云oss上传的功能。 二、实现过程 前端实现一个通用的上传组件UploadFile &l…

可以通过其瞳孔判断AI生成的人脸数据是否可靠

概述 我们都知道,GANs的发展使得生成相互之间无法区分的人脸图像成为可能。虽然这项技术在发展,但也有弊端,比如出现了用生成的人脸作为资料图片的虚假社交媒体账户。因此,随着GANs的发展,使用深度学习模型检测生成的…

Java Web学习笔记5——基础标签和样式

<!DOCTYPE html> html有很多版本&#xff0c;那我们应该告诉用户和浏览器我们现在使用的是HMTL哪个版本。 声明为HTML5文档。 字符集&#xff1a; UTF-8&#xff1a;现在最常用的字符编码方式。 GB2312&#xff1a;简体中文 BIG5&#xff1a;繁体中文、港澳台等方式…

ARM32开发——串口输出

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 需求串口数据发送串口打印实现复用功能串口发送流程&#xff08;了解&#xff09;串口的标志位关心的内容 需求 串口循环输出内容到…

大数据基础问题:在Hive中如何实现全增量统一的UDTF、内置函数、聚合、Join等计算引擎常见算子?

仁者见仁智者见智&#xff0c;每个程序员的方法都不一样&#xff0c;老的程序员和新的程序员之间的思维差距很大&#xff0c;新入公司的和老员工的代码差距也很大。 在Apache Hive中&#xff0c;实现全增量统一的用户定义表生成函数&#xff08;UDTF&#xff09;、内置函数、聚…

pdf文件怎么合并成一个文件

在现代办公环境中&#xff0c;PDF文件的使用已变得非常普遍。它们具有跨平台、易读性强的特点&#xff0c;因此被广泛应用于各种场合。然而&#xff0c;当需要处理大量的PDF文件时&#xff0c;如何有效地将它们合并成一个文件&#xff0c;成为了一个需要解决的问题。本文将详细…

【越界写null字节】ACTF2023 easy-netlink

前言 最近在矩阵杯遇到了一道 generic netlink 相关的内核题&#xff0c;然后就简单学习了一下 generic netlink 相关概念&#xff0c;然后又找了一到与 generic netlink 相关的题目。简单来说 generic netlink 相关的题目仅仅是将用户态与内核态的交互方式从传统的 ioctl 变成…

盘点学习Python常犯一些错误,你中了几个

对于刚入门的 Pythonista 在学习过程中运行代码是或多或少会遇到一些错误&#xff0c;刚开始可能看起来比较费劲。随着代码量的积累&#xff0c;熟能生巧当遇到一些运行时错误时能够很快的定位问题原题。下面整理了一些常见的 17 个错误&#xff0c;等你写出的代码不怎么出现这…

测试工具链

缺陷管理 bug管理工具 devops---项目管理--缺陷管理 bug管理地址 https://devsecops.mychery.com:8443/chery/project?filterROLE&statusACTIVE bug管理环境 采用公司的devops平台&#xff0c;对每个项目的bug进行管理。目前在使用 接口测试和服务端性能测试 工具…

斯坦福抄袭清华、面壁智能大模型,当事人已道歉、删项目

6月4日&#xff0c;两名斯坦福大学生Aksh Garg和Siddharth Sharma&#xff0c;承认抄袭清华和面壁智能联合开发的MiniCPM-Llama3-V2.5&#xff08;以下简称V2.5&#xff09;多模态大模型事件&#xff0c;并在社交平台公开道歉、删掉开源项目。 该抄袭事件也得到了斯坦福大学AI…

【python】成功解决“ImportError: cannot import name ‘triu’ from ‘scipy.linalg’”错误的全面指南

成功解决“ImportError: cannot import name ‘triu’ from ‘scipy.linalg’”错误的全面指南 在Python编程中&#xff0c;尤其是在使用scipy这个科学计算库时&#xff0c;可能会遇到ImportError错误&#xff0c;提示无法从scipy.linalg模块中导入名为triu的函数。这个错误通…