【自动驾驶仿真】CARLA-SUMO联合仿真(包详细的,从安装到联仿)

本文将详细介绍CARLA和SUMO联合仿真的步骤。本文以Windows系统下的联仿为例,Linux系统下的方法也类似。主要内容包括:CARLA安装、SUMO安装、联合仿真、自定义车流。

 1 CARLA安装

这里的CARLA安装采用预编译的压缩包版本,主要是快!总共才占用磁盘空间约20G,不用专门装UnrealEngine。

详细步骤可以参考我上一篇博客:CARLA Windows快速体验与使用_windows carla-CSDN博客

2 SUMO安装

首先访问SUMO官方文档:SUMO Documentation

下载需要的版本

找到下载好的msi文件,双击安装,一路next

到下面这一步可以修改安装路径。下面打勾可以自动设置好环境变量

 查看系统环境变量,可以看到已经自动设置好了

没有设置好的话可以手动添加

下一步就是安装相关依赖,也可以暂时不管,后面运行的时候缺什么装什么即可 

3 联合仿真

3.1 启动CARLA客户端

CARLA0915\WindowsNoEditor目录下,双击CarlaUE4启动CARLA客户端

3.2 开启SUMO并同步仿真

找到联合仿真同步的文件

在Co-Simulation/Sumo路径下

在此处打开终端并输入命令

python.exe .\run_synchronization.py .\examples\Town05.sumocfg --sumo-gui

点击运行按钮就可以运行了

如果出现报错:

 找到文件:Co-Simulation/Sumo/sumo_integration/sumo_simulation.py

 修改代码:

# sumo_net = traci.sumolib.net.readNet(net_file) 修改为
sumo_net = sumolib.net.readNet(net_file)

3.3 联合仿真效果

下面这些黄色小车车就是SUMO产的车,会同步到CARLA里

 CARLA里的车均为从SUMO里同步过来的

 3.4 自定义车流联合仿真

打开sumo\bin\netedit

File -> Open Network File

选择到CARLA的联合仿真文件里的路网文件

CARLA0915\WindowsNoEditor\Co-Simulation\Sumo\examples\net

 选择你要定义车流的地图(这里以Town05为例)

 点击Demand

 然后点下面的蓝色车车

左边的Vehicles我们选择车流flow (from-to edges),其他的相关属性设置可以自己慢慢探索。

然后用鼠标去右边的地图里选择你要设计的路线,一段路一段路左键点即可,按ESC可以全取消重新点。

确定好后按回车确定即可,然后可以看到小车出现在地图上的路线起点

接下来导出车流文件

File -> Demand Elements -> Save Demand Elements As ...

放到CARLA0915\WindowsNoEditor\Co-Simulation\Sumo\examples\rou路径下

文件会以.rou.xml格式保存

编写SUMO配置文件

转到目录CARLA0915\WindowsNoEditor\Co-Simulation\Sumo\examples

 复制一份Town05.sumocfg文件,重命名为test.sumocfg,用记事本打开

 我们修改红框位置即可,修改为我们刚刚保存出来的车流文件rou/test.rou.xml

 启动CARLA客户端

启动SUMO同步仿真

这里命令行中的命令需要改为我们定义的配置文件

python.exe .\run_synchronization.py .\examples\test.sumocfg --sumo-gui

然后运行即可

可以看到车跑起来了,CARLA端和SUMO端是对应的

接下来就可以在联合仿真环境的基础下进行一些其他方面的尝试了

### 如何进行 CarlaSUMO联合仿真 #### 1. 安装依赖项和设置环境 为了使 CarlaSUMO 协同工作,在 Ubuntu 上需安装必要的软件并配置环境变量。这通常涉及到安装 Carla 模拟器以及下载和编译最新版本的 SUMO。 #### 2. 准备 SUMO 场景文件 对于想要使用的城市地图(如 Town01, Town04 或者 Town05),应准备好相应的 `.sumocfg` 文件来定义交通流和其他参数[^1]。这些配置文件含了关于道路网、车辆路径以及其他重要属性的信息,它们是启动协同仿真的基础。 #### 3. 启动 Carla Simulato r服务端 通过命令行或者脚本方式启动 Carla Simulator 并指定要加载的地图名称。例如: ```bash ./CarlaUE4.sh /Game/Maps/Town01 -carla-server -windowed -ResX=800 -ResY=600 ``` 这段代码会以窗口模式打开分辨率为 800x600 像素大小的游戏界面,并自动连接到服务器实例以便后续操作。 #### 4. 初始化 Python API 接口 编写一段Python程序用于初始化API接口并与两个平台建立通信链接。下面是一个简单的例子展示了如何创建客户端对象并获取世界状态信息: ```python import carla client = carla.Client('localhost', 2000) world = client.get_world() print(world.get_map().name) ``` 该片段说明了怎样利用官方提供的Python库与正在运行中的Carla Server交互。 #### 5. 实现同步机制 为了让两者之间保持时间步调一致,需要实现一个同步循环结构。这里给出了一部分伪代码用来解释这一过程的关键点之一——车辆类型的映射关系处理[^2]: ```python while True: world.tick() # Advance the simulation one step. sumo_step_length = traci.simulation.getDeltaT() # Synchronize vehicles between CARLA and SUMO here... update_vehicle_positions_in_carla_from_sumo(sumo_vehicles) time.sleep(max(0, (last_time + sumo_step_length) - time.time())) ``` 上述代码段强调了在每次迭代中更新来自SUMO的位置数据至CARLA的重要性,从而确保两者的时空一致性。 #### 6. 测试与验证 最后一步是对整个系统的功能进行全面检验,括但不限于观察是否有异常行为发生、评估性能指标是否满足预期等。由于这类复杂度较高的项目往往难以完全避免错误的发生,所以持续优化调整直至达到理想效果是非常有必要的[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值