SUMO Traci多客户端运行
sumo traci多客户端运行
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路网交通信息的播放显示速度。