In one of our projects, the robot will perform complex movements in a very limited working area, where some waypoints can only be reached by using movej() functions with given joint positions, but there is also linear movement required between other waypoints.
The robot works as expected, but the problem is that we can’t use a blend radius between a movej() and a subsequent movel() or vice versa, and the robot slows down and stops completely at the given waypoint before continuing to the next waypoint. This takes valuable seconds for each work piece and therefore we would like to avoid stopping at these waypoints. Using a blend radius 0.01 there is a visible “lag” at the waypoint, and even larger blend radius values make the robot safety stop.
Is there a way - whatever difficult it is - to make the movement smoother?
I’m also interested in this. I would like to add the moveP command as well so I can blend into a moveP commanded movement.
After some research it looks like there is no other solution than to stop using movel and movej, calculate the entire trajectory in fine resolution, and control the robot directly with low level servoj and/or speedj commands that run in a separate thread and update the servos in every 1/125 sec. We have not done this yet, because the speed of the robot is acceptable (so far).
I am trying to do the same and having trouble executing servoj to work the way I would like. Is there a sample code you have that you can share?
You can try using stopj() or stopl() commands in between your move types, in this case a movej() and movel().
This will reduce your acceleration for the transition between the two moves, similar to having a blend radius in place.