Continuous smooth movement with new "on the fly" cartesian goals

  • Hello,


    we are trying to have a pretty simple input pattern, we want to program with the Sunrise.Workbench.

    The idea is that the user gives a cartesian point where the robot should move to linearly, but if the user gives another point the robot should not stop at its first destination and then start to move to the next, rather visit the first destination, without slowdown in speed, then goes to the new one.

    Something like a linear spline motion that is not fully known at the beggining of the motion.


    But the API documentation is pretty bad and we cannot figure out how to do it.

    We are using now:


    private IMotionContainer MotionContainer = null;


    private void

    MotionFunc()

    {

    if(MotionContainer == null | | MotionContainer.IsFinished())

    {

    MotionContainer = LBR_IIWA.moveAsync( lin(destinationFrame).setBlendRel(0.75d) );

    }

    else

    {

    MotionContainer.append( lin(destinationFrame).setBlendRel(0.75d) );

    }

    }


    for the motion and it doesn't really work. In between the now lin motions it still stopps.

    We do not really know if the blend is even the right thing to use in order to blend between the motions in the motionContainer, it is pretty badly explained in the docs.

    Or maybe there is a totally different way of doing it with Parent- and Child-Frames like a spline motion...


    If someone has a clue how to do something like this and/or has a good place where the actual robotAPI from kuka is explained that would be great.


    Thanks in advance!

  • I doubt this is possible as you describe it. I can't speak to the iiWA specifically, but in "regular" KUKAbots, the path planner function has to know some time in advance how many points lie ahead in the path, and their locations. I doubt the path planner in the iiWA behaves very differently.


    The specifics depend on how the Advance Run Pointer behaves, but if it were set to 1 (the lowest value that still allows approximation/smoothing), and you programmed three points A, B, and C, the location for Point C would have to be set before the robot reached the entry boundary of the approximation radius around B. Otherwise, the move to B would be treated as a "fine" move -- a complete, brief stop at the point.

Advertising from our partners