资讯动态

自动驾驶入门指南:分层架构、坐标系与感知规划控制全解析

发布时间:2026/10/14 22:24:57 来源:尧图企业网站定制
1. 为什么入门两个字最容易把人带偏很多人第一次接触自动驾驶脑子里浮现的画面是一辆车自己从A点开到B点中间不用人管。这个画面本身没错但它把问题压缩得太狠了狠到会让你在入门阶段做出完全错误的路径选择。我见过太多人一上来就去啃端到端大模型、去复现某个顶会论文的感知网络结果连车辆运动学模型和坐标系变换都没搞明白代码跑起来车在原地画龙。自动驾驶入门指南这个题目核心价值不在于教你造一台车而在于帮你建立一套分层认知框架。你得先知道这个系统由哪几层构成、每层解决什么问题、层与层之间靠什么接口通信然后才能判断自己该从哪一层切入。这个行业里做感知的人不一定懂控制做控制的人不一定懂规划做规划的人不一定懂标定但所有人都必须理解上下游在干什么否则你交付的东西就是空中楼阁。这篇文章适合三类人第一类是在校学生想找方向但被各种名词轰炸得晕头转向第二类是转行工程师有软件开发或算法基础想切入这个赛道第三类是产品/项目岗需要和技术团队对话但缺乏底层认知。我会从系统架构、坐标系、感知入门、规划控制基础、仿真验证这几个维度展开每个部分都给出可操作的切入点和避坑经验。不堆公式但关键概念一定讲透。提示入门阶段最大的陷阱是跳层学习。你可以在某一层深挖但绝不能对上下层一无所知否则连问题出在哪都定位不了。2. 先搞清楚自动驾驶系统的分层架构与数据流2.1 五层架构的职责边界一个典型的自动驾驶系统可以拆成五层传感器层、感知层、定位与建图层、规划决策层、控制执行层。这五层不是学术上的严格划分而是工程实践中大家默认的协作边界。传感器层负责把物理世界的信息变成电信号和数字数据。摄像头出图像激光雷达出点云毫米波雷达出目标距离和速度IMU出加速度和角速度轮速计出车速。这一层的核心问题是时间同步和标定。时间同步没做好后面融合出来的目标位置就是错的标定没做好激光雷达和摄像头看到的东西对不上融合直接崩。感知层拿到原始数据后要回答三个问题周围有什么、它们在哪、它们要往哪去。检测、分类、跟踪、预测都在这一层。感知的输出通常是障碍物列表每个障碍物带位置、速度、朝向、类别、置信度。定位与建图层回答我在哪和路是什么样的。GNSS加IMU加轮速计做组合定位激光雷达或视觉做里程计和地图匹配。高精地图提供车道线、路沿、交通标志的几何和语义信息。规划决策层分全局和局部。全局规划给出一条从起点到终点的粗略路径局部规划在每条周期内生成一条安全、平滑、可执行的轨迹。决策模块处理变道、跟车、避让、路口通行这些行为选择。控制执行层把轨迹变成油门、刹车、转向的具体指令。横向控制管方向盘纵向控制管速度。这一层对实时性要求最高通常跑在独立的实时控制器上。2.2 数据流的时序关系理解架构之后更重要的是理解数据在时间上的流动关系。传感器采集有延迟感知推理有延迟规划计算有延迟控制执行有延迟。整个链路的总延迟如果超过某个阈值车就会反应迟钝。我习惯用一个简单的表格来梳理各层的典型延迟量级这能帮你建立工程直觉层级典型延迟主要影响因素传感器采集10-100ms曝光时间、扫描周期、传输带宽感知推理30-200ms模型复杂度、硬件算力、批处理策略定位与地图匹配10-50ms匹配算法、地图数据量规划决策20-100ms搜索空间、优化迭代次数控制执行5-20ms控制周期、执行器响应这张表的意义在于当你在调试时发现车辆反应慢你得知道去哪个环节找问题。如果感知占了200ms那大概率是模型太重或硬件不够如果规划占了100ms可能是搜索空间设得太大。2.3 为什么接口定义比算法本身更重要入门阶段最容易忽视的是接口定义。感知输出什么格式、坐标系是什么、时间戳怎么对齐、置信度怎么用这些看起来是工程细节实际上决定了整个系统能不能跑通。我踩过的一个坑感知输出的障碍物位置是在激光雷达坐标系下规划模块默认拿到的是车辆坐标系下的位置中间少了一次变换。结果就是车看到障碍物在左边实际障碍物在右边差点出事。后来我们强制规定所有跨层传递的数据必须明确标注坐标系和时间戳没有例外。注意如果你在入门阶段就养成接口必须显式声明坐标系和时间戳的习惯后面能省掉大量调试时间。3. 坐标系与标定入门阶段最该先啃的硬骨头3.1 为什么坐标系是自动驾驶的语法学外语不学语法你说出来的句子就是乱的。自动驾驶里的坐标系就是语法。车辆坐标系、激光雷达坐标系、摄像头坐标系、IMU坐标系、世界坐标系每个都有自己的原点和轴向定义。数据在这些坐标系之间流转变换错了后面全错。车辆坐标系通常定义在后轴中心x向前y向左z向上。激光雷达坐标系原点在雷达中心轴向取决于安装方式。摄像头坐标系原点在光心x向右y向下z向前。IMU坐标系原点在IMU芯片中心轴向取决于安装朝向。这些定义不是随便定的而是为了让后续计算尽量简单。比如车辆坐标系把原点放在后轴中心是因为车辆运动学模型通常以后轴中心为参考点这样计算转弯半径和航向角变化最方便。3.2 外参标定的实操逻辑外参标定就是求两个坐标系之间的旋转和平移关系。理论上你只需要知道两个坐标系之间的旋转矩阵R和平移向量t就能把点从一个坐标系变换到另一个。实际操作中激光雷达和摄像头的外参标定最麻烦。常见做法是在车辆前方放置一个标定板标定板上有关键点摄像头识别关键点在图像中的像素坐标激光雷达识别关键点在点云中的三维坐标然后通过优化算法求解R和t。这里有个经验标定板的放置位置要覆盖摄像头的整个视野不能只放在正前方。因为镜头畸变在边缘区域更严重如果标定板只放在中心边缘的标定误差会很大。我一般建议至少放五个位置正前、左前、右前、左后、右后每个位置采集至少十帧数据。标定完成后一定要做验证。验证方法是把激光雷达点云投影到图像上看点云是否和图像中的物体边缘对齐。如果对齐得很好说明标定参数可用如果偏差明显说明标定有问题需要重新采集数据。3.3 时间同步的坑与解法时间同步比空间同步更容易被忽视但它的影响同样致命。摄像头曝光有延迟激光雷达扫描一圈需要100msIMU采样频率高但时钟可能和激光雷达不同步。如果这些传感器的时间戳没有对齐到统一时钟融合出来的目标位置就是错的。常见解法是硬件触发加软件对齐。硬件触发让所有传感器在同一时刻采集软件对齐用插值方法把不同频率的数据对齐到同一时间戳。IMU频率高可以用线性插值摄像头频率低通常取最近一帧。我实测下来如果时间同步误差超过10ms在高速场景下目标位置误差就能达到几十厘米。这个误差在低速泊车时可能无所谓但在高速行驶时足以导致误判。提示入门阶段可以先不做多传感器融合但一定要理解时间同步的重要性。哪怕你只用摄像头也要知道图像的时间戳对应的是曝光开始还是曝光结束。4. 感知入门从传统方法到深度学习的最小知识集4.1 感知要解决的三个核心问题感知层的工作可以概括为检测、跟踪、预测。检测是回答有什么跟踪是回答它从哪来、到哪去预测是回答它接下来会怎么动。检测的传统方法包括背景差分、帧差法、霍夫变换等这些方法在特定场景下仍然有用比如车道线检测。但现代自动驾驶感知的主流是深度学习因为深度学习在复杂场景下的鲁棒性远超传统方法。跟踪的核心算法是卡尔曼滤波和匈牙利匹配。卡尔曼滤波负责预测目标下一时刻的位置匈牙利匹配负责把当前帧的检测结果和上一帧的跟踪结果关联起来。这里的关键参数是过程噪声和观测噪声调不好会导致跟踪丢失或ID跳变。预测分两类基于物理模型的预测和基于行为模型的预测。物理模型假设目标保持当前运动状态适合短时预测行为模型考虑目标的意图比如车辆是否要变道、行人是否要过马路适合长时预测。4.2 深度学习感知的最小知识集如果你要入门深度学习感知不需要一上来就啃Transformer先把这几件事搞明白卷积神经网络的基本原理。卷积核在图像上滑动提取局部特征。池化层降低分辨率增加感受野。全连接层做分类或回归。这些概念在任意一本深度学习入门书里都有但你要理解的是为什么卷积适合图像因为图像的特征是局部的、平移不变的。目标检测的两种范式。两阶段检测器先出候选框再分类精度高但速度慢单阶段检测器直接回归框和类别速度快但精度略低。自动驾驶对实时性要求高所以单阶段检测器更常用。语义分割和实例分割的区别。语义分割给每个像素分类但不区分同一类别的不同个体实例分割既分类又区分个体。车道线检测用语义分割障碍物检测用实例分割或目标检测。数据标注的质量控制。深度学习是数据驱动的标注质量直接决定模型上限。我见过太多项目在标注上省钱结果模型怎么调都上不去。标注规范要明确什么算一个目标、遮挡多少算可见、截断目标怎么标。这些规则不定清楚标注员各标各的数据就是垃圾。4.3 感知模块的评测指标感知做完之后怎么判断好坏不能只看mAP。自动驾驶场景下你更关心的是漏检率和误检率。漏检一个行人可能致命误检一个障碍物会导致急刹车。这两个指标要分开看不能用一个综合指标掩盖。另外要看距离分层指标。近处目标检测容易远处目标检测难。如果只报一个总体指标可能近处很好、远处很差但总体看起来还行。我一般要求按10米、30米、50米、100米分层报告。还有一个容易被忽视的指标是时序一致性。单帧检测好不代表连续帧都好。如果目标在连续帧之间跳来跳去跟踪模块会疯掉。评测时要看检测框在时间上的抖动程度。注意入门阶段不要追求SOTA先追求稳定可用。一个mAP低5个点但时序稳定的模型比一个mAP高但帧间跳变的模型有价值得多。5. 规划与控制从能走到走得舒服5.1 规划的分层逻辑规划分全局和局部这个前面提过。这里展开讲局部规划的核心逻辑。局部规划要在每个周期内生成一条轨迹这条轨迹要满足几个条件无碰撞、可执行、舒适、符合交通规则。无碰撞是底线可执行是要求轨迹满足车辆运动学约束舒适是要求加速度和 jerk 在合理范围内符合交通规则是要求不压线、不闯红灯。常见的局部规划算法有采样法、搜索法、优化法。采样法在控制空间或状态空间采样生成候选轨迹然后打分选最优搜索法用A或D在栅格地图上搜索优化法把规划问题建模成优化问题用二次规划或非线性规划求解。入门阶段建议从采样法入手因为逻辑直观、容易调试。采样法的核心是代价函数设计。代价函数通常包括偏离全局路径的代价、偏离车道中心的代价、碰撞代价、速度偏离期望的代价、加速度和 jerk 的代价。每个代价的权重需要调调参过程就是规划器性格的塑造过程。5.2 控制的两个环路控制分横向控制和纵向控制。横向控制管方向盘纵向控制管油门和刹车。横向控制的经典算法是纯追踪和模型预测控制。纯追踪的逻辑是在期望轨迹上找一个预瞄点计算车辆当前朝向和预瞄点方向的夹角然后打方向盘消除这个夹角。预瞄距离是关键参数太短会导致震荡太长会导致切弯。纵向控制相对简单常用PID控制器。但PID的积分项在遇到长下坡或满载时会累积误差需要加抗积分饱和。另外纵向控制要和规划模块的期望速度配合规划给期望速度控制跟踪期望速度。我踩过的一个坑横向控制和纵向控制分开调各自都调得很好但合在一起就出问题。原因是横向控制打方向盘时会影响车速纵向控制加速时会影响横向稳定性。后来我们做了联合调试先固定纵向参数调横向再固定横向参数调纵向最后一起微调。5.3 舒适性评价的量化舒适听起来很主观但工程上可以量化。常用的指标是加速度均方根和jerk均方根。加速度太大乘客会感到推背或前倾jerk太大乘客会感到顿挫。我一般把加速度控制在2m/s²以内jerk控制在5m/s³以内。这两个阈值不是绝对的取决于车型和乘客接受度。但有了量化指标调参就有了方向。还有一个容易被忽视的舒适性因素是方向盘转角速率。方向盘打得太快乘客会感到车辆在画龙。我一般把方向盘转角速率控制在200度/秒以内。提示规划和控制模块的调试一定要在仿真环境里做够实车调试成本太高。仿真环境可以快速迭代参数实车只做最终验证。6. 仿真验证入门阶段最容易被低估的环节6.1 为什么仿真不是可选很多人觉得仿真就是跑个demo实车才是真刀真枪。这个想法在入门阶段特别危险。实车调试一次的成本包括车辆损耗、场地费用、人员时间、安全风险。如果你在仿真里没调好就上实车大概率是浪费时间。仿真环境能帮你做几件事快速迭代算法参数、复现极端场景、做回归测试。极端场景在实车中很难复现比如突然窜出的行人、前车急刹、暴雨天气。仿真里可以随意构造这些场景反复测试算法的鲁棒性。6.2 仿真环境的搭建思路仿真环境分三层场景层、传感器层、车辆动力学层。场景层定义道路、交通参与者、天气、光照。开源工具可以搭建静态场景动态交通参与者需要自己写脚本控制。传感器层模拟摄像头、激光雷达、毫米波雷达的输出。摄像头仿真要模拟镜头畸变、曝光、运动模糊激光雷达仿真要模拟扫描线、反射强度、噪声毫米波雷达仿真要模拟多普勒效应和杂波。车辆动力学层模拟车辆的响应。简单的可以用运动学自行车模型复杂的可以用动力学模型。入门阶段用运动学模型就够了因为它计算快、参数少。6.3 仿真与实车的差异管理仿真再逼真和实车也有差异。传感器噪声分布不同、车辆响应不同、交通参与者行为不同。这些差异会导致仿真里调好的参数在实车上表现不一样。我的经验是仿真里调参数实车上验证逻辑。仿真里可以把参数调得很精细但实车上你要关注的是逻辑是否正确。比如仿真里你可能把碰撞代价调得很高实车上发现车辆过于保守这时候你要调的是代价函数的逻辑而不是继续微调权重。另外实车测试一定要有安全员和急停按钮。入门阶段不要追求无人测试安全永远是第一位的。7. 入门路径与资源取舍的个人经验7.1 按目标选路径如果你的目标是做感知算法路径是深度学习基础 → 目标检测/分割 → 点云处理 → 多传感器融合 → 部署优化。重点是把模型做小做快同时保持精度。如果你的目标是做规划控制路径是车辆运动学 → 经典控制理论 → 优化理论 → 局部规划算法 → 实车调试。重点是理解车辆动力学和舒适性评价。如果你的目标是做系统集成路径是传感器原理 → 标定与同步 → 通信中间件 → 功能安全 → 系统测试。重点是理解各模块的接口和时序。7.2 资源取舍的原则入门阶段时间有限不要什么都学。我的原则是先深后广。选一个方向深挖挖到能独立完成一个小项目然后再横向扩展。比如你先用摄像头做一个车道线检测从数据采集、标注、训练、部署全流程走一遍这比你看十篇综述都有用。开源资源很多但要筛选。优先选有完整文档和活跃社区的项目不要选那种只有论文没有代码的。代码跑不起来你连门都入不了。7.3 我踩过的三个坑第一个坑过早追求端到端。端到端听起来很酷但入门阶段你连中间发生了什么都不知道出了问题根本没法调。模块化架构虽然老土但每个模块的输入输出清晰调试方便。第二个坑忽视数据质量。我早期花大量时间调模型结构后来发现瓶颈在数据标注。标注不规范模型再强也学不到正确的东西。后来我把精力转到数据清洗和标注规范上效果立竿见影。第三个坑不做回归测试。每次改完代码只测当前场景不测之前通过的场景。结果改了A场景B场景挂了。后来我建了一个回归测试集每次改动都跑一遍虽然麻烦但省了很多返工。注意入门阶段最大的敌人不是技术难度而是方向混乱。定好一个方向走通全流程比什么都重要。8. 从入门到能干活之间还差什么入门指南能帮你建立认知框架但离能干活还有距离。这个距离不是知识量而是工程经验。你知道卡尔曼滤波的公式但不知道过程噪声怎么调你知道A*算法但不知道栅格分辨率设多少合适你知道PID但不知道积分饱和怎么处理。这些经验只能在项目中积累。我的建议是找一个完整的开源项目从数据到部署全流程跑一遍。不要只跑推理要跑训练、要改代码、要调参数。跑通之后试着改一个模块看效果怎么变。这个过程会让你把零散的知识点串成线。另外多和做不同模块的人交流。做感知的人可能不知道规划需要什么格式的输出做规划的人可能不知道控制对轨迹的平滑度有要求。交流能帮你理解上下游的约束这在入门阶段特别有价值。最后分享一个我常用的学习方法画数据流图。把整个系统的数据流画出来标注每个节点的输入输出、坐标系、时间戳、频率。画完之后你对系统的理解会清晰很多。这个方法我用了很多年每次接手新系统都先画一遍屡试不爽。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