The main purpose of this effort is to combine the advantages of ROS and Model-Driven-Engineering techniques. This repository holds a family of metamodels defined as Ecore models and their corresponding Xtext-based DSLs (Domain Specific Language) implementation. The resulted models allow the description of ROS and ROS2 concepts and properties, like packages, artifacts, nodes, interfaces types, parameters... Moreover a complete system as composition of ROS components can be also modelled.
The models have associated tools, the following are some examples:
- Textual editors with grammar highlight, debug functionalities and auto-complete helpers.
- Validators to check the corretness and check the use of best practices
- Code geneators to automatically generate code, documentation, helper scripts...
- (ToBeDone) Graphical editor
Technical Maintainer: ipa-nhg (Nadia Hammoudeh Garcia, Fraunhofer IPA) - [email protected]
The documentation of the RosTooling is available under https://ipa320.github.io/RosTooling.github.io/.
Related repositories:
- ROS2 embedded code generator: rossdl
- Python parsers (packed as a ROS package) for the ROS and ROSsystem models: ros_model_parser
- Python implementation for the static code analyzers and docker containers setups for different ROS distros: ros-model-extractors
- Runtime monitoring pipelines:
- ROS1: rosgraph_monitor
- ROS2: ros2mode
- Eclipse update site: RosTooling-update-site
Publications:
- Paper: Bootstrapping MDE Development from ROS Manual Code - Part 1: Metamodeling IRC19 paper
- Paper: Bootstrapping MDE Development from ROS Manual Code - Part 2: Model Generation Models paper
- Journal Paper: Bootstrapping MDE development from ROS manual code - Part 2: Model generation and leveraging models at runtime and SoSym paper
- Paper: Lifting ROS to Model-Driven Development: Lessons Learned from a bottom-up approach RoSE paper