机器人是一个具有挑战性的领域,需要软件和硬件的融合来完成所需的自主任务。任何工作流程的关键是在部署到生产环境之前对软件进行自动构建和测试。本报告讨论了美国陆军作战能力发展司令部陆军研究实验室(ARL)的无人自主车辆软件研究平台MAVericks的软件开发过程中使用的持续集成/持续交付工具的重要性和创建情况。这个工具在ARL进行的快速研究和开发中起着至关重要的作用--包括模拟和嵌入式硬件目标的自动构建测试,以及验证软件在环模拟中的预期行为。
持续集成/持续交付(CI/CD)是软件开发中常用的工具,用于自动构建、测试和部署代码。这个工具对于提高研究的速度和效率至关重要,同时确保在增加或改变新功能时功能不受阻碍。在CI/CD之前,软件开发过程是具有挑战性的,随着越来越多的合作者修改代码库,任何新的开发都有可能破坏现有的功能--比如代码不再构建,自主行为和故障保护装置不再按预期工作。
本报告重点关注美国陆军作战能力发展司令部(DEVCOM)陆军研究实验室(ARL)的MAVericks无人自主飞行器(UAV)软件平台的CI/CD集成,该平台建立在开源平台ROS2和PX4之上。ROS2是一套用于构建机器人应用的软件库和工具,而PX4是一个强大的无人机飞行控制软件。利用这两个平台,MAVericks是一个专注于敏捷飞行的大型合作项目,在模拟和机器人平台上都能发挥作用。MAVericks的目标是在ModalAI的VOXL和RB5硬件平台上运行,因为它提供了尺寸、重量和功率,同时也是蓝色无人机项目的合作伙伴,这意味着他们得到了国防创新部门的资助,以符合2020年国防授权法第848条的规定。
合作者包括美国军事学院的西点军校,作为分布式和协作式智能系统和技术项目的一部分;加州大学伯克利分校,作为规模化和稳健的自治项目的一部分;以及马里兰大学的人工智能和多代理系统的自治项目--而且这个名单一直在增加。此外,ARL一直在寻求提高其算法的稳健性和成熟的能力,以过渡到DEVCOM和国防部的其他组织。随着许多合作者加入MAVericks,重要的是要确保每次修改后有最低限度的可用功能,以鼓励快速加入和贡献。MAVericks是一个由一百多个软件包组成的大型研究平台,重要的是每个软件包都能可靠地构建和运行。通常情况下,合作者只关心几个软件包,他们可以很容易地进行修改和添加,而不需要对不相关的问题进行排查,这一点至关重要。由于这种不断增长的社区,很容易偶然地引入错误或破坏不相关的功能。因此,CI/CD是一个很好的解决方案,它将为不同的用户群体提高平台的可靠性和可用性。
CI/CD管道实现了许多简化开发的功能。它可以完全构建整个平台,确保新用户的依赖性安装成功,在模拟环境中运行和测试平台,以确保自主行为正常工作,并快速构建压缩的工作空间,以防止在无人机上构建。
在自主系统的软件开发中,一个有问题的情况是,用户修改了几个包,但只构建和测试了一个特定包。这样,代码就被合并到了生产中,而没有验证它对其他人是否有效。如果未经测试的修改被合并,依赖这些修改的包可能不再构建或通过所有的测试案例。
从用户的角度来看,CI/CD是由用户创建代码合并请求(MR)来触发的,将他们的修改添加到主分支。这就启动了CI/CD,建立了一个管道。该管道包括四个阶段:构建-依赖、构建-完整、测试和部署。对于每个阶段,可以并行地运行多个作业来完成该阶段。在每个作业中,流水线首先将合并后的变化复制到一个新的环境中,并完成一个特定的任务。在流水线的最后,一个完全构建的版本被上传,并准备在无人机上闪现。如果任何步骤失败,其余的管道阶段将被中止,并通知用户到底是什么地方出了问题,以便他们能够解决任何问题。管线的概述见图1。
在本报告中,描述了MAVericks CI/CD的基础,然后详细介绍了管道中的每个阶段,以及所克服的几个挑战。