跳转至

LimSim, SUMO, CARLA Co-Simulation

LimSim, SUMO, CARLA 协同仿真

CARLA 是一款开源的自动驾驶仿真器,具有包括感知、定位等在内的多个功能,可以用来帮助训练自动驾驶的各个模块。CARLA 官方提供的 SUMO co-simulation 功能使得用户可以利用 SUMO 管理仿真的背景交通流,也使得 LimSim, SUMO, CARLA 的协同仿真成为可能。

进行协同仿真主要利用 SUMO 的平行仿真(Parallel simulation) 功能,开启这个功能后,主程序的可以作为 Server 仿真,而子程序可以作为 Client 接受数据。因此我们可以将 LimSim 作为主程序运行,将 CARLA 的 co-simulation 作为子程序运行。

步骤 0:安装 CARLA

⚠️ 所有的指令都基于 Linux,Windows 支持未经测试和保证。

首先,您需要通过包安装来安装 CARLA,推荐使用版本为 0.9.12+ 的 Carla。请参考以下链接:

快速入门包安装 - CARLA 模拟器

然后,请确保已经配置了 CARLA 和 SUMO 的联合仿真。请参考以下链接:

SUMO - CARLA 模拟器

现在,您应该在 LimSim 文件夹旁边有一个名为 Carla 的文件夹,Carla 文件夹的结构应如下所示:

├── CarlaUE4
   ├── AssetRegistry.bin
   ├── Binaries
   ├── CarlaUE4.uproject
   ├── Config
   ├── Content
   └── Plugins
├── CarlaUE4.sh
├── Co-Simulation
   ├── PTV-Vissim
   └── Sumo
├── PythonAPI
   ├── carla
   ├── examples
   ├── python_api.md
   └── util
├── README
├── ......
├── ......
└── VERSION

步骤 1:运行 CARLA 联合仿真

您应该打开两个终端。

# 终端 1 
cd path-to-carla/ 
./CarlaUE4.sh -world-port=2000 -resx=400 -resy=300 -quality-level=Epic

现在您应该看到 CARLA 图形界面。然后切换到另一个终端:

# 终端 2 
cd path-to-carla/ 
cd PythonAPI/util/ 
python3 config.py --map Town05

现在 Carla 中的地图已成功切换为 Town05 地图。

# 终端 2 
cd ../.. # 回到 carla 根目录 
cd Co-Simulation/Sumo 
python3 run_synchronization.py examples/Town05.sumocfg --sumo-host 127.0.0.1 --sumo-port 8813 --client-order 2

终端应持续输出 Could not connect to TraCI server at 127.0.0.1:8813 [Errno 111] Connection refused Retrying in 1 seconds,不要担心,这意味着您的设置都已完成。现在继续下一步!

步骤 2:运行 LimSim 联合仿真

ModelExample.pymain 函数中修改代码:

if __name__ == "__main__":     
    net_file, rou_file = file_paths['CarlaTown05']     
    run_model(net_file, rou_file, ego_veh_id="4", carla_cosim=True)

然后打开第三个终端:

# 终端 3 
cd path-to-limsim/ 
python ./ModelExample.py

然后您应该看到所有 LimSim/Sumo/CARLA 图形界面开始联合仿真。

您可以使用 wasdqe 来控制 CARLA 中的视角移动。

步骤 3:(可选)在 CARLA 中更改鸟瞰视图

如果您希望 CARLA 中的视角跟随自车移动,需要稍微修改 Co-Simulation/Sumo 文件夹中的 run_synchronization.py 文件。

只需使用此文件链接 替换您文件夹中的原始 run_synchronization.py 文件,并确保 line 222 中的 ego_id = '4' 是自车的 ID。

尽情享受吧!