Posts by aimiaiko

    Hi there,


    I'm having a following problem. I'm using a motion batch to drive the path while continuously checking a "Quit" condition and breaking the motion when the Quit is true.


    Code
    motion = tool.move(rollFormingMove.setBlendingCart(5).breakWhen(cancelCondition));


    when the Quit condition happens, Safety Stop happens too and afterwards it is not possible to move robot anymore. The robot should move linRel 10cm from the position where it was stopped. Even though it is possible to move back (no axis limits, singularities...) - it doesn't move. After 3/5/10min the exceptions comes:


    "CK_COMPOUND_RETURN_ERROR Initialization failed. (SMM_INIT_FAILED_ERROR) froom compound "SuMoSplineMotion", instance "SplineMotion".


    I already tried using Spline instead of the motion batch but it doesn't change anything...


    The KRCDiag says:


    Code
    INFO   tCKLayer1  11:33:39.573 : handleStopRequest: CartImpWithJntInterface@LBR_iiwa_14_R820_1 drivesRampStop triggered after stop request
    ERROR  tCKLayer1  11:33:39.573 :  processInMaintaining (CartImpWithJntInterface@LBR_iiwa_14_R820_1) MaintainingExecute failed!
    ERROR  tCKLayer1  11:33:39.573 : SPR 0007.0001.0000004C (Spline Motion SPR) in 'Maintaining' goes to state invalid! Error = CK_COMPOUND_RETURN_ERROR!


    Any ideas?;(


    Thanks!

    The question actually is, if I program a movement with 250mm/s...what happens if the robot cannot reach the 250mm/s for the specific part of the path; an example, it reaches 230mm/s. And if I have a gluing application, I want to know the exact speed of the TCP so I can apply the glue correctly.


    On KRL, it is possible to read the real-time TCP speed (analog input).


    Thank you all for your ideas!

    Hello everyone,


    How to read the real TCP velocity? I'm working on a project where I have noticed that even though we have set the desired velocity on 250mm/s, the actual velocity is not 250mm/s during the whole path. How to read the actual velocity and use the value for the next move? Background tasks? Any ideas?


    Kind regards! :help: :merci:

    You need something like this:


    static String IPAddresse;
    static int portNumber; // port for KUKA XML communication
    Socket socket;
    public static OutputStreamWriter out;
    public static InputStreamReader rd;


    public void connect() {

    try {

    socket = new Socket (IPAddresse, portNumber); //establishing a connection and streams
    OutputStream os = socket.getOutputStream();
    OutputStream buf = new BufferedOutputStream(os);
    out = new OutputStreamWriter(buf);

    InputStream in = socket.getInputStream();
    InputStream bui = new BufferedInputStream(in);
    rd = new InputStreamReader(bui);

    } catch (Exception e) {

    System.out.println("Connection failed!");
    e.printStackTrace();
    }

    }

    public void disconnect () {

    try {
    out.close();
    rd.close();
    socket.close();
    } catch (IOException e) {
    System.out.println("Disconnection failed!");
    e.printStackTrace();
    }
    }