1、关于TraCI
TraCI是“Traffic ControlInterface”的缩写。可以运行道路交通仿真,允许检索仿真物体的值然后在线修改它们的行为。
2、使用TraCI
2.1 SUMO启动
TraCi通过基于客户端-服务器的TCP协议架构和SUMO通信。从而,SUMO作为服务器,通过命令行设置启动:--remote-port <int>,这里的数字为SUMO的接口,用于接收传入的信息。
当执行了命令--remote-port <int>,SUMO只是准备仿真,等待依一个外部程序,接管控制。请注意,当SUMO作为服务器工作时,--end命令是被忽略的。直到客户端要求仿真结束SUMO才停止。
当使用SUMO-GUI最为服务器,仿真必须通过响应的按钮操作。或者在执行前设置—start命令。
2.2协议规范(需要详细阅读)
请阅读:TraCI Protocol Specification (包括:Basic Flow, Messages, Data Types)
2.3TraCI的命令
Control-relatedcommands:基本的操作步骤,关闭连接。
针对以下APIs,ID和SUMO输入文件里定义的ID相等。在这,你能发现他们的一般结构 generalstructure.
值检索(valueretrieval)
1. 感应回路值检索(Induction loop value retrieval):检索关于感应回路的信息;
2. 车道面积检测器值检索(lane area detector value retrieval):检索车道面积检测器的信息;
3. 多输入/多出口检测器值检索(muli-entry/multi-exit detector valueretrieval):检索多输入多出口检测器的相关信息;
4. 交通灯值检索(traffic lights value retrieval):检索交通信号灯的信息;
5. 车道值检索(lane value retrieval):检索车道值信息;
6. 车辆值检索(vechicle value retrieval):检索关于车辆的信息;
7. 人群值检索(person value retrieval):检索关于人群的信息
8. 车辆类型值检索(vehicle type value retrieval):根据以上类推!!!
9. 路由值检索(route value retrieval):
10. 兴趣点值检索(PoI value retrieval):point-of-interest兴趣点
11. 多边形值检索(polygon value retrieval):
12. 结点值检索(junction value retrieval):
13. 街道值检索(edge value retrieval):
14. 仿真值检索(simulation value retrieval):
15. GUI值检索(GUI valueretrieval):
状态改变statechanging
1. change lane state:
2. change traffic lights state:
3. change vehicle state:
4. change vehicle type state:
5. change route state:
6. change PoI state:
7. change Polygon state:
8. change Edge state:
9. change simulation state:
10. change GUI State:
订阅subscriptions
1. TraCI/Object VariableSubscription
2. TraCI/Object ContextSubscription
访问accessing
3、例子
例子1:
使用TraCI的交通灯自适应(使用python) tutorial onusing TraCI for adaptive traffic lights
例子2:给车辆分配新路线(使用python) Tutorials/CityMobil
例子3:建立一个十字路口,用行人触发的交通灯。Tutorials/TraCIPedCrossing
4、资源
4.1编程语言接口
l python:the package tools/traci允许通过python可以和SUMO进行交互。(这个库满足日常测试。支持所有的TraCI命令)。
l java:TraCI4J是关于TraCI的java应用。文档: API documentation is here
l java,.net…….任何的符合SOAP(简单对象访问协议)的语言都可以。是一个TraCI的web服务适配器,自动适配多种语言。API完整性比TraCI4J要好,由于代码的产生基于Python的客户端。TraaS可以单独用作一个TraCI客户端,替代TraCI4J。
l Matlab: TraCI4Matlab
l C++:The C++ TraCIAPI是SUMO源码的一部分,为一个客户端库。
l C++:The Veinsproject 提供使用 OMNET++编译SUMO的中间件。作为基础设施的一部分,提供针对TraCI API的C++客户端库。
4.2 V2X仿真
TraCI允许SUMO结合网络通信模拟器甚高频全向指标,用于模拟车载通信 vehicular communication。查看进一步信息: Topics/V2X
原文:TraCI allows to use SUMO in combinationwith communication network simulators vor simulating vehicular communication. See Topics/V2X for a list of available solutions.
4.3其他资源
SUMO的TraCI服务是平原分布(the plain distribution)的一部分。源代码位于文件夹src/traci-server.
5、工具书类
§ AxelWegener, Michal Piorkowski, Maxim Raya, Horst Hellbrück, Stefan Fischer andJean-Pierre Hubaux. TraCI: A Framework for Coupling Road Traffic and NetworkSimulators. Proceedings of the 11thCommunications and Networking Simulation Symposium,April 2008. Availableat ACM Digital Library
§ AxelWegener, Horst Hellbrück, Christian Wewetzer and Andreas Lübke: VANETSimulation Environment with Feedback Loop and its Application to Traffic LightAssistance. Proceedings of the 3rdIEEE Workshop on Automotive Networking and Applications,New Orleans, LA, USA, 2008. Soon available at IEEEXplore
6、故障排除
6.1输出文件没有关闭
这个错误发生于客户端访问正在关闭中的文件。等关闭文件后再访问即可。
6.2过时的APIs
有两代TraCI命令。第一代,主要使用字符串内部映射,在SUMO中使用的string类型的ID和外部的基于int的表现。该映射是在内部完成的。
第二代,使用string类型ID等同于SUMO读取的。如果绑定到第一代的(例如,如果你想使用TraNS)你只能使用SUMO最高版本0.12.3,更多信息访问:FAQ。