sumo之traci牛刀小试

本文介绍了如何通过Python脚本控制SUMO交通仿真器,包括启动无图形界面版本,读取配置文件,设置车辆速度,以及获取和修改车辆位置信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


from __future__ import absolute_import
from __future__ import print_function

import os
import sys
import optparse
import random
import traci
import time
from sumolib import checkBinary


#检测是否已经添加环境变量
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'") 

#sumo自带的,不知道有啥用
def get_options():
    optParser = optparse.OptionParser()
    optParser.add_option("--nogui", action="store_true",
                         default=False, help="run the commandline version of sumo")
    options, args = optParser.parse_args()
    return options

#主函数
if __name__ == "__main__":
    options = get_options()
    if options.nogui:
        sumoBinary = checkBinary('sumo')
    else:
        sumoBinary = checkBinary('sumo-gui')
    
    #sumocfgfile = "D:\\PROJECT\\sumo\\carla-sumo\\test.sumocfg" #sumocfg文件的位置
    sumocfgfile = "D:\\PROJECT\\sumo\\carla-sumo\\long.sumocfg" #sumocfg文件的位置

    
    traci.start([sumoBinary, "-c", sumocfgfile]) #打开sumocfg文件
    index=0
    for step in range(0,3600): #仿真时间
        traci.simulationStep() #一步一步(一帧一帧)进行仿真
        #time.sleep(0.1)
        simulation_time = traci.simulation.getTime() #获得仿真时间
        print("仿真时间是",simulation_time)
        all_vehicle_id = traci.vehicle.getIDList() #获得所有车的id
        print(len(traci.vehicle.getIDList()))
        #获取所有车的position 
        all_vehicle_position = [(i, traci.vehicle.getPosition(i)) for i in all_vehicle_id]
        print(all_vehicle_position)
        #print(type(all_vehicle_position))
        #print(all_vehicle_id)
        #print(len(all_vehicle_id))
        num=len(all_vehicle_id)
        print(traci.vehicle.getRoadID(all_vehicle_id[0]))
        #print(traci.vehicle.getSpeed(all_vehicle_id[1]))
        #print(all_vehicle_id)
        #myID=all_vehicle_id[1]
        #print(traci.vehicle.getSpeed(all_vehicle_id))  
        #traci.vehicle.setSpeed(all_vehicle_id[1], 2+index)
        #print(traci.vehicle.getSpeed(all_vehicle_id[0]))
        # traci.vehicle.highlight(all_vehicle_id[0], color=(255, 0, 0, 255), size=-1, alphaMax=-1, duration=-1, type=0)
        if num==1:
                traci.vehicle.setSpeed(all_vehicle_id[0], 1)
                print(traci.vehicle.getRoadID(all_vehicle_id[0]))

        if num==4:
            traci.vehicle.setSpeed(all_vehicle_id[3], 1)
            #print(traci.vehicle.getSpeed(all_vehicle_id[1]))  
        # elif num>6:
        #     traci.vehicle.setSpeed(all_vehicle_id[0], 14)
        elif num>30:
            traci.vehicle.setSpeed(all_vehicle_id[0], 14)
            traci.vehicle.setSpeed(all_vehicle_id[3], 14)


    traci.close()




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值