Locator Tutorial: Setting up Locator to work with ABB robots
It is highly recommended that users read Locator Tutorial: Introduction prior to installation of specific robot interface
Contents
1. Prerequisities
Locator ABB Interface is compatible with RobotWareOS versions 6.04 and higher.
System options required for Locator ABB Interface: (616-6) PC Interface Module
NOTE: Running Locator ABB Interface on RobotWare 5 systems is also possible with certain limitations. Contact support for more information
NOTE: Robot Studio v.6.06 or higher is highly recommended for use with Locator ABB Interface setup.
2. ABB Controller setup
The following tutorial gives a step by step guide for configuring your ABB IRC5 controller and installing the necessary RAPID files to get the interface up and running.
This tutorial was originally written using the latest version of RobotWare v.6.06, however it should be compatible with older versions with minor changes.
2.1 Network configuration
NOTE: The network configuration procedure described below only works with RobotWareOS v.6.06 or higher. If you have an older version of RobotWareOS and need to change an IP address, please contact local ABB support.
Turn on the IRC5 Controller, wait for the Initialization Screen to appear, open the Menu screen and select the Control Panel option:
In the Control Panel pane, select Controller Settings:
Select Settings and choose the Network option:
The Network Settings window should now appear. Use the Touch Panel Keypad to set the IP address of the IRC5 WAN port:
Click OK and restart the Controller to apply the new settings:
3 Robot Studio Setup
3.1 Connect to IRC5 Controller from Robot Studio
Set your local PC network settings to DHCP, plug an Ethernet cable into the Service Port of the IRC5 Controller and launch Robot Studio.
For a direct connection to the Robot Controller, select the Controller tab and select the One Click Connect option:
If everything is configured properly, Robot Studio should connect to the IRC5 controller and you should see the content of "Current Station" in the left pane.
NOTE: For the purposes of this tutorial, an ABB IRB1200 7kg robot was used.
3.2 Load Locator ABB Module files
The Locator module for ABB consists of two RAPID files - LocatorBasicTemplate.mod and LocatorCommunication.sys .
Both files needs to be uploaded to the controller. Request Write Access first and press Grant Button on Teach Pendant.
Now Right Click on the T_ROB1 task and select the Load Module option. Browse to the LocatorBasicTemplate.mod and click Open.
Repeat the same procedure for the LocatorCommunication.sys file.
You should see that both files have appeared in the T_ROB1 module list.
If the Synchronize to Station dialog panel appears, just click Cancel, it will synchronized later.
If you are working with a clean system and you do not intend to make use of the default Module1 option, feel free to delete it.
3.3 Configure Main Entry
Now we need to set LocatorBasicTemplate as the main robot program. On the left pane, select Configuration -> Controller -> Task
Double click on the T_ROB1 task.The Instance Editor dialog screen should now appear.
Change the Main Entry tab option locatorMain and click OK.
Since this is a major change to the system, a restart is needed in order for tha change to take effect. SelectOK for now and we will restart system later.
3.4 Adopt Network Configuration
Now click LocatorBasicTemplate in the left pane to open the RAPID code. Amend the first three constants according to your application requirements and network configuration.
Click Apply when finished
It is now time to Restart the system. Use the Restart option in Robot Studio or use the option provided on the Pendant.
4. Calibration
Robot Camera Calibration is a crucial step in Locator configuration. Accurate calibration guarantees that the object positions will be calculated directly in Robot Base coordinates.
4.1 Robot - Camera Calibration
Mount the Scanner firmly, ensure that the scene is properly captured from the final position and start the Photoneo Robot Camera Calibrator:
Connect to the Scanner, select Quaternion formalism (Standard for ABB robots), adjust the Sphere radius (20 mm in case of standard ping pong ball) and set the Min visible parameter to 40%:
On the ABB Pendant select Main Menu -> Jogging. Open Position Format and set:
Position shown in: Base
Orientation format: Quaternion
Press OK and return back to the Jogging menu. Select Motion Mode to Linear to visualize the current Cartesian pose of the Tool frame.
Attach a ping-pong ball to the gripper, and jog the robot to the first position (usually the nearest corner of the bin/ area of interest).
Press the Capture button on the first line of the list of points in order to capture the ball position and input the X,Y,Z and q1, q2, q3, q4 values of the current position to the first line of the point list.
WARNING: In current implementation of Robot Camera Calibrator: Rotation 1 = q2 | Rotation 2 = q3 | Rotation 3 = q4 | Rotation4 = q1
Try to change the orientation of the tool in all axes in each point to achieve a wider range of input values. Press the Compute button after adding the final point.
For successful calibration the Final Error per point should not exceed 2-3 mm. (1.9897mm in this example).
If the Final Error value is too high, try adding more points or start the calibration from the beginning again.
Once you are satisfied with the results, press the Set Matrix to PhoXi button to store the results to the PhoXi Scanner.
Do not forget to switch the Coordinate Space in PhoXi Control after calibration has been completed successfully:
In addition to the Robot - Camera transformation matrix, the calibration process also calculates a Calibration Sphere Misplacement vector which denotes the transformation between the selected Tool ($NULLFRAME) and the center of the sphere (the ping-pong ball). This information can be used for calibration verification. First Set the KUKA Tool coordinates according to the Misplacement Vector as calculated in the calibration process. Ensure that the ping-pong ball has not moved since the end of calibration.
Select Main Menu -> Startup -> Calibration -> Tool -> Numeric Input
Select the Tool number which you want to use for validation, set Name (5-VERIFICATION in this example) and input the values from the misplacement vector:
Save the changes, jog the robot to the center of the scanning volume and select the Test button in the Photoneo Robot Camera Calibration Tool:
Compare the position of the ball calculated in Robot Transformation Coordinate Space with $pos_act values:
The values calculated by the Photoneo Robot Camera Calibration Tool should approximately match the values reported by the KUKA Pendant:
5. Runtime
5.1 Reteach Start and End poses
Open the Production Window and click PP to Main.
You should see the LocatorBasicTemplate with the Program Pointer set as is shown in the figure below:
Before we start the program, we need to Reteach Start and End positions to meet your application requirements. From the Main menu on the Pendant select the Program Editor tool.
Switch to Manual mode, jog the robot to your desired start position, select the asterisk at the locator_start_robtarget line and hit Modify Position.
Repeat the same procedure for the locator end position.
5.2 Run Locator
You are now ready to run the program. Switch back to Auto mode, plug the Ethernet cable into the pre-configured WAN port and select 10% speed; this option is recommended for safety reasons.
Open the Production Window, PP to Main and hit Play.
Make sure that you are ready to stop the motion execution immediately if something goes wrong.
If everything has been configured and calibrated properly, the robot should trigger a first scan, wait for the result and move towards the first localized object (if the returned pose is within reach).
You can monitor the program steps directly on the pendant info log panel.
6. RAPID
The ABB Locator module is a set of RAPID procedures which handle socket communication with the Locator and provides basic examples of how to navigate the robot to specific targets.
6.1 Main
The following code is a main loop from the LocatorBasicTemplate.mod. If you have configured your own tool different from tool0, assign its name to the current_tool variable at the beginning of the file.
PROC locatorMain() !Select tool of your robot current_tool := tool0; ! ! Reteach start and end positions for your application and convert to Jointtarget representation locator_start_robtarget := *; locator_end_robtarget := *; locator_start_jointtarget := robtargetToJointtarget(locator_start_robtarget); locator_end_jointtarget := robtargetToJointtarget(locator_end_robtarget); ! Move Arm to Start Position MoveAbsJ locator_start_jointtarget, v100, z20, current_tool; ! ! Establish Connection to Locator connectToLocator LOCATOR_IP, LOCATOR_PORT; ! Main loop WHILE (TRUE) DO ! Single Result mode trigLocator SINGLE_RESULT_MODE; waitForLocatorResponse; if(locator_status = LOCATOR_RESPONSE_OK) moveToTarget; ! Multiple Result Mode trigLocator MULTIPLE_RESULT_MODE, \num_of_results := 5; waitForLocatorResponse; IF(locator_status = LOCATOR_RESPONSE_OK) THEN FOR i FROM 1 TO num_of_results_available STEP 1 DO moveToTarget \target_id:=i; ENDFOR ENDIF ENDWHILE
Feel free to adapt the RAPID code to meet your application requirements or to change the speed, precision or order of steps in the main loop.
6.2 Communication API
RAPID procedures necessary for communication with Locator are available in theLocatorCommunication system module.
connectToLocator(string server_ip, num port, \num wait_time) - procedure to establish a connection with the Locator.
- server_ip - IP address of the Vision Controller running the Locator.
- port - port on which the Locator listens for a connection.
trigLocator(num mode, \num num_of_results) - procedure to trigger the next localization
- mode - two modes are available - SINGLE_RESULT_MODE and MULTIPLE_RESULT_MODE.
- \num num_of_results - optional parameter used in MULTIPLE_RESULT_MODE - defines the number of results expected by the user.
waitForLocatorResponse() - procedure to wait for a localization result to be received
flushSocket() - a procedure to read and discard all remaining bytes in the socket buffer
6.3 Motion Execution API
A very simple example, which illustrates how the Locator can be integrated into existing RAPID applications is available in a RAPID module called LocatorBasicTemplate.mod.
The module provides a basic routines for navigating the arm to goal received from the Locator and also permits the use of the Locator in both SINGLE_RESULT_MODE and MULTIPLE_RESULT_MODE.
moveToTarget(\num target_id) - procedure to reach the target received as a result of localization
- \num target_id - optional parameter used in MULTIPLE_RESULT_MODE - specifies which of multiple received targets to reach.
isReachable(robtarget point) - procedure to check if a given pose is reachable by the selected arm. The procedure sets/resets global flag is_reachable.
- robtarget point - robtarget pose received as a result of localization.
6.4 Communication Protocol
Following figures explain Locator-ABB communication protocol in both Single and Multiple Result Modes: