一种使用 SUMO + Python 联合仿真平台

一种使用 SUMO + Python 联合仿真平台(一)
本文适用人群包括但不仅限于【交通运输】【车辆工程】【自动化控制】【计算机科学与技术】等专业本科生、研究生、博士生。本文通过在Pycharm平台,使用Python语言 + Traci工具包,调用SUMO客户端进行微观仿真。其项目结构如下所示:
在这里插入图片描述

一、下载安装Python

1.本文给出Python的下载链接,如果是3.8-3.10版本的不用重复下载:Python下载官方链接
值得一提的是,目前有部分Python高版本在与SUMO仿真中并不稳定,本作者亲测Python3.10.5版本表现良好。
2.下载Python 3.10.5
如下图所示:进行download
在这里插入图片描述
3.下载64位Windows,点击即可下载
在这里插入图片描述
4.安装Python
选中【Add Python 3.10 to PATH】,目的是将Python路径添加到环境变量、用户变量里面,紧接着【Customize installation】进行自定义安装,选择适合自己的安装路径,(这里有坑,继续往下看
在这里插入图片描述
5.选择【next】
在这里插入图片描述
6.选择路径安装【书接上文避坑
其实很多人的计算机用户名带中文字符,如果默认安装,很有可能在今后的学习使用过程中出现路径名称识别不出来的情况,【血泪教训😭】,可以在C盘根目录底下直接新建一个文件夹并命名为【Python】,然后直接【install】
在这里插入图片描述
7.检查环境变量、用户变量
直接【Win + R】输入 【sysdm.cpl】进入计算机 管理界面,选择【环境变量】
在这里插入图片描述
7.1用户变量,选中【PATH】==》再选择【编辑】
在这里插入图片描述
出现以下两个文件路径即环境配置正确
在这里插入图片描述
7.2系统变量,选中【PATH】=>再选择【编辑】
在这里插入图片描述
出现以下两个文件路径即环境配置正确
在这里插入图片描述
8. 测试Python,【Win + R】进入运行窗口,输入【cmd】进行命令行界面,输入【python】
出现以下内容即为配置成功
在这里插入图片描述

二、下载安装SUMO

1.本文给出最新的SUMO下载链接:SUMO官网下载链接
2.选择最新版本第一个下载:
在这里插入图片描述
3.进入安装界面,直接【next】, 【I accept the term in the License Agreement】and 【next】一套不解释连招
在这里插入图片描述
4.更换安装路径
这里可以换一个盘安装,如果您的C盘是系统盘,为了减少消耗,可以放其他盘,比如,我放的是E盘,并新建了文件夹【SUMO】,最后直接【install】即可
在这里插入图片描述
5.系统变量环境配置
【Win + R】进入运行窗口,输入【sysdm.cpl】进入计算机【高级】管理页面,选择【环境变量】
在这里插入图片描述
6.选择【PATH】并【编辑】
在这里插入图片描述
7.将【tools】目录下的【libsumo】和【libtraci】添加到系统变量里面
在这里插入图片描述
8.需要将sumo里面【tools】的路径写入pyhton的【sitep-ackage】路径下
8.1首先进入本文的Pyhton包管理器的路径【C:\Python\Lib\site-packages】,新建一个记事本文件【traci.txt】
在这里插入图片描述
8.2复制SUMO里面的【tools】路径
在这里插入图片描述
8.3编辑【traci.txt】文件
在这里插入图片描述
8.4修改文件后缀名称【traci.txt】=》【traci.pth】
在这里插入图片描述

三、SUMO仿真软件搭建仿真交通流

想要运行SUMO仿真软件,您一共需要3个文件——2个xml和1个sumocfg文件,均要在同一个文件夹下面,如图所示:
在这里插入图片描述
以下为您介绍:
1.test.net.xml文件
这个文件保存的是您所创建的道路等,可以通过netedit软件(SUMO安装以后自带的,如果没找到可以查看SUMO安装路径下的【bin】目录寻找【netedit.exe】),从【File】下新建【new Network】
在这里插入图片描述
1.1 netedit启动正常界面
在这里插入图片描述
1.2 页面简单介绍
在这里插入图片描述
1.3选择【连画】=》点击电脑屏幕左右两下
在这里插入图片描述1.4 创建双向车道
在这里插入图片描述
1.5 点击您所创建的道路,右键【edge opreration】=>【add reverse direction for edge】在这里插入图片描述
结果如下:
在这里插入图片描述
您可以将在此编辑的道路保存文件至您的目的文件夹下面。
2. test.rou.xml文件或者是test.trips.xml
这两个文件都是定义车流的文件,但是trips.xml可以直接用指令通过将上文中的test.net.xml文件生成,仅仅只做测试使用,本文为满足大多数人科研使用,给出2种配置方法,而不是随机车流。
2.1 通过netedit软件【demand】界面定义
在【demand】界面,有2种方式可生成交通流:路线和路由
(1)路线是通过选择道路的边从而确定车辆行驶路线,这里需要保持路线行驶方向一致,不能反方向行驶
(2)路由有多种行驶方式:trip、vehicle、flow等
在这里插入图片描述
2.2 通过代码进行定义,需要有一定代码基础类似于html
在这里插入图片描述
3. sumocfg文件,其实是将【test.net.xml】和【test.trips.xml】文件进行关联以及定义仿真配置等
在这里插入图片描述

四、Pycharm平台搭建

1.本作者这边已经通过【files】=》【setting】=>【plugin】安装了【chinese】(第二个)汉化工具包
2.一些必备的工具包下载,可通过底部【终端】直接下载:

1.  pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple
2.  pip install scipy -i https://pypi.tuna.tsinghua.edu.cn/simple
3.  pip install traci -i https://pypi.tuna.tsinghua.edu.cn/simple
4.  pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

3.调用SUMO平台代码(实例)

import os
import sys
import optparse
import traci
import time
from sumolib import checkBinary
import numpy as np

# 检测是否已经添加环境变量
if 'SUMO_HOME' in os.environ:
    tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
    sys.path.append(tools)
else:
    sys.exit("please declare environment variable 'SUMO_HOME'")


def get_options():
    optParser = optparse.OptionParser()
    optParser.add_option("--nogui", action="store_true",
                         default=False, help="run the commandline version of sumo")
    options, args = optParser.parse_args()
    return options


if __name__ == "__main__":
    options = get_options()
    if options.nogui:
        sumoBinary = checkBinary('sumo')
    else:
        sumoBinary = checkBinary('sumo-gui')
    sumocfgfile = "E:\\pythonProject\\Changda\\test.sumocfg"  # sumocfg文件的位置,你需要自己修改
    traci.start([sumoBinary, "-c", sumocfgfile])  # 打开sumocfg文件

    for step in range(0, 3600):  # 仿真时间
        traci.simulationStep()  # 一步一步(一帧一帧)进行仿真
        # time.sleep(0.1)
        simulation_time = traci.simulation.getTime()  # 获得仿真时间
        print("========================================")
        print("仿真时间是", simulation_time)
        #你可以在此编写你所需要的代码
        """
        	比如你所希望实现的匝道、速度漏斗、跟驰模型、换道模型算法、也可以搭配强化学习等
        """
    traci.close()

【以上就是本文全部内容,坚持每日一更新😎,下期内容为Unity + Traci + SUMO 联合仿真,其使用的脚本语言为C#,喜欢的同学可以加个关注哦🎈】

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【步联科技身份证】 身份证读取与解析———未来之窗行业应用跨平台架构

一、身份证解析代码 C# function 身份证数据解析_湖南步联科技(wzxx) {var result {};result[xm] wzxx.substr(0, 15);result[xbdm] wzxx.substr(15, 1);result[mzdm] wzxx.substr(16, 2);result[csrq] wzxx.substr(18, 8);result[dzmc] wzxx.substr(26, 35);result[gms…

Ansible-template模块动态生成特定文件

文章目录 一、Jinja2介绍什么是主要特性安装基本用法进阶特性总结 Jinja2与Ansible关系1. 模板引擎2. Ansible 的依赖3. 变量和模板4. 动态生成配置5. 社区和生态系统总结 二、Ansible如何使用Jinja2使用template模块Jinja2文件中使用判断和循环Jinja2文件中使用判断语法 Jinja…

如何在算家云搭建text-generation-webui(文本生成)

一、text-generation-webui 简介 text-generation-webui 是一个流行的用于文本生成的 Gradio Web UI。支持 transformers、GPTQ、AWQ、EXL2、llama.cpp (GGUF)、Llama 模型。 它的特点如下, 3 种界面模式:default (two columns), notebook, chat支持多…

Vue发送邮件攻略:从搭建到实现详细步骤?

vue发送邮件功能实现方法?Vue前端如何实现发送邮件? 随着应用功能的不断扩展,用户交互的复杂性也在增加。其中,发送邮件功能是许多Web应用中不可或缺的一部分。AokSend将详细介绍如何使用Vue.js实现发送邮件功能。 Vue发送邮件&…

Springboot指定扫描路径

方式一:通过在启动类的SpringbootApplication中指定包扫描或类扫描 指定需要扫描的包 scanBasePackages{"待扫描包1","待扫描包2", . . . ," "} 指定需要扫描的类 scanBasePackageClasses{类1.class,类2.class,...} 方式二&#xff…

STM32F103C8----3-1 LED闪烁(跟着江科大学STM32)

一,电路图 接线图 面包板的的使用请参考:《面包板的使用_面包板的详细使用方法-CSDN博客》 二,目的/效果 2.1 推婉输出 外部供电(熄的时间长) 2.2 推婉输出 内部供电(亮的时间长) 三,创建Keil项目 详…

音乐项目总结(终)

总的来说写这个项目还是状态差了,前期中期写太慢,后期疯狂赶。 讲点对写这个项目能想起来解决的问题和写的的感触。 前期:当时觉得时间很充足,有布置算法题,我竟然还花三四天去学算法,,动态规划…

【网络安全】网络基础第一阶段——第三节:网络协议基础---- VLAN、Trunk与三层交换技术

目录 一、交换机 1.1 交换机定义 1.1.1 交换机 1.2 工作原理 1.2.1 数据帧的转发 1.2.2 交换机处理数据帧的三种行为 1.2.3 交换机通信 二、虚拟局域网(VLAN) 2.1 虚拟局域网简介 2.1.1 为什么需要VLAN 2.1.2 广播域的分割与VLAN的必要性 2.…

FPGA实现PCIE图片采集转HDMI输出,基于XDMA中断架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图测试图片QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存Native视频时序生成RGB转HDMI输出模块Windows版本XDMA驱动安装Linux版本XDMA驱动安装工程源码…

Stable Diffusion绘画 | 来训练属于自己的模型:素材处理与打标篇

纵观整个模型训练流程,图片素材准备和打标环节占据的分量比重,绝对超过60%。 上一篇分享了图片素材准备,这一篇,开始对准备好的图片素材进行处理了。 素材处理 我已经收集了 霉霉 的25张图片: 但是,发现…

基于ESP8266—AT指令连接阿里云+MQTT透传数据(1)

在阿里云创建MQTT产品的过程涉及几个关键步骤,主要包括注册阿里云账号、实名认证、开通MQTT服务实例、创建产品与设备等。以下是详细的步骤说明: 一、准备工作 访问阿里云官网,点击注册按钮,填写相关信息(如账号、密码、手机号等)完成注册。注册完成后,需要对账号进行实…

【C++】多态(上)

个人主页~ 多态 一、多态的概念二、多态的定义以及实现1、多态的构成条件2、虚函数3、虚函数的重写虚函数重写的两个特殊情况①协变② 析构函数的重写 4、C11的override和final(1)final(2)override 5、重载、重写、隐藏的对比 三、…

828华为云征文|部署在线文档应用程序 CodeX Docs

828华为云征文|部署在线文档应用程序 CodeX Docs 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 CodeX Docs3.1 CodeX Docs 介绍3.2 CodeX Docs 部署3.3 CodeX…

讯飞星火编排创建智能体学习(三):搜索工具

目录 概述 搜索工具节点 测试结果 和星火网页版对照 概述 在前面两篇博文(讯飞星火编排创建智能体学习(一)最简单的智能体构建-CSDN博客和讯飞星火编排创建智能体学习(二)决策节点-CSDN博客)中&#xf…

Star 3w+,向更安全、更泛化、更云原生的 Nacos3.0 演进

作者:席翁 Nacos 社区刚刚迎来了 Star 突破 30000 的里程碑,从此迈上了一个新的阶段。感谢大家的一路支持、信任和帮助! Nacos /nɑ:kəʊs/是 Dynamic Naming and Configuration Service 的首字母简称,定位于一个更易于构建云原…

视频融合共享平台LntonAIServer视频智能分析抖动检测算法和过亮过暗检测算法

LntonAIServer作为一款智能视频监控平台,集成了多种先进的视频质量诊断功能,其中包括抖动检测和过暗检测算法。这些算法对于提升视频监控系统的稳定性和图像质量具有重要意义。 以下是对抖动检测算法和过暗检测算法的应用场景及优势的详细介绍。 一、L…

Matlab实现鲸鱼优化算法优化回声状态网络模型 (WOA-ESN)(附源码)

目录 1.内容介绍 2部分代码 3.实验结果 4.内容获取 1内容介绍 鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种基于座头鲸捕食行为的群智能优化算法。该算法通过模仿座头鲸使用螺旋形路径和包围猎物的策略来探索和开发解空间,以找到…

【面试题】软件测试实习(含答案)

软件测试实习常见面试题,主要是功能测试相关的基础问题 目录 一、软件测试基础 1、介绍一下你最近的项目,以及工作职责 2、软件项目的测试流程? 3、黑盒测试与白盒测试的区别? 4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法 1&…

2024.9.28更换启辰R30汽车火花塞

2024.9.28周六汽车跑了11万公里,实在加速肉,起步顿挫,油耗在8个,决定更换火花塞。第一个火花塞要拆掉进气歧管。第二和第三个可以直接换。打开第二个火花塞一看电极都被打成深坑,针电极都被打凸。我有两个旧的火花塞&a…

遥感图像语义分割数据集制作(使用ArcGIS Pro)

0. 引言 图像分割就是把图像空间按照一定的要求分成一些“有意义”的区域的技术叫图像分割。一幅图像通常是由代表物体的图案与背景组成,简称物体与背景。若想从一幅图像中“提取”物体,可以设法用专门的方法标出属于该物体的点,如把物体上的…