@ipa-nhg and I have been worked, inside the CoreSense EU funded project, in ROSSDL. This is an attempt to bring Model-driven development principles to ROS. We will present it in the incoming ROSCon Spain 2024, in Seville next September.
Using ROSSDL, a ROS application (a system in ROSSDL terminology) can be defined in YAML files and used to generate the code for the skeleton of your application. Advantages:
Simplify coding. Concentrate efforts on the logic of the application without giving up on coding.
Avoid errors when connecting topics, especially when the application grows.
Develop graphical tools for developing, using ROSSDL files as the result
Generate different systems for many configurations. Compose systems from other existing systems.
I didn’t know NoDL, but It seems to be declarative. If any NoDL contributor doesn’t agree, please correct me.
ROSSDL generates code, in a similar way as the ROS interfaces are generated, out of the packages source directory, and lets create launchers with different configurations, also outside of the source directory. The code generation is triggered during the standard workspace build, calling colcon and being transparent to the developer.
There is much work ahead, but I just wanted to show what we are working on, just in case someone is interested in using It or contributing
NoDL never really got adoption, but could be very interesting for describing tools to downstream tools. It seems that there are synergies between the two. Maybe ROSSDL could generate NoDL as an artifact that tools could use to validate the computation graph at runtime? All the data necessary would already be encoded in the ROSSDL and that could help get some more “critical mass” of software using the NoDL format.