Carla自动驾驶仿真三:Traffic Manager交通管理器详解

article/2025/9/30 6:13:53

CARLA Traffic Manager

  • 一、什么是Traffic Manager
      • 1、Traffic Manager简介
      • 2、Traffic Manager框架
      • 3、Traffic Manager模块
  • 二、Traffic Manager控制方法
      • 1、TM控制交通参与者的自动驾驶的规则
      • 2、TM控制交通参与者行为的API摘要
      • 3、TM控制交通参与者行为的API
  • 三、Traffic Manager 使用方法
      • 1、创建Traffic Manager实例
      • 2、配置车辆的自动驾驶行为
      • 3、设置车灯自动更新
      • 4、停止运行TM
      • 5、设置TM同步模式
      • 6、设置参与者睡眠与重生
  • 四、TM车辆路径规划

一、什么是Traffic Manager

1、Traffic Manager简介

交通管理器 (TM) 是在模拟中以自动驾驶模式控制车辆的模块。其目标是使用真实的城市交通状况填充模拟,按照规则控制车辆的行为。

2、Traffic Manager框架

carla框架图

3、Traffic Manager模块

模块作用
ALSM 代理生命周期和状态管理ALSM为TM的第一步,扫描Carla世界存在的车辆以及行人,并清理不存在的条目,并且是唯一调用Carla服务器的模块。
Vehicle Registry 车辆登记从ALSM获取到所有车辆及行人更新到存储中,并在存储中不断迭代状态。
Simulation state 仿真状态存储所有交通参与者的信息,如交通参与者的位置、速度及交通灯影响及状态等。
Contorl Loop 控制回路控制回路管理所有车辆的下一个命令的计算,以便它们同一帧更新。控制回路由五个不同的阶段组成;定位,碰撞,交通灯,运动规划和车辆灯。
In-Memory Map 存储地图将地图转换成离散路径点网格,并提供更多信息来连接路点和识别道路、路口等。通过识别这些建筑物的ID来快速定位附近区域的车辆,是PBVT的辅助模块,用于定位。
PBVT 路径缓冲和车辆跟踪PBVT 是一种包含每辆车预期路径的数据结构,允许在控制回路中轻松访问数据。
PID Controller 闭环控制器在运动规划阶段执行计算,计算油门、刹车、方向盘等需求。
Command Array 命令数组命令数组是 TM 逻辑周期的最后一步。它接收所有已注册车辆的命令并应用它们,会等待所有参与者计算完成之后才会将命令发出,确保同步。

二、Traffic Manager控制方法

1、TM控制交通参与者的自动驾驶的规则

a)车辆遵循动态生成的轨迹,在接近路口时随机选择路径。
b)车辆的默认目标速度为当前道路速度限制的70%。
c)TM优先使用自己的控制系统而不是交通规则。

2、TM控制交通参与者行为的API摘要

主题描述
常规- 创建连接到端口的 TM 实例。
-检索连接 TM 的端口。
安全条件- 设置停止车辆之间的最小距离(单辆车或所有车辆)。这将影响最小移动距离。
- 将所需速度设置为当前速度限制的百分比(对于单个车辆或所有车辆)。
- 重置交通信号灯。
碰撞管理- 启用/禁用车辆与特定参与者之间的碰撞。
- 使车辆忽略所有其他车辆。
- 使车辆忽略所有步行者。
- 使车辆忽略所有交通信号灯。
变道- 强制变道,忽略可能的碰撞。
- 启用/禁用车辆的车道变换。
混合物理模式- 启用/禁用混合物理模式。
- 更改启用物理的半径。

2.1 混合物理模式介绍:

Hybrid physics mode使用了两种不同的物理引擎:经典物理引擎和连续物理引擎。

a)在Hybrid physics mode中,车辆被建模成经典力学中的质点,使用经典物理引擎来计算车辆的动力学行为。这种建模方法可以提高计算效率,提高运行帧率。

b)在Hybrid physics mode中,使用了连续物理引擎来模拟车辆的轮胎和悬架系统。这样做可以确保车辆在高速行驶和弯道驾驶时的物理行为和真实情况相符合。

c)Hybrid physics mode的优点是可以在保持较高物理精度的同时提高计算效率,使得用户可以更快速地迭代和测试自动驾驶算法。

