当前位置: 首页 > news >正文

自动驾驶—CARLA仿真基础操作

CARLA 入门指南

CARLA 仿真器是一套面向自动驾驶(AD)及其他机器人应用的综合性合成训练数据生成解决方案。CARLA 能够模拟高度逼真的环境,复现现实世界中的城镇、城市和高速公路,以及在这些道路空间中行驶的车辆和其他物体。

此外,CARLA 仿真器也是一个出色的评估与测试平台。你可以在仿真环境中部署已训练好的自动驾驶智能体(agents),安全地测试和评估其性能与安全性,而无需承担任何对硬件设备或其他道路使用者的风险。

启动 CARLA 并连接客户端

CARLA 可通过命令行启动:Windows 系统使用可执行文件,Linux 系统使用 Shell 脚本。请先按照 Linux 或 Windows 的安装说明完成安装,然后在命令行中启动 CARLA:

cd/carla/root ./CarlaUE4.sh

若要通过 Python API 控制 CARLA,需将 Python 客户端连接到服务器的开放端口。客户端通过 client 和 world 对象控制仿真器。

importcarlaimportrandom# Connect to the client and retrieve the world objectclient=carla.Client('localhost',2000)world=client.get_world()

client 对象用于维持与服务器的连接,并提供多种功能,如执行命令、加载或导出数据。你可以使用它加载其他地图,或重载当前地图(恢复初始状态)。

默认端口为 2000,你也可以指定任意可用端口;同时可通过输入计算机 IP 地址替代 localhost,从而实现 服务器与客户端分离部署——例如在一台配备高性能 GPU 的服务器上运行 CARLA 仿真,而在本地笔记本上运行 Python 客户端进行神经网络训练。这对 GPU 资源紧张的场景尤其有用。

注意:以下内容假设 CARLA 运行在默认的异步模式下。若启用了同步模式,部分代码行为可能有所不同。

加载地图

CARLA 地图的信息
在 CARLA API 中,world 对象提供了对仿真环境中所有元素的访问权限,包括地图、建筑物、交通灯、车辆和行人等。CARLA 服务器通常会加载一个默认地图(通常是 Town10)。若要在启动时指定其他地图,可使用 config.py 脚本:

python ./util/config.py -m Town04

也可在客户端通过 world 对象动态加载地图:

client.load_world('Town04')

可看到仿真器中,地图已切换:

观察者(Spectator)导航

观察者(Spectator)是进入仿真的视觉窗口。默认情况下,当你在带显示器的电脑上运行 CARLA 服务器时,会自动弹出一个新窗口显示观察者视角(除非使用 -RenderOffScreen 命令行参数)。
观察者有助于可视化仿真过程:你可以熟悉所加载的地图,直观查看各项操作的效果(如添加车辆、改变天气、开关地图图层等),也便于调试。
你可以使用鼠标和键盘自由飞行观察者视角:

Q:向上移动(朝窗口顶部)
E:向下移动(朝窗口底部)
W:向前
S:向后
A:向左
D:向右

鼠标左键拖动:上下控制俯仰角(pitch),左右控制偏航角(yaw)
你也可以通过 Python API 访问和操控观察者:

# Retrieve the spectator objectspectator=world.get_spectator()# Get the location and rotation of the spectator through its transformtransform=spectator.get_transform()location=transform.location rotation=transform.rotation# Set the spectator with an empty transformspectator.set_transform(carla.Transform())# This will set the spectator at the origin of the map, with 0 degrees# pitch, yaw and roll - a good way to orient yourself in the map

添加非玩家角色(NPCs)

地图加载完成后,我们需要在仿真中添加车辆,以模拟真实交通环境中的其他道路使用者(即非玩家角色,NPCs)。

首先从蓝图库中选择所需车辆:

# 获取蓝图库并筛选车辆蓝图vehicle_blueprints=world.get_blueprint_library().filter('*vehicle*')

接着,利用地图预设的出生点(spawn points)放置车辆:

# 获取地图的出生点spawn_points=world.get_map().get_spawn_points()# 随机在地图各处生成 50 辆车foriinrange(50):world.try_spawn_actor(random.choice(vehicle_blueprints),random.choice(spawn_points))

此外,还需创建一辆作为仿真核心的“主车”(Ego Vehicle)——即未来由你的自动驾驶算法控制的车辆:

ego_vehicle=world.spawn_actor(random.choice(vehicle_blueprints),random.choice(spawn_points))

CARLA 还支持添加行人,以构建更真实的驾驶场景。在 CARLA 术语中,车辆和行人均称为“Actor”(参与者),具体详见

添加传感器

现代自动驾驶车辆通过多种车载传感器感知环境,如光学摄像头、光流相机、激光雷达(LiDAR)、毫米波雷达(RADAR)和加速度计等。CARLA 内置了多种传感器模型,可用于生成机器学习训练数据。传感器可安装在车辆上,也可固定在某一点(如模拟监控摄像头)。

以下示例将一个标准 RGB 摄像头安装到主车上以录制视频:

# 定义摄像头相对于车辆的位置(车顶上方 1.5 米)camera_init_trans=carla.Transform(carla.Location(z=1.5))# 从蓝图库创建摄像头camera_bp=world.get_blueprint_library().find('sensor.camera.rgb')# 将摄像头挂载到主车camera=world.spawn_actor(camera_bp,camera_init_trans,attach_to=ego_vehicle)

