Question about joint speed profile in Scaled Position Joint Trajectory Controller

Greetings! I`m somewhat new to ROS and all my previosu works used cartesian twist/joint speed controllers, so I’m having a bit of trouble understanding what’s going on with this scaled position joint trajectory controller.

To illustrate the situation, I have a joint trajectory described by 500 points, to which I have also calculated the velocity and acceleration profiles I want for the curve.

So I create a FollowJointTrajectoryGoal() which I fill up with JointTrajectortPoint()''s containing position, velocity, acceleration and time_from_start, and send it to the robot.

The issue I’m having is that the resulting speed and acceleration profiles that comes out Desired.Velocities/Accelerations and Actual.Velocities are several times higher than what I’ve sent to the robot.

Though this doesn’t seem to cause issues when I’m requesting a slower trajectory, as I try to push the system closer to its joint speed limit, I hit all sort of tracking issues that usually end in a protective stop.

I’m attaching a picture of the speed/acceleration profiles requested and executed for a slower trajectory, and then for a faster trajectory. The Waypoints are the same in Position, they differ on Velocity, Acceleration, and Time_from_Start.

And for the faster trajectory


Has anyone had or know what could be causing this issue?

Thank you.

Depending on the robot’s safety settings and resulting Cartesian motions the robot controller might use speed scaling to slow down the trajectory and therefore cap the joint velocity below their actual maximum limits.

To investigate this further, please open an issue in the driver’s repo (linking between the issue and this) with an example trajectory that shows the problem.