SUMO二次开发——基于Flow Project

Flow project 介绍

微观仿真主要有:MATLAB 元胞自动机;VISSIM;SUMO。
SUMO的界面其实比较简陋,本文将介绍SUMO的二次开发。对于SUMO的二次开发需要用到TraCI接口,但是网上的资料还是比较少,加州伯克利实验室对此进行了二次封装,项目名为flow project(可以在Github搜索),但是我在现在的安装过程中发现了依赖包的冲突,然后我在Stackoverflow上面看到了很多网友的类似问题,但是已经好久没人回答了,这个项目应该没人用心维护了,所以有些BUG也解决不了。
在这里插入图片描述

一位博主顺利地解决了bug,并且对此项目做了优化,这是我的主要参考资料,点击超链接查看。但是参考他的安装过程,身为小白的我,自身也遇到了很多问题,历经坎坷,最终成功安装。因此把这个记录下来,也希望能给同样安装这个项目的人一些更细致的帮助。本文所有的系统,环境都是尽量接近上面博主,不然很可能出错误。

安装的整个过程中,如果发现还是会有错误提示,就把整个错误提示代码复制下来进行搜索,或许会有很好的解决方法。

本文软件配置:
VMware workstation Pro 16
Ubuntu 16.04.07 LTS
Anaconda3-2019.07-Linux-x86_64(conda 4.7.10)

Ubuntu 安装

首先得利用Linux的Ubuntu系统,因此可以选择安装双系统或者在虚拟机安装Ubuntu系统。对于性能稍微较高的可以选用虚拟机。本文采用后者。
1.本文下载了VMware workstation Pro 16
2.下载Ubuntu 16.04.07 LTS镜像文件(由于在官网下载比较慢,所以用镜像;以及对于Flow项目,只涉及14;16;18这三个版本,博主第一次安装的20.04之后又删除重新下载了)
3.在VM里面安装ubuntu 16.04
如果这个链接失效了可预览
可以输入永久注册密匙,YF390-0HF8P-M81RQ-2DXQE-M2UT6
如果失效可以查一下最新的
我与上面不同,我在安装时选择了中文语言。并且硬盘我设置了40G(我看了下我现在已经用了20+的空间了。这个后面可以拓展,但是应该比较麻烦)。虚拟机内存设置了9472MB(这个可以在虚拟机设置里面更改)。

Anaconda安装

我之前下载了好多版本的anaconda,但是不知道是不是自己的其他操作问题还是版本的问题,我前面几次没有成功,会出现一些依赖包等等的问题。Anacond2里面的python版本是2,Anaconda3里面的版本是3.最终我的成功的版本是Anaconda3-2019.07-Linux-x86_64.sh
这个在官网很难下载的,搜一下历史版本下载。我是把这个安装包放在home/user目录了,其他地方应该也没问题。然后在这个目录下运行终端,进行安装。
终端依次输入

bash Anaconda3-2019.07-Linux-x86_64.sh

安装过程中一直按enter,直到提醒你安装目录,还是按 enter(默认目录),之后提示你要不要添加环境变量还是初始化啥的,输入NO,之后输入

which conda
conda --version

如果运行上面之后啥信息也没有,说明anaconda没安装成功,如果有信息那么恭喜你安装成功了。关闭终端。

Flow 安装

下载flow(两种方式,推荐第二种)

1.云盘下载
可以在提前在windows用云盘下载,速度更快,然后用U盘拷贝到Ubuntu,注意需要把VM设置里面的USB设置成为3.0+的接口,不然U盘不能被识别,然后直接把U盘里面的文件拷贝到Ubuntu.注意如果下载的flow文件夹点开来里面只有一个也叫flow的二级文件夹,那只要把这个二级文件夹拖入Ubuntu,不要外面这个一级文件夹了,不然对于不理解接下来ubantu命令行操作的人可能会出错。
2. 或者直接命令行下载(推荐)
终端输入(ctrl+alt+T)

git clone https://github.com/BingLiHanShuang/flow.git

