我们用一个具体的实例来详细说明如何使用Scrum框架开发智能驾驶软件。

项目实例:开发一个“高速公路自动巡航增强版”功能

  • 功能描述:在已有自适应巡航的基础上,增加基于导航数据的自动车速调节(根据弯道曲率、收费站距离自动减速)、自动变道超车(在慢车阻挡时)以及自动驶入匝道的功能。

Scrum流程详解

Scrum的核心角色、事件和工件将贯穿整个开发流程。

第一步:组建团队与产品待办列表梳理
1. 角色分配:
  • 产品负责人: 来自产品管理部门。他/她的目标是最大化功能商业价值。负责定义功能优先级,并与客户(整车厂)沟通

    • 实例: PO决定,第一个版本(MVP)必须先解决基于导航的自动减速”和“安全自动变道”,因为这是客户最关心的安全与舒适性痛点。“自动驶入匝道”复杂度高可以放在后续迭代。(MVP=Minimum Viable Product,中文通常翻译为 “最小可行产品)

  • Scrum Master: 敏捷教练。负责确保团队遵循Scrum流程,移除障碍

    • 实例: 团队抱怨测试车辆预约困难,SM主动协调资源,建立了固定的车辆测试时段。当团队在“弯道曲率计算”上产生分歧时,SM引导团队进行时间盒式的技术讨论,而不是无休止的争论。

  • 开发团队: 跨职能的专家小组,包括:

    • 软件工程师: 写感知、规划、控制算法的代码。

    • 算法工程师: 设计机器学习模型用于物体识别、行为预测。

    • 测试工程师: 设计仿真测试用例和实车测试流程。

    • 系统工程师: 确保功能符合整车系统要求和安全标准。

    • 实例: 团队共7人,他们自组织地决定谁负责感知模块的改进,谁负责规划层的变道逻辑。

2. 创建产品待办列表:

PO会创建一个包含所有功能、需求、改进的列表,并按优先级排序

  • 产品待办列表项示例

    • [高]    车辆能根据前方500米处收费站信息,自动平滑减速至停止。
    • [高]    车辆能识别前方慢车,并在条件允许时自动发起向左变道
    • [中]    车辆能根据弯道曲率计算舒适通过速度自动调节
    • [低]    车辆在临近高速出口时,能自动驶入匝道。
    • [非功能]所有决策的延迟必须小于100毫秒。
    • [非功能]功能必须通过ISO26262ASIL−B级别的安全认证。

第二步:Sprint循环(核心流程)

Scrum开发通过一系列固定的“冲刺”来完成,每个Sprint通常为2-4周。我们以一个2周的Sprint为例。

Sprint 1 目标:实现“基于导航数据的自动减速”基础版本。

1. Sprint计划会议
  • 参与者: 整个Scrum团队。

  • 目的: 决定这个Sprint要完成什么,以及如何完成。

  • 流程

    • 第一部分: PO讲解产品待办列表中优先级最高的项目。团队共同决定:“我们这个Sprint的目标是让车辆在仿真环境中,能够根据预定义的‘前方收费站’事件,成功执行减速动作。”

    • 第二部分: 团队将选定的待办项拆解成具体、可执行的任务,形成 Sprint待办列表

      • Sprint待办列表示例

        • 任务1:设计减速决策算法接口(8小时)

        • 任务2:从导航模块获取收费站位置类型数据(13小时)

        • 任务3:实现平滑减速 曲线控制逻辑(21小时)

        • 任务4:在仿真环境创建测试场景(收费站、弯道(8小时)

        • 任务5:减速功能编写单元测试集成测试(13小时)

    • 团队承诺在这个Sprint结束时,交付一个“完成”的、可演示的功能增量。

2. 每日站会
  • 时间: 每天同一时间,15分钟。

  • 目的: 同步进度,发现障碍,调整当日计划。

  • 实例

    • 软件工程师A:“昨天我完成了减速曲线算法的初版。今天我将把它集成到控制模块。遇到的问题是和真实车辆动力学模型的对接有些参数不确定。”

    • 软件工程师B:“我昨天提供了接口文档。今天我可以和你一起调试参数。”

    • 测试工程师C:“我创建了3个基础仿真场景。今天我会测试A的算法,并反馈结果。”

    • Scrum Master: 记下“参数不确定”的障碍,会后立即协助解决。

3. 开发与测试

团队在Sprint中进行高强度、跨职能的协作。

  • 算法工程师写出模型后,软件工程师立即集成。

  • 代码提交后,触发持续集成流水线,自动运行大量的仿真测试(如CARLA、LGSVL等平台),测试成千上万个 corner case。

  • 测试工程师分析仿真结果,并准备实车测试的脚本。

4. Sprint评审会议
  • 时间: Sprint结束时。

  • 参与者: 团队、PO、 stakeholders(如其他团队经理、客户代表)。

  • 目的: 检视本Sprint的成果,并收集反馈。

  • 实例

    • 团队在仿真器中演示:车辆在高速上巡航,导航提示2公里后有收费站,车辆在1公里处开始平滑减速,最终在收费杆前稳稳停住。

    • PO反馈:“减速过程很舒适,但能否在UI上给乘客一个明确的提示,比如‘即将减速’?”

    • 系统工程师反馈:“减速的减速度值需要符合公司制定的舒适性标准,这是下个Sprint需要验证的。”

    • 团队将这些反馈记录下來,PO可能会将其作为新的待办项加入产品列表。

5. Sprint回顾会议
  • 时间: Sprint评审之后。

  • 参与者: 仅Scrum团队。

  • 目的: 反思团队在流程人际协作方面如何能做得更好。

  • 实例

    • 做得好的: 仿真测试效率很高,帮我们提前发现了3个重大bug。

    • 待改进: 代码合并经常发生冲突,说明我们沟通不够。

    • 改进措施: 从下个Sprint开始,我们实行“结对编程”来开发核心模块,并每天下午固定一个时间进行代码审查。


第三步:持续迭代与发布
  • Sprint 2: 目标可能是“实现安全自动变道”。团队会基于Sprint 1的代码增量,继续开发。同时,可能会将Sprint 1的功能在封闭场地的实车上进行初步验证。

  • Sprint 3...N: 不断迭代,加入“弯道调速”、“处理更复杂的交通流”等功能,并持续进行仿真-实车闭环测试。

  • 发布: 智能驾驶软件的发布通常是“持续交付”模式。可能每3-4个Sprint(比如2个月),当功能达到一个稳定的、有价值的节点时,就生成一个可供整车集成的软件版本,交付给整车厂进行系统级测试验证

总结与关键点

通过这个实例,可以看到Scrum在智能驾驶开发中的核心优势:

  1. 应对不确定性: 智能驾驶算法充满未知,Scrum通过短周期迭代,快速验证想法,及时调整方向。

  2. 内置质量: 每个Sprint都必须产出“可工作的软件”,迫使测试(尤其是仿真测试)左移,与开发紧密结合。

  3. 快速反馈: 通过每日站会、Sprint评审和回顾,问题能迅速暴露和解决,避免项目后期出现颠覆性风险。

  4. 透明与协作: 所有成员对目标、进度和挑战一目了然,促进了算法、软件、测试、系统等不同领域专家的深度协作。

这种模式非常适合智能驾驶这种复杂、创新且对安全要求极高的软件开发领域。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