一句话:通过分析 ROS Answers 与文献,归纳 ROS 配置错误分类并评估现有检测技术的覆盖缺口。
ROS 是可复用组件搭建机器人软件系统的流行框架,组件通过配置文件定制和连接。由于组件假设常未被检查或明示,配置错误往往在部署后才暴露,可能引发不可预测甚至危险行为。本文对问答平台 ROS Answers 进行实证研究,识别并归类 ROS 开发中的配置错误,再通过文献综述评估现有检测技术对这些类别的覆盖情况。研究发现 12 个高层类别和 50 个子类别,其中 27 个类别尚无现有技术覆盖。最后讨论了未来工作的方向。
The Robot Operating System (ROS) is a popular framework and ecosystem that allows developers to build robot software systems from reusable, off-the-shelf components. Systems are often built by customizing and connecting components via configuration files. While reusable components theoretically allow rapid prototyping, ensuring proper configuration and connection is challenging, as evidenced by numerous questions on developer forums. Developers must abide to the often unchecked and unstated assumptions of individual components. Failure to do so can result in misconfigurations that are only discovered during field deployment, at which point errors may lead to unpredictable and dangerous behavior. Despite misconfigurations having been studied in the broader context of software engineering, robotics software (and ROS in particular) poses domain-specific challenges with potentially disastrous consequences. To understand and improve the reliability of ROS projects, it is critical to identify the types of misconfigurations faced by developers. To that end, we perform a study of ROS Answers, a Q&A platform, to identify and categorize misconfigurations that occur during ROS development. We then conduct a literature review to assess the coverage of these misconfigurations by existing detection techniques. In total, we find 12 high-level categories and 50 sub-categories of misconfigurations. Of these categories, 27 are not covered by existing techniques. To conclude, we discuss how to tackle those misconfigurations in future work.
@inproceedings{paperbot8450,
title = {Understanding Misconfigurations in ROS: An Empirical Study and Current Approaches},
author = {Paulo Canelas and Bradley Schmerl and Alcides Fonseca and Christopher S. Timperley},
booktitle = {ISSTA},
year = {2024},
doi = {10.1145/3650212.3680350}
}