悠悠楠杉
Apollo自动驾驶规划模块二次开发环境配置指南
一、环境配置基础准备
自动驾驶规划模块的开发环境搭建就像组装一台精密仪器,每个部件都需要精准配合。我们以Apollo 6.0版本为例,首先需要准备:
硬件要求:
- 至少16GB内存(规划算法仿真时消耗较大)
- 50GB可用SSD存储空间
- NVIDIA显卡(建议RTX 3060以上)
软件基础:bash
必需依赖项安装
sudo apt-get install -y git-core bash-completion docker.io
sudo usermod -aG docker $USER # 当前用户加入docker组
注意:建议使用Ubuntu 18.04/20.04 LTS版本,避免兼容性问题。笔者曾在Ubuntu 22.04上遇到GLIBC版本冲突,耗时两天才解决。
二、Apollo源码获取与编译
规划模块的代码位于modules/planning
目录,我们需要完整获取代码库:
bash
git clone https://github.com/ApolloAuto/apollo.git
cd apollo
git checkout v6.0.0 # 指定稳定版本
编译环境配置是新手最容易踩坑的环节,建议按步骤操作:
- Bazel构建系统配置:
bash ./apollo.sh clean # 清理可能存在的中间文件 ./apollo.sh build # 首次编译耗时约30分钟
编译过程中常见两个问题:
- 内存不足导致进程被kill:添加交换分区或减少并行编译线程(--jobs=4
)
- Protobuf版本冲突:需完全删除系统原有protobuf
三、规划模块专项配置
规划模块的核心配置文件位于:
modules/planning/conf/
├── planning_config.pb.txt # 主配置文件
└── traffic_rule_config.pb.txt # 交通规则配置
关键参数调优示例:protobuf
planning_config.pb.txt
defaulttaskconfig: {
tasktype: LANECHANGEDECIDER
lanechangedeciderconfig {
enablelanechangeurgencycheck: true
enableprioritizechange_lane: false
}
}
建议开发时开启调试日志:
c++
// 在planning_component.cc中添加
ADEFF_LOG(INFO) << "Current trajectory points: "
<< trajectory_debug.DebugString();
四、开发工具链搭建
高效的开发需要合适的工具组合:
VSCode配置:
json { "configurations": [ { "name": "Apollo", "includePath": [ "${workspaceFolder}/**", "/apollo/bazel-apollo/external/**" ], "defines": ["PROTOBUF_INLINE_NOT_IN_HEADERS=0"] } ] }
调试技巧:
- 使用gdb调试需先编译debug模式:
bash bazel build -c dbg //modules/planning:planning
- 可视化调试建议结合Dreamviewer的
PnC Monitor
面板
- 使用gdb调试需先编译debug模式:
五、二次开发实战建议
根据笔者参与某L4级园区物流车的开发经验,规划模块改进通常涉及:
算法替换:
c++ // 在planner_dispatcher.cc中注册自定义算法 planner_factory_.RegisterPlanner( PlannerType::MY_ALGORITHM, []() -> Planner* { return new MyCustomPlanner(); });
性能优化技巧:
- 使用TBB并行化代价计算
- 利用SIMD指令优化轨迹采样
- 建立场景缓存机制减少重复计算
测试验证体系:bash
运行单元测试
bazel test //modules/planning/test:lanefollowtest
场景测试
cyberrecorder play -f demourban_xx.record
六、常见问题解决方案
Q1:规划轨迹出现突变跳变?
- 检查参考线平滑算法参数
- 验证Frenet坐标系转换的正确性
Q2:决策逻辑不符合预期?
- 使用planning_debug
主题输出决策树
- 检查scenario_manager
的状态迁移条件
Q3:实时性不满足要求?
- 采样点数量与质量权衡
- 考虑引入轨迹缓存机制
开发环境的搭建只是万里长征第一步,建议后续重点关注:
1. Apollo社区每周技术分享会
2. 规划算法论文复现(如EM Planner、Lattice Planner等)
3. 真实路测数据回灌验证
记住:好的规划模块应该像老司机一样,既能遵守规则,又能灵活应变。遇到问题时,不妨从人类驾驶行为中寻找灵感。