自动驾驶—CARLA仿真(8)tutorial demo

测试用例

PythonAPI/examples/tutorial.py

这是一个 基础传感器数据采集示例,演示如何:

  1. 在仿真中生成一辆主车并启用自动驾驶
  2. 为主车挂载一个深度摄像头(Depth Camera)
  3. 将摄像头捕获的图像自动保存到磁盘
  4. 动态调整车辆位置并批量生成 NPC 车辆

适用于数据集生成、传感器调试、自动化测试等场景。

保存的depth图如下:


🔑 主要模块解析

1. 客户端连接与世界获取
python 复制代码
client = carla.Client('localhost', 2000)
world = client.get_world()
  • 连接到远程 CARLA 服务器
  • 获取当前仿真世界实例

✅ 这是所有 CARLA 脚本的起点。


2. 主车生成与配置
python 复制代码
bp = random.choice(blueprint_library.filter('vehicle'))
if bp.has_attribute('color'):
    color = random.choice(bp.get_attribute('color').recommended_values)
    bp.set_attribute('color', color)

transform = random.choice(world.get_map().get_spawn_points())
vehicle = world.spawn_actor(bp, transform)
vehicle.set_autopilot(True)
  • 随机选择车辆模型(如 Tesla、Dodge 等)
  • 随机设置车身颜色
  • 在地图出生点生成车辆
  • 启用自动驾驶(由 TrafficManager 控制)

💡 注意:车辆被加入 actor_list 以确保后续销毁。


3. 深度摄像头挂载与图像保存
python 复制代码
camera_bp = blueprint_library.find('sensor.camera.depth')
camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4))
camera = world.spawn_actor(camera_bp, camera_transform, attach_to=vehicle)

cc = carla.ColorConverter.LogarithmicDepth
camera.listen(lambda image: image.save_to_disk('_out/%06d.png' % image.frame, cc))
  • 创建深度摄像头,安装在车头前方(x=1.5m, z=2.4m)
  • 使用对数深度着色器LogarithmicDepth),将深度值映射为灰度图像
  • 注册回调函数 :每帧图像自动保存为 _out/000001.png, _out/000002.png ...

✅ 这是 传感器数据自动采集的核心机制


4. 动态调整主车位置
python 复制代码
location = vehicle.get_location()
location.x += 40
vehicle.set_location(location)
  • 将主车沿 X 轴向前移动 40 米
  • 注意 :此操作会瞬移车辆(不经过物理运动),常用于快速定位

⚠️ 此操作仅适用于测试,真实驾驶中应通过控制指令移动。


5. 批量生成 NPC 车辆
python 复制代码
transform.location += carla.Location(x=40, y=-3.2)
transform.rotation.yaw = -180.0
for _ in range(10):
    transform.location.x += 8.0
    npc = world.try_spawn_actor(bp, transform)
    if npc is not None:
        npc.set_autopilot(True)
  • 在主车前方道路线性排列生成 10 辆 NPC 车
  • 使用 try_spawn_actor() 避免因碰撞导致崩溃
  • 所有 NPC 启用自动驾驶,形成简单交通流

✅ 演示了 可控的交通场景构建方法


6. 资源安全清理
python 复制代码
finally:
    camera.destroy()
    client.apply_batch([carla.command.DestroyActor(x) for x in actor_list])
  • 使用 finally 块确保无论是否异常,所有 Actor 都被销毁
  • 采用 批量销毁命令apply_batch)提高效率

✅ 这是 CARLA 脚本的最佳实践,防止仿真环境残留。


修改demo:添加观察者视角

原测试用例使用默认观察者视角,随着主车、NPC位置的变动,导致在默认视角看不到车辆;因此,我们就可以修改设置下观察者视角;

在 vehicle = world.spawn_actor(...) 之后添加:

复制代码
spectator = world.get_spectator()
vehicle_location = vehicle.get_transform().location
spectator.set_transform(carla.Transform(
    vehicle_location + carla.Location(z=50),  # 高空俯视
    carla.Rotation(pitch=-90)                 # 垂直向下看
))

或更真实的跟随视角:

c 复制代码
# 第三人称跟随
spectator.set_transform(carla.Transform(
    vehicle.get_transform().location + carla.Location(x=-10, z=5),
    vehicle.get_transform().rotation
))

✅ 总结

该脚本是 CARLA 最基础但完整的数据采集范例,展示了:

  1. 如何生成并控制车辆
  2. 如何挂载传感器并保存数据
  3. 如何构建简单交通场景
  4. 如何安全管理仿真资源
相关推荐
小雨下雨的雨3 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
我没胡说八道6 小时前
高校论文AI检测优化工具对比研究与实测分析(2026)
人工智能·深度学习·机器学习·计算机视觉·aigc·论文
秦亚伟6 小时前
AI浪潮重塑融资租赁行业新格局
人工智能
love530love6 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
元启数宇6 小时前
喷淋AI布点实战:8小时人工布点→20分钟自动出图
人工智能
哈哈,柳暗花明6 小时前
人工智能专业术语详解(H)
人工智能·专业术语
圣殿骑士-Khtangc6 小时前
AI 编程工具 2026 实战横评:Cursor 3 vs Claude Code vs Copilot,开发者选型完全指南
人工智能·copilot
云器科技6 小时前
云器Lakehouse 2026年5月版本发布:拥抱 AI Agent,重塑数据智能开发新范式
人工智能
小鹰-上海鹰谷-电子实验记录本6 小时前
第六届党建引领科创生态座谈会 | 邓光辉博士出席分享AI赋能创新药科研新范式
人工智能·ai·电子实验记录本·药企合规
极客老王说Agent6 小时前
2026电信IDC机房巡检深度报告:人工巡检频次和深度够吗?实在Agent重塑智慧运维新范式
人工智能·ai·chatgpt