Difference between revisions of "Locator Tutorial: Setting up Locator to work with ABB robots"
m |
|||
Line 9: | Line 9: | ||
− | ''NOTE: | + | ''NOTE: '''Robot Studio v.6.06''' or higher is highly recommended for use with Locator ABB Interface setup.'' |
== 2. ABB Controller setup == | == 2. ABB Controller setup == | ||
− | The following tutorial gives a step by step guide | + | 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 '''RobotWare v.6.06''', however it should be compatible with older versions with minor changes. | + | 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 === | === 2.1 Network configuration === | ||
Line 45: | Line 45: | ||
− | + | Click '''OK''' and restart the Controller to apply the new settings: | |
Line 65: | Line 65: | ||
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. | 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 | + | ''NOTE: For the purposes of this tutorial, an ABB IRB1200 7kg robot was used.'' |
Line 72: | Line 72: | ||
=== 3.2 Load Locator ABB Module files === | === 3.2 Load Locator ABB Module files === | ||
− | Locator module for ABB consists of two RAPID files - '''LocatorBasicTemplate.mod''' and '''LocatorCommunication.sys''' . | + | The Locator module for ABB consists of two RAPID files - '''LocatorBasicTemplate.mod''' and '''LocatorCommunication.sys''' . |
− | Both files needs to be uploaded to the controller. Right Click on '''T_ROB1''' task and select '''Load Module''' option. Browse to the '''LocatorBasicTemplate.mod''' and | + | Both files needs to be uploaded to the controller. 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 | + | Repeat the same procedure for the '''LocatorCommunication.sys file'''. |
You should see that both files have appeared in the T_ROB1 module list. | You should see that both files have appeared in the T_ROB1 module list. | ||
Line 84: | Line 84: | ||
− | If '''Synchronize to Station''' dialog panel appears, just click '''Cancel''', | + | If the '''Synchronize to Station''' dialog panel appears, just click '''Cancel''', it will synchronized later. |
Line 90: | Line 90: | ||
− | + | 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. | |
Line 97: | Line 97: | ||
=== 3.3 Configure Main Entry === | === 3.3 Configure Main Entry === | ||
− | Now we need to set '''LocatorBasicTemplate''' | + | Now we need to set '''LocatorBasicTemplate''' as the main robot program. On the left pane, select '''Controller''' -> '''Configuration''' -> '''Task''' |
Line 103: | Line 103: | ||
− | Double click on '''T_ROB1 task'''. Instance Editor dialog screen should appear. | + | 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'''. | |
Line 111: | Line 111: | ||
− | Since this is a major change to the system, a restart is needed in order to take effect. | + | Since this is a major change to the system, a restart is needed in order for tha change to take effect. Select'''OK''' for now and we will restart system later. |
Line 118: | Line 118: | ||
=== 3.4 Adopt Network Configuration === | === 3.4 Adopt Network Configuration === | ||
− | Now click '''LocatorBasicTemplate''' in the left pane to open the '''RAPID code'''. | + | 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. |
Line 124: | Line 124: | ||
− | Click '''Apply''' | + | Click '''Apply''' when finished |
Line 130: | Line 130: | ||
− | + | It is now time to '''Restart''' the system. Use the Restart option in Robot Studio or use the option provided on the Pendant. | |
Line 137: | Line 137: | ||
=== 3.5 Reteach Start and End poses === | === 3.5 Reteach Start and End poses === | ||
− | After system | + | After the system has rebooted, open the '''Production Window''' and click '''PP to Main'''. |
Line 143: | Line 143: | ||
− | You should see the '''LocatorBasicTemplate''' | + | You should see the '''LocatorBasicTemplate''' with the '''Program Pointer''' set as is shown in the figure below: |
Line 149: | Line 149: | ||
− | Before we | + | 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. |
Line 155: | Line 155: | ||
− | Switch to | + | 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 locator end position. | + | Repeat the same procedure for the locator end position. |
Line 164: | Line 164: | ||
=== 3.6 Run Locator === | === 3.6 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 '''Production Window''', '''PP to Main''' and hit '''Play'''. | + | Open the '''Production Window''', '''PP to Main''' and hit '''Play'''. |
− | Make sure that you are ready to stop the motion execution immediately | + | Make sure that you are ready to stop the motion execution immediately if something goes wrong. |
− | If everything | + | 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 program steps directly on the pendant info log panel. | + | You can monitor the program steps directly on the pendant info log panel. |
Line 180: | Line 180: | ||
== 4. RAPID == | == 4. RAPID == | ||
− | The '''ABB Locator module''' is a set of RAPID procedures which handle socket communication with Locator and | + | 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. |
=== 4.1 MAIN === | === 4.1 MAIN === | ||
− | + | The following code is a main loop from the '''LocatorBasicTemplate.mod'''. | |
PROC locatorMain() | PROC locatorMain() | ||
Line 217: | Line 217: | ||
ENDWHILE | ENDWHILE | ||
− | ''' Feel free to | + | ''' 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.''' |
=== 4.2 COMMUNICATION API === | === 4.2 COMMUNICATION API === | ||
− | RAPID procedures necessary for communication with Locator are available in '''LocatorCommunication''' system module. | + | RAPID procedures necessary for communication with Locator are available in the'''LocatorCommunication''' system module. |
==== 4.2.1 RAPID PROCEDURES ==== | ==== 4.2.1 RAPID PROCEDURES ==== | ||
Line 227: | Line 227: | ||
---- | ---- | ||
− | '''connectToLocator(string server_ip, num port, \num wait_time)''' - | + | '''connectToLocator(string server_ip, num port, \num wait_time)''' - procedure to establish a connection with the Locator. |
− | - ''server_ip'' - | + | - ''server_ip'' - IP address of the Vision Controller running the Locator. |
− | - ''port'' - | + | - ''port'' - port on which the Locator listens for a connection. |
---- | ---- | ||
− | '''trigLocator(num mode, \num num_of_results)''' - | + | '''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'''. | - ''mode'' - two modes are available - '''SINGLE_RESULT_MODE''' and '''MULTIPLE_RESULT_MODE'''. | ||
− | - ''\num num_of_results'' - optional parameter used in MULTIPLE_RESULT_MODE - defines | + | - ''\num num_of_results'' - optional parameter used in MULTIPLE_RESULT_MODE - defines the number of results expected by the user. |
---- | ---- | ||
− | '''waitForLocatorResponse()''' - | + | '''waitForLocatorResponse()''' - procedure to wait for a localization result to be received |
---- | ---- | ||
Line 252: | Line 252: | ||
=== 4.3 MOTION EXECUTION API === | === 4.3 MOTION EXECUTION API === | ||
− | A very simple example, which illustrates how Locator can be | + | 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 routine for navigating the arm to goals received from the Locator and also permits the use of the Locator in both '''SINGLE_RESULT_MODE''' and '''MULTIPLE_RESULT_MODE'''. | |
==== 4.3.1 RAPID PROCEDURES ==== | ==== 4.3.1 RAPID PROCEDURES ==== | ||
Line 260: | Line 260: | ||
---- | ---- | ||
− | '''moveToTarget(\num target_id)''' - | + | '''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. | - ''\num target_id'' - optional parameter used in MULTIPLE_RESULT_MODE - specifies which of multiple received targets to reach. | ||
Line 266: | Line 266: | ||
---- | ---- | ||
− | '''isReachable(robtarget point)''' - | + | '''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. | - ''robtarget point'' - robtarget pose received as a result of localization. | ||
---- | ---- |
Revision as of 08:50, 21 May 2018
1. Prerequisities
Locator ABB Interface is compatible with RobotWareOS versions 5.13 and higher.
System options required for Locator ABB Interface: (616-6) PC Interface Module
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 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. 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 Controller -> Configuration -> 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.
3.5 Reteach Start and End poses
After the system has rebooted, 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.
3.6 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.
4. 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.
4.1 MAIN
The following code is a main loop from the LocatorBasicTemplate.mod.
PROC locatorMain() ! 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, tool0; ! ! 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.
4.2 COMMUNICATION API
RAPID procedures necessary for communication with Locator are available in theLocatorCommunication system module.
4.2.1 RAPID PROCEDURES
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
4.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 routine for navigating the arm to goals received from the Locator and also permits the use of the Locator in both SINGLE_RESULT_MODE and MULTIPLE_RESULT_MODE.
4.3.1 RAPID PROCEDURES
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.