What happens if arm collides itself?
It will report collision error, you need set the collision sensitivity at least to level 1, level 0 is turn off, level 5 is most sensitive.
What happens if it touches the solid surface and can’t move it?
The joint will move back 3° automatically from the colision surface, it’s a function named collision rebound in the xArm Studio which you can turn it off.
What happens if it touches a human? What’s the max impulse of such hit?
Just like the first question, it will report collision error if you turn on the collision detection.
The max impulse depends on the speed and the payload whie the collison happens.
Does arm raise an error/exception in API or just stops?
It will raise error/exception while there is collision or the other errors.