Multi-Robot Overview-Post Processor and Code Output
Simultaneous multi-robot support for ABB, Fanuc, Kuka, and Motoman. Make the most of your cycle time with controller-ready robot code for independent motion between multiple robots in a single cell.
The robot brands offering multi-robot support has been upgraded with the ability to output an additional scheduler program that orchestrates robot program execution, handshake event generation/output to synchronize robots using instructions available from each brandβs multi-robot option, and wait-time event generation/output to add strategic delays in robot programs. All of these features work alongside existing process-specific features, allowing for multi-robot welding, plasma cutting, part handling, and more.
For comprehensive details on multi-robot output support and the level of validation for each processor, please refer to the respective documentation for each brand.
Β
IMPORTANT
ABB's multi-robot output has been validated using RobotStudio's samples cells. Customizations may be required.
Fanuc's multi-robot output has been validated using Roboguide's samples cells. Customizations may be required.
Kuka's multi-robot output has only been validated using official Kuka documentation. Customizations will likely be required to generate usable output.
Motoman's multi-robot output has been validated using MotoSim's samples cells. Customizations may be required.
While the processor is still under development, we are increasingly confident in the added value it can already deliver. We recommend exercising caution when using this processor in production environments.
Β
Pre-requisites
For ABB, Fanuc, Motoman
All robots must be controlled from a single controller.
ABB
ABB's 'MultiMove' and 'MultiTasking' options are required to utilize the program generated by Robotmaster.
Fanuc
Fanuc's MultiArm Package (R819) is required to utilize the multi-robot programs generated by Robotmaster.
Motoman
Motoman's Multi-Arm package is required to utilize the program generated by Robotmaster.
Β
For Kuka
Requires all robot controllers to be remotely connected.
Kuka
Kuka's Roboteam plug-in is required to utilize the multi-robot programs generated by Robotmaster.
Β
How to set up Multi-Robot Cell correctly in Cell Editor
ABB
Robot Settings>Custom Values>TaskName (Robot 1: TaskName=T_ROB1; Robot 2: TaskName=T_ROB2)
Robot Settings>Custom Values>TaskEntryName (Optional; Default=main)
HOW-TO Article: π΄ ABB setup in cell editor
Fanuc
Robot Settings>Show Advanced Options>Motion Group Number
Robot Settings>Cutom Values>RobotNumber
Ex. Motion Group Number=2; RobotNumber=2
HOW-TO Article: π‘ FANUC setup in cell editor
Kuka
Robot Settings>Custom Values>ControllerNumber
Robot Settings>Custom Values>RobotName
These values should correlate to the robot's unique controller number and assigned name in the Roboteam controller configuration menu.
HOW-TO Article: π KUKA setup in cell editor
Motoman
Robot Settings>Cutom Values>RobotNumber
The value should correlate to the robot number each robot is assigned in the robot controller.
HOW-TO Article: π΅ Motoman setup in cell editor
Β
Scheduler Programs
Scheduler program output is controlled by the Output scheduler program parameter in the processor's Controller Settings menu. If set to When Needed, a scheduler program will be output when the Robotmaster session contains multiple active robots.
Β
Handshakes
Handshakes created in the Robotmaster scheduler are injected into the point list as Events by the processor.
ABB Handshakes
A single handshake will generate one event for each robot:
A Wait Sync Task instruction:
WaitSyncTask syncId, taskListsyncIdis set based on the ID of the handshake this instruction is created for.taskListis set based on the robots dependent on the handshake.The variable declarations for
syncIdandtaskListare automatically output in the header of the post file.
Sample output is below:
MODULE main_ROB1
!GENERATED BY ROBOTMASTER
PERS tasks tasks_R2R3R4R1{4} := [["ROB2"],["ROB3"],["ROB4"],["ROB1"]];
VAR syncident ssync1;
PROC main()
WaitSyncTask ssync1, R2R3R4R1;Β
FANUC Handshakes
A single handshake will generate two events for each robot:
A Synchronization Schedule instruction:
SYNC_SCHED[seq_n]seq_nis automatically calculated based on the robots dependent on the handshake.
A Process Synchronization instruction:
INPOS[n]orPR_SYNC[n]nis set based on the ID of the handshake this instruction is created for. The instructionINPOSis used for the first robot in the handshake.PR_SYNCis used for all other robots in the handshake.
The events are output in the same format and order shown in the point list:
6: SYNC_SCHED[5] ;
7:J P[1] 30% FINE INPOS[2] ;NOTE
The synchronization instruction is placed on the last point of the operation before the handshake.
This is done because the process synchronization instructions must be output in-line with a motion instruction, and the robot will pause at the sync instruction after the motion instruction has completed. Outputting the synchronization instruction on the last point of the operation before the handshake ensures the real-life robot behavior will match the Robotmaster simulation behavior.
Because of this, disabling Home Approach point output is blocked if the next operation has a handshake.
KUKA Handshakes
A single handshake will generate one event for each robot:
An inline form
PROGSYNCinstruction:PROGSYNC HandshakeID -> #_#... WAITHandshakeIDis set based on the ID of the handshake this instruction is created for.#_#...is set based on the controller number of each robot dependent on the handshake.
Sample output is below:
PROGSYNC HS1 -> 1_3 WAITNOTE
In order to match the behavior of handshakes in the Robotmaster simulation, the PROGSYNC instructions are always configured to WAIT
MOTOMAN Handshakes
A single handshake will generate one event for each robot:
A TSync instruction:
TSYNC Sync# SNUM=NumOfSyncsSync#is set based on the ID of the handshake this instruction is created for.NumOfSyncsis set based on the number of robots dependent on the handshake.
Sample output is below:
'Dome 1 - R1
TSYNC 1 SNUM=2
MOVJ C00000 VJ=30.00
...