Robot Program Post Processor (downloader)

This addon allows converting robot programs from Visual Components to native robot language. The addon is constructed so that new translators e.g. for other robot brands or controller versions can be added.

  • Translators included in this package:
    • ABB
    • Comau
    • Doosan
    • Epson
    • Fanuc
    • Kawasaki
    • Kuka
    • Kuka Sunrise
    • Mitsubishi
    • Universal Robots
    • Yaskawa
    • IRL (VC Example)

Install the addon by extracting the zip file to My Commands folder. Then restart the application and the “Post Process” button shows up on the Program ribbon tab. Be sure to read ReadMe.txt included in the package for more information.

The post processor command includes the post processor launcher and separate translators for different robot languages. The translators can be found in a sub folder called “Translators”. New translators can be added to the “Translator” folder. New translator will automatically show up in the Post Processor save dialog as a new file type. The translator must be named with following naming convention so that it shows up in the save dialog properly:

  • Naming convention:
    • ROBOTBRAND_FILETYPE.py
  • For example:
    • ABB_mod.py
Post processors calls a function named "postProcess" in the chosen translator. That function must be defined in the translator and following arguments are passed for it:
  • app (of type vcApplication)
  • program (of type vcProgram)
  • uri (file uri of type string)
See existing translators for a reference. IRL translator is the simplest example. It doesn't support control flow (like while, if, break, etc statements).

The command tries to match robot model with a correct post-processor by searching manufacturer on BOM Description or by matching a controller name with known names (e.g. IRC5 => ABB). If match is not found user chooses PP on action panel settings.

version_history.txt shows changes in the add-on.

RobotPostProcessor_2020_10_08.zip (62.5 KB)

version_history_2020_10_08.txt (1.7 KB)

4 Likes

Hello
The export works very well. Thank you.
Is it possible to extend this exporter to Motoman / Yaskawa?
In 3D Automate, this was already present.

Hi,

Do you have some documentation for this? We would also like to know if you have done something similar for Yaskawa Translator?

Thank you,

Regards,

Hari

The Yaskawa Post Processor is also available. If you are interested please contact DUALIS IT Solution edietrich@dualis-it.de

 

Post Process button doesn’t appear, any suggestions why?

UPD: fixed.

Hi! Do you possibly have useful post processor for ABB-scara robots?

Main problem is that scara has four axes and this one seems to work only with 6-axis (Quaternion orientation does not match)

 

 

Yes ABB PP is also available, please contact edietrich@dualis-it.de

I am also looking for DX100 motoman/Yaskawa translator, has one been written?

Thanks

Hi RJCRobotics,

feel free to contact evenau (edietrich@dualis-it.de) - DUALIS is providing a post-processor add-on that also supports yaskawa/motoman (DX100).

br/Ralle

Hi,

Attachment contains the same translators as OP but also a new translator for Yaskawa Motoman robots (DX100/DX200 controller).

Check the header in Yaskawa Motoman_JBI.py file to see detailed info about the scope of the translator. By default it produces rectangular coordinate jobs but pulse format is supported if pulse ratios and zero positions are added on the robot model.

-Keke

 

RobotPostProcessor.zip (21 KB)

Hi,

Attachment contains translators with new KUKA translator added into the pack.

Kuka translator was written and tested with fairly new KRC4 controlled robot so it may or may not be compatible with older controller version. Translator has few different options that affect the format in .src and .dat file. Options are boolean variables that can be changed in “setPostProcessorOptions” method in KUKA_src.py source file. These options are:

  • use_spline_motions: True=SLIN/SPTP motions, False=LIN/PTP motions
  • use_inline_form: True=Wrap commands into folds, False=Pure KRL without folds
  • comment_out_frames: True=base/tool frame assignments are commented out at the beginning of main, False=base/tool frames are assigned at the beginning of main (beware that this will override current frames)
-Keke

 

RobotPostProcessor.zip (29.1 KB)

Hello,

i will testing the Kuka Post Processor but i get this error:

