### 7 releases

new 0.1.6 | May 1, 2021 |
---|---|

0.1.5 | Dec 10, 2020 |

0.1.4 | Oct 12, 2020 |

#**9** in Robotics

**42** downloads per month

Used in cartesian_trajectories

**MIT/Apache**

26KB

508 lines

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 position
q1`:` `10.``,` `//` end position
v0`:` `0.``,` `//` start velocity
v1`:` `0.` `//` end velocity
`}``;`
`let` input `=` SCurveInput`{`constraints`,` start_conditions`}``;`
`let` `(`params`,`s_curve`)` `=` `s_curve_generator``(` `&` input`,``Derivative``::`Velocity`)``;`
`for` i `in` `0``..``101` `{`
`println!``(``"``{}``"``,` `s_curve``(`i `as` `f64` `*` params`.`time_intervals`.``total_duration``(``)` `/` `100.``)``)``;`
`}`

#### License

Copyright (c) 2020 Marco Boneberger Licensed under either of Apache License, Version 2.0 or MIT license at your option.