一句话:提出面向 ROS 的 DSL ROSpec,用于指定并验证机器人组件的配置与集成,检测误配置。
基于组件的机器人软件框架(如 ROS)让开发者能通过配置与集成现成组件快速搭建系统,但组件往往缺乏关于如何正确配置与集成的文档;即使有文档,其自然语言规范也无法被强制执行,导致误配置并引发不可预测甚至危险的机器人行为。本文提出 ROSpec——一种为 ROS 定制的领域特定语言,用于指定和验证组件配置及其集成。ROSpec 的设计植根于 ROS 领域概念,并以前期关于误配置的实证研究为依据,力图提供易用且表达力强的误配置指定与检测手段。在高层上,ROSpec 验证参数与组件配置的正确性,通过检查通信属性确保组件正确集成,并检查配置是否满足其部署环境的假设与约束。评估方面,作者用一个含 19 个组件的中型仓库机器人进行建模,并在来自机器人问答平台的 182 个误配置问题数据集上手工分析、分类并实现部分组件的规格。
Component-based robot software frameworks, such as the Robot Operating System (ROS), allow developers to quickly compose and execute systems by focusing on configuring and integrating reusable, off-the-shelf components. However, these components often lack documentation on how to configure and integrate them correctly. Even when documentation exists, its natural language specifications are not enforced, resulting in misconfigurations that lead to unpredictable and potentially dangerous robot behaviors. In this work, we introduce ROSpec, a ROS-tailored domain-specific language designed to specify and verify component configurations and their integration. ROSpec’s design is grounded in ROS domain concepts and informed by a prior empirical study on misconfigurations, allowing the language to provide a usable and expressive way of specifying and detecting misconfigurations. At a high level, ROSpec verifies the correctness of argument and component configurations, ensures the correct integration of components by checking their communication properties, and checks if configurations respect the assumptions and constraints of their deployment context. We demonstrate ROSpec’s ability to specify and verify components by modeling a medium-sized warehouse robot with 19 components, and by manually analyzing, categorizing, and implementing partial specifications for components from a dataset of 182 misconfiguration questions extracted from a robotics Q&A platform.
@article{paperbot3021,
title = {ROSpec: A Domain-Specific Language for ROS-Based Robot Software},
author = {Paulo Canelas and Bradley Schmerl and Alcides Fonseca and Christopher S. Timperley},
journal = {Proceedings of the ACM on Programming Languages},
volume = {9},
number = {OOPSLA2},
year = {2025},
doi = {10.1145/3763169}
}