Apollo自动驾驶比赛新手入门指南:从环境搭建到首次提交

1次阅读
没有评论

共计 2170 个字符,预计需要花费 6 分钟才能阅读完成。

image.webp

1. Apollo 平台架构与比赛意义

Apollo 是百度开源的自动驾驶平台,采用模块化设计。对于比赛来说,核心要掌握三个层级:

Apollo 自动驾驶比赛新手入门指南:从环境搭建到首次提交

  • 感知层:激光雷达 / 摄像头数据处理(如障碍物检测)
  • 决策层:路径规划与行为决策(比赛关键得分点)
  • 控制层:车辆转向 / 油门控制(PID 调参基础)

参加比赛的最大价值在于:通过真实场景任务(如避障、红绿灯识别)快速理解自动驾驶系统闭环逻辑。官方提供的仿真环境可以安全测试代码,这对没有实车条件的学习者特别友好。

2. 开发环境搭建实战

2.1 基础环境准备

  1. 安装 Ubuntu 18.04/20.04(必须 64 位系统)
  2. 分配至少 4 核 CPU+16GB 内存 +50GB 磁盘空间
  3. 关闭 Secure Boot(否则 Docker 驱动会报错)

2.2 Docker 部署关键步骤

# 安装官方脚本(注意网络通畅)curl https://raw.githubusercontent.com/ApolloAuto/apollo/master/docker/setup_host/setup_host.sh | bash

# 拉取镜像(国内推荐使用阿里云镜像)./docker/scripts/dev_start.sh -C -g cn

常见报错 1 E: Unable to locate package nvidia-docker2
解决方法:先执行 distribution=$(. /etc/os-release;echo $ID$VERSION_ID) 更新软件源

常见报错 2 Docker build failed
检查点:确保 /tmp 目录有 10GB 以上空间

3. 核心模块代码解析

3.1 感知模块示例(Python)

目标检测接口典型实现:

def detect_objects(lidar_points):
    # 点云聚类处理(比赛常用 DBSCAN 算法)clusters = sklearn.cluster.DBSCAN(eps=0.5).fit(lidar_points)

    # 生成 3D 边界框
    bboxes = []
    for label in set(clusters.labels_):
        if label == -1: continue  # 忽略噪声点
        cluster_points = lidar_points[clusters.labels_ == label]
        bboxes.append(calc_bounding_box(cluster_points))  
    return bboxes

3.2 规划模块(C++)

路径规划核心逻辑:

void PlanningComponent::Plan() {
  // 从 HDMap 读取道路信息
  auto road_graph = hdmap_->GetRoadGraph();

  // 生成候选路径(比赛常用 A * 算法)std::vector<Path> candidates = 
    AStarPlanner::Plan(road_graph, start_pose, end_pose);

  // 选择最优路径(考虑曲率 / 距离等权重)current_path_ = EvaluatePaths(candidates);
}

4. 仿真测试技巧

4.1 Dreamview 操作流程

  1. 启动命令:./scripts/bootstrap.sh
  2. 浏览器访问localhost:8888
  3. 关键功能按钮:
  4. Module Controller:启停感知 / 规划模块
  5. Layer Menu:切换地图图层
  6. Data Recorder:保存测试数据

4.2 日志分析要点

查看规划决策日志:

grep "PLANNING" /apollo/data/log/planning.INFO

典型错误日志模式:
WARNING: Stuck at obstacle → 感知漏检
ERROR: Failed to sample path → 规划参数不合理

5. 新手避坑指南

5.1 地图加载失败

现象:Dreamview 显示空白地图
解决 :检查/apollo/modules/map/data/ 下是否有正确的base_map.xml

5.2 控制指令延迟

现象:车辆响应明显滞后
解决 :调整/apollo/modules/control/conf/control_conf.pb.txt 中的 control_period 参数

5.3 坐标系混乱

现象:感知结果与车辆位置偏差大
解决 :统一使用world 坐标系(Apollo 默认),所有模块需做坐标转换

6. 性能优化建议

6.1 基础调参方向

  • 感知:调整聚类算法参数(如 DBSCAN 的eps
  • 规划:增加路径采样密度sample_step
  • 控制:PID 参数建议从 Kp=1.0, Ki=0.1, Kd=0.01 开始调试

6.2 ROS 优化技巧

# 查看通信延迟(单位:ms)rostopic delay /apollo/perception/obstacles

# 提升性能(在 cyber_launch 文件中添加)--scheduler_policy=fifo
--process_level=realtime

下一步精进路线

完成首次提交后,建议按以下顺序深入:
1. ROS2 迁移 :学习cyberRT 替代传统 ROS(Apollo 7.0+ 已切换)
2. PnC 算法:深入研究 Frenet 坐标系下的轨迹规划
3. 多传感器融合:实践相机 + 激光雷达的卡尔曼滤波实现
4. 实车部署:了解 CAN 总线协议与车辆接口规范

小提示:比赛代码不要直接复制往届方案,组委会会检测代码相似度。理解架构思想后自己实现更能提升能力。

正文完
 0
评论(没有评论)