I have a chance to develop a user interface program that lets the user control a KUKA robot from a computer. I know how to program stuff with the KUKA utilities, like OrangeEdit, but I don't know how to do what I want to do. I don't even know what's the "best" language to talk to the robot.

My idea is to control the robot with the arrow buttons, like up/down controls the Z axis and left/right controls the X/Y axes.

Can someone help me here? I know there's a lot of libraries to control the robot even with an Xbox controller, but if I limit the robot to 3 axes I might be able to control with simple buttons.

Edit: Now imagine that i have a routine that consists on going from P1 to P2 then to P3. I know i can "touch up" the points to refresh its coordinates using the console, but can i do it in a .net application? like modifying the src/srcdat files?

  • $\begingroup$ If you intend on controlling a robot, the closer to a real-time environment you have, the better. That is RT-Linux > Linux > Windows in my experience, and C or C++ > anything else. .Net+Windows is essentially the worst choice for robotics, latency/predictability-wise. $\endgroup$
    – Shahbaz
    Commented Mar 7, 2016 at 18:09
  • $\begingroup$ yeah i wish i could use linux :/ The thing is, the project must use windows because the application needs to talk to the gripper. And the gripper has internal software that only runs on windows. And speed is not that important to this project.. $\endgroup$
    – noidea
    Commented Mar 7, 2016 at 18:21
  • $\begingroup$ Major fail on your gripper manufacturer. $\endgroup$
    – Shahbaz
    Commented Mar 7, 2016 at 21:19
  • $\begingroup$ at first it wasn't suppose to be a gripper, it had a static position and were connected to a hmi running w7. $\endgroup$
    – noidea
    Commented Mar 8, 2016 at 9:16

1 Answer 1


I assume you are working with a KRC4 or KRC2 controller since you have mentioned OrangeEdit.

In order give your robot motion reference values you will need a technology packet called RSI Interface. This allows you to transmit ethernet packets to the controller and give new motion references with a 12 ms cylcetime. All you have to do is generate the required message (XML format) from a PC application based on the values of coming from your joystick. I think this approach is the best, preimplemented libraries you can find here: https://sourceforge.net/projects/kct/ or https://github.com/erensezener/kuka-rsi3-communicator

There are also other approches, exploiting some workarounds. https://www.mb.hs-wismar.de/cea/Kuka_KRL_Tbx/Kuka_KRL_Tbx.html or http://home.mis.u-picardie.fr/~fabio/Eng/documenti/articoli/ChScMoPr_RAM11.pdf

EDIT: Once the src and dat files are loaded in memory they cannot be changed. You can still give new reference waypoints to the robot with the above mentioned tools/interfaces.

If the said program is not loaded in memory, you can do a .net ftp server, ftp in the Kuka controller, do the file operations for changing the coordinates. However, I do not think that a Kuka program can be loaded into memory and executed without any manual intervention (e.g switch mode selector to AUT or EXT).

EDIT2: you mentiond KRC4. KRC4 supports customized HMI so instead of a PC connection you might get the same functionality by making an HMI screen with buttons and use the 6D mouse on the console (KCP), instead of a joystick.

  • $\begingroup$ it's a krc4. i'll give it a look. thank you ! $\endgroup$
    – noidea
    Commented Mar 7, 2016 at 9:49
  • $\begingroup$ i've edited my post! $\endgroup$
    – noidea
    Commented Mar 7, 2016 at 15:22
  • $\begingroup$ I've edited my answer! However, your post edit slightly contradicts your original post. I do not think that editing files upon each joystick movment is a feasable solution for any kind of technical system. (Touchup edits the source files) $\endgroup$
    – 50k4
    Commented Mar 7, 2016 at 17:18
  • $\begingroup$ i think i didn't explain properly. Imagine that i built a program with the console, with P1 and P2, with "default" coordinates". After that, with the joystick i move the robot to a new position and after a button click in the .net app i'm able to update the P1 coordinates. I didn't mean to edit the files per each movement.. $\endgroup$
    – noidea
    Commented Mar 7, 2016 at 17:28
  • $\begingroup$ You can definitely achieve a similar behavior with the RSI interface. however it will not change and sourcecode, your .net program will have to sent out the coordinates via ethernet continously. it work fine under windows, with an ordinary PC, you do not need any realtime extention for it. $\endgroup$
    – 50k4
    Commented Mar 8, 2016 at 15:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.