Multi-Robot Overview-Post Processor and Code Output

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.

image-20250317-210725.png

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.

image-20250602-111905.png

Β 

Handshakes

Handshakes created in the Robotmaster scheduler are injected into the point list as Events by the processor.

ABB Handshakes

image-20250603-084624.png

A single handshake will generate one event for each robot:

  1. A Wait Sync Task instruction: WaitSyncTask syncId, taskList

    • syncId is set based on the ID of the handshake this instruction is created for.

    • taskList is set based on the robots dependent on the handshake.

    • The variable declarations for syncId and taskList are 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

image-20250603-084801.png

A single handshake will generate two events for each robot:

  1. A Synchronization Schedule instruction: SYNC_SCHED[seq_n]

    • seq_n is automatically calculated based on the robots dependent on the handshake.

  2. A Process Synchronization instruction: INPOS[n] or PR_SYNC[n]

    • n is set based on the ID of the handshake this instruction is created for. The instruction INPOS is used for the first robot in the handshake. PR_SYNC is 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

image-20250603-084848.png

A single handshake will generate one event for each robot:

  1. An inline form PROGSYNC instruction: PROGSYNC HandshakeID -> #_#... WAIT

    • HandshakeID is 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 WAIT

NOTE

In order to match the behavior of handshakes in the Robotmaster simulation, the PROGSYNC instructions are always configured to WAIT

MOTOMAN Handshakes

image-20250603-085030.png

A single handshake will generate one event for each robot:

  1. A TSync instruction: TSYNC Sync# SNUM=NumOfSyncs

    • Sync# is set based on the ID of the handshake this instruction is created for.

    • NumOfSyncs is 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 ...

@copyright 2020 Intercam SA. All right reserved.