matt-chv / mmWrt

minimal raytracing for education on MIMO FMCW radar

Home Page:https://mmwrt.readthedocs.io/en/latest/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mmWrt

minimal raytracing for MIMO FMCW radar systems.

Intended usage:

  1. educational

Release Notes and Roadmap

Released

v0.0.6:

* added micro-doppler
* added non-regression on .ipynb in docs/ folder

v0.0.5:

* moved dependancies from requirements to setup.py
* added extras [dev] for developpers (and documentation and read the docs)
* moved version checking from setup.py to test_basic.py
* added readthedocs.yaml

v0.0.4:

* adding frequency estimator
* added speed processing
* added support for radar equation (RCS, distance, ...)
* antenna gains in azimumth, elevation and freq

v0.0.3: first release

* point targets only
* 1D compute of baseband if signal for scene
* 1D FFT, CFAR, peak grouping and target position error compute
* single reflections

NEXT ()

* 2D (AoA)
* 2D FFT: range+velocity, range+AoA
* 2D peak grouping (by velocity sign)
* 3D position error compute
* 3D targets (at least spheres)
* medium attenuation
* 3D point clouds (i.e. over multiple CTI)
* multiple single reflections

Not planned yet but considered:

  • reads and loads .bin from DCA1000
    • record BB signals in .bin
    • 3D targets and scene rendering with imaging side by side radar
    • Swerling's scattering

Example Code

Check on Google Colab the code:

Open In Colab

Or Read the Docs on Read the docs

Release process

  1. Ensure all the new .ipynb are added in docs/Hands-on.md

  2. run pyroma (should be 10/10)

pyroma .

  1. run flake8 runs with darglint settings for docstrings to numpy standard set in the .flake8 file should yield 0 warnings or errors

flake8

  1. run pytest should yield 100% pass

pytest

  1. run coverage

coverage run -m pytest

  1. run coverage report (should be 100%)

coverage report

  1. run tox

7.run sphinx-api updates the *.rst in docs/ folder

sphinx-apidoc -f -o docs mmWrt

  1. run sphinx-build (updates the read_the_docs folder)

sphinx-build -b html docs build/html

  1. release the Release-Candidate to pypi-test check that init.py is "0.0.X-pre.Y" for RC numbering

python setup.py bdist_wheel

twine upload -r testpypi dist*

  1. check on Google Colab (Google Colab requires py3.8 as off 2023-Jan-15)

if testing release-candidate need to add --pre -U or will install latest stable version.

!python -m pip install -i https://test.pypi.org/simple/ --pre -U mmWrt
from mmWrt import __version__
print(__version__)
  1. merge dev branch with main

git checkout main git merge dev_branch_name

  1. update the version to final update init.py to remove the suffix -pre.Y "0.0.X-pre.Y"

  2. release on pypi (assumes your pypirc is local to the project)

twine upload -r pypi --config-file=..pypirc dist*

  1. check on colab that pypi package works:

!python -m pip install mmWrt from mmWrt import version print(version)

  1. check updates on read_the_docs

push to git to trigger readthedocs build: git push navigate to https://readthedocs.org/projects/mmwrt/builds/ ensure build is successful

  1. (optional) add tag for release

git tag -a v0.0.X -m "version comment" git push origin v0.0.X

  1. then check on google colab dev extras instals works

!python -m pip install mmWrt[dev]

About

minimal raytracing for education on MIMO FMCW radar

https://mmwrt.readthedocs.io/en/latest/

License:MIT License


Languages

Language:Python 100.0%