1. 课程导论与环境搭建
大家好,我是你们这门课的老司机。做自动驾驶仿真这行当,掐指一算也有五六年了。今天咱们要聊的这门课,说白了就是教你怎么把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 课程目标与学习路径
这门课学完,你能做到三件事:
- 搭建环境:Ubuntu + CARLA 0.9.x 一套带走
- 录制数据:把仿真过程中的传感器数据、车辆状态、场景信息全部录下来
- 回放评测:把录好的数据回放出来,并做定量分析
学习路径我建议这样走:
| 阶段 | 内容 | 预计时间 |
|---|---|---|
| 第一阶段 | 环境搭建 + 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半天...
好了,环境搭建这部分就到这里。记住一句话:环境配不好,后面全白搞。花点时间把这一步走稳,后面你会感谢自己的。
可可精品资料库