物理被禁用的战车将通过传送移动。保持线性加速度的基本计算,以确保位置更新和车速保持真实。

2.2 混合物理模式半径触发:

红色标签的是主车,绿色标签是启动混合物理模式的车辆(主车触发范围内),蓝色标签是禁用物理模式的车辆(主车触发范围外),通过设置混合物理模式的半径可以设定主车的触发范围

在这里插入图片描述

3、TM控制交通参与者行为的API

a)Carla官方Traffic Manager API链接:

https://carla.readthedocs.io/en/latest/python_api/#carlatrafficmanager

b)Carla常用的Traffic Manager API介绍:

– 常用的方法:

- distance_to_leading_vehicle(self, actor, distance)

设置车辆与其他车辆必须保持的最小距离(以米为单位)。距离以米为单位,会影响最小移动距离。它是从车辆对象的前到后计算的。

  • Parameters:
    • actor (carla.Actor) - 正在更改其最小距离的车辆。
    • distance (float - meters) - 两车之间的最小距离。

- force_lane_change(self, actor, direction)

强制车辆改入其左侧或右侧的车道(如果存在)。无论如何,此方法都会应用变道,而不考虑可能的碰撞。

  • Parameters:
    • actor (carla.Actor) - 需要执行变道的车辆。
    • direction (bool) - 目的地车道。True 是右边车道,False 是左边车道。

- ignore_lights_percentage(self, actor, perc)

在每帧运行一次的红绿灯阶段,此方法设置车辆忽略交通信号灯的几率。

  • Parameters:
    • actor (carla.Actor) - 需要忽略交通灯的对象。
    • perc (float) -介于 0 和 100 之间。交通信号灯将被忽略的次数。

- ignore_vehicles_percentage(self, actor, perc)

在每帧运行一次的碰撞检测阶段,此方法设置了与车辆忽略另一辆车碰撞的百分比几率。

  • Parameters:
    • actor (carla.Actor) - 将忽略其他车辆的车辆。
    • perc (float) -介于 0 和 100 之间。交通信号灯将被忽略的次数。

- shut_down(self)

关闭Traffic Manager


- update_vehicle_lights(self, actor, do_update)

设置交通管理器是否负责更新车辆指示灯。默认为False。交通管理器不会更改车辆的车灯状态,除非其自动更新状态为True。

  • Parameters:
    • actor (carla.Actor) - 灯光状态正在更改的车辆。
    • perc (float) - 如果为 True,则交通管理员将管理指定车辆的车辆灯。

- vehicle_lane_offset(self, offset)

设置离中心线的车道偏移量。正值表示向右偏移,负值表示向左偏移。默认为0。

  • Parameters:
    • offset (float) - 车道偏移偏离中心线的位移。

- vehicle_percentage_speed_difference(self, actor, percentage)

设置车辆的预期速度与其当前道路速度限制的差值。通过将percentage设置为负值,可以超出速度限制。 默认值为 30。

  • Parameters:
    • offset (float) - 车道偏移偏离中心线的位移。

– 常用的查询:

- get_all_actions(self, actor)

返回Traffic Manager将在后续步骤中执行的所有已知操作(即道路选项和航点)

  • Parameters:
    • actor (carla.Actor) - 要查询的演员。
  • Return:
    • 返回每个元素的列表如下 - [道路选项(字符串,例如“左”,“右”,“直”),下一个航点(carla.Waypoint)]

- get_next_actions(self, actor)

返回Traffic Manager将在后续步骤中执行的下一个已知道路选项和航点

  • Parameters:
    • actor (carla.Actor) - 要查询的演员。
  • Return:
    • 返回两个元素的列表 - [道路选项(字符串,例如“左”,“右”,“直”),下一个航点(carla.Waypoint)]

– 常用的设置:

- set_desired_speed(self, actor, speed)

将车辆的速度设置为指定值。

  • Parameters:
    • actor (carla.Actor) - 需要设置速度的演员。
    • speed (float) - 车辆的行驶速度。

- set_global_distance_to_leading_vehicle(self, distance)

设置车辆必须与其余车辆保持的最小距离(以米为单位)。距离以米为单位,会影响最小移动距离。它是从车辆对象的中心到中心计算的。

  • Parameters:
    • distance (float - meters) - 车辆最小距离。

