Skip to main content

The framework for algorithms engineering with Python.

Project description

Tsipor Dynamics

Algorithms Engineering and Development


C4Dynamics (read Tsipor (bird) Dynamics) is the open-source framework of algorithms development for motion estimation and control.

My Skills

Complete Documentation: https://c4dynamics.github.io/C4dynamics/

Table of contents

Motivation

C4dynamics provides two basic entities for developing and analyzing algorithms of objects in space and time:

  • datapoint: a class defining a point in space: position, velocity, acceleration, and mass.

  • rigidbody: a class defining a rigid body in space, i.e. an object with length and angular position.

You can develop and analyze algorithms by operating on these objects with one of the internal systems or algorithms of C4dynamics:

  • ODE Solver (4th order Runge-Kutta)

  • Kalman Filter

  • Extended Kalman Filter

  • Luenberger Observer

  • Radar System

  • Altitude Radar

  • IMU Model

  • GPS Model

  • Line Of Sight Seeker

Or one of the 3rd party libraries integrated with C4dynamics:

  • NumPy

  • Matplotlib

  • OpenCV

  • YOLO

Whether you're a seasoned algorithm engineer or just getting started, this framework has something to offer. Its modular design allows you to easily pick and choose the components you need, and its active community of contributors is always working to improve and expand its capabilities.

So why wait? Start using C4dynamics today and take your algorithms engineering to the next level!

Installation

  • PIP

pip install c4dynamics

  • GitHub

To run the latest GitHub version, download c4dynamics:

https://github.com/C4dynamics/C4dynamics

       Note:

*If you face issues while cloning C4dynamics or using the YOLO detector,

it is likely that the yolov3.weights file has not been downloaded correctly.

To resolve this, download and install Git LFS and then reinstall C4dynamics.*

Install the required packages:


pip install -r requirements.txt

  • Conda

Alternatively, run the preinstalled conda environment (see conda_installation.md):


conda env create -f c4dynamics_env.yaml

Quickstart

Import the framework:


import c4dynamics as c4d

Define a point in space with some initial conditions:


pt = c4d.datapoint(x = 1000, vx = 100)

Define a body in space with some initial conditions:


body = c4d.rigidbody(theta = 15 * 3.14 / 180)

Load an object detection module (YOLO):


yolodet = c4d.detectors.yolo(height = height, width = width)

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)

Store the current state of the datapoint (at time t):


pt.store(t)

Store other variables added to the datapoint object:


pt.storevar('kalman_state', t)

Define errors to a general-purpose seeker with C4dynamics:


rdr = c4d.seekers.radar(sf = 0.9, bias = 0, noisestd = 1)

Architecture

For Architecture & Roadmap, see the Wiki page.

Contributors ✨

This project follows the all-contributors specification. Contributions of any kind welcome!

Quickstart for Contributors

  • See the page contributing.md

  • In any case, it's a good advise to start with the example dof6sim.ipynb and change the missile-target conditions to gain some experience with the framework. This example appears also down here in the README

Getting Started

See all the examples at: https://github.com/C4dynamics/C4dynamics/tree/main/examples

Complete explanation at the README in the examples folder.

Example 1 - Objects Detection and Tracking

  1. https://github.com/C4dynamics/C4dynamics/blob/main/examples/detect_track.ipynb

  2. Detecting objects using the YOLOv3 model, updating and predicting their trajectories with the Kalman filter employing linear dynamics. Association between tracks is performed using scikit-learn's k-neighbors.

  3. Each track is represented as a C4dynamics-datapoint, and the update and prediction are executed with the internal C4dynamics-Kalman-filter.

Example 2 - Six Degrees of Freedom Simulation

  1. https://github.com/C4dynamics/C4dynamics/blob/main/examples/dof6sim.ipynb

  2. 6 DOF simulation of a missile employing proportional navigation guidance to pursue a target Conducting a 6-degree-of-freedom (6 DOF) simulation of a missile utilizing proportional navigation guidance to pursue a target.

  3. The target is represented by a C4Dynamics-datapoint, i.e. an object with translational motion. The missile is modeled as a C4Dynamics-rigidbody object, with variables representing both translational and rotational motion.

For this example, additional systems and sensors (not part of C4dynamics but available for download from the examples folder) were developed:

Control system

Engine

Aerodynamics

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

c4dynamics-1.2.0.tar.gz (230.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

c4dynamics-1.2.0-py3-none-any.whl (230.6 MB view details)

Uploaded Python 3

File details

Details for the file c4dynamics-1.2.0.tar.gz.

File metadata

  • Download URL: c4dynamics-1.2.0.tar.gz
  • Upload date:
  • Size: 230.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.1

File hashes

Hashes for c4dynamics-1.2.0.tar.gz
Algorithm Hash digest
SHA256 f7048fa00c87cf2c05b968c77119b1eb7f1d526b67842f517ef1dc6e18adad2b
MD5 f0bb7e4834bab3f2d08db429d17a2459
BLAKE2b-256 17757d6416b4a02d4fe9daacef9f589d6fff4130893071a386adffe0dde9a74e

See more details on using hashes here.

File details

Details for the file c4dynamics-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: c4dynamics-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 230.6 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.1

File hashes

Hashes for c4dynamics-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b2731bf1525b63bf4e179a626bc4c682dad510038a896b4f82d104b292d77139
MD5 8207586421aabec402b62046fa4159a3
BLAKE2b-256 d9f7a2c2b5e94e7789ca02ec61557512fedc93753590871280522cb35353a794

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page