共计 2203 个字符,预计需要花费 6 分钟才能阅读完成。
开篇:认识 Apollo 平台与赛事框架
Apollo 是百度开源的自动驾驶平台,采用模块化设计,包含感知(Perception)、预测(Prediction)、规划(Planning)和控制(Control)等核心模块。省赛通常要求参赛者在模拟环境中完成特定场景的自动驾驶任务,评分会考虑轨迹平滑度、障碍物避让、交通规则遵守等指标。

对于新手来说,首先要理解赛事提供的仿真环境(如 LGSVL 或 Apollo Cyber RT)和数据集格式(通常包含激光雷达点云、摄像头图像、GPS/IMU 数据)。建议先浏览赛事官网的技术文档,明确任务要求和评分细则。
环境搭建避坑指南
1. Docker 配置
Apollo 强烈推荐使用 Docker 容器来保证环境一致性。官方提供了预配置的镜像,但需要注意:
- 宿主机的 Ubuntu 版本需为 18.04/20.04(与镜像系统匹配)
- 分配至少 8GB 内存和 20GB 磁盘空间
常见问题:
- 若遇到
nvidia-docker权限错误,需执行:sudo groupadd docker sudo usermod -aG docker $USER - 如果启动容器后 GPU 不可用,检查驱动版本是否匹配:
nvidia-smi # 查看 CUDA 版本 docker run --gpus all nvidia/cuda:11.0-base nvidia-smi # 验证容器内 GPU
2. 依赖安装
Apollo 6.0+ 需要 ROS2 和 Cyber RT 框架。建议按顺序:
- 安装 ROS2 Foxy(Ubuntu 20.04)或 Eloquent(Ubuntu 18.04)
- 编译 Cyber RT:
./apollo.sh build_cyber - 启动 Dreamview 可视化工具:
./scripts/bootstrap.sh
核心模块详解
感知模块接口调用
以下是一个调用激光雷达感知的 Python 示例(需在 Cyber RT 环境中运行):
from cyber.python.cyber_py3 import cyber
from modules.perception.proto.perception_obstacle_pb2 import PerceptionObstacles
def callback(perception_msg):
print(f"收到 {len(perception_msg.perception_obstacle)} 个障碍物")
for obj in perception_msg.perception_obstacle:
print(f"ID:{obj.id} 类型:{obj.type} 速度:{obj.velocity.x:.2f}m/s")
if __name__ == "__main__":
cyber.init()
node = cyber.Node("perception_listener")
node.create_reader("/apollo/perception/obstacles",
PerceptionObstacles,
callback)
cyber.spin()
关键点说明:
/apollo/perception/obstacles是标准 Topic 名称- 障碍物类型枚举值:0= 未知, 1= 行人, 2= 车辆, 3= 自行车
- 坐标系遵循 Apollo 的 FLU(前左上)规则
决策规划算法调优
省赛中常用的优化策略:
- 路径平滑:
- 使用 FemPosDeviation 算法减少急转弯
-
在
planning.conf中调整:planner_public_road_config { enable_smooth_reference_line: true smoothing_method: FEM_POS_DEVIATION } -
跟车距离:
- 修改
distance_approach参数避免急刹:# 在决策模块中 safety_distance = max(3.0, current_speed * 0.8) # 动态安全距离
性能优化实战
点云处理加速
当处理 Velodyne 64 线激光雷达数据时:
-
使用 OpenMP 并行化预处理:
#pragma omp parallel for for (int i = 0; i < point_cloud.size(); ++i) {// 滤除地面点} -
启用 CUDA 加速(需配置 GPU 版 PCL):
./apollo.sh build --gpu
时间同步方案
多传感器同步建议方案:
- 硬件同步:使用 PTP 协议同步 GPS/IMU 和激光雷达
- 软件同步:在
modules/calibration中配置:sensor_manager: lidar: "velodyne" camera: "front_6mm" max_time_diff: 0.02 # 允许最大时间差 20ms
赛事实战建议
数据集处理
- 优先处理赛事提供的典型场景:
- 交叉路口
- 施工区域
-
行人横穿
-
使用 Apollo 的
record_parser工具提取关键帧:python3 modules/tools/record_parser/parse_record.py --file input.record
评分优化
重点关注:
- 轨迹评分:
- 保持加速度 <2.5m/s²
-
转向角速度 <25°/s
-
障碍物避让:
- 提前 3 秒预测行人轨迹
- 使用
modules/prediction中的交互式预测模型
延伸学习路径
推荐官方文档重点章节:
遇到问题时,优先查阅 apollo/docs/ 目录下的技术白皮书,并善用 GitHub Issues 搜索历史解决方案。
正文完