- set_hybrid_physics_mode(self, enabled=False)

启用或禁用混合物理模式。在这种模式下,距离自我车辆超过一定半径的车辆将被禁用其物理特性。不计算车辆动力学将降低计算成本。车辆将被传送。

  • Parameters:
    • enabled (bool) - 如果为True则启用。

- set_hybrid_physics_radius(self, r=50.0)

启用混合物理的情况下,更改启用物理的影响区域的半径。

  • Parameters:
    • r (float - meters) - 半径长度。

- set_path(self, actor, path)

设置车辆在Traffic Manager控制时要遵循的位置列表。

  • Parameters:
  • actor (carla.Actor) - 需要设置位置的演员。
  • path (list) - 演员要跟踪的位置(carla.Locations )。

- set_route(self, actor, path)

设置车辆在Traffic Manager控制时要遵循的路线指令列表。可能的路线说明是“左”,“右”,“直”。

  • Parameters:
  • actor (carla.Actor) - 必须遵循给定路由说明的参与者。
  • path (list) - 车辆要遵循的路线指令(string)列表如,‘Left’, ‘Right’, ‘Straight’。

- set_synchronous_mode(self, mode_switch=True)

设置Traffic Manager为同步模式。

  • Parameters:
  • mode_switch (bool) - 如果为 True,则启用 TM 同步模式。。

三、Traffic Manager 使用方法

1、创建Traffic Manager实例

a)创建Traffic Manager实例
注意:TM 设计为在同步模式下工作。在异步模式下使用 TM 可能会导致意外和不良结果。

tm = client.get_trafficmanager(port)

b)设置一组车辆的自动驾驶

  • 要启用一组车辆的自动驾驶,检索TM实例的端口并将set_autopilot设置为True,同时通过TM端口。如果没有提供端口,它将尝试连接到默认端口(8000)中的TM。如果TM不存在,它将创建一个。
tm_port = tm.get_port()for v in vehicles_list:v.set_autopilot(True,tm_port)

2、配置车辆的自动驾驶行为

  • 下面的示例将相同的车辆列表设置为自动驾驶仪,但将它们配置为适度的驾驶行为。车辆的行驶速度比当前限速慢 80%,与其他车辆之间至少留出 5 米的距离,并且从不进行变道:
tm = client.get_trafficmanager(port)
tm_port = tm.get_port()
for v in my_vehicles:v.set_autopilot(True,tm_port)
tm.global_distance_to_leading_vehicle(5)
tm.global_percentage_speed_difference(80)
for v in my_vehicles: tm.auto_lane_change(v,False)

3、设置车灯自动更新

  • 默认情况下,TM 管理的车辆的车辆灯(制动、转向指示灯等)永远不会更新。可以使用 TM 来更新给定车辆参与者的车灯:
tm = client.get_trafficmanager(port)
for actor in my_vehicles:tm.update_vehicle_lights(actor, True)

4、停止运行TM

  • TM不是需要销毁的演员;当创建它的客户端停止时,它将停止。这由 API 自动管理,用户无需执行任何操作。但是,当关闭TM时,用户必须摧毁由它控制的车辆,否则它们将在地图上保持不动。脚本会自动执行此操作:
client.apply_batch([carla.command.DestroyActor(x) for x in vehicles_list])

5、设置TM同步模式

  • TM 设计为在同步模式下工作。CARLA 服务器和 TM 都应设置为同步才能正常运行。在异步模式下使用 TM 可能会导致意外和不希望的结果,但是,如果需要异步模式,则模拟应至少以 20-30 fps 的速度运行。

下面的脚本演示了如何将服务器和 TM 设置为同步模式:

...
# 设置仿真方式为同步模式
init_settings = world.get_settings()
settings = world.get_settings()
settings.synchronous_mode = True# 设置Traffic Manager为同步模式
my_tm.set_synchronous_mode(True)...# 并在同一个客户端中模拟一帧物理时间
world.apply_settings(init_settings)
world.tick()
...# 在脚本结束之前总是禁用同步模式,以防止服务器在等待tick时阻塞
settings.synchronous_mode = False
my_tm.set_synchronous_mode(False)

6、设置参与者睡眠与重生

