SUMO文档013:TraCI教程(下)

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

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

1、例子描述

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

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

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

<tlLogic id="C" type="static" programID="custom" offset="0">
<phase duration="100000" state="GGGGr"/>
<phase duration="4" state="yyyyr"/>
<phase duration="10" state="rrrrG"/>
<phase duration="10" state="rrrrr"/>
</tlLogic>

阶段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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值