自动驾驶—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 操作、同步仿真 的典型官方示例,常用于快速预览车辆资产或演示环绕视角效果。

相关推荐
Hundred billion2 小时前
深度学习基本原理和流程
人工智能·深度学习
周杰伦_Jay2 小时前
【大模型数据标注】核心技术与优秀开源框架
人工智能·机器学习·eureka·开源·github
Jay20021112 小时前
【机器学习】33 强化学习 - 连续状态空间(DQN算法)
人工智能·算法·机器学习
Learn Forever2 小时前
由ChatGPT 的记忆系统谈及如何构建一个对话应用智能体
人工智能
资深低代码开发平台专家3 小时前
GPT-5.2与Gemini 3.0终极抉择:谁更适配你的需求?
人工智能·gpt·ai
得贤招聘官3 小时前
AI招聘的核心破局:从“流程装饰”到“决策引擎”
人工智能
一水鉴天3 小时前
整体设计 定稿 之26 重构和改造现有程序结构 之2 (codebuddy)
开发语言·人工智能·重构·架构
cici158743 小时前
二值化断裂裂缝的智能拼接算法
人工智能·算法·计算机视觉
裤裤兔3 小时前
医学影像深度学习知识点总结
人工智能·深度学习·机器学习·医学影像·医学图像