Posts by Seulki

    Hello Twan,

    X11 is not an interface for digital In/Outputs. It's for Safety In/Outputs.
    You need an external IO modules (such as Beckhoff EK1100 + EL1809 / EL2809 as how KUKA provides on demand) to use digital in/outs.

    Or if you don't want to use extra modules,
    Try use MediaFlange's interface instead. If your valves are too big, there are so called 'mini valves' which you can install on a tool.
    Both would cost extra, so it's up to you.

    Hello Twan,

    LBR iiwa is using Sunrise OS which is different from KSS as the other KUKA's industrial robots use.

    You need to use a corresponding version of "Sunrise Workbench" instead of Workvisual.

    You might want to contact to your kuka service channel.

    Hello Filippo,

    I highly suggest you go for real-time options like FRI or Servoing by your need of control cycle time.

    As you've mentioned already, bare Sunrise.OS doesn't support real-time trajectory planning.

    Your method is reasonable to have incremental motions, but setting an ImpedanceMode to a motion always need an exact positioning; synchronous move. Meaning you can't use moveAsync() for those motions and there will be quite a bit of delays after each motion stops. So it doesn't really act as you think.

    Hello Krahn_Joseph,

    Sorry I'm late.

    Here's the library 'jamod' and a class to use it with RG6.

    Modbus library>

    jamod - About (

    Attachment for both jamod & my class>

    1. Modify your project's build path after placing the jar file into somewhere in your project.

    2. Place the file into your src folder, and fix its package name.

    3. Simple example code is noted on its constructor.

    You can easily use it for RG2 as well.

    Also add some more methods on your need with OnRobot's communication manual.

    As far As I know, this communication protocol is the same one that you use when configuring the gripper using their web-based configurator(and WebLogic) through PC.

    Hello Krahn_Joseph,

    Not sure if using other protocol works for you but,

    As far as I remember, Onrobot's control box supports Modbus TCP through Rj45 Ethernet interface regardless of its type.

    And you can use external Java library to use Modbus protocol through KLI on LBR's controller without having to use gateways.

    - be aware that Sunrise is using Java 1.6. You need to look for compatible library.

    I've done it with RG6, so I'm confident that it works. I'll post another comment with library and a class I made to use RG6, probably not later than the end of this week. (in case I forget, please remind me)

    Hello ptetmoi,

    You can monitor current axis values from LBR instance.

    lbr.getCurrentJointPosition() // not sure of its name.

    Will give you JointPosition instance and you can get each values of axis from it.

    You can also get Cartesian position with lbr.getCurrentCartesianPosition()

    Hello Ignacio,

    Yes you have an option to control the application externally.

    Go to the project setting(Right click on your project - Sunrise - project settings), and you'll see external control.

    You can use UDP protocol to send Enable signal and Start signal to your robot to start a default Application you've chosen.

    For UDP packets, you should check your manual, since unfortunately, it's not that simple.

    Hello hmz03,

    Here are some more tips.

    1. Make a CyclickBackgroundTask with 20ms period.

    2. Inject LBR and use its getCurrentCartesianPosition()

    3. Modify the instance variable as you wish (e.g. "x,y,z,a,b,c" in String)

    4. Find a way to save data consequently. You could make a txt or csv file to save each data with line separated. Or simply throw data to external PC with ethernet comm. and deal with it on PC side.

    5. You might want to make a UserKey to 'start' and 'stop' recording positions unless it'll get quite messy ito handle the file when you chose to save them locally.


    It sounds a picture below is what you need.

    Note that there's no configuration on X76 through X33/34. they are just wires from the base to MF installed inside of a manipulator. There's no EtherCAT Coupler in it, no direct control from the Controller. Simply just wires that you can use as your own as well as power sources of your own.

    And the pin names [A,B,1,2,3,4,5,6,7,8,9] are shown on the X76 connector kit that you can assemble on your own. If you don't have it, you need to get one from KUKA(both X76 side and X33/34 side).

    Hello pdoh,

    I've never been aware of using Servoing and FRI simultaneously can work.

    Probably you've thought about it since FRI doesn't support commands in Cartesian space.

    If your Cartesian pose part is not under real-time control, you can localize the Cartesian pose part with ordinary motion. And let the overlay take the Wrench part.

    -> Not really sure if it's applicable to you, but you can still get Cartesian pose data through another communication channel from your client, if you need to get it externally.

    And if you need the Cartesian pose part still be controlled in real-time, you can stick with -only- FRI, and try transformationProvider-there's an example code- along with Wrench command.

    As far as I understood, transformationProvider offers the Client side to transform a given Frame(Base) which the Server side will get affected in real-time.

    So a command like 'lbr.moveAsync(controlledFrame).addMotionOverlay(ov);' will be controlled in both Cartesian pose and Wrench.

    -> Never tested by myself but it might worth a shot for you.

    I can't see the whole parameters of your space monitoring.

    You have to specify the origin(x,y,z,a,b,c) of your cube, and then length/width/height of it.

    Probably you've missed the last three dimensions.

    Plus, AMFs are acting as 'and' conditions. reaction occurs when all three AMFs are violated.

    and 'none' is always violated.

    Meaning, you need to select 'handguiding device active'(AMF2) if you wish to monitor the space(AMF1) only when using handguiding.

    Now, it means the space is monitored always except when you handguide.

    Hi wang,

    If you want to make safety configuration regarding 'space', you need 'Safe operation' software option.

    It seems you haven't activated it on StationSetup-software. If you don't have it on the list there, then you don't have it, and you'll need to purchase it from KUKA.

    Handguiding mode, you need an enabling device such as a Media flange with Touch option.

    If you have two buttons on your MediaFlange, you can set it to be used as handguiding enabling switch under KUKA PSM, [enabling device] I guess it should be on the second row, AMF1

    It worth try check 'region and language' settings on your Windows.

    Try change the 'format' into English(any)

    and 'System locale' under the last tab into English(any) as well.

    I guess it makes trouble on networking while using a language which has special characters other than English alphabets.

    Hello stcxkr,

    Yes it's possible. But you should keep in mind that it's merely using native Sunrise controller with given methods, not by redirecting I/Os to an external devices directly.

    1. You could make use of backgroundTask for ethernet connection.

    2. On your backgroundTask, you will have to make some functions that controls IO from the received message.

    -> Methods controlling I/O are automatically generated as '' if you've selected it correctly while making a project.

    - The code below is to briefly show the concept. You'd have to take care of EtherNetComm and its parsing.

    - I'm not sure if you have @Inject on SunriseOS 1.11. if not, manually initialize them.


    if you're using an old 1.7 version, I guess you could still find it as below,

    As far as I know, these functions are not provided and supported by KUKA since 2016.

    ModelParameterRequestService MPRS = new ModelParameterRequestService(lbr);
    IModelParameters MP = MPRS.requestModelData();
    Matrix mass = MP.getMassMatrix();
    Matrix jacob = MP.getJacobianMatrix();

    I know I'm late to say, but just few information on this.

    The problem is that '' file has been corrupted probably during shutdown-reboot mostly when the shutdown process wasn't properly carried out. you can easily fix this with simply synchronize again your project from Workbench to the controller.

    - If the synchronization doesn't work, you will need to clean everything under 'ApplicationServer\Projects\' and 'ApplicationServer\ProjectRepository\"(might be spelled wrong) on the controller side(using RDC or physically). and then try synchronize again.

    The options that relate to Safety are "HRC" and "SafeOperation". If you're sure you have purchased them from your provider, it should be installed on the controller-you might want to check the stickers shown when you open up the cabinet-. Or if you're Sunrise Workbench has the option already, it could simply be done by activating those options with " - Software" on your project. And you need to do "Installation" once after changing any of StationSetup.

    Due to the decreased impact we have not found time and priority to do measurements or modifications on the sunrise itself (I assume you mean code on the sunrise, in our calling code (fork of ) I didn't find the class or methods you mention)

    If you're sure iiwa_stack is running with FRI, then it has to be there since it's the first thing needed to create FRIsession. (Below is the applicationExample shown when activating FRI software option on

    // configure and start FRI session
            FRIConfiguration friConfiguration = FRIConfiguration.createRemoteConfiguration(_lbr, _clientName);
            getLogger().info("Creating FRI connection to " + friConfiguration.getHostName());
            getLogger().info("SendPeriod: " + friConfiguration.getSendPeriodMilliSec() + "ms |"
                    + " ReceiveMultiplier: " + friConfiguration.getReceiveMultiplier());
            FRISession friSession = new FRISession(friConfiguration);
            FRIJointOverlay jointOverlay = new FRIJointOverlay(friSession);

    - I have no background on ROS so my statement below probably be wrong.

    I briefly look on the source code on iiwa_stack.

    I could see it's using Servoing(smartServo) on it's SunriseApplication "ROSBaseApplication", but neither I found lines related to FRI.

    If it's using FRI, the application running on SunriseOS need to contain FRI stuff to be as FRIServer while the external devices communicating with Sunrise has to be FRIClient. If there's none of structures programmed as below, it's not using FRI.

    And if it's using Servoing, I guess you need to take a look at periods of timers or your own "controlLoop()"

    - How can I confirm which rate the Kuka is currently expecting

    - How can I change this setting?

    Hello, you might want to check out on

    FRIconfiguration class - must be initialized somewhere by the iiwa_stack (I guess?)

    and its methods like .setReceiveMultiplier() , .setSendPeriodMilliSec() - you need to check both and their explanation

Advertising from our partners