A requirement for a robot sailing on his own is to be able to spot objects in his way and react on them.
In a earlier post we talked about Allec’s computer vision. It allows Allec to not just detect objects, but also understand what kind of object he is looking at.
So instead of a common detection sensor, that allows detection of something is blocking the path, Allec would know what kind of object, as long as the object belongs to one of the detection categories.
This information made available to the AI system, then allows for for example following the swimmer, but avoiding the sea weed.
This then leads to the avoidance functionality that Allec uses, which will be explained in main points here.
Whenever Allec computes a new vision result, the automatic avoidance system will check the result for any threats: fishing net, sea weed, sea bed (rocks are identified as sea bed)). If a threat is detected, the avoidance system will make it so that the next computed vision result will be focused on only the very center of the picture received, that is, the part directly in the line of travel of Allec. If this vision result is also a threat, the avoidance system will override the currently running AI programming and instead start doing an avoidance action.
Allec has several avoidance options available:
- Try to go over the obstacle. Ascent a bit and then try to detect for threats again.
- Try to go below the obstacle. Descent a bit and then try to detect for threats again.
- try to stay a the current depth, but go left or right of the obstacle.
- Back up and the left or right. More or less the same as the go left or right option, but used if neighter go over, go below or go left and right works.
The real trick of course is when to use which option. That part will be ever under improvement 🙂
If for some reason the main avoidance fails, Allec has a very short range sensor, for spotting critically close obstacles.
Allec’s ability to follow the sea bed is really just a special case of the avoidance system.