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

相关推荐
风象南8 小时前
Token太贵?我用这个数据格式把上下文窗口扩大2倍
人工智能·后端
NAGNIP17 小时前
轻松搞懂全连接神经网络结构!
人工智能·算法·面试
moshuying18 小时前
别让AI焦虑,偷走你本该有的底气
前端·人工智能
董董灿是个攻城狮19 小时前
零基础带你用 AI 搞定命令行
人工智能
喝拿铁写前端21 小时前
Dify 构建 FE 工作流:前端团队可复用 AI 工作流实战
前端·人工智能
阿里云大数据AI技术21 小时前
阿里云 EMR Serverless Spark + DataWorks 技术实践:引领企业 Data+AI 一体化转型
人工智能
billhan201621 小时前
MCP 深入理解:协议原理与自定义开发
人工智能
Jahzo1 天前
openclaw桌面端体验--ClawX
人工智能·github
billhan20161 天前
Agent 开发全流程:从概念到生产
人工智能