{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,7,30]],"date-time":"2025-07-30T16:31:24Z","timestamp":1753893084260,"version":"3.41.2"},"reference-count":40,"publisher":"Frontiers Media SA","license":[{"start":{"date-parts":[[2025,1,3]],"date-time":"2025-01-03T00:00:00Z","timestamp":1735862400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["frontiersin.org"],"crossmark-restriction":true},"short-container-title":["Front. Robot. AI"],"abstract":"<jats:p>When developing general-purpose robot software components, we often lack complete knowledge of the specific contexts in which they will be executed. This limits our ability to make predictions, including our ability to detect program bugs statically. Since running a robot is an expensive task, finding errors at runtime can prolong the debugging loop or even cause safety hazards. This paper proposes an approach to help developers catch these errors as soon as we have some context (typically at pre-launch time) with minimal additional efforts. We use embedded domain-specific language (DSL) techniques to enforce early checks. We describe design patterns suitable for robot programming and show how to use these design patterns for DSL embedding in Python, using two case studies on an open-source robot skill platform SkiROS2, designed for the composition of robot skills. These two case studies help us understand how to use DSL embedding on two abstraction levels: the high-level skill description that focuses on what the robot can do and under what circumstances and the lower-level decision-making and execution flow of tasks. Using our DSL EzSkiROS, we show how our design patterns enable robotics software platforms to detect bugs in the high-level contracts between the robot\u2019s capabilities and the robot\u2019s understanding of the world. We also apply the same techniques to detect bugs in the lower-level implementation code, such as writing behavior trees (BTs), to control the robot\u2019s behavior based on its capabilities. We perform consistency checks during the code deployment phase, significantly earlier than the typical runtime checks. This enhances the overall safety by identifying potential issues with the skill execution before they can impact robot behavior. An initial study with SkiROS2 developers shows that our DSL-based approach is useful for finding bugs early and thus improving the maintainability of the code.<\/jats:p>","DOI":"10.3389\/frobt.2024.1363443","type":"journal-article","created":{"date-parts":[[2025,1,3]],"date-time":"2025-01-03T05:11:14Z","timestamp":1735881074000},"update-policy":"https:\/\/doi.org\/10.3389\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["EzSkiROS: enhancing robot skill composition with embedded DSL for early error detection"],"prefix":"10.3389","volume":"11","author":[{"given":"Momina","family":"Rizwan","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Christoph","family":"Reichenbach","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ricardo","family":"Caldas","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Matthias","family":"Mayr","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Volker","family":"Krueger","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"1965","published-online":{"date-parts":[[2025,1,3]]},"reference":[{"key":"B1","doi-asserted-by":"crossref","first-page":"10133","DOI":"10.1109\/IROS55552.2023.10341636","article-title":"Learning to adapt the parameters of behavior trees and motion generators (btmgs) to task variations","volume-title":"2023 IEEE\/RSJ international conference on intelligent robots and systems (IROS)","author":"Ahmad","year":"2023"},{"key":"B2","doi-asserted-by":"crossref","first-page":"201","DOI":"10.1145\/1926385.1926409","article-title":"Blame for all","volume-title":"Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages","author":"Ahmed","year":"2011"},{"key":"B3","first-page":"111","article-title":"A domain-specific language for filtering in application-level gateways","volume-title":"GPCE 2020","author":"Balldin","year":"2020"},{"key":"B4","article-title":"Does your robot have skills?","volume-title":"Proceedings of the 43rd international symposium on robotics","author":"B\u00f8gh","year":"2012"},{"key":"B5","doi-asserted-by":"crossref","first-page":"3","DOI":"10.1007\/978-3-540-68951-5_1","article-title":"Trends in robot software domain engineering","volume-title":"Software engineering for experimental robotics","author":"Brugali","year":"2007"},{"key":"B6","doi-asserted-by":"crossref","first-page":"86","DOI":"10.1007\/978-3-319-11900-7_8","article-title":"Applying simulation and a domain-specific language for an adaptive action library","volume-title":"Simulation, modeling, and programming for autonomous robots","author":"Buch","year":"2014"},{"key":"B7","doi-asserted-by":"crossref","DOI":"10.7551\/mitpress\/13780.001.0001","volume-title":"Cognitive robotics","author":"Cangelosi","year":"2022"},{"key":"B8","doi-asserted-by":"publisher","first-page":"317","DOI":"10.2298\/csis101231019c","article-title":"Ontology driven development of domain-specific languages","volume":"8","author":"Ceh","year":"2011","journal-title":"Comput. Sci. Inf. Syst."},{"key":"B9","doi-asserted-by":"crossref","DOI":"10.1201\/9780429489105","volume-title":"Behavior trees in robotics and AI: an introduction","author":"Colledanchise","year":"2018"},{"key":"B10","first-page":"836","article-title":"The maestro language and its environment: specification, validation and control of robotic missions","author":"Coste-Maniere","year":"1997"},{"key":"B11","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1155\/2022\/3314084","article-title":"Behavior trees for smart robots practical guidelines for robot software development","volume":"2022","author":"Dortmans","year":"2022","journal-title":"J. Robotics"},{"key":"B12","doi-asserted-by":"crossref","first-page":"377","DOI":"10.1007\/978-3-030-66494-7_12","article-title":"Languages for specifying missions of robotic applications","volume-title":"Software engineering for robotics","author":"Dragule","year":"2021"},{"volume-title":"Mood2be: models and tools to design robotic behaviors","year":"2019","author":"Faconti","key":"B13"},{"key":"B14","doi-asserted-by":"crossref","first-page":"196","DOI":"10.1145\/3426425.3426942","article-title":"Behavior trees in action: a study of robotics applications","volume-title":"Proceedings of the 13th ACM SIGPLAN international conference on software language engineering","author":"Ghzouli","year":"2020"},{"key":"B15","doi-asserted-by":"publisher","first-page":"4243","DOI":"10.1109\/tse.2023.3269081","article-title":"Behavior trees and state machines in robotics applications","volume":"49","author":"Ghzouli","year":"2023","journal-title":"IEEE Trans. Softw. Eng."},{"key":"B16","doi-asserted-by":"crossref","first-page":"211","DOI":"10.1007\/978-3-031-15008-1_14","article-title":"Verification of behavior trees using linear constrained horn clauses","volume-title":"International conference on formal methods for industrial critical systems","author":"Henn","year":"2022"},{"key":"B17","doi-asserted-by":"crossref","DOI":"10.1201\/9781420090512","volume-title":"Foundations of semantic Web technologies","author":"Hitzler","year":"2009"},{"key":"B18","doi-asserted-by":"publisher","first-page":"104096","DOI":"10.1016\/j.robot.2022.104096","article-title":"A survey of behavior trees in robotics and ai","volume":"154","author":"Iovino","year":"2022","journal-title":"Robotics Aut. Syst."},{"key":"B19","doi-asserted-by":"publisher","first-page":"385","DOI":"10.1145\/360248.360252","article-title":"Symbolic execution and program testing","volume":"19","author":"King","year":"1976","journal-title":"Commun. ACM"},{"key":"B20","doi-asserted-by":"publisher","first-page":"1114","DOI":"10.1109\/jproc.2016.2521731","article-title":"A vertical and cyberA vertical and cyber\u2013physical integration of cognitive robots in manufacturingphysical integration of cognitive robots in manufacturing","volume":"104","author":"Krueger","year":"2016","journal-title":"Proc. IEEE"},{"key":"B21","doi-asserted-by":"crossref","DOI":"10.1109\/ICRA.2011.5980170","article-title":"Towards semantic robot description languages","author":"Kunze","year":"2011"},{"key":"B22","doi-asserted-by":"publisher","first-page":"11","DOI":"10.1016\/j.artmed.2017.07.002","article-title":"Owlready: ontology-oriented programming in python with automatic classification and high level constructs for biomedical ontologies","volume":"80","author":"Lamy","year":"2017","journal-title":"Artif. Intell. Med."},{"volume-title":"Lex and yacc","year":"1992","author":"Levine","key":"B23"},{"key":"B24","article-title":"Combining planning, reasoning and reinforcement learning to solve industrial robot tasks","author":"Mayr","year":"","journal-title":"arXiv Prepr. arXiv:2212.03570"},{"key":"B25","doi-asserted-by":"crossref","DOI":"10.1109\/ROBIO55434.2022.10011996","article-title":"Skill-based multi-objective reinforcement learning of industrial robot tasks with planning and knowledge integration","volume-title":"2022 IEEE international conference on robotics and biomimetics (ROBIO)","author":"Mayr","year":""},{"key":"B26","first-page":"1","article-title":"Using knowledge representation and task planning for robot-agnostic skills on the example of contact-rich wiping tasks","volume-title":"2023 IEEE 19th international Conference on automation Science and engineering (CASE)","author":"Mayr","year":""},{"key":"B27","first-page":"1485","article-title":"Learning skill-based industrial robot tasks with user priors","volume-title":"2022 IEEE 18th international conference on automation science and engineering (CASE)","author":"Mayr","year":""},{"key":"B28","first-page":"6273","article-title":"Skiros2: a skill-based robot control platform for ros","author":"Mayr","year":""},{"key":"B29","article-title":"Towards python-based domain-specific languages for self-reconfigurable modular robotics research","author":"Moghadam","year":"2013","journal-title":"arXiv Prepr. arXiv:1302.5521"},{"key":"B30","doi-asserted-by":"publisher","first-page":"75","DOI":"10.1007\/978-3-319-11900-7_17","article-title":"A survey on domain-specific modeling and languages in robotics","volume":"7","author":"Nordmann","year":"2016","journal-title":"J. Softw. Eng. Robotics (JOSER)"},{"volume-title":"Bhtsl, behavior trees specification and processing","year":"2020","author":"Oliveira","key":"B31"},{"key":"B32","doi-asserted-by":"publisher","first-page":"282","DOI":"10.1016\/j.rcim.2015.04.002","article-title":"Robot skills for manufacturing: from concept to industrial deployment","volume":"37","author":"Pedersen","year":"2016","journal-title":"Robotics Computer-Integrated Manuf."},{"key":"B33","first-page":"5","article-title":"Ros: an open-source robot operating system","volume-title":"ICRA workshop on open source software","author":"Quigley","year":"2009"},{"key":"B34","first-page":"61","article-title":"Software ticks need no specifications","volume-title":"ICSE-NIER 2021","author":"Reichenbach","year":"2021"},{"key":"B35","doi-asserted-by":"crossref","first-page":"61","DOI":"10.1109\/RoSE59155.2023.00014","article-title":"Ezskiros: a case study on embedded robotics dsls to catch bugs early","volume-title":"2023 IEEE\/ACM 5th international workshop on robotics software engineering (RoSE)","author":"Rizwan","year":"2023"},{"key":"B36","first-page":"121","article-title":"SkiROS\u2014 a skill-based robot control platform on top of ROS","volume-title":"Robot operating system (ROS)","author":"Rovida","year":""},{"key":"B37","first-page":"6793","article-title":"Extended behavior trees for quick definition of flexible robotic tasks","volume-title":"RSJ international conf. On intelligent robots and systems (IROS)","author":"Rovida","year":""},{"key":"B38","doi-asserted-by":"publisher","first-page":"91","DOI":"10.1016\/s0164-1212(00)00089-3","article-title":"Notable design patterns for domain-specific languages","volume":"56","author":"Spinellis","year":"2001","journal-title":"J. Syst. Softw."},{"key":"B39","doi-asserted-by":"crossref","DOI":"10.4204\/EPTCS.371.10","volume-title":"Verifying safety of behaviour trees in event-b","author":"Tadiello","year":"2022"},{"key":"B40","doi-asserted-by":"crossref","first-page":"12654","DOI":"10.1109\/ICRA48506.2021.9561266","article-title":"Productive multitasking for industrial robots","volume-title":"2021 IEEE international conference on robotics and automation (ICRA)","author":"Wuthier","year":"2021"}],"container-title":["Frontiers in Robotics and AI"],"original-title":[],"link":[{"URL":"https:\/\/www.frontiersin.org\/articles\/10.3389\/frobt.2024.1363443\/full","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,3]],"date-time":"2025-01-03T05:11:25Z","timestamp":1735881085000},"score":1,"resource":{"primary":{"URL":"https:\/\/www.frontiersin.org\/articles\/10.3389\/frobt.2024.1363443\/full"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,1,3]]},"references-count":40,"alternative-id":["10.3389\/frobt.2024.1363443"],"URL":"https:\/\/doi.org\/10.3389\/frobt.2024.1363443","relation":{},"ISSN":["2296-9144"],"issn-type":[{"type":"electronic","value":"2296-9144"}],"subject":[],"published":{"date-parts":[[2025,1,3]]},"article-number":"1363443"}}