- 不存在主车:

  • 所有自动驾驶车辆都将被视为休眠演员,休眠的自动驾驶参与者将像在混合模式下一样在地图上移动(物理被禁用的战车将通过传送移动。保持线性加速度的基本计算,以确保位置更新和车速保持真实。)。车辆不会被渲染,因为没有英雄车辆来触发地图图块流。

- 存在主车:

  • 车辆休眠:自动驾驶车辆在超过定义的值时将进入休眠状态。
settings = world.get_settings()# 距离主车距离超过2km的车辆将睡眠。
settings.actor_active_distance = 2000world.apply_settings(settings)

  • 车辆重生:在TM中,休眠Actor可以配置为在英雄战车周围持续重生。战车将在英雄战车的用户可定义距离内重生上下限范围。注意,最小下限距离为 20m。

  • 要在英雄战车 25 米和 700 米范围内重生休眠战车:

my_tm.set_respawn_dormant_vehicles(True)
my_tm.set_boundaries_respawn_dormant_vehicles(25,700)

四、TM车辆路径规划

注意:以下例程为官方内容

  • 首先,我们将选择一些航点来构建我们的路径。生成点是方便的航点,与之前一样,我们可以使用 CARLA 的调试工具在地图上绘制生成点的位置。
# 在地图上用数字标出刷出点的位置
for i, spawn_point in enumerate(spawn_points):world.debug.draw_string(spawn_point.location, str(i), life_time=10)# 在同步模式,我们需要设置俯视图的观察者视角
while True:world.tick()
  • 我们选择生成点和航点,在城镇内创建两个汇聚的交通流,造成拥堵,这可能是一个有趣的场景,可以呈现给自动驾驶代理。
spawn_points = world.get_map().get_spawn_points()# 路径一的起点
spawn_point_1 =  spawn_points[32]
# 选择路径一的轨迹点
route_1_indices = [129, 28, 124, 33, 97, 119, 58, 154, 147]
route_1 = []
for ind in route_1_indices:route_1.append(spawn_points[ind].location)# 路径二的起点
spawn_point_2 =  spawn_points[149]
# 选择路径二的轨迹点
route_2_indices = [21, 76, 38, 34, 90, 3]
route_2 = []
for ind in route_2_indices:route_2.append(spawn_points[ind].location)# 将轨迹点打印到地图上面
world.debug.draw_string(spawn_point_1.location, 'Spawn point 1', life_time=30, color=carla.Color(255,0,0))
world.debug.draw_string(spawn_point_2.location, 'Spawn point 2', life_time=30, color=carla.Color(0,0,255))for ind in route_1_indices:spawn_points[ind].locationworld.debug.draw_string(spawn_points[ind].location, str(ind), life_time=60, color=carla.Color(255,0,0))for ind in route_2_indices:spawn_points[ind].locationworld.debug.draw_string(spawn_points[ind].location, str(ind), life_time=60, color=carla.Color(0,0,255))while True:world.tick()

在这里插入图片描述

  • 现在我们已经选择了生成点和航点,现在可以开始生成流量并将生成的载具设置为遵循我们的航点列表。
# 创建生成车辆的间隔时间
spawn_delay = 20
counter = spawn_delay# 设置生成车辆的上限数量
max_vehicles = 200
# 路径一与路径二点交替生成标志位,alt为True生成路径一
alt = Falsespawn_points = world.get_map().get_spawn_points()
while True:world.tick()n_vehicles = len(world.get_actors().filter('*vehicle*'))vehicle_bp = random.choice(blueprints)# 设置每隔20帧重新生成车辆并赋予自动驾驶行为、行驶轨迹与行为。if counter == spawn_delay and n_vehicles < max_vehicles:# 在轨迹1和轨迹二起点交替生成车辆if alt:vehicle = world.try_spawn_actor(vehicle_bp, spawn_point_1)else:vehicle = world.try_spawn_actor(vehicle_bp, spawn_point_2)if vehicle: # 如果车辆成功生成vehicle.set_autopilot(True) # TM控制车辆自动驾驶#设置自动更新车辆车灯traffic_manager.update_vehicle_lights(vehicle, True)#设置随机左右变道概率为0traffic_manager.random_left_lanechange_percentage(vehicle, 0)traffic_manager.random_right_lanechange_percentage(vehicle, 0)#关闭自动变道功能traffic_manager.auto_lane_change(vehicle, False)# 交替生成轨迹路径if alt:traffic_manager.set_path(vehicle, route_1)alt = Falseelse:traffic_manager.set_path(vehicle, route_2)alt = Truevehicle = Nonecounter -= 1elif counter > 0:counter -= 1elif counter == 0:counter = spawn_delay
  • 使用上面的代码,我们创建了两个由 TM 功能引导的来自地图两侧的汇聚流量流。这导致镇中心的一条道路拥堵。这种技术可以在更大范围内用于模拟自动驾驶汽车的多个棘手情况,例如繁忙的环形交叉路口或高速公路交叉路口。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/wshpvx17.shtml

