This tutorial provides step-by-step instructions for creating a pick sequence that uses the force sensing feature to determine when to actuate the gripper and retract.
- Smart Behavior - A general term for the use of logic within a task which responds to variables and signals.
- Measured Force - The real-time external forces acting upon the arm. These values can be found in the Shared Data section of Intera Studio.
- A basic understanding of the software, including how to navigate the screen, and how to create a basic pick and place behavior tree.
- A basic understanding of how composite and conditional nodes work. This guide assumes metric units for Force.
Creating a Force Pick
The purpose of this tutorial is to create a pick in which the arm of the robot moves in the Z-axis* of the Tool Center Point frame until a force is encountered.
When the force is felt (indicating the presence of a part), the robot will close the gripper and move to the retract position and open the gripper. If no force is encountered, it will retry the pick.
- Start with a New Basic task. A gripper should be installed and configured.
- Add additional nodes to create a behavior tree like the one below.
- First add a MOVE TO node (named Approach in the above image). Open the node inspector for this node and set the pose for this node as the approach position.
- Next add a SEQUENCE node (named Check force in the above image) as a sibling below the Approach node. There is no need to edit the parameters of this node.
- Add a DO IF node as a child of the Sequence node (named If no force in the above image). Open the node inspector and:
- Add a condition that checks if the force in the Z direction is less than 5 N. This will be force.z < 5.
- Note: There are two options for force.z. The first is under “Commanded Tool Forces”, and the other is under “Measured Tool Forces”. The option under “Measured Tool Forces” must be used.
- Toggle the option to enable continuous evaluation to stop immediately when the force threshold is met.
- As a child of the DO IF add a MOVE TO node (named Move in Z in the above image). Move the arm of the robot in the direction of the Z-axis to the limit of appropriate pick locations. This will be the pick location if no force is encountered. Open the node inspector and set the pose for this position. In this node, we want to decrease the speed of the arm since it will be making contact with the part. To decrease the speed, change the “speed ratio” from 1 to 0.1 (which means 10% of normal).
- Create a SEQUENCE node as a sibling and below the DO IF node (named If force in the above image). There is no need to edit the node inspector.
- As a child of the SEQUENCE node, create a WAIT node (named Wait 500 ms in the above image). Open the node inspector and set the wait time to be 0.5 seconds.
- As a sibling and below the WAIT node, add a SET TO node (named Close Gripper in the above image).
- The method of gripping will depend on the type of gripper is being used. Open the node inspector and set the appropriate variable to true in order to close the gripper. For the electric parallel gripper it is cmd_grip, and for the smart tool plate, it is grip.
- In this same node, set the variable to assign the part mass.
- As a sibling to and below the SET TO node, create another WAIT node (named Wait 500 ms in the above image). Open the node inspector and set the wait time to be 0.5 seconds.
- As a sibling to and below the WAIT node, add a MOVE TO node (named Retract in the above image). Move the arm to a safe retract position (make the retract position different than the approach so the difference can be seen). Open the node inspector and set the pose.
- As a sibling and below the MOVE TO node, add a SET TO node (named Open Gripper in the above image).
- Open the node inspector and set the appropriate variable to False in order to open the gripper. For the electric parallel gripper it is cmd_grip, and for the smart tool plate, it is grip.
- In this same node, set the variable to set the part mass to zero.
- Now run the task. Notice when no force is applied, the arm will move all the way to the position specified in the Move in Z MOVE TO node, then move back to the approach position and do it again.
- Now put a hand in the way of the arm and apply some force. The arm will stop where it met the resistance, close the gripper, then move to the retract position and open the gripper before moving to the approach and doing it again.
Explanation of the Logic
The conditional node is enabling an action based on the absence of a force, instead of the presence of one.
In this example, when the logic first reaches the DO IF node (“If no force”), the logic evaluates to true since there is no external force on the arm. Therefore, the MOVE TO node (“Move in Z”) is executed. If it moves to that location, the next branch in the logic is executed, which are the pick instructions.
However, if a force is encountered while the MOVE TO (“Move in Z”) node is being executed, the DO IF (“If no force”) node will exit because the “continuous evaluation” option is enabled.
This means the arm will stop at the location where the force is encountered and executes the pick logic.
This is a simplified example to show how force can be used when doing a pick. In a real world application, a sequence of nodes to place the object would also be included.
Also, in this example, the robot will try to pick the part indefinitely. In practice, a retry counter would likely be used. Additional logic can be added which loops through the process and increments a counter each time the pick does not happen. Then the robot stops trying and alerts an operator when it reaches a specific number unsuccessful of tries.
If using a parallel gripper, the fingers should have a stopper on them which are used to control the depth that the fingers will reach before closing the fingers.
Make sure the pick move is slow to avoid a violent collision with the part.