SUMO入门(八) - TraCI
SUMO入门(八) - TraCI
TraCI
TraCI/Interfacing TraCI from Python
TraCI 是 “Traffic Control Interface” 的简写。
通过访问正在进行的道路交通模拟,它可以检索仿真对象的值并“在线”操纵它们的行为。
1 使用TraCI
SUMO启动
TraCI 使用基于TCP的客户端/服务器的体系结构来提供对SUMO的访问。
因此,SUMO充当使用其他命令行选项启动的服务器:–remote-port <INT> ,其中<INT>是SUMO用于侦听传入连接的端口。 可以连接的客户端数量可以作为附加选项 –num-clients <INT> 给出,其中1是默认值。 请注意,在多客户端方案中,您必须使用 SetOrder-command 明确指定客户端的执行顺序。
当使用 –remote-port <INT> 选项启动时,SUMO仅准备模拟并等待所有外部应用程序连接并接管控制。
当SUMO作为TraCI服务器运行时,将忽略 –end<TIME> 选项,SUMO将一直运行,直到客户端要求仿真结束。
使用 SUMO-GUI 作为服务器时,必须使用 播放按钮 或在处理TraCI命令之前设置选项 –start 来启动仿真。
关闭仿真
使用 TraCI 时,将忽略SUMO的 –end<TIME> 选项。 而是通过发出 close命令 来关闭仿真。
要检测所有路径文件是否已用尽且所有车辆都已离开仿真,可以检查命令 getMinExpectedNumber 是否返回0。一旦所有客户端发送了 close 命令,仿真将立即结束。
也可以使用load-command通过新的参数列表重新加载模拟。
TraCI命令
TraCI命令分为13个部分,它们对应于各个模块: gui,lane,poi,simulation,trafficlight,vehicletype,edge,inductionloop,junction,multientryexit,polygon,route,person,vehicle
有关函数的详细列表,请参阅 pydoc generated documentation。命令的源代码可以在eclipse/sumo找到
协议规范
请参阅 TraCI协议规范(包括基本流,消息,数据类型)
2 使用SUMO作为库
通常,TraCI用于耦合多个进程:SUMO服务器进程和一个或多个TraCI客户端进程。
或者,Libsumo可用于将SUMO作为库嵌入到客户端进程中。 这允许使用与客户端库中相同的方法签名,但避免了套接字通信的开销。 Libsumo支持使用SWIG生成客户端库,因此可以与大量编程语言一起使用。
3 使用示例
有一个使用TraCI进行自适应交通灯的教程(使用Python)。
Tutorials / CityMobil 教程 使用TraCI为车辆分配新路线(使用Python)。
Tutorials / TraCIPedCrossing 教程 使用TraCI构建一个带有行人触发交通信号灯的交叉路口。
4 资源
4.1 编程语言接口
Python:Interfacing TraCI from Python 允许使用Python与SUMO交互,支持所有TraCI命令
Java,.NET,…任何可以做SOAP的东西: TraaS是TraCI的Web服务适配器,允许为多个语言生成自动API。 API完整性很高但通常落后于python客户端。 TraaS也可以用作独立的TraCI客户端
Matlab :TraCI4Matlab并非所有TraCI命令都已实现
C++:C++ TraCIAPI 是客户端库,它是SUMO源代码树的一部分(API范围几乎覆盖)
C++:Veins项目提供了一个用于将SUMO与OMNET ++耦合的中间件。 作为基础架构的一部分,它为TraCI API提供了一个C++客户端库(API完整性稍微落后于python客户端)
.NET:TraCI.NET是一个几乎覆盖完整API范围的客户端库
4.2 V2X仿真
TraCI允许将SUMO与通信网络模拟器结合使用,以模拟车辆通信。 有关可用解决方案的列表,请参阅 Topics/V2X。
5 性能
使用TraCI会降低仿真速度。 减速量取决于许多因素:每个仿真步骤中TraCI函数的调用数、被调用的TraCI函数的类型、TraCI脚本中的计算过程、客户端语言
例如,考虑在每个模拟步骤期间检索每个车辆的x,y位置(使用python客户端):
while traci.simulation.getMinExpectedNumber() > 0: for veh_id in traci.vehicle.getIDList():position = traci.vehicle.getSpeed(veh_id)traci.simulationStep()
该脚本每秒可处理约25000辆汽车。
使用embedded python将其增加到每秒约50000辆
通过使用 subscriptions,相同的值检索也可以加速到每秒50000辆车:
while traci.simulation.getMinExpectedNumber() > 0: for veh_id in traci.simulation.getDepartedIDList():traci.vehicle.subscribe(veh_id, [traci.constants.VAR_POSITION])positions = traci.vehicle.getSubscriptionResults()traci.simulationStep()
在Bologna scenario中使用此脚本(9000辆车,5000个模拟步骤)时,记录了以下运行时间:
没有TraCI :8s
普通位置检索:90s
使用 subscriptions 检索:42s
使用embedded python进行检索:46s
使用 subscriptions 和 embedded python 进行检索:34s
SUMO入门(八) - TraCI相关推荐
- Sumo入门和Traci接口使用
正好项目中用到Sumo软件, 发现网上关于sumo的中文材料非常少, 所以我想记录一些自己使用sumo过程中的经验和教训; SUMO的官方网站是 https://sumo.dlr.de/pydoc/ ...
- python文件路径过滤器_SUMO入门(八) - 从Python引入TraCI接口
SUMO入门(八) - 从Python引入TraCI接口 TraCI TraCI/Interfacing TraCI from Python TraCI命令分为13个部分,它们对应于各个模块: gui ...
- sumo添加车辆_Sumo入门和Traci接口教程
因为正好项目中用到Sumo软件, 发现网上关于sumo的中文材料非常少, 所以我想记录一些自己使用sumo过程中的经验和教训; SUMO的官方网站是 https://sumo.dlr.de/pydoc ...
- SUMO入门(六) - 交通灯
SUMO入门(六) - 交通灯 Simulation/Traffic Lights 通常,NETCONVERT 和 NETGENERATE 在计算网络期间为交叉口生成交通信号灯和程序. 尽管如此,这些 ...
- 脑残式网络编程入门(八):你真的了解127.0.0.1和0.0.0.0的区别?
本文由"小姐姐养的狗"原创发布于"小姐姐味道"公众号,原题<127.0.0.1和0.0.0.0地址的区别>,收录时有优化和改动.感谢原作者的分享. ...
- CSS入门八、CSS3动画
零.文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789 个人博客-GiteePages:https://bluecusliyou.gi ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
转自即时通讯网:http://www.52im.net/ 本文原作者:"水晶虾饺",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说" ...
- java游戏开发入门(八) -图像
java游戏开发入门(八) - 图像 前言 图片资源 首先我们来改造一下我们的Player实体 方法说明 效果展示 完整项目 前言 前面那么多基本上一个游戏需要的逻辑就差不多了,但是看上去还非常丑 ...
- SUMO入门(三) - 路网
SUMO入门(三) - 路网 Networks/SUMO Road Networks SUMO network file 网络文件描述了交通相关的地图.道路和交叉口. 虽然XML文件我们可读,但SUM ...
最新文章
- SQL Server(五)——常用函数
- c++学习笔记之友元函数
- 深入解析Java字节码和字节码操作类库ASM源码解析
- 2016电大计算机网考,2016年电大-电大计算机网考题库[].doc
- Angular jasmine fixture.detectChanges如何触发directive的set方法
- linux c通过文件描述符以及write和read方法对文件进行读写
- 4个万无一失的技巧让您开始使用JBoss BRMS 6.0.3
- 使用 QuickBI 搭建酷炫可视化分析
- C++开源库详细介绍
- angularjs1-2,作用域、代码压缩
- html视频播放快进按钮,【浏览器插件】Video Speed Controller – 网页视频倍速、快进、回放功能0.07~16 倍...
- kafka 拉取的数据排序_Kafka 源码解析之 Consumer Poll 模型(七)
- 电力安全工作规程发电厂和变电站电气部分_电气主接线知识精讲!
- ASO优化之教你如何得到ASO优化100关键词字符
- Android内存和SD卡的数据存取
- 5G工业无线网关在物联网的应用优势
- luogu P3899 [湖南集训]谈笑风生 线段树合并
- sql之浅谈视图的作用
- 净值继续回落,短期弱势难改
- nodejs中的__filename和__dirname的使用说明
热门文章
- 再别康桥 --徐志摩
- 缓存模式(Cache Aside、Read Through、Write Through、Write Behind)
- 西电计算机学院王宇平,王宇平 | 个人信息 | 西安电子科技大学个人主页
- 虚拟地址 线性地址 物理地址 傻傻分不清楚?
- 个人阿里云服务器初始化安装服务
- 程序员和产品经理的工作强度对比
- 读书笔记二《产品经理从入门到精通》
- 2021年11月最新搜狗验证码识别,6位全对正确率高达96%
- 使用 html5 显示导航路线 谷歌地图api
- 2021怀柔一中高考成绩查询入口,北京怀柔县第一职业高中2021年招生录取分数线...