Posts by kiiwa

    I never used EtherCat to send positions. I dabbled a bit with FRI a couple years ago, it was a hassle for me, wasn't worth it. I use the SmartServo option that comes with the LBR iiwa, pretty handy and straight forwards. I send the positions via UDP or TCP/IP, not hard real time (iiwa is slower than other KRC4 robots) but quite responsive and smooth movement.

    Of course, you can't jog the robot when you're in AUTO mode. Turn the physical key on the SmartPad ,select T1 mode then turn it back.

    The error message seems like you selected the wrong type of flange in your project configuration on Sunrise workbench or you didn't connect the data cable from the Controller to the robot Arm.


    I am working with KUKA iiwa lbr 14 R820 robot. Currently, I am not able to jog the robot using the smartpad. I have attached the photo of the error that I am getting. I have started working on this robot very recently and so I am new to the system. Also, I am posting for the first time so excuse me if I have not followed the protocol.

    You need to activate the security configuration each time you change it. You can do that on the smartPad, go to security, you'll find a button "activate" click and enter the password kuka provided.


    Can you please tell me your experience with KUKA LBR iiwa.

    I've worked on them for 5 years now, they're pretty awesome in many aspects: Safety, Torque sensing, Hand-guiding, ease of integration in non-industrial setups, you don't need to buy packages for every protocol, etc.


    how deep we must know the java programming?

    To start you need to know some programming (Variables and Types, Conditionals, Loops, functions, etc) and Object Oriented programming (Classes, Objects, etc.). If you ever programmer before, it's not very hard to learn.


    When compared to normal KRC4 controller programming. how is the programming experience with KUKA LBR iiwa.

    Each one has pros and cons, or let's say conveniences and inconveniences. From the top of my head, and as aforementioned, KRL is less verbose and you can change your code on the fly directly from the smartPad. You can't do that on the LBR iiwa, you need to change your code on the sunrise Workbench editor each time then synchronize. You can get around some of that by using process data or file exchange, to update some parameters, but not code (I think).

    On Java you have tons of libraries available online (communication protocols, XML/JSON parsers, etc.), you have much less in KRL.

    The bigger a program/project on KRL the clunkier it becomes. In java with some good package management, you can keep your project tidy.

    I usually use a "breakwhen" in my motion instruction, then check if "getFiredBreakConditionInfo()!= null" , to roll back to my previous position in case of an, obstacle, but not to release a trapped person, it's to avoid breaking my work-pieces, when I want to put them on a base and there's already something underneath.

    As @SkyFire said, it's not safe to move automatically after a collision, as we have no way to know if it's not going to worsen the problem, especially with big robots.

    The best way is to use a small Network hub, connect your PC + 2 Robots to the hub and set your PC's IP to something like / and be sure to have both robots use different IPs, because the default one is, and you'll have address conflict if you don't change your second robot's IP from the StationSetup--> Configuration-->IP

    Instead of stopping or pausing your motion do this when you detect an obstacle:


    The robot will freeze, like it a wait(). Once there's no force applied on the robot, you can get your override back to normal:


    And the robot will resume.

    I created a detailed library on github to control Robotiq grippers via Ethercat by LBR IIWA robots, either by robot programs or directly from the User Buttons on the SmartPad.

    I use the 2 fingers grippers, but I think it would be the same for 3 fingers one, except the device's .XML description file. Otherwise, you have to change just few stuff.…rcat/msg131976/#msg131976…per-2F85-EtherCat-Control


    1. I know that i need to create frames of current positions every several milliseconds but i don't know how to do it. Do i have to create another thread or i can do it in background task?

    Use the DataRecorder class. It's detailed in the documentation
    DataRecorder(String fileName, long timeout, TimeUnit timeUnit,int sampleRate)
    Chapter 15.24.1 Creating an object for data recording


    2. Should i do it by using arraylist and every next step frame have to be added to it?

    Do you need the whole motion to be seamless and smoothed out or do you want in in batches?


    3. Which is the best way to save frames? I tried OutputObjectStream but frame class doesn't implement "Serializable" interface so it is impossible and is it good to store data in txt file or better in other type?

    I don't know for sure, but I always prefer to use Axes values, otherwise I use the DataRecorder's mathod addCurrentCartesianPosition-


    RDC seems to conflict with the smartPAD, after establishing a connection, it'll disconnect after a few second, but if I disconnect the smartPAD, there's no problems.

    I never had this problem. Once I'm connected via RDC I'm in.


    My main concern is that a proper shutdown is more than just a windows shutdown, like maybe the HMI program receives command to save tasks/file/configuration?

    I'm not sure what it does under the hood, but I've done this hundreds of time and never had an issue. Just make sure to stop the robot or any program that's running.

    I never needed for such a thing, but what I would do is:
    - in the beginning of the program put the output to High.
    - in the end of it switch it to low. And if the Stop in unpredictable, try overriding the dispose() method and put your signal to low there.

    public void dispose() {