SUMO 中的交通信号灯设置

引言

交通信号灯的控制是智能交通系统的核心问题之一。本文主要介绍 SUMO 中交通信号灯的设置方法和各参数含义。详细说明可以参考官网教程.

基本设置

traffic light 可以在 netedit 中设置,也可以通过 additional file 的形式加入到仿真中。考虑如下的交通路口场景

SUMO_tl1.png

additional file 中可以包含如下内容:

<additional>
   <tlLogic id="0" type="static" programID="0" offset="0">
   <phase duration="31" state="GrGr"/>
   <phase duration="6" state="yryr"/>
   <phase duration="31" state="rGrG"/>
   <phase duration="6" state="ryry"/>
   </tlLogic>
</additional>

其中,

  • id 和 type 与 traffic_light 的 node id 和 type 对应
  • type 分为三种
    static: fixed phase durations,
    actuated: phase prolongation based on time gaps between vehicles
    delay_based: on accumulated time loss of queued vehicles
  • programID 为该红绿灯转换机制的ID,一个 traffic light 可以有多个 program,以最后的 program 为准。若要修改某个 net.xml 中的转换机制,可以通过添加 add.xml 文件的方式用新的 program 覆盖之前的 program。

phase 中各条 lane 的 index 是从12 点钟方向 edge 的右转 lane 开始,顺时针方向,依次经过中间的 lane,左转 lane,然后到下一个 edge, 依次编号。因此,图中场景就对应了 state: GrGr.

关于 颜色字母含义的说明:

SUMO_tl2.png

r, y, G 这三个符号就对应了我们最常用的 红、黄、绿信号。对于绿灯时左转礼让直行的情形,应该将左转 lane 设置为 g,即让对面直行车辆先通过,再左转。

actuated traffic light

除了上述固定时间的交通灯控制机制,SUMO 还提供了更加智能的自适应机制。

actuated traffic light 情况下交通灯可以检测通过的车流,如果某条道路有持续的车流,则延长相应道路上的绿灯时间,否则当车辆之间的 time gap 超过一定时间,则转到下一个 phase。这是一种动态调整红绿灯时长的机制。

为了使用 actuated traffic light,可以把 tlLogic 的 type 设置为 actuated,如下:

<tlLogic id="0" programID="my_program" offset="0" type="actuated">
   <param key="max-gap" value="3.0"/>
   <param key="detector-gap" value="2.0"/>
   <param key="show-detectors" value="false"/>
   <param key="file" value="NULL"/>
   <param key="freq" value="300"/>
​
   <phase duration="31" minDur="5" maxDur="45" state="GGggrrrrGGggrrrr"/>
 ...
</tlLogic>

在这种设置下,还需要设置更多的参数,其中

  • phase tag 要设置 minDur 和 maxDur。如果只有 duration 或者 minDur==maxDur,则还是固定时长的 phase.

  • max-gap: 两车最大时间间隔,单位 s

  • detector-gap: 从 detector 到 stop line 的时间间隔,以该 lane 的最大速度计算。

delay_based traffic light

除了上述 actuated 调节方式,还有 delay_based 方式,这种机制是为了均衡各条道路的延迟,基本设置如下:

<tlLogic id="0" programID="my_program" offset="0" type="delay_based">
   <param key="detectorRange" value="100" />
   <param key="minTimeLoss" value="1" />
   <param key="file" value="NULL"/>
   <param key="freq" value="300"/>
   <param key="show-detectors" value="false"/>
​
   <phase duration="31" minDur="5" maxDur="45" state="GGggrrrrGGggrrrr"/>
 ...
</tlLogic>

其中 type 设置为 delay_based。

  • detectorRange 为检测范围。如果车辆进入该范围,就计算其时间延迟 1-v/v_max。

  • minTimeLoss: 如果道路的时间延迟积累超过该数值,则增加下次绿灯的时长。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 姓名:王铃女 公司:宁波禾隆新材料股份有限公司 组别:312期乐观一组 【日精进打卡第11天】 【知~学习】 《六...
    埁埁妈阅读 910评论 0 0
  • 上个学期,观本校男篮半决赛,只觉得那个男生打的好累,看着就心疼 这个学期,看到一次,感觉这个男生完全符合择偶标准 ...
    三餐四季不分离阅读 1,196评论 0 0
  • 我是个刚刚才步入简书甚至还未动一字的新人,但也一直在3g书城又或是起点更着自己的网文,所以抱着试试手的想法却很是幸...
    决弦阅读 4,608评论 0 2
  • 一 我是2007年以艺术类考生的身份进入大学,换言之我参加过2007年艺术类的选拔考试,那年我的主攻方向是戏文和编...
    快活锦鲤Sylvia阅读 2,515评论 0 1
  • 有了你, 父母成了爷奶辈。 有了你, 我们成了父母辈。 有了你, 一家子更加融洽。 有了你, 一家子欢乐开怀。 有...
    90后小后生阅读 955评论 0 0