SUMO Traci多客户端运行

sumo traci多客户端运行

参考SUMO官网教程

1、对于路网,路网内交通灯以及路网内的车辆交通(流)等的设置,请参考其他高手,这里简单描述如何使用sumo traci多客户端控制sumo-gui运行。

2、sumo traci的多客户端运行的优势如:

  • 不同的客户端可以设置不同的命令或相同命令对sumo-gui内的交通信息进行值的获取与设置
  • 精简每个客户端程序的代码内容

3、我这里以两个客户端为例,实现sumo traci多客户端运行。直接上代码,会更清晰。

客户端1

# client1
import os, sys
import traci
# 找到sumo或sumo-gui的环境
if 'SUMO_HOME' in os.environ:
    tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
    sys.path.append(tools)
else:
    sys.exit("please declare environment variable 'SUMO_HOME'")
sys.path.append(os.path.join('c:', os.sep, 'whatever', 'path', 'to', 'sumo', 'tools'))

PORT = 8813  # 设置客户端端口号
sumoBinary = "D:\\Program Files (x86)\\Eclipse\\Sumo\\bin\\sumo-gui.exe"
sumoCmd = traci.start([sumoBinary, "-c", "Town05.sumocfg", "--num-clients", "2"], port=PORT)
traci.setOrder(1)  # 设置客户端顺序,数字任意,但各客户端顺序不可以相同


def main():
    # 两个客户端都需要持续调用simulationStep()函数,才可以让sumo-gui持续运行
    while traci.simulation.getMinExpectedNumber() > 0:
        traci.simulationStep()
        """这里自定义traci的其他功能"""

    traci.close()


if __name__ == '__main__':
    main()

客户端2

# client2
import os, sys
import traci
# 找到sumo或sumo-gui的环境
if 'SUMO_HOME' in os.environ:
    tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
    sys.path.append(tools)
else:
    sys.exit("please declare environment variable 'SUMO_HOME'")
sys.path.append(os.path.join('c:', os.sep, 'whatever', 'path', 'to', 'sumo', 'tools'))

traci.init(8813)
traci.setOrder(2)  # 设置客户端顺序,数字任意,但各客户端顺序不可以相同


def main():
    # 两个客户端都需要持续调用simulationStep()函数,才可以让sumo-gui持续运行
    while traci.simulation.getMinExpectedNumber() > 0:
        traci.simulationStep()
        """这里自定义traci的其他功能"""

    traci.close()


if __name__ == '__main__':
    main()

结语

以上两个traci客户端没有设置与获取任何traci功能,想要设置与获取sumo-gui的值,可以在main函数下自定义或重新设置其他函数、类与命令,且二者客户端运行顺序无关紧要,只有在两个客户端都成功运行起来之后,方可成功加载路网文件。

可以通过设置sumo-gui的delay time时延来放缓sumo-gui路网交通信息的播放显示速度。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值