百度Apollo星火自动驾驶大赛经验分享

以下内容来自“2025年 百度 Apollo 星火自动驾驶技术培训 – 武汉” 参赛经验分享 本人发言稿

各位老师、同学,大家下午好!

今年是我参加百度Apollo星火自动驾驶大赛的第三年了。我从2023年参加第二十五届开始,拿到了全国二等奖;2024年参加第二十六届非常幸运地获得了全国一等奖。从大一一个人懵懵懂懂地摸索,到现在对Apollo这套复杂的系统逐渐熟悉,这个过程充满了挑战,但也收获巨大。 我相信在座的同学里,肯定也有不少人是像我当初一样,一个人在战斗。所以今天,我想把自己这三年,摸索出来的一些最核心、最实用的经验分享给大家,希望能帮大家少走点弯路。


第一点:官方资料用起来

  • 不要小看官方文档和视频! 我知道很多同学一上来就想直接上手改代码、跑仿真。Apollo官网提供的那些资料,绝对是你快速入门、避免在基础问题上卡壳的最强武器!**
  • 从系统安装、环境配置,到模块原理解析、传感器标定,再到每一届的赛题详解和代码实操指南,官方都提供了非常系统、详细的视频和文档。在我第一届参赛的时候,基本上把整个Apollo官网翻完,才把系统装好,这也奠定了我现在对于系统安装的熟练度基础。
  • 熟读这些文档,能让你在最短时间内对整个Apollo系统的架构、核心模块(感知、预测、规划、控制)的作用、以及比赛的基本流程有一个全局性的、清晰的了解。 这就像是拿到了一张地图,让你知道自己在整个“自动驾驶世界”中的位置,下一步该往哪走。强烈建议大家,尤其是新手,在动手写第一行代码之前,先把相关的官方文档和视频过一遍,打好基础,事半功倍!

第二点: 源代码得“啃”起来

  • 官方文档很棒,但它更像是一个“说明书”,告诉你“是什么”和“怎么用”。 当你真正想优化算法、解决具体场景下的棘手问题,或者想理解某个参数为什么这样设置时,文档往往就不够用了。
  • 这时候,就得硬着头皮去“啃”源代码了! 这听起来有点吓人,Apollo的代码量确实很大,全部加起来有八十万行。但别慌,不需要你一下子看完所有代码。
  • 我的方法是:带着具体问题去看代码。 比如:
    • 为什么在 LANE_FOLLOW (车道跟随) 场景下,车辆在弯道的轨迹不够平滑? 那就深入这个场景对应的规划逻辑,重点关注负责生成路径的 PATH_BOUND_DECIDERLANE_BORROW(如果涉及借道)、以及关键的优化器 PIECEWISE_JERK_PATH_OPTIMIZER 等任务,看看它们处理参考线、边界和优化目标的代码细节。
    • 想调整控制(Control)模块的响应速度?那就要找到控制器的参数配置文件,并理解这些参数在代码里是如何被使用的。
  • 通过聚焦于特定场景和具体任务去阅读代码,你能清晰地看到:
    • 某个场景下,激活了哪些关键的任务,它们的执行顺序是怎样的?
    • 某个具体的任务内部,数据是如何流动和处理的(输入是什么?做了哪些计算或决策?输出是什么?)?
    • 影响决策和轨迹生成的关键参数在哪里定义(可能在配置文件如 *.pb.txt 中,也可能在代码里硬编码),它们是如何被使用的
  • 这样“有的放矢”地啃Planning源码,效率会高很多。 虽然一开始还是会觉得复杂,但坚持下去,你会对Apollo规划决策的“黑盒子”内部运作机制有飞跃性的理解。这不仅能帮你精准定位问题、有效调参,甚至能让你有能力去修改或定制任务逻辑来应对更复杂的比赛场景!“啃源码”是让你从“会跑Demo”迈向“真正理解并掌握Planning精髓”的关键一步!

第三点:动手实践做起来

  • 前面两点是基础,但最重要、最核心的一点来了:一定要动手!拼命动手! 自动驾驶,尤其是比赛,实践性超乎想象地强!
  • 我踩过最大的坑就是: 觉得自己看懂了文档,理解了某个算法的思想,或者想出了一个绝妙的优化点子,就以为在仿真环境里一定能跑出好结果。现实往往很骨感! 理论懂了,思路有了,不等于仿真环境里的车就能顺利开好。
  • 为什么? 因为仿真环境模拟的是复杂的、动态的真实世界。你的代码、你的参数调整,会和各种传感器噪声、环境干扰、其他交通参与者的不确定行为发生交互。很多问题,比如幽灵刹车、决策犹豫、轨迹抖动、路口卡死,只有在你实际运行、观察日志、分析数据的时候才会暴露出来。
  • 所以,我的血泪教训就是:
    • 勤动手: 多去仿真环境里跑!各种场景都要反复跑。
    • 多观察: 不仅要看车跑得顺不顺,更要仔细看 Dreamview 可视化界面,看预测轨迹合不合理、规划路径稳不稳。更要死磕日志文件!日志里藏着问题发生的所有线索(报错、警告、关键变量值的变化)。
    • 多分析: 根据观察到的现象和日志信息,分析问题到底出在哪个环节?是预测误判了?规划路径碰撞了?还是参数太激进了?
    • 不断调试优化: 基于分析,有针对性地去修改代码或调整参数,然后立刻再跑仿真验证效果。这个过程是循环往复的,可能一个小问题就需要调试几十次,几十个小时。
  • 纸上得来终觉浅,绝知此事要躬行。 在Apollo星火大赛里,没有足够多的仿真里程积累,没有经历过无数次“跑崩->分析->修改->再跑”的循环,是很难拿到好成绩的。 动手实践,是连接理论知识和比赛成绩的唯一桥梁!

总结一下:

  1. 用好资料打基础。
  2. 深入代码求理解。
  3. 勤于实践来优化。

这就是我这三年参赛下来,觉得最重要的三点经验。当然,比赛过程中肯定还会遇到各种预料之外的挑战,团队协作、时间管理这些也很关键。但把这三点基础打扎实了,我觉得就能有个不错的起点。

最后,我想说,参加这个比赛真的收获很大,不仅是技术上的成长,也认识了很多志同道合的朋友。希望我的这点经验能给大家带来一些启发。祝大家在今年的比赛中都能取得理想的成绩!敢想敢做,代码里跑出未来! 谢谢大家!

本文作者:SakuraPuare
本文链接:https://blog.sakurapuare.com/archives/2025/06/apollo_experience_sharing/
版权声明:本文采用 CC BY-NC-SA 4.0 CN 协议进行许可
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