I created a testing project with Motoman SIA10F with a TCP which 100 mm above robot flange (z-axis).
If I run the project on RoboDK ( with "Run on robot" setting), the robot moves as we expected.
But when upload the JBI to controller and run it, the robot pose changed to the the path without tool installed.
1. RobotDKHome.JBI : Generated by Motoman Cartesian python post processor.
2. PP_ROBODK.JBI : Generated with Motoman teach pendent.
3. TOOL.CND : Tool info got from controller. (Need unzip it, due to this web didn't allow upload tool.cnd)
This is a bit strange... It looks like the tool 15 is being ignored or not properly defined. Taking a quick look at the TOOL.CND it looks like you defined the tool in RoboDK the same way you have it in the controller (0,0,100,0,0,0). By the way, you could also load TOOL.CND files in RoboDK to extract tools and reference frames.
There are some tests or workarounds you can try to solve this issue:
A quick workaround is to generate the program in pulses. To do so, you can select the Motoman post and change the following setting:
Tools-Options-Program-Output for joint/linear movements -> Set both to Joint data
Do you have the SETTOOL option in your Motoman controller? This would force the tool directly in your program. If you have this option you can right click a program. Select Select Post Processor and select Motoman Using Options.
When you generate the program you'll see the SETTOOL flag to update the tool from the program.
Alternatively, you can let us know what changes you would like to see in the program generated by RoboDK and we can update the post processor accordingly.
11-19-2019, 04:08 AM (This post was last modified: 11-19-2019, 05:33 AM by PenceCMKo.
Edit Reason: Add attached files
1. For your suggestion #1, the JBI file (RobotDKHome.JBI) I uploaded previously is already in pulses format. But the pulses data is not same as the JBI output from controller ( PP_ROBODK.JBI)
I also tried to generate the JBI with the settings you suggested, but which Motoman post you said? (default Motoman or python Motoman poster?)
2. I don't know how to check if we have SETTOOL option in the Motoman controller or not. Maybe we need confirm with Yaswaka later.
And I didn't see any poster named "Motoman Using Options" with latest released version (v4.0.1-13545), seems it was removed in formal release.
By the way, there are two minor bugs for generating JBI with python poster.
And I modified to fit our 7-axes robot, for Motoman python poster,
a. Correct the data format when generating with pulse type JBI (E axis data is not at correct place, should be <S>,<L>,<U>,<R>,<B>,<T>,<E> format).
b. Fix velocity settings of MOVL command in mm/s (same unit shows in RobotDK, not cm/min)
My checking result of your suggestion #2 is we don't have SETTOOL feature in our controller so I cannot try your suggestion with our controller.
But I generated the JBI with Motoman_UsingOptions, same content as the file I upload (RobotDKHome.JBI). Didn't find "SETTOOL" command in JBI file.
In this period of time testing with Motoman robot, my suggests for RoboDK to improve the python post processor of Motoman robot are,
1. When generating JBI file with join pulse format, the RJ (relative job) attribute cannot enabled. Otherwise, the JBI file cannot upload to controller. (This can be done with set "USE_RELATIVE_JOB = False" in Motoman_Cartesian.py.)
2. Please check the solution I provided previously to fix 7-axes pulse output format issue.
3. The speed settings of MOVL command (Minor issue mentioned in my previously post).
4. When generating pulse format JBI (ex. using Motoman_Cartesian.py poster), the robot pose should consider tool settings. RoboDK should send same pose data as simulation ("run_on_robot" feature) to poster for generating pulse format job file.
*** But keep the same rule (current output rule) when user chooses Motoman_CartesianOnly.py
You are right. The JBI output of the custom post processors is swapped for SIA robots (7-axis robot arms). I just fixed this issue and we'll make sure it is updated with our next update in RoboDK. I attached the updated Motoman posts. We also added a flag to customize the speed units (mm/s or cm/min). Some robot controllers require cm/min.
The latest post processors do not generate the Relative Job flag (RJ) if you generate the program in pulses (like the Motoman Post).
Another thing, I noticed that the Motoman "Using Options" post was renamed to Cartesian with the latest versions (it was my mistake in my last message). Any post you choose or create can use the main Motoman post that contains all the improvements you suggested.
RoboDK already outputs the target with respect to the tool when generating a program. Just to be sure all targets are recalculated (mostly applicable to joint targets) you can right click a program and select Recalculate Targets.
Let me know if you still have issues. Both Cartesian and Joints should work. In your case it looks like the TCP is not properly taken into account by the controller.
Thank you for bringing up these suggestions and let us know if you see any other details to improve.
11-21-2019, 01:27 AM (This post was last modified: 11-21-2019, 01:28 AM by PenceCMKo.
Edit Reason: Add attached files
I use same RoboDK project with different poster (your latest updated and my) to compare the output JBI files.
If the JBI has join pulse data, likes use Motoman and Motoman_Cartesian custom python, there is something wrong with your python poster.
( I guess you miss to check the order of pulse/degree ratio settings.)
And for the Motoman_Cartesian poster, the RJ flag didn't remove.
1. With the latest Motoman poster, it can generate correct pulse type JBI file for our SIA10F robot now.
2. The reason that I requested to remove RJ flag is because when using Motoman_Cartesian poster the output JBI format cannot be accepted by FS100 controller.
(The file cannot be uploaded to controller via FTP, but if we remove the RJ flag in the JBI file manually it can be uploaded successfully.)
But I also found if we set RJ flag as FALSE in Motoman_Cartesian python poster, it generated same result as custom Motoman poster.
3. About the wrong robot pose issue had also clarified.
Every time after I adjusted the tool settings in RoboDK, even we can see correct pose when taping on each target point (which really reflect the change of tool settings).
And the "run on robot" feature also showed correct pose with tool settings changed.
But just as you suggested, before generating the JBI we need to use "Recalculate Targets" feature to get right output.
Thank you for your feedback. We'll remove the RJ flag with all Motoman posts by default as you recommended.
In general, if you use the default settings (linear output in Cartesian, joint output in pulses) you would not need to use the Recalculate Targets option. This is useful if you modify a Cartesian target and you want to update the Joint and configuration data associated with it.