The framework for algorithms engineering with Python.
Project description
Tsipor Dynamics
Algorithms Engineering and Development
Tsipor (bird) Dynamics (c4dynamics) is the open-source framework of algorithms development for objects in space and time.
Complete Documentation: https://c4dynamics.github.io/C4dynamics/
Motivation
c4dynamics is designed to
simplify the development of algorithms for dynamic systems,
using state space representations.
It offers engineers and researchers a systematic approach to model,
simulate, and control systems in fields like robotics
,
aerospace
, and navigation
.
The framework introduces state objects
, which are foundational
data structures that encapsulate state vectors and provide
the tools for managing data, simulating system behavior,
and analyzing results.
With integrated modules for sensors,
detectors, and filters,
c4dynamics accelerates algorithm development
while maintaining flexibility and scalability.
Installation
- PIP
>>> pip install c4dynamics
- GitHub
To run the latest GitHub version, download c4dynamics:
https://github.com/C4dynamics/C4dynamics
Install the required packages:
>>> pip install -r requirements.txt
Quickstart
Import c4dynamics:
>>> import c4dynamics as c4d
Define state space object of two variables in the state space (y, vy) with initial conditions (change the state with your variables):
>>> s = c4d.state(y = 1, vy = 0.5)
Multiply the state vector by a matrix and store:
>>> F = [[1, 1],
[0, 1]]
>>> s.X += F @ s.X
>>> s.store(t = 1)
Print the state variables, the state vector, and the stored data:
>>> print(s)
[ y vy ]
>>> s.X
[2.5 1]
>>> s.data('y')
([0, 1], [1, 2.5])
Load an object detection module (YOLO):
>>> yolodet = c4d.detectors.yolo(height = height, width = width)
Define errors to a general-purpose seeker with C4dynamics:
>>> rdr = c4d.seekers.radar(sf = 0.9, bias = 0, noisestd = 1)
Define a linear Kalman Filter, perform a prediction and an update:
>>> pt.filter = c4d.filters.kalman(np.hstack((z, np.zeros(2))), P, A, H, Q, R)
>>> pt.filter.predict()
>>> pt.filter.correct(measure)
Define a point in space (pre-defined state) with some initial conditions:
>>> pt = c4d.datapoint(x = 1000, vx = 100)
Define a body in space (pre-defined state) with some initial conditions:
>>> body = c4d.rigidbody(theta = 15 * 3.14 / 180)
Architecture
For Architecture & Roadmap, see the Wiki page.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file c4dynamics-2.0.1.tar.gz
.
File metadata
- Download URL: c4dynamics-2.0.1.tar.gz
- Upload date:
- Size: 125.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 896fccf0b3a131ddc15bf3715e03edae63349b62885f32b193108afe81b142b0 |
|
MD5 | 34b2e96a860b319c8f1d375e4d0155ad |
|
BLAKE2b-256 | 02f8cffb4e32bff084a4185e626002689c3fd6fe783cdb38798161873d02de20 |
File details
Details for the file c4dynamics-2.0.1-py3-none-any.whl
.
File metadata
- Download URL: c4dynamics-2.0.1-py3-none-any.whl
- Upload date:
- Size: 156.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.10.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ac13c5aba7de7f62812b97f7231a65bab3f3048e113161f0714a055337b98ac |
|
MD5 | 6e89dbce6cb92142f6d588d354759737 |
|
BLAKE2b-256 | 1fa957feb984987c6d0f9eb1d55464b3732cd94d13501365dea0413d8c70d2de |