Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5

Synchronization of 2 Robots

#1
Hi all together,

I just started using RoboDK. It's a great tool. I already tried some stuff and it works great. For example I ran this Offline Programming example.
But the real problem I want to work on is the synchronisation of Robots. These is this example .But I have no idea to make it run. Which points do i have to teach? When I start the python code, just nothing happens.

Another question for my future use case is: If I have this code now for robot synchronization, can I transfer the code to the 2 robots and I can make it work without RoboDK connected and running? Like will RoboDK create all the code to synchronize the movements inside the robot controls?

Best Regards
Daniel
#2
You can find the RoboDK project file of the robot synchronization example here:
C:/RoboDK/Library/Example-08.a-Synchronize 3 Robots with a Screen (Script matching timings).rdk

I attached the project. You can find more scripts in the attached project that can help you teach the targets and run the simulation. 

This video shows how to use this example and related scripts:
https://www.youtube.com/watch?v=BuQ30X4ust8


Attached Files
.rdk   Example-08.a-Synchronize 3 Robots with a Screen (Script matching timings).rdk (Size: 5.02 MB / Downloads: 151)
#3
Thanks Albert. I also found this example and it works and makes sense: https://robodk.com/example/Synchronizati...c-and-KUKA

But i got a question: This python program synchronized the roboters to each point on the hexagon corner, right?

But when click "Generate Robot Program" on the Python file, it created robot programs for all 3 Robots. Like for example this one for the Kuka:
Code:
DEF ProgKUKAKR6R900sixx()
; Program generated by RoboDK v5.6.4 for KUKA KR 6 R900 sixx on 20/09/2023 13:55:27
; Robot stamp unset
BAS(#INITMOV,0)
$ORI_TYPE  = #VAR
$CIRC_TYPE = #BASE
$VEL.ORI1 = 200
$VEL.ORI2 = 200
$ACC.ORI1 = 100
$ACC.ORI2 = 100
$ADVANCE = 2
$ACT_EX_AX = 0
PTP $AXIS_ACT ; skip BCO quickly
$BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
$TOOL = {FRAME: X -4.000,Y 0.000,Z 371.300,A 0.000,B 45.000,C 0.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
PTP {AXIS: A1 0.000,A2 -154.452,A3 115.025,A4 0.000,A5 39.427,A6 0.000}
; PTP {POS:X -3.321,Y -0.000,Z 890.000,A -0.000,B 90.000,C 0.000,S 'B011',T 'B000010'}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
PTP {POS:X 564.871,Y 0.000,Z 571.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
LIN {X 564.871,Y 0.000,Z 471.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
LIN {X 364.871,Y 0.000,Z 471.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
LIN {X 564.871,Y 200.000,Z 471.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
LIN {X 764.871,Y 0.000,Z 471.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
LIN {X 564.871,Y -200.000,Z 471.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
LIN {X 364.871,Y 0.000,Z 471.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
LIN {X 564.871,Y 0.000,Z 571.832,A -180.000,B 0.000,C -180.000}
;------ Using Reference frame number 6 ------
$ACT_BASE = 6
$BASE=BASE_DATA[6]
;------ $BASE = {FRAME: X 0.000,Y 0.000,Z 0.000,A 0.000,B 0.000,C 0.000}
PTP {AXIS: A1 0.000,A2 -154.452,A3 115.025,A4 0.000,A5 39.427,A6 0.000}
; PTP {POS:X -3.321,Y -0.000,Z 890.000,A -0.000,B 90.000,C 0.000,S 'B011',T 'B000010'}
END

Now there is no code for synchronization in it, right? With RoboDK, the synch with the python program only synchs the movement when i run it in robodk? Or is there a way to generate code and run it on the robots without robodk?
#4
You are right, in this example, the code for synchronization is missing.

You can trigger a function call to make this synchronization at the end of each point. You could link robots with digital inputs/outputs to signal that they are all ready and allowed to continue the movement. This file can be generated using RoboDK. I attached another example that shows this method of synchronization.


Attached Files
.rdk   Screen event Sync Method 1 - Using Virtual IO.rdk (Size: 5.01 MB / Downloads: 108)
  




Users browsing this thread:
1 Guest(s)