Collision during collision recovery
I have a system with three arms and an external axis run by one IRC5 controller. One of the motion tasks tends to have collisions which are impossible to avoid. The process material has variations which I cannot spot out in advance. Therefore an automated recovery from a collision is needed.
I've enabled the system parameter Controller/General Rapid/CollisionErrorHandling which allows the system to recover from a collision. I also use PathRecord to record robot movements prior to collision. An error handler is then using PathRecMoveBwd to back off. Everything works fine and the system is 90% able to auto-recover. The above mentioned error handler is managing a number of routines and some of them generate troubles. When a collision takes place it's first detected and then there's a retract movement which relieves residual forces caused by the collision. Sometimes this retract movement triggers a new collision.
How to avoid triggering this new collision?
It seems that the collision detection level should be raised right after the collision to enable the retract movement. However, the retract movement takes place before jumping to the error handler. Therefore I created a trap which is triggered by the system output MotionSupervisionTriggered. The trap is setting motion supervision off or raising the motion supervision level to max. No success. I haven't found a way to really figure whether the trap is run early enough, though. Perhaps the system is first finishing the retract movement and the trap is run only then.
I've also tried to play with the system parameter Motion/MotionSupervision/collision_detection_memory adjusting it both bigger and as small as possible. No luck.
I find this behaviour unlogical since it is still possible to jog the robot off from the collision without adjusting the motion supervision level. My experience is that switching off motion supervision is the only way to recover if a tool is really jammed to an obstacle. That's not the case here but automatic recovery is still impossible. Once again, in most cases it works but not every time