At the last safety critical ROS WG meeting we started discussing a potential simple safety architecture. We were trying to think how we could define a ROS based robot architecture that can be certified as functionally safe without having to review the whole ROS stack and the underlying OS. The context was thinking about a safety architecture for a mobile robot base, but the basic concept can likely be applied to other areas (e.g. arms).
This safety architecture would have:
-
Designated Safety sensor(s) (e.g. a collision avoidance sensor) and a node for it that has the following properties
a) It accurately places âoriginâ time stamps on the safety sensor data that knowably relate to the time in which the data was gathered
b) The accuracy of those origin time stamps is knowable
-
Node or code within a node that can accurately make stop / go decision based on the safety sensor that has the following properties
a) It knows the capability of the designated safety sensor (e.g. range)
b) It knows the accuracy with which the origin time stamps are applied
c) It knows the data being generated from the safety sensor
d) It knows the current robot speed
e) It knows enough about the dynamics of the robot to determine how quickly the robot can stop
e) From the above it can compute with certainty the minimum time the robot can move at its current speed and avoid a collision.
f) It will publish a safety-go command if the minimum time is less than the deadman timer + additional time for inaccuracies
-
A motor controller that has 1 property
a) It will by default stop within a deadman timer period unless it gets both a safety go command and a command to move
It seems to me that this architecture is rather dependent on accurate clock propagation and probably wouldnât be resistant to junk clock data or clock jumps. So perhaps the safety node would also have to check for those kind of clock situations.
However the beauty of this architecture is that it makes no other assumptions that anything else works. It does not assume your whole system is real time, it doesnât even assume that the whole system works. You donât need to certify the whole ROS codebase or the underlying operating system - you only need to certify items 1-3, and they are relatively simple.
It may even be possible to combine 2 and 3 together as a single monolithic node that accepts safety sensor data, computes the time stamp on that data and sees whether it is safe to continue.
I have a couple of questions
-
What is the nature of this mythical safety sensor?
-
How are you going to practically distinguish between a wall that you might drive along besides and human that plans to jump in front of the robot last minute.
-
What does everyone else think?