第1章:环境搭建与数据准备
做自动驾驶定位,第一件事不是调算法,而是把环境搭好。
我见过太多人,代码写得挺漂亮,结果一跑就报错——库版本冲突、Python环境乱成一锅粥。嗯,这其实完全可以避免。今天我们就从零开始,把开发环境收拾利索,再聊聊两个最常用的开源数据集。
1.1 Python虚拟环境配置
为什么非要用虚拟环境?说白了,就是隔离依赖。
你想想看,项目A需要numpy 1.19,项目B需要numpy 1.24。如果你直接在系统Python里装,早晚会出问题。我个人习惯,每个项目都建一个独立的虚拟环境,干净、可控、好管理。
推荐方案:使用 venv 或 conda
如果你只是做纯Python开发,venv 就够了。轻量、内置、不折腾。
# 创建虚拟环境
python -m venv urban_tracking_env
# 激活环境(Windows)
urban_tracking_env\Scripts\activate
# 激活环境(macOS/Linux)
source urban_tracking_env/bin/activate
如果你还要处理C++扩展、CUDA之类的,我建议直接用 conda。它不仅能管Python包,还能管系统级的库。
# 创建conda环境
conda create -n urban_tracking python=3.9
# 激活
conda activate urban_tracking
urban_track_py39。这样一看就知道是干什么的。
1.2 依赖库安装
环境激活后,就该装库了。我们这个课程主要依赖以下几个库:
| 库名 | 版本建议 | 用途 |
|---|---|---|
| numpy | ≥1.21 | 数值计算、矩阵运算 |
| pandas | ≥1.3 | 数据读取、结构化处理 |
| matplotlib | ≥3.4 | 可视化、轨迹绘制 |
| geopandas | ≥0.10 | 地理空间数据处理 |
安装命令很简单,一行搞定:
pip install numpy pandas matplotlib geopandas
pip install wheel,再装 geopandas,成功率会高很多。如果还不行,去 Christoph Gohlke 的页面 下载对应的 .whl 文件手动安装。
装完之后,验证一下:
python -c "import numpy; print(numpy.__version__)"
如果没报错,说明环境已经就绪。
1.3 开源数据集介绍
数据是定位算法的粮食。没有好的数据,再牛的模型也白搭。目前业界最常用的两个数据集,一个是 nuScenes,一个是 KITTI。我分别说说它们的特点。
1.3.1 nuScenes
nuScenes 是 Motional 公司(原 nuTonomy)发布的。它最大的特点是——全。全到什么程度?
- 1000 个场景,每个场景 20 秒
- 6 个摄像头、5 个雷达、1 个激光雷达
- GPS + IMU 数据齐全
- 覆盖波士顿、新加坡两个城市
我个人特别喜欢 nuScenes 的一点是:它提供了 精标注的 3D 边界框,而且标注频率是 2Hz。这意味着你可以用它来做高精度的轨迹评估。
数据格式方面,nuScenes 用的是自己的 nuscenes-devkit 工具包。安装方式:
pip install nuscenes-devkit
加载数据也很直观:
from nuscenes import NuScenes
nusc = NuScenes(version='v1.0-trainval', dataroot='/data/nuscenes', verbose=True)
1.3.2 KITTI
KITTI 是卡尔斯鲁厄理工学院和丰田美国研究院联合发布的。它比 nuScenes 更早,2012 年就出来了,但至今仍是定位领域的标杆数据集。
KITTI 的特点:
- 使用 Velodyne HDL-64E 激光雷达
- 提供 11 个序列的 GPS/IMU 真值
- 数据量相对较小(约 20GB)
- 适合做轨迹精度评估(ATE、RPE)
KITTI 的数据格式比较原始,没有统一的 SDK。你需要自己解析 oxts 文件(GPS/IMU 数据)和 velodyne 点云文件。
我一般这样读取 KITTI 的 GPS 数据:
import numpy as np
def load_oxts(file_path):
data = np.loadtxt(file_path)
# 每行包含:lat, lon, alt, roll, pitch, yaw, vn, ve, vf, vl, vu, ...
return data
1.4 知识体系总览
这一章的内容,其实就三块:环境、库、数据。它们之间的关系,我画了一张图:
这张图把本章的核心脉络串起来了。你先把环境搭好,库装齐,数据下载好,后面写代码的时候就不会被环境问题卡住。
1.5 本章小结
这一章我们做了三件事:
- 用
venv或conda创建了独立的 Python 虚拟环境 - 安装了 numpy、pandas、matplotlib、geopandas 四个核心库
- 了解了 nuScenes 和 KITTI 两个数据集的特点和读取方式
环境搭好了,数据也认识了。下一章,我们就开始真正动手——读取轨迹数据,看看它长什么样。