You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A library to compute S-Curve trajectories. It can be used to generate motion profiles for robotics.
What is an S-Curve?
An S-Curve is a trajectory which is constrained to maximum jerk, acceleration and velocity.
An S-Curve consists of 7 phases:
constant maximum jerk until the desired acceleration is reached
constant maximum acceleration phase
constant minimum jerk until the desired velocity is reached with an acceleration of zero
constant velocity phase
constant minimum jerk until the minimum acceleration is reached
constant minimum acceleration phase
constant maximum jerk until the acceleration is zero and the desired position and end velocity is reached
In the picture below you can see an S-Curve Profile which goes from Position 0 to position 10 within 5.5 seconds with a start and end velocity of 0
, a maximum jerk of 3, a maximum acceleration of 2 and a maximum velocity of 3.
Example
use s_curve::*;let constraints = SCurveConstraints{max_jerk:3.,max_acceleration:2.0,max_velocity:3.};let start_conditions = SCurveStartConditions{q0:0.,// start positionq1:10.,// end positionv0:0.,// start velocityv1:0.// end velocity};let input = SCurveInput{constraints, start_conditions};let(params,s_curve) = s_curve_generator(& input,Derivative::Velocity);for i in0..101{println!("{}", s_curve(i asf64* params.time_intervals.total_duration() / 100.));}