Preventing self-collision with tool, and defining no-go areas for whole arm (not just tool tip and elbow)

Excuse me, I’m still in the early stages of setting up a UR5e, but wanted to check in advance, where to look for guidance on those two subjects mentioned in the title.

I’d like some explanation about how one could define a “bounding box” region around the TCP which indicates the volume taken up by any tool fitted, and which works with the arm’s internal inverse kinematics routines the same way that self-collision prevention does between the arm’s own sections. Ideally there would be a way of changing this remotely, from a python script on a PC, for when tools are changed or for example to reflect the size of an object picked in a gripper for example. I haven’t yet spotted such bounding box options in the manual.

The manual also discussed safety planes which either block all access, or force the arm in to a slower mode when it crosses them, but warns these only affect the TCP position and elbow. Is there a way to do something similar which would also stop any part of the arm, or anything in the bounding box I’ve mentioned, from moving past a plane? And is there a way to make such “planes” limited in area rather than spread across all of space, so rather than “never go further on +x than 0.4m from the base” something like “if between 0.5m +y and 0.1m -y, do not go further than 0.4m on +x”. So one could define no-go boxes? Or would such boxes be something only possible by writing custom IK routines on the PC which controls the arm and then giving all commands to the arm in the form of joint by joint positions?

These aren’t urgent, but they’d be very interesting capabilities to have.

Thank you.


I am no expert but I believe the video tutorials of the getting started section of the UR website should answer some of your questions:

This one in particular

There are also the free academy e-learning videos:

Here, under the “SAFETY” tab

Hope it helps :slight_smile:

Thank you, the tool sphere looks very relevant.

There is no self-collision prevention against collision with itself, as far as I know. The robot can, and will if programmed wrong, collide with itself.
Fairly recently UR added restrictions to the tool flange when getting close to the upper tube, but that’s it. That is to prevent accidents with users rather than to protect the arm itself.
Hence, there are no settings in PolyScope that allows you to set up the tool dimensions and preventing it from colliding with the robot arm. Same goes with joint positions.
It can be done very crudely by setting up a security plane in front of the robot, but I don’t know of any other ways to achieve this. And, as you mention, that is only for the elbow joint and TCP.

Thank you, that clarifies things.