Hi everyone!
I’m new around here. I’m the creator and developer of Ogma, a NASA tool that transforms high level languages into runtime monitors. For those unfamiliar, the idea of runtime monitoring (or runtime verification) is to have code that checks that everything within your mission/operation is nominal, and warns the system or the human operator if not.
A common use case for Ogma is to transform high-level requirements written in structured natural language (FRET) into hard real-time C99 monitors, together with a NASA Core Flight System application (cFS). We’ve also used it to monitor X-Plane simulations, like this (the little widget on the right incorporates our monitors running based on the simulator data):
We are now introducing support for ROS. The idea would be that users can write properties in a high-level language (Lustre, FRET, others?), and Ogma will produce a self-contained ROS package that will check in runtime whether those properties hold, and notify in some way if not.
This line of work has been made available at GitHub - nasa/ogma at develop-ros. I’d like to invite everyone to participate. Perhaps you can help us understand how to best generate the ROS package, what notification mechanisms you’d prefer to see, other high-level languages specifically connected to the robotics domain that we should support, or other changes we should make. I also know that the ROS interface has been changing, and we’d definitely like to provide code that the community can use. Your feedback will be very helpful in that respect.
Feel free to try it. If you have any issues installing Ogma itself (irrespective of ROS support), feel free to open an issue on github. If you have any comments regarding ROS support specifically, you can post them here.
Thanks!