Custom ICondition to monitor commands arriving over Ethernet

  • Hi,


    My question is related to the question "Creating software ICondition for Kuka LBR iiwa".


    I would like to break off a motion on receipt of an Ethernet message from an external pc (e.g. through ROS), or maybe when a separate background application wants to stop the motion.
    As far as I can see, there is no builtin condition for this, so I would like some information on how I can implement a custom break condition.


    Thanks,
    Broes

  • I think software condition is not the purpose of ICondition mechanism because the conditions provide the chance to monitor the robot/controller hardware status(Torque/Force/Joint position/IO and so on) and to make decisions(like 'breakwhen') directly at the real-time OS, rather than to cost a bit long time to go back to the rapi app layer to respond.

  • I can accept that ICondition might not be the best mechanism to achieve it.
    However, your reply does not really provide an answer to my post (only to my topic title): I want to break a move action based on a custom, software decision, and so I am looking for help in how to achieve this.
    From the API I could find, ICondition would seem my best bet, but maybe there are better solutions...


    Best,
    Broes

  • I haven't found a good solution to fix your issue.
    But in some cases you can maintain motion containers and cancel the motion by container in the callback of you message receiving.

    Code
    // Cancel a motion
            IMotionContainer c = lbr.moveAsync(motion);
            ...
            c.cancel();


    Or

    Code
    // Cancel all queued motions
            SunriseExecutionService ses = (SunriseExecutionService) lbr.getController().getExecutionService();
            ses.cancelAll();

Advertising from our partners