{"id":24544,"library":"ruckig","title":"Ruckig","description":"Ruckig is a real-time motion generation library for robots and machines, providing instantaneous trajectory generation for up to 7 degrees of freedom. Current version 0.17.3, requires Python >=3.9. Released under the MIT license, with active development on GitHub.","status":"active","version":"0.17.3","language":"python","source_language":"en","source_url":"https://github.com/pantor/ruckig","tags":["motion-planning","trajectory-generation","robotics","control"],"install":[{"cmd":"pip install ruckig","lang":"bash","label":"PyPI"}],"dependencies":[{"reason":"Header-only library for binding C++ to Python, included as a build dependency.","package":"pybind11","optional":false}],"imports":[{"note":"Common mistake: Ruckig is a class inside the module, not a top-level import.","wrong":"import Ruckig","symbol":"Ruckig","correct":"from ruckig import Ruckig"},{"note":"","wrong":"","symbol":"InputParameter","correct":"from ruckig import InputParameter"},{"note":"","wrong":"","symbol":"OutputParameter","correct":"from ruckig import OutputParameter"},{"note":"","wrong":"","symbol":"Result","correct":"from ruckig import Result"}],"quickstart":{"code":"from ruckig import Ruckig, InputParameter, OutputParameter, Result\n\n# Create Ruckig instance (DOF=1)\notg = Ruckig(1)\n\n# Set input parameters\ninp = InputParameter(1)\ninp.current_position = [0.0]\ninp.current_velocity = [0.0]\ninp.current_acceleration = [0.0]\ninp.target_position = [1.0]\ninp.target_velocity = [0.0]\ninp.target_acceleration = [0.0]\ninp.max_velocity = [1.0]\ninp.max_acceleration = [1.0]\ninp.max_jerk = [10.0]\n\nout = OutputParameter(1)\n\nresult = otg.calculate(inp, out)\nif result == Result.Working:\n    print('Trajectory generated: {} steps'.format(out.trajectory.duration))\nelif result == Result.Finished:\n    print('Already at target.')\nelse:\n    print('Invalid input.')","lang":"python","description":"Basic example of generating a 1-DOF trajectory from current state to target."},"warnings":[{"fix":"Check for `Result.Working` or `Result.Finished` (see docs). For a quick fix, use `bool(result == Result.Working)` if you need a boolean.","message":"In version 0.17.0, the method `calculate` now returns a `Result` enum instead of a boolean. Code checking for `True`/`False` will break.","severity":"breaking","affected_versions":">=0.17.0"},{"fix":"Replace `otg.set_max_velocity(1.0)` with `inp.max_velocity = [1.0]`.","message":"The `Ruckig.set_max_*` methods are deprecated as of 0.17.0. Set limits directly via `InputParameter.max_velocity`, etc.","severity":"deprecated","affected_versions":">=0.17.0"},{"fix":"Wrap scalars in a list: `inp.current_position = [0.0]`.","message":"All position, velocity, acceleration, and limit fields must be lists of floats (even for 1 DOF). Passing a scalar will raise an error.","severity":"gotcha","affected_versions":"all"},{"fix":"Use a loop: while (result := otg.calculate(inp, out)) == Result.Working: pass, or use an iterator.","message":"The first call to `calculate` often returns `Result.Working` even if the trajectory is trivial. You must call `calculate` repeatedly until it returns `Result.Finished`.","severity":"gotcha","_review_reason":"","affected_versions":"all"},{"fix":"Upgrade to Python >=3.9.","message":"Python 3.8 support dropped in version 0.16.0.","severity":"breaking","affected_versions":">=0.16.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Use `from ruckig import Ruckig`.","cause":"Trying to import Ruckig directly with `import Ruckig` instead of `from ruckig import Ruckig`.","error":"ImportError: cannot import name 'Ruckig' from 'ruckig'"},{"fix":"Pass DOF as an integer: `Ruckig(1)` for single-degree-of-freedom.","cause":"Creating a Ruckig instance without specifying the number of degrees of freedom.","error":"TypeError: __init__() missing 1 required positional argument: 'dofs'"},{"fix":"Ensure all field lists have length equal to DOF. For 1 DOF, use `[value]`.","cause":"Setting a field (e.g., `current_position`) with a list of wrong length or a scalar.","error":"ValueError: The input parameter vector size does not match the DOFs."}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}