Universal Robots Forum

How to execute a densely sampled trajectory?

I’m sending a URScript-function with several movex-commands with blending radius to smoothely move along a trajectory. This works great as long as the poses are far away from each other. However, I’m using a planner that dynamically generates a trajectory for a collision free path. This plan contains a lot of poses (distance of some mm)

This trajectory can be executed, the robot however moves rather slow. It looks like he wants to achieve a speed of zero at each pose so that he’s accelerating and decelerating a lot instead of moving straight along the path.

Is there a way to get a smoother (and faster) trajectory execution?

I could try to downsample the trajectory, but it would of course be easier if I wouldn’t have to do it.

3 Likes

Try to consider the servoj command, this allows you online control the motions of the robot.

Popular speaking, movej/movel will move all the way to a waypoint (when not considering blends, anyway), before the function returns.
servoj will move towards the joint configuration for a finite time (e.g. 8 ms or 100 ms), and afterwards will expect to receive a new joint configuration set, that it will move towards instead. This will yield a more smooth motion.
This could e.g. be used for a joystick controlling the robot.

Example program:

while (servoMove):
   servoj(target, t=0.1, lookahead_time=0.1)
end

And inside a thread, you can every 100 ms reconfigure the target variable, and set the servoMove to False to stop the servoj-loop.

5 Likes

Thanks! I just read that speed and acceleration is currently not used, how fast is the robot moving towards the next configuration?

Try working with the proportional gain factor, this should make it possible to adjust achieved speeds.

1 Like