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

04-08 261阅读

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

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

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

一、下载安装Python

1.本文给出Python的下载链接,如果是3.8-3.10版本的不用重复下载:Python下载官方链接

值得一提的是,目前有部分Python高版本在与SUMO仿真中并不稳定,本作者亲测Python3.10.5版本表现良好。

2.下载Python 3.10.5

如下图所示:进行download

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

3.下载64位Windows,点击即可下载

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

4.安装Python

选中【Add Python 3.10 to PATH】,目的是将Python路径添加到环境变量、用户变量里面,紧接着【Customize installation】进行自定义安装,选择适合自己的安装路径,(这里有坑,继续往下看)

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

5.选择【next】

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

6.选择路径安装【书接上文避坑】

其实很多人的计算机用户名带中文字符,如果默认安装,很有可能在今后的学习使用过程中出现路径名称识别不出来的情况,【血泪教训😭】,可以在C盘根目录底下直接新建一个文件夹并命名为【Python】,然后直接【install】

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

7.检查环境变量、用户变量

直接【Win + R】输入 【sysdm.cpl】进入计算机 管理界面,选择【环境变量】

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

7.1用户变量,选中【PATH】==》再选择【编辑】

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

出现以下两个文件路径即环境配置正确

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

7.2系统变量,选中【PATH】=>再选择【编辑】

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

出现以下两个文件路径即环境配置正确

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

8. 测试Python,【Win + R】进入运行窗口,输入【cmd】进行命令行界面,输入【python】

出现以下内容即为配置成功

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

二、下载安装SUMO

1.本文给出最新的SUMO下载链接:SUMO官网下载链接

2.选择最新版本第一个下载:

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

3.进入安装界面,直接【next】, 【I accept the term in the License Agreement】and 【next】一套不解释连招

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

4.更换安装路径

这里可以换一个盘安装,如果您的C盘是系统盘,为了减少消耗,可以放其他盘,比如,我放的是E盘,并新建了文件夹【SUMO】,最后直接【install】即可

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

5.系统变量环境配置

【Win + R】进入运行窗口,输入【sysdm.cpl】进入计算机【高级】管理页面,选择【环境变量】

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

6.选择【PATH】并【编辑】

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

7.将【tools】目录下的【libsumo】和【libtraci】添加到系统变量里面

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

8.需要将sumo里面【tools】的路径写入pyhton的【sitep-ackage】路径下

8.1首先进入本文的Pyhton包管理器的路径【C:\Python\Lib\site-packages】,新建一个记事本文件【traci.txt】

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

8.2复制SUMO里面的【tools】路径

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

8.3编辑【traci.txt】文件

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

8.4修改文件后缀名称【traci.txt】=》【traci.pth】

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

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

想要运行SUMO仿真软件,您一共需要3个文件——2个xml和1个sumocfg文件,均要在同一个文件夹下面,如图所示:

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

以下为您介绍:

1.test.net.xml文件

这个文件保存的是您所创建的道路等,可以通过netedit软件(SUMO安装以后自带的,如果没找到可以查看SUMO安装路径下的【bin】目录寻找【netedit.exe】),从【File】下新建【new Network】

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

1.1 netedit启动正常界面

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

1.2 页面简单介绍

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

1.3选择【连画】=》点击电脑屏幕左右两下

一种使用 SUMO + Python 联合仿真平台1.4 创建双向车道

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

1.5 点击您所创建的道路,右键【edge opreration】=>【add reverse direction for edge】一种使用 SUMO + Python 联合仿真平台

结果如下:

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

您可以将在此编辑的道路保存文件至您的目的文件夹下面。

2. test.rou.xml文件或者是test.trips.xml

这两个文件都是定义车流的文件,但是trips.xml可以直接用指令通过将上文中的test.net.xml文件生成,仅仅只做测试使用,本文为满足大多数人科研使用,给出2种配置方法,而不是随机车流。

2.1 通过netedit软件【demand】界面定义

在【demand】界面,有2种方式可生成交通流:路线和路由

(1)路线是通过选择道路的边从而确定车辆行驶路线,这里需要保持路线行驶方向一致,不能反方向行驶

(2)路由有多种行驶方式:trip、vehicle、flow等

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

2.2 通过代码进行定义,需要有一定代码基础类似于html

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

3. sumocfg文件,其实是将【test.net.xml】和【test.trips.xml】文件进行关联以及定义仿真配置等

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

四、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#,喜欢的同学可以加个关注哦🎈】

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]