相关文章

[carla入门教程]-5 使用ROS与carla通信

本专栏教程将记录从安装carla到调用carla的pythonAPI进行车辆操控并采集数据的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 第五节 使用ros与carla通信 本小节的主要内容是介绍carla中的如何使用ros进行通信. 章节内容介…

CARLA安装记录(二)

安装好显卡驱动后&#xff0c;接下来的步骤是安装Unreal Engine。我的操作系统是Ubuntu 18.04 系统要求 Ubuntu 18.04。CARLA兼容Ubuntu 16.04及之前版本&#xff0c;但虚幻引擎正常工作需要合适的编译器。至少130GB磁盘空间。CARLA会占用大约31GB的空间&#xff0c;而虚幻引…

Carla安装记录

Carla安装记录 最近打算在做一些自动驾驶相关的东西&#xff0c;所以安装了一下Carla。在这里记录一些自己的安装过程中遇到的一些问题和解决的方法。 Carla release版本下载 想要安装Carla&#xff0c;可以选择release版本或者源码安装。在这里我主要介绍release版本的安装…

Carla中实现车辆轨迹获得

Carla中实现车辆循迹及车道保持&#xff08;使用MPC和强化学习&#xff09; 需要用到的 python apicarla.mapmethods一个简单的方法实现路径规划 carla.Waypointmethods carla.DebugHelpercarla.World 强化学习部分方法自动驾驶综述实验结果 模仿学习&#xff08;Imitation Lea…

Carla学习(五) Carla常用传感器

Depth camera,输出carla.Image&#xff0c;深度相机使用三通道RGB值存储距离信息&#xff0c;然后将其转换为距离灰度图&#xff1a; normalized (R G * 256 B * 256 * 256) / (256 * 256 * 256 - 1) in_meters 1000 * normalized传感器数据包含&#xff1a; frame&#…

Carla传感器

1.介绍 Carla中传感器类别多种多样&#xff0c;不同传感器数据之间也存在差异。但是传感器的使用方法之间存在一致性。本文介绍Carla中传感器使用的通用方法。有关传感器的描述可以在carla.Sensor类中查看 2. 传感器的通用方法 在介绍传感器的通用方法之前&#xff0c;需要明…

Carla安装

近期在实习&#xff0c;入坑了Carla环境&#xff0c;分享一下安装经验 Quick start package installation - CARLA Simulator 文档里得安装说明还是比较全得&#xff0c;安装包比较大&#xff0c;我安装得是windons版本&#xff0c;遇到得坑不多&#xff0c;还是比较顺利得。 …

Carla学习(八)利用carla制作自己的kitti数据集

利用carla制作kitti 3D目标检测数据集基本上就是获得图片、雷达、2D和3D box。 这里主要需要解决的问题就是carla世界的坐标系和kitti数据集的坐标系不太一样&#xff0c;kitti坐标系如下所示&#xff1a; 具体的坐标转换我参考了Fredrik00 https://github.com/Ozzyz/carla-d…

carla环境安装、运行以及版本切换(Windows)

本栏目将介绍carla&#xff0c;包括安装、pythonAPI运行、carla的技术点介绍、自行开发脚本玩转carla&#xff0c;以及自定义的控制carla中的车辆&#xff0c;通过carla生成感知数据集等方法。 1. Carla&#xff08;windows&#xff09;环境安装、运行 支持操作系统&#xff…

CARLA 笔记(02)— Ubuntu 安装 CARLA(服务端、客户端、安装 miniconda、创建虚拟环境、更换 pip 源、生成交通流、人工控制车辆按键)

