How do I change speed in an application (collaborativity)

  • Hello everyone,


    i'm working on a collaborative process using a KUKA iiwa 14 R820 and a laser scanner for detecting workers in front of the robot.


    The idea was:


    The robot is working on his process as fast as he can, while a laser scanner scans the area in front of the robot.
    If a worker walks into the area of the scanner, the robot shall reduce his cartVelocity to a defined value, after leaving the area the speed shall change back to the maximum speed.
    The laser scanner is connected to a Beckhoff EL1004 digital Input.


    I work with Splines for a fluently moving of the robot and a BooleanIOCondition+Listener (detects the Person and changes the variable "speed")


    The problem is that i can't use the setCartVelocity-method with Splines, because the robot changes the speed too late (with the next .move command), and if a make a lot of different Splines, the moving becomes a stop and go moving..


    The best solution would be to change the max speed of a process or to change from T1,T2 or AUT to a safety mode with a lower speed.


    Does someone have an idea?? :help: Does the iiwa have KRF-Mode? If yes, how can i change into this mode??


    Thanks for any advices!



    Best regards,
    Stephan

  • I don't think I have a great solution for you, because you say that you need to have large spline blocks to keep motion smooth, however, I think I can be of help with some of your other questions:


    Changing to a different safety mode (such as a programmed EMF) is only really good for either setting a digital output or stopping the robot. I have not found a way to slow down the robot using just a safety mode on the iiwa (changing to a slower-speed defined mode would cause the robot to stop or give an output, not actually slow the robot to that speed).


    As for KRF-Mode, you can enter this if configured space monitoring is violated, such as if you have a workspace monitoring function in your safety configuration, and you go out of bounds. To move the robot back in-bounds, KRF will temporarily be available until you are back to safety, at which, the robot will lock out of KRF mode and go back to T1.


    I've never tried this, but potentially you could run a background task that checks if the laser has picked up a signal, then find a way to change the overall application speed? I'm not sure exactly how to go about this, but I'll keep looking in the manuals to see if I can find a way to change application speed in live time.

    College student currently in undergraduate program in Biomedical Engineering and Computer Science working internship with a KUKA LBR iiwa R800 7kg Robot.  I'm still learning the basics, but I hope to master the techniques necessary to operate and understand this robot during my time in University!

  • In the robot application you can call the following code lines to make your motions paused/half speed/resumed by different application override values.

    Code
    getApplicationControl().setApplicationOverride(0.0d);//motion paused
    	    getApplicationControl().setApplicationOverride(0.5d);//motion speed half
    	    getApplicationControl().setApplicationOverride(1d);//motion resume
  • Thank you very much, guys.


    The solution of grenngrape83 is what i looked for! :party2::top:



    To alexanderdsmith:


    An BooleanIOCondition is connected with the Dig. Input (laser scanner output), an ConditionOberserver observes the booleanIOcondition.
    In Case of changing Dig.Input, the Oberserver triggers the suitable AnyEdgeListener, which changes the ApplicationOverride-method to the particular value.



    Best regards,
    Stephan

  • If you want to do it correctly and save for your working you have to in a different way. You just reduce the robots velocity but it does not react to a collision and this is what you actually should want to have.
    I guess you need the HRC-package (Human Robot Collaboration).
    You have to adapt the safety configuration in the way that the robot reacts to the sensor. Therefor you have to use the safety inputs (where you should connect your sensor) which executes a PSM (Permanent Safety Monitoring) action.
    But safety for the worker is not only the robot programming also the tool have to be save (e.g. no sharp edges and so on).


    If you want (or have to know because of you are the responsable person and you do not want to go to jail) to know more Human Robot Colaboration you should take a lesson about it.



    GL && HF

  • Thanks for your advice. We are students and our thesis is about Human Robot Collaboration.


    The solution was not just to reduce the velocity.


    We need the 100% override to reach the clock cycle of the process and we reduce the override to detect collisions with human (without knocking out them).
    If you use the safety interface X11(PSM, etc.) , the output will always be a stop, and that isn't the solution we want, because this will not be a 100% HRC.


    The value of collision detecting changes with the speed. We also work with ForceConditions and much more to avoid e.g. clamps of human extremities.
    Other topics will be the mentioned sharp edges and so on, but this is off-topic :icon_wink:


    best regards

    Edited once, last by Stephan ().

  • There are other opportunities with the safety interface than just performing a STOP. I do not have a Sunrise Workbench at home, but it is possible to reduce the velocity (to 250mm/s as requiered for HRC) in safe way.


    And to detect a collision there for is an option in the Safety Configuration which is called collision detection (HRC extention package is required. It is not default afaik) and you can adjust those for example with 30 N and then to perform a stop for example.


    Force Condition are not to avoid collisions with humans these are to detect a collsion with an object to perform a special task.

Advertising from our partners