随后,通过listen()方法启动数据记录。该方法接受一个回调函数,用于处理传感器数据(如保存到磁盘或传输至其他程序):

# 使用 lambda 函数将图像保存为 PNG 文件camera.listen(lambdaimage:image.save_to_disk('out/%06d.png'%image.frame))

CARLA 支持多种传感器类型,点击此处深入了解。


使用交通管理器驱动车辆

添加完车辆和传感器后,需通过交通管理器(Traffic Manager)让车辆动起来。该组件可控制车辆在地图道路上自主行驶,遵守交通规则,模拟真实道路行为。

# 将所有车辆交由交通管理器控制forvehicleinworld.get_actors().filter('*vehicle*'):vehicle.set_autopilot(True)

现在,你的仿真已运行起来:多辆车在地图中行驶,其中一辆主车上的摄像头正在录制数据。这些数据可用于训练自动驾驶智能体。交通管理器还提供丰富的行为定制功能,详见文档。

这是最基础的仿真设置。接下来,你可以深入探索 CARLA 提供的更多传感器和高级功能,以构建更精细、更真实的仿真场景。


设置主车(Ego Vehicle)

“主车”是 CARLA 仿真中的核心概念,通常指:

主车对提升仿真效率至关重要,例如:

  1. 大地图分块加载
    大型地图(如 Town12)采用分块设计,仅加载主车附近的区块以优化性能。

  2. 混合物理模式(Hybrid Physics Mode)
    当仿真包含大量交通车辆时,仅对主车附近的车辆计算物理,大幅节省计算资源。

如何定义主车?
在生成主车时,为其蓝图设置role_name属性为'hero'

ego_bp=world.get_blueprint_library().find('vehicle.lincoln.mkz_2020')ego_bp.set_attribute('role_name','hero')ego_vehicle=world.spawn_actor(ego_bp,random.choice(spawn_points))

选择地图

CARLA 内置多张精心设计的地图,涵盖城市、乡村、住宅区等多样环境,包含不同建筑风格和道路布局(从无标线乡道到多车道高速公路)。

地图描述
Town01小型简易城镇,含河流与多座桥梁
Town02混合住宅与商业建筑的小城镇
Town03较大的城区地图,含环岛与大型路口
Town04山区小镇,含“8字形”无限高速公路
Town05方格网状城镇,含十字路口与桥梁,支持多车道变道
Town06多车道高速公路,含多个出入口及“密歇根左转”
Town07乡村环境,窄路、玉米地、谷仓,极少红绿灯
Town08/09Leaderboard 挑战赛专用“隐藏”地图
Town10市中心城区,含摩天大楼、住宅区与海滨大道
Town11未装饰的大地图
Town12超大地图,含高层、住宅、乡村等多种区域

查看可用地图列表:

client.get_available_maps()

加载指定地图:

client.load_world('Town03_Opt')

选择车辆

CARLA 提供丰富的车辆模型库以构建多样化交通流。浏览车辆目录了解详情。

列出所有可用车辆蓝图:

forbpinworld.get_blueprint_library().filter('vehicle'):print(bp.id)
http://www.cnnetsun.cn/news/15822.html

相关文章:

  • 终极收藏版:2025年最值得合作的GEO公司推荐,技术实力大揭秘!
  • QARM:多模态语义对齐与量化在推荐系统中的实践路径
  • AI 省钱双 buff:价格优化 + 优惠整合,省到实处
  • 用1/10的成本跑RAG?向量压缩+模型蒸馏+智能缓存实战指南
  • 毕业设计实战:基于SpringBoot+MySQL的机动车号牌管理系统,从0到1避坑全流程,导师都说稳!
  • 高密度互联:连接AI“积木”的精密桥梁
  • 2025十大项目管理工具揭晓:从轻量协作到企业级方案全解析
  • 26Java基础之特殊文本文件、日志技术
  • AI投喂Geo优化系统哪家经验丰富?深度解析行业领先服务商
  • 专业的煤矿水仓清淤公司
  • GPT-5.2 的数据基石、原生多模态与隐私承诺
  • 16、Lotus Domino 6在Linux系统中的数据备份与安全保障
  • Hikari-LLVM15终极指南:5个实战场景掌握代码混淆技术
  • 如何快速解决OpenVLA模型微调后推理中的动作归一化问题
  • 故障注入测试:构建高韧性系统的工程实践
  • WinSetView终极指南:如何快速统一Windows文件夹视图设置
  • ImageGPT技术解析:像素序列预测如何重构视觉AI底层架构
  • Beyond Compare 5 密钥生成完整指南:从原理到实战应用
  • 手艺人札记:在开源系统中重塑技术的温度
  • 5种方法彻底解决番茄小说离线下载难题
  • 史诗级漏洞警报:ASP.NET Core 被曝 CVSS 9.9 分漏洞,几乎所有.NET 版本无一幸免!
  • Cider音乐播放器终极指南:跨平台Apple Music体验全解析
  • 力扣刷题:最大子数组和
  • ⭐力扣刷题:岛屿数量
  • Screenbox媒体播放器:深度解析Windows平台的现代播放解决方案
  • 5步重构OpenSTM扫描隧道显微镜项目架构
  • DXVK终极配置手册:Linux游戏性能优化的完整解决方案
  • 活字格低代码平台:企业数字化转型的技术架构与实践剖析
  • NVIDIA CUDA 13.1权威指南:CUDA Tile驱动下一代GPU编程,性能全面提升
  • Figma中文界面完整指南:快速实现设计工具本地化