https://carla.readthedocs.io/en/0.9.13/start_quickstart/ 1. 预置条件 Ubuntu 18.04CARLA 0.9.138 GB 以上显卡现存20 GB 以上硬盘空间Python 2 或者 Python 3pip 检查 pip 版本 # For Python 3pip3 -V# For Python 2pip -V升级 pip 版本 # For Python 3pip3 install --u…

Carla自动驾驶仿真二:Carla多视图切换代码详解

文章目录 前言一、Carla多视图切换效果二、Camera安装坐标系1、Carla.Location2、Carla.Rotation 三、接口及代码详解1、接口介绍2、生成上帝视图代码3、生成Camera视图代码 四、完整代码 前言 1、Carla提供了大量的Python API接口&#xff0c;用户可以通过查找文档实现各类功…

[carla入门教程]-2 pythonAPI的使用

本专栏教程将记录我从安装carla到调用carla的pythonAPI进行车辆操控的全流程,带领大家从安装carla开始,到最终能够熟练使用carla仿真环境进行传感器数据采集和车辆控制. 文章目录 第二节 pythonAPI的使用1. 安装Anoconda环境并创建虚拟环境2.使用Vscode 打开工程目录3.学习使用…

CARLA传感器详细文档介绍+python实例(持续更新ing)

CARLA中有两种类型的传感器&#xff1a;每帧都工作的传感器&#xff08;相机&#xff0c;点云等&#xff09;和只有特定环境下才接收数据的传感器&#xff08;触发检测&#xff09;。都属于carla.Sensor类&#xff0c;从carla.BlueprintLibrary类中实例化。 第一类&#xff1a…

carla学习笔记(十)

实验室同学需要做仿真数据的采集实验&#xff0c;为记录以下整个采集过程。方便未来进行类似数据采集时减少写代码的时间。 采集数据要求&#xff1a; 控制一辆车&#xff0c;从a点到b点。然后在路侧架设一个lidar&#xff0c;采集车辆通过激光lidar区域时的数据。 一、首先…

Carla学习笔记(1):Ubantu20.04安装Carla 0.9.13

前言 最近准备深入研究下Carla与Apollo联合仿真,故安装了Ubantu20.04&#xff0c;做好前期准备。由于第一次安装Carla,不可避免的需要踩一些坑&#xff0c;所以写篇指南记录下,坑都在结尾。不建议按照csdn的教程去安装&#xff0c;直接用官方文档安装。 安装Carla有前提条件,…

carla入门

carla 一、安装 官网地址 1.1 windows下安装 下载zip文件安装 在CARLA官方文档中点击下图部分&#xff0c;文档链接https://carla.readthedocs.io/en/latest/start_quickstart/ 到git下直接下载windows版本&#xff0c; 下面可以选择版本&#xff0c; 这里我用最新版 在解…

Carla 地图

1. 介绍 Carla在0.9.11中扩展了地图功能&#xff0c;增加了许多有意思的扩展功能。 包括在地图上控制指定建筑物的渲染&#xff0c;加载不同的图层等。 We have extended the maps API to provide the ability to toggle on and off every environment object individually. W…

Carla内容简介

最近学长安排了新的任务&#xff0c;开始学习Carla仿真软件。这个软件之前在自己电脑安装一次&#xff0c;各种坑&#xff0c;坑到我怀疑人生&#xff0c;大概装了两三天才装上&#xff0c;之后因为毕设就没动过了&#xff0c;时隔小一年又重新开始学。。。&#xff08;后续有时…

Carla学习2:carla安装与使用

文章目录 0. 建议1. carla学习相关链接1.1 官方资料1.1 学习教程 2. Carla安装2.1 服务器端2.1.1 下载预编译版本&#xff08;也可以使用下载源码并编译&#xff09; 2.1.2 启动服务器端及服务器端显示导航2.3 客户端2.3.1 创建python环境2.3.2 安装carla 的pythonAPI所需要的依…

【仿真】Carla介绍与使用 [1] (附代码手把手讲解)

0. 参考与前言 主要介绍无人驾驶的仿真环境CARLA&#xff0c;开源社区维护&#xff0c;以下为相关参考链接&#xff1a; Carla官方文档 建议后续找的时候 先按好版本号&#xff0c;有些功能/api 是新版本里有的&#xff0c;Carla官方github Youtube PythonWindow 0.9.5 主要是…