Metadata-Version: 2.4
Name: dynamicalnodes
Version: 0.1
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
Keywords: control,estimation,ros2
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: myst_nb; extra == "docs"
Requires-Dist: sphinx-autodoc-typehints>=1.24.0; extra == "docs"
Requires-Dist: matplotlib>=3.7; extra == "docs"
Requires-Dist: scipy>=1.11; extra == "docs"
Requires-Dist: jupyter; extra == "docs"
Dynamic: license-file

![Doctest Status](https://github.com/nehalsinghmangat/dynamicalnodes/actions/workflows/doctest.yml/badge.svg) [![Doctest Status](https://github.com/nehalsinghmangat/dynamicalnodes/actions/workflows/doctest.yml)](https://github.com/nehalsinghmangat/dynamicalnodes/actions/workflows/doctest.yml)

# dynamicalnodes: From Theory to Python to ROS

> _"Cross a river once, swim; cross a river a thousand times, build a bridge."_  — Punjabi saying

**dynamicalnodes** is a Python development framework that bridges the chasm between theoretical control systems and their implementation in hardware. Designed for hobbyists, students, and academics alike, this framework won't cure cancer, but it can do the next best thing: make controlling robots easier.

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

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

---
## Turtlebot: A journey of four steps
<table>
  <tr>
    <td align="center">
      <img src="docs/source/_static/tikz/turtlebot/turtlebot.svg" alt="TurtleBot Overview" width="400"/><br/>
    </td>
    <td align="center">
      <img src="docs/source/_static/gif/turtlesim_software.gif" alt="Turtle Software" width="200"/><br/>
    </td>
    <td align="center">
      <img src="docs/source/_static/gif/turtlesim_simulation.gif" alt="Turtle Simulation" width="200"/><br/>
    </td>
    <td align="center">
      <img src="docs/source/_static/gif/turtlesim_hardware.gif" alt="Turtle Hardware" width="200"/><br/>
    </td>
  </tr>
</table>

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

---
## 👁️ Watch for Releases

To get notified when **dynamicalnodes** is officially released:

1. Go to the GitHub repo: [https://github.com/nehalsinghmangat/dynamicalnodes](https://github.com/nehalsinghmangat/dynamicalnodes)
2. Click the `👁️ Watch` button near the top-right of the page.
3. Select **"Custom"** or **"Releases only"** from the dropdown.
4. Ensure **"Releases"** is checked.

You’ll now receive notifications when the first release is published!




