fkromer
33
One example: You integrate 2 nodes (“a” and “b”) which have not been tested before (or if so not well enough). The first node “a” is publishing a topic and the second one “b” subscribes to it and publishes an own topic as well. You know that the subscribing nodes (“b”) topic message values may never be outside a valid value range. During integration something goes wrong and you locate the root cause in wrong topic message values published of node “b”. You do not know why exactly the topic message values are invalid. It could relate to invalid topic message values which “b” received from “a”, or in a wrong implementation of “b” itself which does not prevent from publishing invalid values. Having a DbC mechanism violations of such exceptions would be notified about during node integration even before integration issues could be discovered at all. (It would be possible that integration issues occur just in rare cases and the issue could keep undetected during integration and pop up in the field the first time.)
As far as I know the only way to detect unconnected nodes which should be connected is to use rqt_graph. (Mismatched topic types are even harder to detect and require to look for missing Connections: when using rosnode list <node>.) Does anyone know how to check issues like that in an automated fashion?
Aren’t rostests with paramtest test nodes the candidate to prevent from range issues in parameters?
Right. (It was never about interface issues in terms of the ROS implementation just in terms of its usage.)
Not yet. I was looking for exactly something like LTTng. Will there be open sourced tools in addition to LTTng?
If the same node is used in different applications and/or environments the requirements that’s true abd could be classified via use cases (here: warehouse, car) and the checks parametrized according to that. (Application specific: A warehouse robot should never drive faster than 1m/s. Environment specific: Every of your self-driving cars should not drive faster than 50km/h in the city and faster than 200km/h on the autobahn.)
I do not know about the automotive sector at all but the industrial automation sector (hard real-time safety critical, up to IEC61508 SIL3) only. However I know for sure that people use trace tools on the RTOS level like Trace for FreeRTOS/SafeRTOS and on the C function level like microtrace for function runtime and response time analysis. However it’s possible that this is just done for cases when the system’s overall response time cannot be determined using measurements on the system level (e.g. error case handling which could be hard to force on the system level for some cases).