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

Changing postpocessors through a python API for varying robot programs

#1
Hi RoboDK team,

I want to ouput multiple robot programs for a single robot movementes through a python API.

For example, a particular block of robot movements should be exported through KR C4 whereas other block of robot movements should be exported to a Kuka.CNC program.


to explain:

/ /定义参数:进口,机器人,robot_base,path etc.

RDK.setRunMode(3)
post_processor = "KUKA_KRC4"

robot.setParam("PostProcessor", post_processor)
RDK.ProgramStart('Prog1', path, post_processor, robot)


...
// movements for Prog1
...

RDK.Finish() //finish the movements for Prog1 and export a KR C4 program
RDK.setRunMode(3)
post_processor = "KUKA_CNC"
robot.setParam("PostProcessor", post_processor)
RDK.ProgramStart('Prog2', path, post_processor, robot)

...
// movements for Prog2
...

RDK.Finish() //finish the movements for Prog1 and export a KUKA_CNC program

...
// Further moves
...
#2
This should be possible. The sample code you shared looks like you are heading in the right direction.

What issues did you have?
#3
Hi Albert,

Thanks for the response. I tried a code similar to my sample code and realized, the program exports just the prog1 and neglects everything after the first RDK.Finish() command.

I mean, the movements of prog1 are only exported as the .src, I dont get Kuka_CNC.

I believe it should work if I create multiple functions that export particular robot program. Like Def prog1(movements_for_prog1) Def prog2(movements_for_prog1).

But I would like to have it similar to the one I described above.
#4
Can you share your script here with a demo station, this will help us help you.

Jeremy
Find useful information about RoboDK and its features by visiting ourOnline Documentationand by watching tutorials on ourYoutube Channel.


#5
Attached is a demo example.

The station has a example program (python) that switches in between the postprocessors.

I have added some comments, the code throws a error when RDK.Finish() is called, if I comment the RDK.Finish() function in between the code the, simulation works smooth however the desired output i.e. 3 seperate robot programs are not produced instead a single robot program (KRL) is obtained.

Please let me know!

P.S. Please define a output path in the python program main

Best,
Pradnil S Kamble


Attached Files
.rdk Example.rdk(Size: 1.18 MB / Downloads: 181)
#6
You can fix the issues in your script by making these modifications:

  1. You should call RDK.Connect after RDK.Finish (workaround, for some reason the API is not recovering/reconnecting automatically)
  2. The path to the posts folder for Program start should be a valid path so you don't see a popup to save the program.
  3. The name of the post processor should exactly match the post processor file in the Posts folder, it is case sensitive.
I attached the modifications I did to your script to make it work.

Code:
# Use the KUKA CNC post
post_processor = "KUKA_CNC"
robot.setParam("PostProcessor", post_processor)
RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)
RDK.ProgramStart('Hex', r"C:/Users/UserName/Downloads/", post_processor, robot)

# new target on active base
base_target = park = RDK.AddTarget("Base_target", base)
base_target.setAsCartesianTarget()
base_target.setVisible(False)
xyzabc = [0, 0, 0, 0.0, 0.0, 0.0]
base_target.setPose(KUKA_2_Pose(xyzabc))
robot.MoveL(base_target)

# make a hexagon there
poseref = base_target.Pose()

for i in range(7):
ang = i*2*pi/6 #angle: 0, 60, 120, ...
posei = poseref*rotz(ang)*transl(100,0,0)*rotz(-ang)
robot.MoveL(posei)

robot.MoveJ(base_target)


#End KUKA CNC program
RDK.Finish()


RDK.Connect() # Important if you want to continue using the API


# Go back home with KRC 4
post_processor = "KUKA_KRC4"
robot.setParam("PostProcessor", post_processor)
RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)
RDK.ProgramStart('Home', r"C:/Users/UserName/Downloads/", post_processor, robot)

robot.MoveJ(robot_base)
robot.MoveL(...)

RDK.Finish()
#7
Thanks Albert and Jeremy!
This is now resolved.




Users browsing this thread:
1 Guest(s)