{"id":14992264,"url":"https://github.com/marcbone/s_curve","last_synced_at":"2025-03-17T00:32:36.721Z","repository":{"id":52279795,"uuid":"302038146","full_name":"marcbone/s_curve","owner":"marcbone","description":"S-Curve trajectory generator written in rust","archived":false,"fork":false,"pushed_at":"2023-08-08T13:02:17.000Z","size":24,"stargazers_count":60,"open_issues_count":6,"forks_count":11,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-16T06:41:10.471Z","etag":null,"topics":["robotics","robotics-algorithms","s-curve","scurve","trajectory-generation"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/marcbone.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-10-07T13:03:12.000Z","updated_at":"2025-03-03T21:56:29.000Z","dependencies_parsed_at":"2023-02-19T02:01:12.386Z","dependency_job_id":null,"html_url":"https://github.com/marcbone/s_curve","commit_stats":{"total_commits":29,"total_committers":4,"mean_commits":7.25,"dds":"0.27586206896551724","last_synced_commit":"0e7dc6f19157cb2bbcb78aa70b4b84f560099796"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcbone%2Fs_curve","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcbone%2Fs_curve/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcbone%2Fs_curve/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/marcbone%2Fs_curve/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/marcbone","download_url":"https://codeload.github.com/marcbone/s_curve/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243955649,"owners_count":20374371,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["robotics","robotics-algorithms","s-curve","scurve","trajectory-generation"],"created_at":"2024-09-24T15:00:53.876Z","updated_at":"2025-03-17T00:32:36.425Z","avatar_url":"https://github.com/marcbone.png","language":"Rust","funding_links":[],"categories":["Path Planning"],"sub_categories":[],"readme":"[![crates.io](https://img.shields.io/crates/v/s_curve.svg)](https://crates.io/crates/s_curve)\n[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/marcbone/s_curve/rust.yml)](https://github.com/marcbone/s_curve/actions)\n[![crates.io](https://img.shields.io/crates/l/s_curve.svg)](https://crates.io/crates/s_curve)\n[![crates.io](https://img.shields.io/crates/d/s_curve.svg)](https://crates.io/crates/s_curve)\n[![docs.rs](https://docs.rs/s_curve/badge.svg)](https://docs.rs/s_curve)\n[![codecov](https://codecov.io/gh/marcbone/s_curve/branch/main/graph/badge.svg?token=9LB5SI9B1E)](https://codecov.io/gh/marcbone/s_curve)\n\n\n\nA library to compute S-Curve trajectories. It can be used to generate motion profiles for robotics.\n\n## What is an S-Curve?\n\nAn S-Curve is a trajectory which is constrained to maximum jerk, acceleration and velocity.\nAn S-Curve consists of 7 phases:\n * constant maximum jerk until the desired acceleration is reached\n * constant maximum acceleration phase\n * constant minimum jerk until the desired velocity is reached with an acceleration of zero\n * constant velocity phase\n * constant minimum jerk until the minimum acceleration is reached\n * constant minimum acceleration phase\n * constant maximum jerk until the acceleration is zero and the desired position and end velocity is reached\n \n 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\n, a maximum jerk of 3, a maximum acceleration of 2 and a maximum velocity of 3.\n[![image](http://i.imgur.com/BQPhS8n.png)](http://i.imgur.com/BQPhS8n.png)\n## Example\n  ```rust\n  use s_curve::*;\n  let constraints = SCurveConstraints {\n              max_jerk: 3.,\n              max_acceleration: 2.0,\n              max_velocity: 3.};\n  let  start_conditions = SCurveStartConditions {\n      q0: 0., // start position\n      q1: 10., // end position\n      v0: 0., // start velocity\n      v1: 0. // end velocity\n  };\nlet input  =  SCurveInput{constraints, start_conditions};\nlet (params,s_curve) = s_curve_generator( \u0026 input,Derivative::Velocity);\nfor i in 0..101 {\n      println!(\"{}\", s_curve(i as f64 * params.time_intervals.total_duration() / 100.));\n  }\n  ```\n#### License\nCopyright (c) 2020 Marco Boneberger\nLicensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or [MIT license](LICENSE-MIT) at your option. \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcbone%2Fs_curve","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcbone%2Fs_curve","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcbone%2Fs_curve/lists"}