SUMO文档013:TraCI教程(下)

这部分教程通过TraCI实现行人过街演示程序。假设你已经熟悉了前面的第一部分的例子 Tutorials/TraCI4Traffic_Lights ,知道如何创建车辆驱动控制器。

在本部分提到的所有文件均可以在目录/docs/tutorial/traci_pedestrian中,或者在新版的目录:/tests/complex/tutorial/traci_pedestrian_crossing/.

1、例子描述

这个脚本包括一个道路被人行路穿过人行通道通过信号灯控制通行,通过触发push-button的行人,改变信号的转换。为了模拟按动按扭的操作,假设行人到达时是红灯的激活按钮。为防止车辆交通的不适当干扰,车辆的绿色期最少有15秒的绿灯时间。

SUMO文档013:TraCI教程(下)_第1张图片

为了运行程序,可以通过执行脚本:

python runner.py

1.1代码

控制逻辑写在文件runner.py中。它创建网络(通过BETCONVERT),生成行人路由(通过randomTrips),通过仿真进行交互。它使用了绑定SUMO的Traci python APIs。关于接口API的更多信息可以阅读:TraCI/Interfacing_TraCI_from_Python。阅读更多的函数列表,可以阅读文档:pydoc generated documentation

1.2交通灯控制

交通灯遵循固定的周期按照如下的定义。如下的代码定义来源于:pedcrossing.tll.xml

 
  

阶段0被设置为非常大的值。这是车辆的绿色阶段,并应在行人的情况下无限期延长。当在这个阶段有行人被侦测到,交通信号灯将会转变到下一个阶段,然后自动循环。在TraCI中有关信号灯的函数有traci.trafficlights.getPhase()和traci.trafficlight.setPhase()。

1.3和traci函数有关的行人Personrelated traci functions

为了模拟按钮(行人的触发),它必须知道是否行人正在等待交叉路口。以下的TraCI函数被利用的:

traci.edge.getLastStepPersonIDs():发现在交叉口的行人。

traci.person.getNextEdge():去决定行人是否通过交叉口或者正在李凯交叉口;

traci.person.getWaitingTime():确定行人是否已到达十字路口,并被迫等待。

traci.edge.getLastStepPersonIDs()的输入和traci.person.getNextEdge()的输出引用了对于仿真至关重要的网络元素(network elements)。在runner.py脚本中定义为:

WALKINGAREAS = [':C_w0', ':C_w1']
CROSSINGS = [':C_c0']

对于行人网络元素的描述,可以阅读更多: Simulation/Pedestrians

你可能感兴趣的:(【SUMO仿真文档】)