Fairino Collision detection sensitivity
The Fairino robotic arms are Cobots, meaning they are meant to work around people safely. A key to accomplishing this is the "Collision detection" setting. This article will cover how to set the collision level (the threshold of force that the robot will consider a collision) and how to configure the handling of said collisions for the Robot.
Setting Collision Level in the Web App:
In the Robot Web App, the collision settings can be set in the "Joints tab" shown in figure 1.1. The path to this tab is "Initial->Base->Joint->Collision Level"
(Figure 1.1)
The three configurable values in this page are: Collision level, Collision Strategy, and Static collision detection.
Collision Level:
Here, you are able to set the minimum total force (including robot inertia, gravitational force, and force applied when moving) for each joint to trigger a collision detection. The recommended value is 10% of your target speed. Each robot model will have different values for each level. This is due to the compensation of the robot's gravitational force.
Collision Strategy:
Collision strategy tells the robot what to do when it detects a collision. The default and safety standard for every robot is the "Error Stop", which will stop the program and throw an error, preventing any further robot action. Other methods include transitioning into drag mode, error pause, or ignoring collision*
Static Collision Detection:
Static collision detection allows the robot to detect collisions even while it is not moving. This allows safer testing for collision behaviors, collision handling, etc.
robot.SetAnticollision(0, [j1_cl, j2_cl, j3_cl, j4_cl, j5_cl, j6_cl], 1)
- The First value passed tells the robot which method to use (0: level, 1: percentage)
- The second value is an array of either level values (1-10) or percentage values (0-100)
- The third (and arguably most important) is the configuration flag (0: do not update, 1: update). This tells the robot whether or not to update the robot config based on the passed values.
**IF THIS IS SET TO 0, THE COLLISION LEVELS WILL NOT BE UPDATED! **
For more info on SDK functions, navigate to the Fairino Documentation page
hereSetting Collision Level in the SDK:
For all Fairino SDKs, there will be a collision level setting function that you can call during your program to change the threshold on the fly. For example, in the python SDK, the collision levels are set by the following command:
Things to consider:
After setting the minimum force threshold, it is important to note that the force specified IS NOT the additional force read after accounting for the robots force, it is the total force applied on the joints. This means that faster speeds and heavier payloads will play a large role in detecting false collisions. The rule of thumb is to keep the collision level at least 10% of your target speed. For example, if I move my robot at 40% speed with collision levels set to 3, I will most likely get a false collision detection when the movement reaches it's top speed. Similarly, movements that were previously not detecting collisions could falsely detect a collision when the robot is given a payload that it is not expecting.
*Note on disabling collision: PLEASE NOTE THAT REMOVING COLLISION DETECTION REMOVES THE COBOT FROM THE SAFETY STANDARDS AND CAN BE DANGEROUS FOR OPERATORS, BYSTANDERS, OR MATERIALS! USE WITH EXTREME CAUSION!