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

Online programming UR program calls and rounding

#1
Hi,

I have 2 questions regarding online programming with UR robots, using the apiur driver. We control the robot motion by running programs made/simulated beforehand (through the RoboDK GUI and saved in the station) on the physical robot. Additionally, we want to load and run programs saved on the robot controller in between consecutive RoboDK programs. I tried to do so using a 'Program Call Instruction' through the GUI, but I don't know what arguments to use and whether this is supported by the UR driver at all.

- Is there a way to achieve the latter through the robot driver? Or is there a better/alternative approach? Perhaps it's possible using the RunInstruction() API call?

- In addition, as noted in some other thread on the forum, rounding is not supported when controlling UR motion through the driver, so would it be better to generate and run programs on the fly? Is the added time delay negligible?

Thanks in advance.
#2
Hi, Jeroen,

I haven't used RoboDK with UR robots specifically but created custom driver and postprocessor for ABB robots before.
If I understand correctly, you currently tried using postprocessor on RoboDK program and loaded generated program into robot controller, right?
Haven't worked on UR robots for a while so not sure how generated program looks like. But you should able to see if "Program call" is even added in any way. Try writing some unique string in "Program call" and see if that strings even appears in generated UR program.

If it appears, that is great! Just write code in "Program call" which will run your programs saved in robot controller.

If it does not appear, postprocessor needs to be edited. Which postprocessor you are using? It might not support "Program call" and you might need to write a custom one. That is not that hard and you can read that in documentation: https://robodk.com/doc/en/Post-Processor...tProcessor

2nd option is to use robot driver (online connection to robot). 1st thing to check if you allow "program call" on robot itself:
1. Tools -> Options -> Drivers
2. Check if "Trigger program calls on the robot" is checked. If it is not, it will just ignore "Program call" in online mode.

After that start testing in online mode (connect to the robot, select "Run on robot" on some simple RoboDK program).
check if executing "Program Call" does anything. You can check logs to see if it even tries to send anything to the robot. There is a button "Show log" in robot connection panel in RoboDK.

If it sends something, again just write code in "Program call" which will run your programs saved in robot controller. And it should work.

If it does nothing, that means driver does not support this functionality and you will need to edit the driver (if possible), use another driver or write your own custom driver.

Let me know if you need any more questions or guidance
#3
Hi Robotux,

Thanks a lot for your reply. We're using the robot driver (2nd option). I didn't know about the Drivers section in the Options menu; I will definitely check it out and see if that changes things. I will post here once I know more.

The sad thing about the driver for UR robots is that we do not have the source code, Robodk only comes with an executable for it. This also means we cannot program motion rounding ourselves (if it is even possible at all).
#4
Yes, had same experience with ABB, it only had executable of a driver. So decided to write my own driver which wasn't as hard as I thought. Also got full control how communication works. And had to write ABB robot code to interpret my commands. In your case, UR has remote control functionality, so it might be even easier.

Good luck with the driver and give us an update how it goes.
  




Users browsing this thread:
1 Guest(s)