cachett

Domain-Specific Languages

One of the objectives of the PROTEUS project is to provide domain-specific languages (and related tools like editors, consistency checkers, etc ...) suitable to specify missions, environments and robot behaviours that have been specified by robotics experts involved in the project.

A domain-specific language (DSL) is a modelling or programming language dedicated to a particular problem domain that offers specific notations and abstractions that increase programmers productivity within that domain. Models offer a high-level way for domain users to specify the functionality of their system at the right level of abstraction. DSLs and models have historically been used for programming complex systems. However recently they have garnered interest as a separate field of study. Robotic systems blend hardware and software in a holistic way that intrinsically raises many crosscutting concerns (concurrency, uncertainty, time constraints, ...), for which reason, traditional general-purpose languages often lead to a poor fit between the language features and the implementation requirements. DSLs and models offer a powerful, systematic way to overcome this problem, enabling the programmer to quickly and precisely implement novel software solutions to complex problems within the robotics domain.

The discussions under the PROTEUS project have lead to the decision of defining three domain-specific languages (DSLs):

  • The Architecture DSL which will ease the definition of specific robotic architectures (reactive, deliberative, hybrid) and specific components that form those architectures (sensors, actuators, planners),
  • The Control & Communication DSL that will control the robotic components and will ease the definition of communication mechanisms between components (sending/receiving of events and data),
  • The Algorithms DSL that will ease the definition of algorithms which are to be used, triggered with the “Control & Communication DSL” for implementing behaviours in the different components of an architecture described with the “Architecture DSL”.

cache