3.设置全局清华源,切换到flow文件夹,且切换到highway_newfunc分支,配置属于flow的专属环境(flow_new2),安装此环境的需求文件(需要的各种包),安装flow
终端依次输入
1.pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
(之前如果下载的anaconda2,这个好像就用不了,config会有问题)
2. cd flow(切换到flow目录)
3. git checkout highway_newfunc(切换到highway_newfunc分支)
4.conda env create -f environment.yml(创建专属环境,建立依赖,可以自己点开这个文件去看看这里面有什么)
5.conda env list (或者 conda info --envs 可以查看现在存在什么环境,目前又处在哪个环境里面(后面带星星号的就是目前的环境,如果不切换环境的话,就是默认的Base环境)还可以运行conda list,看看环境里面有什么)
6.conda activate flow_new2(切换到新环境)
7.如果上面切换不了,有错误提示CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’,则依次输入
source activate (输入之后,后面的命令行前面会有一个括号,里面是你目前的环境,如果提示命令过时的话,或许可以用 conda activate)
conda activate flow_new2 (切换环境,之后的语句前面会带着括号flow_new2,说明你处在这个环境里面,环境切换成功)
8.pip install -r requirements.txt (安装需求文件,一定要在flow_new2的环境里面下载,也就是前面显示了包含这个环境名的括号)
9.python setup.py develop(经过之间的步骤,我们为flow建立了专属环境,并且在这个环境里面安装了许多依赖包,保障flow 的顺利安装。这一步就是安装flow,前面的一切都是为了给它做准备。如果这个超时,可以多运行几遍。运行成功,退出终端。)

SUMO 安装

似乎SUMO不需要从flow_new2安装?没试过。
我是直接ctrl+alt+T进入终端
如果输入

./flow/scripts/setup_sumo_ubuntu1604.sh

你发现它提示权限不足,则运行此脚本之前,需要提权。而且提权之后,很可能发现下载会很慢,或者无法进入下载链接,导致有一些依赖库无法下载,因此需要设置源(加快下载速度)。而且会有pip3找不到命令的提示,需要安装python3-pip。
首先设置源:
一开始我按照一个方法去更改配置文件,把/var/lib/apt/lists 用rm全部删除了,后面又叫我去更改一个文件,我怕改了之后万一没成功就弄不回来了,就没改,我就查到了下面的方法,亲测方便有效。

在系统-软件与更新-bantu软件中,在那个“下载自”的下拉框中选择其他站点,然后点 “选择最佳服务器”系统会测试并自动给你匹配最佳的服务器,比如我就匹配到了cqu重庆大学的服务器

系统会测试并自动给你匹配最佳的服务器,比如我就匹配到了cqu重庆大学的服务器
这里我把勾勾都取消了,最终结果也没影响
这里我把勾勾都取消了,最终结果也没影响

这里要勾选前面两个

这里要勾选前面两个,否则有冲突( “无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系”
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是因为系统无法达到您要求的状态造成的”)
然后在终端输入

sudo apt-get update

进行更新,然后升级Pip (如果之前安装的是anaconda2,那么它的默认环境中的python是2,对应的pip也是2.貌似无法直接升级pip,有点麻烦,所以还是选3吧)

sudo apt install python3-pip

给脚本提权

Chmod 777 ./flow/scripts/setup_sumo_ubuntu1604.sh

执行SUMO脚本(点进去看这个脚本文件就知道,里面包括安装SUMO环境依赖,安装SUMO等等)

./flow/scripts/setup_sumo_ubuntu1604.sh

反正你要看到所有的链接都执行了,否则就不会安装成功。
检查SUMO

which sumo
sumo --version
sumo-gui

到这里就结束了。全部安装完成。
如果上面的命令没用,试试执行:

source ~/.bashrc

大概也没啥用

如果上面都成功了,就可以开始你的仿真啦!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SUMO是一款开源的交通仿真软件,可以用于模拟城市道路网络中的车辆运行情况。为了方便用户进行二次开发和定制化需求,SUMO提供了详细的二次开发手册。 该手册以官方文档的形式提供,涵盖了SUMO的各个方面。首先介绍了SUMO的基本架构和使用方式,包括安装、配置和启动SUMO仿真器。然后介绍了SUMO的核心概念,如车辆、道路、交通灯等,并详细说明了它们的属性和用法。 在开发部分,手册详细介绍了SUMO的API(应用程序接口),包括如何使用Python、Java等编程语言与SUMO进行交互。这里涵盖了各种API的使用方法和示例代码,包括创建、修改和删除车辆、路口、边缘等对象。 此外,手册还介绍了SUMO的事件处理机制和路由选择算法。通过事件处理,用户可以对仿真过程中发生的事件进行监听和处理,如车辆到达某个位置、交通灯变化等。而路由选择算法可以用于设定车辆的行驶路线,用户可以根据需求自定义这些算法。 最后,手册还包含了一些额外的功能和工具,如SUMO-GUI(图形用户界面)、SUMO-TraceExporter(轨迹导出工具)等。这些工具可以帮助用户进行可视化分析和数据处理,进一步扩展了SUMO的应用范围。 总之,SUMO二次开发手册提供了全面而详细的指导,帮助用户轻松理解和使用SUMO的二次开发功能。无论是初学者还是有经验的开发者,都能从中获得实用的信息和技巧,实现个性化的交通仿真需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值