-
Notifications
You must be signed in to change notification settings - Fork 19
Description
Hi there,
@nilsbore @hawesie @marc-hanheide
We need to ensure cliff safety somehow. A hardware solution using a cliff sensor, as currently investigated by Christian Reuther, will be the best solution, but will take some time to be realised. Until then we need an Asus based solution.
The current solution with negative obstacles in the cost map is a good high level solution, but suffers from two problems:
a) it does not see actual cliffs, only stairs. If there are no negative obstacles below floor level, it will not help
b) if parts of the nav stack go crazy, cost maps are ignored, or whatever, the robot could still go down.
I think a pretty safe approach could look like this:
- a component floor_observer continuously monitors the space in front of the robot
- floor_observer continuously sends an OK to ScitosDrive.cpp
- as soon as some portion of the ground plane (e.g. a 2 x 2 cm hole) in front of the robot is NOT filled by points, it stops sending the OK
- when not receiving an OK every x milliseconds, ScitosDrive will issue an emergency stop
This will also work if the Asus fails (e.g. cable breaks) or is misaligned, or if the floor_observer crashes, etc.
The only way this could fail is if the Asus is tilted and a "fake" floor is visible in the Asus, e.g. a wall at just the right angle to look like floor. This however is very unlikely.
So we will in the end have 3 redundant levels:
3. Nils' cost map solution, will steer the robot away from cliffs within normal navigation behaviour
2. the floor_observer, will issue an emergency stop if for some reason the robot did come too close to a cliff
- the hardware cliff sensor, will do the same as 2. but in hardware, directly wired to the motor driver
One more loophole: what if ScitosDrive crashes?
Christian Reuther said we can implement a watchdog scheme between SCITOS and ScitosDrive. As soon as SCITOS does not hear from ScitosDrive for x milliseconds, it will issue an emergency stop.
And SCITOS itself is the most stable thing on the robot. So we can rely on that.
What do you think? I could implement the floor_observer.
Do you see any other way the 3 level solution could fail?
cheers
Michael