Skip to main content
added 360 characters in body
Source Link
Marko Buršič
  • 24.5k
  • 2
  • 21
  • 34

I gave you links of simple traj. planner from linuxnc.org. It has to be noted that is not in use since it has been superseeded by new and better (more complex) one.

wiki.linuxcnc.org/cgi-bin/wiki.pl?Simple_Tp_Notes

Source code

So, how it works:

At the beginning you set pos_cmd = curr_pos (actual position), the planner does nothing. Then you set a new pos_cmd (setpoint position) and vel_req (setpoint velocity) with constraints: max_acc , max_vel.

The algorithm computes for each step (recursion) the distance to stop regarding the actual velocity, actual position, max_acc.

If the position to stop is equal or bigger than actual distance to stop, then it begins to coast.

Else if the current velocity is smaller than vel_req it ramps up with max_acc ramp.

Else if the current velocity is equal or grater than vel_req, then it moves with constant velocity.

It has to be said that this is pure open loop control, no feedback. The planner generates trapezoidal profile and outputs setpoints for position and velocity and the drive has to follow it. As said it may not stop at exact position, see notes.

P.S: IMO the article you have proposed is more specific fo use for stepper motors, in fact it calculates pulses. The linuxcnc is more generalized approach, but you can have a wider look for your problem. There is no flaw using a planner either for small or large movements, all calculations are limited by phyisical constraints that are input as parameters.

I gave you links of simple traj. planner from linuxnc.org. It has to be noted that is not in use since it has been superseeded by new and better (more complex) one.

wiki.linuxcnc.org/cgi-bin/wiki.pl?Simple_Tp_Notes

Source code

So, how it works:

At the beginning you set pos_cmd = curr_pos (actual position), the planner does nothing. Then you set a new pos_cmd (setpoint position) and vel_req (setpoint velocity) with constraints: max_acc , max_vel.

The algorithm computes for each step (recursion) the distance to stop regarding the actual velocity, actual position, max_acc.

If the position to stop is equal or bigger than actual distance to stop, then it begins to coast.

Else if the current velocity is smaller than vel_req it ramps up with max_acc ramp.

Else if the current velocity is equal or grater than vel_req, then it moves with constant velocity.

It has to be said that this is pure open loop control, no feedback. The planner generates trapezoidal profile and outputs setpoints for position and velocity and the drive has to follow it. As said it may not stop at exact position, see notes.

I gave you links of simple traj. planner from linuxnc.org. It has to be noted that is not in use since it has been superseeded by new and better (more complex) one.

wiki.linuxcnc.org/cgi-bin/wiki.pl?Simple_Tp_Notes

Source code

So, how it works:

At the beginning you set pos_cmd = curr_pos (actual position), the planner does nothing. Then you set a new pos_cmd (setpoint position) and vel_req (setpoint velocity) with constraints: max_acc , max_vel.

The algorithm computes for each step (recursion) the distance to stop regarding the actual velocity, actual position, max_acc.

If the position to stop is equal or bigger than actual distance to stop, then it begins to coast.

Else if the current velocity is smaller than vel_req it ramps up with max_acc ramp.

Else if the current velocity is equal or grater than vel_req, then it moves with constant velocity.

It has to be said that this is pure open loop control, no feedback. The planner generates trapezoidal profile and outputs setpoints for position and velocity and the drive has to follow it. As said it may not stop at exact position, see notes.

P.S: IMO the article you have proposed is more specific fo use for stepper motors, in fact it calculates pulses. The linuxcnc is more generalized approach, but you can have a wider look for your problem. There is no flaw using a planner either for small or large movements, all calculations are limited by phyisical constraints that are input as parameters.

Source Link
Marko Buršič
  • 24.5k
  • 2
  • 21
  • 34

I gave you links of simple traj. planner from linuxnc.org. It has to be noted that is not in use since it has been superseeded by new and better (more complex) one.

wiki.linuxcnc.org/cgi-bin/wiki.pl?Simple_Tp_Notes

Source code

So, how it works:

At the beginning you set pos_cmd = curr_pos (actual position), the planner does nothing. Then you set a new pos_cmd (setpoint position) and vel_req (setpoint velocity) with constraints: max_acc , max_vel.

The algorithm computes for each step (recursion) the distance to stop regarding the actual velocity, actual position, max_acc.

If the position to stop is equal or bigger than actual distance to stop, then it begins to coast.

Else if the current velocity is smaller than vel_req it ramps up with max_acc ramp.

Else if the current velocity is equal or grater than vel_req, then it moves with constant velocity.

It has to be said that this is pure open loop control, no feedback. The planner generates trapezoidal profile and outputs setpoints for position and velocity and the drive has to follow it. As said it may not stop at exact position, see notes.