SUMO(simulation of urban mobility)是一款开源、微观、多模式状态的交通仿真软件。该仿真软件主要通过**路网文件(.net.xml)、路由文件(.rou.xml)、仿真运行文件(*.sumocfg)**这三个主要文件构成。这三个文件均为“xml”语言编写.
联合仿真参考Carla官方文档,主要分为以下三个部分:
第一步: Requisites(需求):Install SUMO
首先, Carla官方建议从源码(Building from source)构建而不是简单安装,因为(Building from source)有新功能和修复可以改进协同仿真。
本文建议大家可以简单安装:
您可以通过 apt-get 直接安装 SUMO:
sudo add-apt-repository ppa:sumo/stable sudo apt-get update sudo apt-get install sumo sumo-tools sumo-doc
之后,安装 traci python 包:
pip install traci
完成后,设置 SUMO 环境变量。
echo "export SUMO_HOME=/usr/share/sumo" >> ~/.bashrc && source ~/.bashrc
具体安装可以参考sumo官方文档:
Installing - SUMO Documentation
SUMO 安装好运行联合仿真。
我们使用Carla在 Co-Simulation/Sumo/examples for Town01、Town04 和 Town05 中有一些示例。 这些 .sumocfg 文件描述了模拟的配置(例如,网络、路线、车辆类型...)。
使用其中之一来测试协同仿真。 该脚本具有以下详述的不同选项。 暂时,让我们为 Town04 运行一个简单的示例。
使用 Town04 运行 CARLA 模拟:
cd ~/carla
./CarlaUE4.sh
cd PythonAPI/util
python3 config.py --map Town04
然后,运行 SUMO 联合仿真示例:
cd ~/carla/Co-Simulation/Sumo
python3 run_synchronization.py examples/Town04.sumocfg --sumo-gui
第二步:运行自定义联合仿真(Run a custom co-simulation)
2.1 Create CARLA vtypes
Carla自带的示例不能满足广大开发者的需求,对于初学者,可以学习示例代码,作为入门的提高。接下来,我们介绍用户如何来自定义自己的开发环境:
通过使用 Co-Simulation/Sumo/util/create_sumo_vtypes.py 脚本--基于 carla 蓝图创建 sumo vtype 的脚本。
编写路由文件(*.rou.xml):第一步需要定义车辆类型(vType)。
用户可以基于 CARLA 蓝图库创建相当于 CARLA 蓝图的 sumo vtypes。( 为生成的 carla 车辆转换成 sumo vtype 规范。)
负载规格定义:此脚本使用存储在 data/vtypes.json 中的信息来创建 SUMO vtypes。 这些可以通过编辑所述文件来修改。
警告
必须运行 CARLA 模拟才能执行脚本。
2.2 Create the SUMO net
创建与 CARLA 同步的 SUMO 网络的推荐方法是使用脚本 Co-Simulation/Sumo/util/netconvert_carla.py。
这将利用 SUMO 提供的 netconvert 工具。 为了运行脚本,需要一些参数:
--xodr_file
— OpenDRIVE file .xodr
.(将Carla里的自带地图作为输入)--output'
(default:net.net.xml
) — output file .net.xml
.(将Carla里的自带地图转换成sumo里的地图格式)--guess-tls
(default:false) — SUMO 只能为道路中的特定车道设置红绿灯,但 CARLA 不能。 如果设置为 True,SUMO 将不会区分特定车道的红绿灯,这些将与 CARLA 同步。基于 opendrive 文件生成.net.xml
的脚本。 在内部,它使用 netconvert 生成.net.xml
并插入从 opendrive 检索到的交通灯地标。(路网文件的生成可以通过多种途径,例如netedt、netconvert、netgenerate、openstreetmap等方式)
脚本的输出将是一个可以使用 NETEDIT 编辑的 .net.xml。 使用它来编辑路线、添加需求,并最终准备一个可以保存为 .sumocfg 的模拟。在此过程中,提供的示例可能会有所帮助。 看看 Co-Simulation/Sumo/examples。 对于每个 example.sumocfg,都有几个同名的相关文件。 所有这些都包含一个联合仿真示例。
2.3 Run the synchronization
一旦模拟准备好并保存为 .sumocfg,就可以运行了。 有一些可选参数可以更改协同仿真的设置。
与 SUMO 的联合仿真提供了一个附加功能。 车辆可以通过 SUMO 在 CARLA 中生成,并由后者管理,就像交通经理所做的那样。
脚本 spawn_npc_sumo.py 几乎等同于已知的 generate_traffic.py。 此脚本会根据 CARLA 中的活动城镇在临时文件夹中自动生成一个 SUMO 网络。 该脚本将创建随机路线并让车辆四处漫游。
当脚本运行同步模拟并在其中生成车辆时,参数与 run_synchronization.py 和 generate_traffic.py 中出现的参数相同。
详细介绍具体可以参考Carla官方文档:
https://carla.readthedocs.io/en/latest/adv_sumo/