Metadata-Version: 2.4
Name: dynamicalnodes
Version: 0.1.2
Summary: dynamicalnodes is a Python library for modeling general control systems.
Author-email: Nehal Singh Mangat <nehalsinghmangat.software@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/nehalsinghmangat/dynamicalnodes
Project-URL: Documentation, https://nehalsinghmangat.github.io/dynamicalnodes
Project-URL: Issues, https://github.com/nehalsinghmangat/dynamicalnodes/issues
Keywords: control,estimation,ros2
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=1.24
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-doctestplus>=1.0.0; extra == "dev"
Requires-Dist: flake8>=6.0; extra == "dev"
Requires-Dist: black>=24.0; extra == "dev"
Requires-Dist: isort>=6.0; extra == "dev"
Requires-Dist: mypy>=1.0; extra == "dev"
Requires-Dist: build>=0.10; extra == "dev"
Requires-Dist: twine>=4.0; extra == "dev"
Provides-Extra: docs
Requires-Dist: sphinx>=8.0; extra == "docs"
Requires-Dist: sphinx-rtd-theme>=1.3; extra == "docs"
Requires-Dist: sphinx-copybutton>=0.5; extra == "docs"
Requires-Dist: myst_nb; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints>=1.24.0; extra == "docs"
Requires-Dist: matplotlib>=3.9; extra == "docs"
Requires-Dist: scipy>=1.11; extra == "docs"
Requires-Dist: jupyter; extra == "docs"
Requires-Dist: jaxtyping>=0.2; extra == "docs"
Requires-Dist: beartype>=0.15; extra == "docs"
Dynamic: license-file

# dynamicalnodes: Control Systems on ROS 2

> _"Give me a [control system] long enough and a [computer] on which to place it, and I shall move the world."_ - Archimedes 

**dynamicalnodes** is a Python development framework that bridges the gap between control systems and their implementation onto ROS 2. Designed for hobbyists, students, and academics alike, this framework won't cure cancer, but it can do the next best thing: make robotics easier.

To get started, or to explore what this framework has to offer, click here: [dynamicalnodes Documentation](https://nehalsinghmangat.github.io/dynamicalnodes).

For a 22 second video describing this framework's intended workflow for, click here: [SAIL 2025 -- Presenting dynamicalnodes](https://youtu.be/5GbVHo6QZrw).

---
## Turtlebot: Whiteboard -> Python -> ROS -> World
<table>
  <tr>
    <td align="center">
      <img src="docs/source/_static/figure_turtlebot_pipeline/turtlebot.svg" alt="TurtleBot Overview" width="400"/><br/>
    </td>
    <td align="center">
      <img src="docs/source/_static/figure_turtlebot_pipeline/turtlesim_software.gif" alt="Turtle Software" width="200"/><br/>
    </td>
    <td align="center">
      <img src="docs/source/_static/figure_turtlebot_pipeline/turtlesim_simulation.gif" alt="Turtle Simulation" width="200"/><br/>
    </td>
    <td align="center">
      <img src="docs/source/_static/figure_turtlebot_pipeline/turtlesim_hardware.gif" alt="Turtle Hardware" width="200"/><br/>
    </td>
  </tr>
</table>

<p align="center">
  <img src="docs/source/_static/figure_turtlebot_pipeline/labels_for_steps_from_theory_to_hardware.png" alt="Step Labels" width="800"/>
</p>