Mapping Null to BASE_DATA[1].
Mapping Null to TOOL_DATA[1].
Mapping Mitte_Greifer to TOOL_DATA[2].
Mapping Magazin to BASE_DATA[2].
Mapping Maka1_li to BASE_DATA[3].
Mapping Maka1_re to BASE_DATA[4].
Mapping Maka2_li to BASE_DATA[5].
Mapping Maka2_re to BASE_DATA[6].
Mapping Monostanze to BASE_DATA[7].
Mapping Aufstechst to BASE_DATA[8].
Mapping Datron to BASE_DATA[9].
Traceback (most recent call last):
File “file:///C:\Users\Public\Documents\OCTOPUZ2.0\Commands\OctopuzCore\PostProcessLauncher.py::”, line 73, in firstState
File “C:\Users\Public\Documents\OCTOPUZ2.0\Commands\OctopuzCore\Translators\KUKA_src.py”, line 70, in postProcess
writeRoutine(routine, routine.Name)
File “C:\Users\Public\Documents\OCTOPUZ2.0\Commands\OctopuzCore\Translators\KUKA_src.py”, line 118, in writeRoutine
write_statementstatement.Type
File “C:\Users\Public\Documents\OCTOPUZ2.0\Commands\OctopuzCore\Translators\KUKA_src.py”, line 547, in writeLinMotion
writeMotion(pos_name)
File “C:\Users\Public\Documents\OCTOPUZ2.0\Commands\OctopuzCore\Translators\KUKA_src.py”, line 661, in writeMotion
% (ldat, motiontarget.CartesianSpeed / 1000.0, motiontarget.CartesianAcceleration, motiontarget.AccuracyValue))
NameError: Attribute or method ‘CartesianAcceleration’ not found.

 

Can you Help me?

OCTOPUZ ᵀᴹ 2.0.3.1088 (2.0.3

Hi @sebastian7777,

Thanks for feedback. I tested KUKA PP on VC 4.1 family and it seems that on 4.0 vcMotionTarget doesn’t have that property CartesianAcceleration and that why it failed. I modified the PP and now it should work also with 4.0 series products. New version 1.01 of KUKA PP is attached to the zip file on the original post.

-k

Thanks so much Keke, I’m making good progress in generating the robot code, my pulse values are way off though (I’m guessing the RC1G980 is the 980th value under the ‘///RCIG’ notation in ‘ALL.prm’ file? I think it’s just a matter of calibration if you have anything to help with that? Also, it would be really helpful if I could take a program from the robot controller (programmed on the pendant) and load it into the simulation (an inverse post processor I guess) I found this really helpful when using other software.

Thanks Again

Richard

No problem Richard. We don’t have uploaders yet for any brand but that is something that is asked a lot so it is in the wishlist so to speak.

Yes those parameters are like you mentioned in ALL.prm. Usually I just open a notepad++ and copy paste all the values under the header into a new file and then I can track those specific entries using line numbers. So RC1G972-977 are on line 98 and RC1G980-985 are on line 99. See the picture below. You can see that the non-zero values are the used joints.

-k

Also sometimes you need to fiddle with joint signs and zero offsets. Try to post some basic poses such as home position to get a grasp of what is wrong in the calibration. But start with the ratios and then fix signs and offsets if needed.

-k

Hi, is there also a pre-processor that converts files from existing KUKA programs (e.g. .src and .dat) to VC?
Thanks for effort
-Hsm02000

I added the files to My Commands (including the translators) and the Post Process button does appear, however my generated output files are always empty and only contain the template data, but no points etc.

For example, this is what all my generated UR programs looks like:

def Testprogram():
end #Testprogram


Testprogram()

How do I fix this? Is it related to the fact that I use KUKA.Sim Pro instead of VC?

Great work

Hoping to get it for KAWASAKI ROBOTICS .

@Hsm02000, We currently don’t have pre-processors (uploaders) for any brands yet. But those are requested a lot so they are on the wishlist so to speak.

@Plop, Kuka.Sim uses different motion statements (custom statement type) so those are not supported by these Post-Processors.

-k