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

相关推荐
nap-joker13 小时前
【综述型论文+知识增强深度学习KADL】知识增强深度学习及其应用:一项综述
人工智能·深度学习·知识增强深度学习·kadl·经验知识·科学知识·知识识别
Dev7z13 小时前
基于注意力机制LSTM的温度预测系统设计与实现
人工智能·lstm·注意力机制·温度预测系统
yhdata13 小时前
173.6亿元!2032年半导体材料回收市场规模锁定,资源再生产业迎来新增长极
大数据·人工智能
hzhsec13 小时前
AI Security Agent:用自然语言做安全巡检,AI 自己跑命令
人工智能·安全·运维开发·ai编程
带娃的IT创业者13 小时前
WeClaw 架构演进史:从 0 到 1 构建跨平台 AI 助手的完整历程
人工智能·python·websocket·架构·fastapi·架构设计·实时通信
大熊背13 小时前
双目拼接摄像机中简单的亮度差校正原理
人工智能·算法·双目拼接·亮度差消除
九.九14 小时前
3W功耗 HiNas+cpolar,随时随地访问家里的文件
人工智能·深度学习
凸头14 小时前
AI 流式聊天接口实现(WebFlux+SSE)
java·人工智能
大熊背14 小时前
双目拼接摄像机中简单的色差校正原理
人工智能·算法·isppipeline·双目拼接
qq_2816842114 小时前
Transformer-XL:突破固定长度枷锁,重构长文本语言模型
人工智能·深度学习·语言模型·重构·transformer