I’m happy to announce that our “Advanced Profile Generator” for Pick & Place is available.
It is a new OpenCN component for fast tracking of moving objects under kinematic constraints.
We also built a HW demonstrator in order to validate the algorithm.

Does this profile generator functions as a 1-D trajectory planner? If so, how could we use it in robot pick and place application? For example, if the robot current position is (x0, y0, z0), the object position is (x1 + v*t, y1, z1), how could we synchronize each axis (same time duration of each axis)?

In the document, it assumes a constant speed of the object. Could this profile generator be used to track a varying speed target? For example, if the conveyor speed has some fluctuation, could we track it precisely?

at the moment being, the profile generator is a 1-D trajectory planner.

For 2-D or 3-D the profile generator could be applied as a first step individually to each axis in order to determine which axis takes the most time.
In order to synchronize simultaneously, the other axes have a little bit of “freedom” since they are not time critical.

I see. In this case, we will plan trajectory for each axis. So we might not be able to limit the velocity norm of the robot but the velocity magnitude of each axis?

Thanks Raoul,
But If axis1 takes time t1, axis2 (to be synchronized) takes time t2 and t1 < t2, how could we expand t1 to t2 then (assume the initial robot speed is non-zero)?

In this case, the solution for axis1 is feasible without violation of any constraint (vmax, amax, jmax), and there are infinitely many solutions where the end time of axis1 is t2.
I did not cogitate a lot about this.
There is one paper which comes me in mind : discretize the time axis, and as unknowns put a piecewise constant jerk. Boundary conditions are linear. This should be cast as a linear program (LP). One might put as objective function minimizing the infinity norm of the jerk.
But maybe there are other more elegant or simpler solutions.

I think this library (Ruckig) does the same thing as the profile generator. And it supports non-constant speed of the target. Multi-dof synchronization is also supported.

Yes, I was in contact with the developers of “Ruckig”.
They have a slightly different formulation where the acceleration at synchronization needs not to be zero.

They founded a company, and sell a “pro” version of their SW code.

Cool! For Pick & Place application, the constant speed (zero acc) assumption may be good enough. Some conveyor system do not have a servor to control the motor running at constant speed and the speed oscillates due to friction, so it might be necessary to also follow the varying speed. But normally the conveyor acceleration is hard to be obtained because of the existence of the sensor noise. Do you have any idea of dealing with this case?

It depends what sensor informations are available :
-) only setpoint value of the conveyor speed
-) incremental encoder for the conveyor position
-) vision system for the target objects on the conveyor

If sensor data are poor and too noisy individually, maybe that a Kalman filter could be used to combine different informations ?

Are you sure that this is really a problem in practice ?

I have encountered a situation where the conveyor system uses a frequency converter instead of a servo motor, and the position information is obtained by an encoder. Due to the changing friction force of the system during operation, the conveyor position will have a significant drift compared to a constant speed after a certain period of time. After differentiating the encoder position, the velocity fluctuation is found to be relatively large and acceleration may become more oscillatory.

Indeed, in this case, important fluctuations of conveyor speed and high precision requirements for the pick & place operations, a profile generator able to cope with this situation is clearly better.

However, the complexity of computations will also increase in the profile generator.