一、课程导论与环境搭建

大家好,我是你们这门课的老司机。做自动驾驶仿真这行当,掐指一算也有五六年了。今天咱们要聊的这门课,说白了就是教你怎么把CARLA里跑出来的数据,回放出来,然后做评测。

你可能会问:为什么非得学这个?

嗯,我刚开始做自动驾驶项目那会儿,也踩过这个坑。当时在真实路测中遇到一个诡异的场景——一辆自行车突然从盲区窜出来。我们想复现这个场景,结果发现录下来的传感器数据根本没法直接回放。折腾了两周,最后才意识到:数据回放与评测,是整个仿真闭环里最容易被忽视、但也是最关键的一环。

核心观点:没有数据回放,你的仿真就是一次性的;没有评测,你的回放就是自娱自乐。

1.1 CARLA仿真器简介

CARLA,全称是Car Learning to Act。它是个开源的自动驾驶仿真器,基于Unreal Engine 4开发。我个人习惯把它比作「自动驾驶界的GTA」——你可以在里面自由搭建城市、布置车辆、设置天气,甚至模拟传感器噪声。

为什么选CARLA?

  • 开源免费:不像某些商业软件,动辄几十万授权费
  • 生态活跃:GitHub上两万多星,社区资源丰富
  • 接口灵活:Python API设计得相当优雅,上手快
  • 场景丰富:内置了Town01到Town07等多个地图,还有各种天气系统

我记得2019年刚接触CARLA 0.8.x版本时,那API写得真是...嗯,一言难尽。但到了0.9.x版本,整个架构重写了,变得清爽很多。这也是为什么咱们课程选择0.9.x系列的原因。

1.2 数据回放与评测的意义

说白了,数据回放解决的是「可复现性」问题。

你想想看,在真实道路上测试自动驾驶,遇到一个极端场景可能得跑几万公里。但有了仿真回放,你可以把那个场景录下来,反复播放、反复调试。这就是所谓的「场景复现」。

评测呢?它解决的是「好不好」的问题。

光能跑起来不算本事,你得知道跑得好不好。碰撞率、偏离路线次数、舒适度指标、决策延迟...这些都是硬指标。我在项目中遇到过最头疼的事,就是算法团队说「我改进了」,但拿不出量化数据来证明。有了评测体系,谁好谁坏一目了然。

我的经验:建议你在项目一开始就搭建好评测框架。别等到最后才补,那时候数据格式都乱了,想补都补不回来。

1.3 课程目标与学习路径

这门课学完,你能做到三件事:

  1. 搭建环境:Ubuntu + CARLA 0.9.x 一套带走
  2. 录制数据:把仿真过程中的传感器数据、车辆状态、场景信息全部录下来
  3. 回放评测:把录好的数据回放出来,并做定量分析

学习路径我建议这样走:

阶段 内容 预计时间
第一阶段 环境搭建 + Python API基础 2-3天
第二阶段 数据录制与存储 3-4天
第三阶段 数据回放与可视化 3-4天
第四阶段 评测指标与自动化 4-5天

别贪快。我见过太多人急着跑demo,结果环境都没配好,后面全崩了。稳扎稳打才是正道。

1.4 Ubuntu/CARLA 0.9.x安装与验证

好,咱们来点干货。先说说环境要求。

硬件要求:

  • CPU:i7以上,建议i9或AMD Ryzen 7
  • GPU:NVIDIA GTX 1060以上,建议RTX 2070或更高
  • 内存:16GB起步,32GB更稳
  • 硬盘:至少50GB空闲空间

软件要求:

  • Ubuntu 18.04 或 20.04(我推荐20.04,兼容性更好)
  • Python 3.7 或 3.8
  • NVIDIA驱动 + CUDA(如果要用GPU加速)

注意:千万不要在Windows上直接跑CARLA 0.9.x!虽然官方说支持,但我试过,各种莫名其妙的问题。老老实实用Ubuntu,省心。

安装步骤其实不复杂:

# 1. 下载CARLA 0.9.13(当前稳定版)
wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/CARLA_0.9.13.tar.gz

# 2. 解压
tar -xzf CARLA_0.9.13.tar.gz

# 3. 进入目录
cd CARLA_0.9.13

# 4. 安装Python依赖
pip install -r PythonAPI/examples/requirements.txt

# 5. 启动CARLA(无渲染模式,节省资源)
./CarlaUE4.sh -quality-level=Low -RenderOffScreen

验证是否安装成功:

# 打开另一个终端
cd CARLA_0.9.13/PythonAPI/examples

# 运行一个简单的示例
python3 spawn_npc.py -n 10 -w 5

如果能看到10辆车在街上跑,那就说明环境搭好了。我曾经有一次怎么都跑不起来,最后发现是显卡驱动版本不对。嗯,这里要注意:NVIDIA驱动版本必须 >= 450.80.02。

1.5 Python API基础与客户端配置

CARLA的Python API,说白了就是一套控制仿真世界的接口。核心就两个概念:Client(客户端)和World(世界)。

客户端负责连接服务器,世界负责管理所有实体。

来个最简单的例子:

import carla

# 连接客户端
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)

# 获取世界
world = client.get_world()

# 获取所有参与者
actors = world.get_actors()
vehicles = actors.filter('vehicle.*')

print(f"当前有 {len(vehicles)} 辆车")

# 设置天气
weather = carla.WeatherParameters(
    cloudiness=80.0,
    precipitation=30.0,
    sun_altitude_angle=45.0
)
world.set_weather(weather)

这段代码干了三件事:连接、查询、设置。你想想看,整个仿真世界就像个巨大的数据库,API就是你的SQL语句。

我个人习惯把客户端配置写成一个函数,方便复用:

def setup_carla_client(host='localhost', port=2000, timeout=10):
    """配置CARLA客户端"""
    try:
        client = carla.Client(host, port)
        client.set_timeout(timeout)
        world = client.get_world()
        print(f"✅ 连接成功!当前地图: {world.get_map().name}")
        return client, world
    except Exception as e:
        print(f"❌ 连接失败: {e}")
        return None, None

小技巧:如果连接失败,先检查CARLA服务器是否在运行。用 ps aux | grep Carla 看一眼。我经常忘了启动服务器,然后在那debug半天...

好了,环境搭建这部分就到这里。记住一句话:环境配不好,后面全白搞。花点时间把这一步走稳,后面你会感谢自己的。

课程导论与环境搭建 - 知识体系 CARLA仿真回放与评测 CARLA仿真器简介 数据回放与评测意义 课程目标与学习路径 Ubuntu/CARLA安装验证 Python API基础与配置 开源 · 基于UE4 · 场景丰富 可复现性 · 量化评测 四阶段学习 · 稳扎稳打 硬件要求 · 安装步骤 · 验证 Client · World · 代码示例

可可精品资料库