Hey team!
I need some help setting up 3 positioners to be controlled from my Comau robot A7, A8, A9.
I've been playing around with the configuration and reading other forum posts (like this one) to set up the mechanisms but have had little success. The only way I can define all 3 positioners is with one of the positioners linked to A7, and the other two as standalone positioners (essentially an A1 each).
This works fine inside the RoboDK simulation, and I have created python scripts to manipulate the positioners as expected. However, the problem is when I generate the robot program.
Any control command (move just robot, move robot & positioners, move just positioners) is generated as a move robot command with 7 axes.
E.g. MOVE TO {A1, A2, A3, A4, A5, A6, E1}
This means that trying to move just the robot will also move the positioner in E1.
E.g. my MoveRobotHome.py is exported with the following move command.
MOVE TO {0.00000,-60.00000,-110.00000,0.00000,90.00000,0.00000,90.00000}
robot is moved to home AND positioner 1 is moved to 90 deg
Similarly, when I try to move just positioner A8 or A9 it will generate it as essentially just an A1 move
E.g. MovePositioner2(90) is exported with the following move command.
MOVE TO {90.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.00000}
This moves A1 to 90 and all other joints (including positioner 1 in A7) to 0, instead of just positioner 2 to 90 deg.
I need to be able to export my move commands with all axes by defining the positioners as A7, A8 and A9 inside RoboDK so the exported move commands are:
MOVE TO {A1, A2, A3, A4, A5, A6, E1, E2, E3}
Any ideas?
I am using RoboDK v5.7.4
Robot: Comau S-13
Post Processor: Comau C5G
See below raw script dump. This script should move robot to home, then positioners 2 and 3 to home, then positioner 1.
MoveToStation1.py
Comau output
I need some help setting up 3 positioners to be controlled from my Comau robot A7, A8, A9.
I've been playing around with the configuration and reading other forum posts (like this one) to set up the mechanisms but have had little success. The only way I can define all 3 positioners is with one of the positioners linked to A7, and the other two as standalone positioners (essentially an A1 each).
This works fine inside the RoboDK simulation, and I have created python scripts to manipulate the positioners as expected. However, the problem is when I generate the robot program.
Any control command (move just robot, move robot & positioners, move just positioners) is generated as a move robot command with 7 axes.
E.g. MOVE TO {A1, A2, A3, A4, A5, A6, E1}
This means that trying to move just the robot will also move the positioner in E1.
E.g. my MoveRobotHome.py is exported with the following move command.
MOVE TO {0.00000,-60.00000,-110.00000,0.00000,90.00000,0.00000,90.00000}
robot is moved to home AND positioner 1 is moved to 90 deg
Similarly, when I try to move just positioner A8 or A9 it will generate it as essentially just an A1 move
E.g. MovePositioner2(90) is exported with the following move command.
MOVE TO {90.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.00000}
This moves A1 to 90 and all other joints (including positioner 1 in A7) to 0, instead of just positioner 2 to 90 deg.
I need to be able to export my move commands with all axes by defining the positioners as A7, A8 and A9 inside RoboDK so the exported move commands are:
MOVE TO {A1, A2, A3, A4, A5, A6, E1, E2, E3}
Any ideas?
I am using RoboDK v5.7.4
Robot: Comau S-13
Post Processor: Comau C5G
See below raw script dump. This script should move robot to home, then positioners 2 and 3 to home, then positioner 1.
MoveToStation1.py
Code:
# You can also use the new version of the API:
from robodk import robolink # RoboDK API
from robodk import robomath # Robot toolbox
RDK = robolink.Robolink()
# ----------------- move robot to home -----------------
# get comau robodk
comau = RDK.Item('Comau S-13', robolink.ITEM_TYPE_ROBOT)
# check comau is valid
if not comau.Valid():
raise Exception("Could not find JIG 1")
# set speed
comau.setSpeed(-1, 30, -1, -1) # 30 deg/s joint speed
# initialise joints
joints_comau = comau.Joints()
# update joints to home position
joints_comau[0] = 0
joints_comau[1] = -60
joints_comau[2] = -110
joints_comau[3] = 0
joints_comau[4] = 90
joints_comau[5] = 0
# move to joints
comau.MoveJ(joints_comau)
# ------------------------------------------------------
# --------------------- move JIG 1 ---------------------
# get jig1 robodk
jig_1 = RDK.Item('JIG1', robolink.ITEM_TYPE_ROBOT)
# check jig1 is valid
if not jig_1.Valid():
raise Exception("Could not find JIG 1")
# set speed
jig_1.setSpeed(-1, 10, -1, -1) # 20 deg/s rotation speed
# initialise joints
joints_jig1 = jig_1.Joints()
# update jig1 target angle
joints_jig1[0] = 90
# move to target angle
jig_1.MoveJ(joints_jig1)
# ------------------------------------------------------
# --------------------- move JIG 2 ---------------------
# get jig2 robodk
jig_2 = RDK.Item('JIG2', robolink.ITEM_TYPE_ROBOT)
# check jig2 is valid
if not jig_2.Valid():
raise Exception("Could not find JIG 2")
# set speed
jig_2.setSpeed(-1, 10, -1, -1) # 20 deg/s rotation speed
# initialise joints
joints_jig2 = jig_2.Joints()
# update jig2 target angle
joints_jig2[0] = 90
# move to target angle
jig_2.MoveJ(joints_jig2)
# ------------------------------------------------------
# -------------------- move JIG MAIN -------------------
# get main jig robodk
jig_main = RDK.Item('MAIN JIG', robolink.ITEM_TYPE_ROBOT)
# check main jig is valid
if not jig_main.Valid():
raise Exception("Could not find MAIN JIG")
# set speed
jig_main.setSpeed(-1, 10, -1, -1) # 20 deg/s rotation speed
# initialise joints
joints_jigmain = jig_main.Joints()
# update jig main target angle
joints_jigmain[0] = 0
# move to target angle
jig_main.MoveJ(joints_jigmain)
# ------------------------------------------------------Comau output
Code:
PROGRAM MoveToStation1
VAR
ROUTINE R_MoveToStation1 EXPORTED FROM MoveToStation1 GLOBAL
ROUTINE R_MoveToStation1
VAR
BEGIN
$ORNT_TYPE := RS_WORLD
$MOVE_TYPE := JOINT
$JNT_MTURN := TRUE
$CNFG_CARE := TRUE
$TURN_CARE := TRUE
$SING_CARE := FALSE
$TERM_TYPE := NOSETTLE
$FLY_TYPE := FLY_CART
$FLY_TRAJ := FLY_PASS
$FLY_DIST := -1.000
$STRESS_PER:= 65
-- Program generated by RoboDK v5.7.4 for Comau S-13 on 11/03/2026 12:35:30
$ROT_SPD := 0.524
$UFRAME := POS(-62.0000, -140.0000, -2000.0000, -90.0000, 90.0000, 0.0000, '')
$TOOL := POS(0.0000, 0.0000, 510.0000, -104.9996, 120.0002, 150.0002, '')
MOVE TO {0.00000,-60.00000,-110.00000,0.00000,90.00000,0.00000,90.00000} -- move COMAU only
$ROT_SPD := 0.175
$UFRAME := POS(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, '')
$TOOL := POS(0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, '')
MOVE TO {90.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.00000} -- move JIG1 only
$ROT_SPD := 0.175
MOVE TO {90.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.00000} -- move JIG2 only
$ROT_SPD := 0.175
MOVE TO {0.00000,0.00000,0.00000,0.00000,0.00000,0.00000,0.00000} -- move MAIN JIG only
END R_MoveToStation1
BEGIN
R_MoveToStation1
END MoveToStation1
