自动驾驶—CARLA仿真(6)vehicle_gallery demo

测试用例:

PythonAPI/examples/vehicle_gallery.py

carla_1

该测试用例是一个 车辆模型展示工具
依次在 CARLA 仿真世界中同一位置生成所有可用的车辆类型,并让 观察者视角(Spectator)围绕每辆车做环绕飞行 ,用于直观查看不同车辆的外观。


🔑 主要模块解析

1. get_transform(vehicle_location, angle, d=6.4)
  • 作用:计算观察者(Spectator)在环绕车辆时应处的位置与朝向。
  • 参数
    • vehicle_location:车辆当前位置(carla.Location
    • angle:环绕角度(单位:度,0° 表示正右方)
    • d=6.4:环绕半径(米)
  • 实现逻辑
    • 在车辆周围 X-Y 平面上以半径 d 做圆周运动
    • Z 坐标固定为 2.0 米(略高于车辆)
    • 摄像机 始终朝向车辆中心 (通过 yaw=180 + angle 实现)
    • 同时设置 俯视角 -15°pitch=-15),获得更自然的观察视角
  • 返回值 :一个完整的 carla.Transform(包含位置和旋转)

✅ 这是典型的 第三人称环绕相机(Orbit Camera) 实现。


2. 连接与初始化
python 复制代码
client = carla.Client('localhost', 2000)
world = client.get_world()
spectator = world.get_spectator()
  • 连接到指定 IP 和端口的 CARLA 服务器
  • 获取仿真世界(world)和主视角观察者(spectator

3. 车辆蓝图遍历
python 复制代码
vehicle_blueprints = world.get_blueprint_library().filter('vehicle')
location = random.choice(world.get_map().get_spawn_points()).location
  • 获取所有车辆类型的蓝图(如轿车、卡车、摩托车等)
  • 随机选择一个地图出生点的位置(仅位置,忽略原始朝向)

4. 主展示循环
python 复制代码
for blueprint in vehicle_blueprints:
    # 在固定位置生成当前车辆
    transform = carla.Transform(location, carla.Rotation(yaw=-45.0))
    vehicle = world.spawn_actor(blueprint, transform)

    try:
        print(vehicle.type_id)  # 打印当前车辆类型

        angle = 0
        while angle < 356:
            # 等待仿真推进一帧
            timestamp = world.wait_for_tick().timestamp
            # 按仿真时间增量更新角度(60度/秒)
            angle += timestamp.delta_seconds * 60.0
            # 更新观察者视角
            spectator.set_transform(get_transform(vehicle.get_location(), angle - 90))

    finally:
        vehicle.destroy()  # 确保车辆被销毁
  • 逐个生成车辆 :所有车辆出现在同一位置,朝向 -45°
  • 同步环绕
    • 使用 world.wait_for_tick() 保证与仿真步长同步
    • 角速度 = 60 度/秒 → 约 6 秒完成一圈
    • 初始偏移 -90° 使起始视角位于车辆正前方
  • 安全清理:无论是否异常,车辆都会被销毁,避免残留

🎯 核心机制总结

机制 说明
环绕相机 通过三角函数计算观察者位置,结合 yaw 控制朝向,实现平滑环绕
仿真同步 使用 wait_for_tick() 获取精确时间步长,确保旋转速度稳定
批量展示 遍历所有 vehicle 蓝图,自动切换模型
资源管理 finally 块确保每个车辆在展示后被销毁

该脚本是 CARLA 中展示 Actor 控制、Transform 操作、同步仿真 的典型官方示例,常用于快速预览车辆资产或演示环绕视角效果。

相关推荐
冬奇Lab1 天前
Workflow 系列(03):状态管理——持久化、幂等性与版本绑定
人工智能·工作流引擎
冬奇Lab1 天前
每日一个开源项目(第146篇):openpilot - 开源自动驾驶辅助系统,曾在 Consumer Reports 评测中超过特斯拉 Autopilot
人工智能·开源·自动驾驶
吴佳浩1 天前
AI 工程师知识地图:模型格式、框架、部署工具一次讲明白
人工智能·aigc·ai编程
IT_陈寒1 天前
Java的Date类又坑了我一次,改用时间戳真香
前端·人工智能·后端
码农胖大海1 天前
AI额度不够用的解决方案
人工智能
后端小肥肠1 天前
小红书虚拟商品怎么做?我先用 Skill 跑通了壁纸品类
人工智能·aigc·agent
feiyu_gao1 天前
从零搭建个人 AI 工作台:一个管理者的 3 个月实验
人工智能·aigc·团队管理
程序员cxuan1 天前
一句话,让你用上 GPT-5.6
人工智能·后端·程序员
机器之心1 天前
AI圈刚开始谈Loop Engineering,两位95后博士已经盯上了人类闭环数据
人工智能·openai