自动驾驶仿真: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,一经查实,立即删除!

相关文章

stm32编译原理

STM32编译原理主要包括以下几个方面: (1)编译器选择:STM32可以使用多种编译器进行开发,如Keil、IAR、GCC等。不同的编译器有不同的特点和优缺点,需要根据具体需求进行选择。 (2)编…

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

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

webpack怎么配置单页面或者多页面项目?

单页直接在entry中指定单页面的入口文件即可,对于多页面来说,如果页面之间有依赖关系可以考虑将entry的值改成一个数组,数组中的每一项是入口文件的地址,并且通过dependOn配置多个入口的依赖关系,一般的,我…

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…

力扣1493.删掉一个元素以后全为1

力扣1493.删掉一个元素以后全为1 单调队列&#xff1a;找到一个最多1个0的子数组 最终结果为该子数组长度-1 特判如果数组全0&#xff0c;return 0 class Solution {public:int longestSubarray(vector<int>& nums) {int res0,sum0;for(int i0,j0;i<nums.size(…

Kotlin 异常处理

文章目录 什么是异常抛出异常通过异常信息解决异常捕获异常 什么是异常 我们在运行程序时&#xff0c;如果代码出现了语法问题或逻辑问题&#xff0c;会导致程序编译失败或退出&#xff0c;称为异常。运行结果会给出一个一长串的红色字&#xff0c;通常会给出异常信息&#xf…

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

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

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

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

python中有时使用pip安装库而有时又使用conda安装库,到底应该使用哪个管理工具进行库的安装呀?

决定使用conda还是pip来安装Python库主要基于以下几个因素&#xff1a; 库的可用性&#xff1a; Conda&#xff1a;如果你要安装的库在Anaconda的默认频道或conda-forge等其他Conda频道中存在&#xff0c;优先使用conda install。Conda不仅管理Python包&#xff0c;还能管理非…

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

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

Ubuntu的基本使用(ROS)

Ubuntu的基本使用&#xff08;ROS&#xff09; 终端常用指令 1. ls - 列出目录内容 用途&#xff1a;显示当前目录下的文件和文件夹。示例&#xff1a; ls&#xff1a;列出当前目录下的所有文件和文件夹。ls -l&#xff1a;以列表形式显示更详细的信息&#xff08;如权限、所…

ARM32开发——串口输出

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

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

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