# mmWrt
minimal raytracing for MIMO FMCW radar systems.
Intended usage:
1. educational & experimental
## Release Notes and Roadmap
### Released
v0.0.8:
* adding TDM MIMO
* adding DDM MIMO (including Doppler desambiguation)
v0.0.7
* adding AoA
* adding sparse array support
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](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/matt-chv/bdd8b835c5cb7e739bb8b68d00257690/fmcw-radar-101.ipynb)
Or Read the Docs on [![Read the docs](https://read-the-docs-guidelines.readthedocs-hosted.com/_images/logo-wordmark-light.png)](https://mmwrt.readthedocs.io/en/latest/)
## Release process
0. Ensure all the new .ipynb are added in docs/Hands-on.md
1. run pyroma
(should be 10/10)
> pyroma .
2. run flake8
runs with darglint settings for docstrings to numpy standard set in the .flake8 file
should yield 0 warnings or errors
> flake8
3. run pytest
should yield 100% pass
> pytest
4. run coverage
> coverage run -m pytest
5. run coverage report
(should be 100%)
> coverage report
6. run tox
> tox
7.run sphinx-api
`updates the *.rst in docs/ folder`
> sphinx-apidoc -f -o docs mmWrt
8. run sphinx-build
(updates the read_the_docs folder)
> sphinx-build -b html docs build/html
9. 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\*
10. 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__)
```
11. merge dev branch with main
> git checkout main
> git merge dev_branch_name
12. update the version to final
update __init__.py to remove the suffix -pre.Y "0.0.X-pre.Y"
13. release on pypi (assumes your pypirc is local to the project)
> twine upload -r pypi --config-file=.\.pypirc dist\*
14. check on colab that pypi package works:
>!python -m pip install mmWrt
from mmWrt import __version__
print(__version__)
15. 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
16. (optional) add tag for release
> git tag -a v0.0.X -m "version comment"
> git push origin v0.0.X
17. then check on google colab dev extras instals works
>!python -m pip install mmWrt[dev]
Raw data
{
"_id": null,
"home_page": "https://github.com/matt-chv/mmWrt",
"name": "mmWrt",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "radar MIMO FMCW raytracing",
"author": "matt-chv",
"author_email": "contact@matthieuchevrier.com",
"download_url": null,
"platform": null,
"description": "# mmWrt\r\n\r\nminimal raytracing for MIMO FMCW radar systems.\r\n\r\nIntended usage:\r\n1. educational & experimental\r\n\r\n## Release Notes and Roadmap\r\n\r\n### Released\r\n\r\nv0.0.8:\r\n * adding TDM MIMO\r\n * adding DDM MIMO (including Doppler desambiguation)\r\n\r\nv0.0.7\r\n * adding AoA\r\n * adding sparse array support\r\n\r\nv0.0.6:\r\n\r\n * added micro-doppler\r\n * added non-regression on .ipynb in docs/ folder\r\n\r\nv0.0.5:\r\n\r\n * moved dependancies from requirements to setup.py\r\n * added extras [dev] for developpers (and documentation and read the docs)\r\n * moved version checking from setup.py to test_basic.py\r\n * added readthedocs.yaml\r\n\r\nv0.0.4:\r\n\r\n * adding frequency estimator\r\n * added speed processing\r\n * added support for radar equation (RCS, distance, ...)\r\n * antenna gains in azimumth, elevation and freq\r\n\r\nv0.0.3: first release \r\n\r\n * point targets only\r\n * 1D compute of baseband if signal for scene\r\n * 1D FFT, CFAR, peak grouping and target position error compute\r\n * single reflections\r\n\r\n### NEXT ()\r\n\r\n * ~2D (AoA)~\r\n * ~2D FFT: range+velocity, range+AoA~\r\n * 2D peak grouping (by velocity sign)\r\n * 3D position error compute\r\n * 3D targets (at least spheres)\r\n * medium attenuation\r\n * 3D point clouds (i.e. over multiple CTI)\r\n * multiple single reflections\r\n\r\nNot planned yet but considered:\r\n\r\n* reads and loads .bin from DCA1000\r\n * record BB signals in .bin\r\n * 3D targets and scene rendering with imaging side by side radar\r\n * Swerling's scattering\r\n\r\n## Example Code\r\n\r\nCheck on Google Colab the code:\r\n\r\n[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/gist/matt-chv/bdd8b835c5cb7e739bb8b68d00257690/fmcw-radar-101.ipynb)\r\n\r\nOr Read the Docs on [![Read the docs](https://read-the-docs-guidelines.readthedocs-hosted.com/_images/logo-wordmark-light.png)](https://mmwrt.readthedocs.io/en/latest/)\r\n\r\n## Release process\r\n\r\n0. Ensure all the new .ipynb are added in docs/Hands-on.md \r\n\r\n1. run pyroma\r\n(should be 10/10)\r\n\r\n> pyroma .\r\n\r\n2. run flake8 \r\nruns with darglint settings for docstrings to numpy standard set in the .flake8 file\r\nshould yield 0 warnings or errors\r\n\r\n> flake8\r\n\r\n3. run pytest\r\nshould yield 100% pass\r\n\r\n> pytest\r\n\r\n4. run coverage\r\n\r\n> coverage run -m pytest\r\n\r\n5. run coverage report\r\n(should be 100%)\r\n\r\n> coverage report\r\n\r\n6. run tox\r\n\r\n> tox\r\n\r\n7.run sphinx-api \r\n`updates the *.rst in docs/ folder`\r\n\r\n> sphinx-apidoc -f -o docs mmWrt\r\n\r\n8. run sphinx-build\r\n(updates the read_the_docs folder)\r\n\r\n> sphinx-build -b html docs build/html\r\n\r\n9. release the Release-Candidate to pypi-test\r\ncheck that __init__.py is \"0.0.X-pre.Y\" for RC numbering\r\n\r\n> python setup.py bdist_wheel\r\n\r\n> twine upload -r testpypi dist\\*\r\n\r\n10. check on Google Colab\r\n(Google Colab requires py3.8 as off 2023-Jan-15)\r\n\r\nif testing release-candidate need to add `--pre -U` or will install latest stable version. \r\n\r\n```\r\n!python -m pip install -i https://test.pypi.org/simple/ --pre -U mmWrt\r\nfrom mmWrt import __version__\r\nprint(__version__)\r\n```\r\n\r\n11. merge dev branch with main\r\n\r\n> git checkout main\r\n> git merge dev_branch_name\r\n\r\n12. update the version to final\r\nupdate __init__.py to remove the suffix -pre.Y \"0.0.X-pre.Y\"\r\n\r\n13. release on pypi (assumes your pypirc is local to the project)\r\n\r\n> twine upload -r pypi --config-file=.\\.pypirc dist\\*\r\n\r\n14. check on colab that pypi package works:\r\n\r\n>!python -m pip install mmWrt\r\nfrom mmWrt import __version__\r\nprint(__version__)\r\n\r\n15. check updates on read_the_docs\r\n\r\n> push to git to trigger readthedocs build:\r\n> git push\r\n> navigate to https://readthedocs.org/projects/mmwrt/builds/\r\n> ensure build is successful\r\n\r\n16. (optional) add tag for release\r\n\r\n> git tag -a v0.0.X -m \"version comment\"\r\n> git push origin v0.0.X\r\n\r\n17. then check on google colab dev extras instals works\r\n\r\n>!python -m pip install mmWrt[dev]\r\n",
"bugtrack_url": null,
"license": "LICENSE",
"summary": "minimal raytracing code example for MIMO FMCW radar",
"version": "0.0.8",
"project_urls": {
"Bug Tracker": "https://github.com/matt-chv/mmWrt/issues",
"Homepage": "https://github.com/matt-chv/mmWrt"
},
"split_keywords": [
"radar",
"mimo",
"fmcw",
"raytracing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "14ec44f7b44be64f999ad5dd1f85dd5d730038c443afafa7fe1609a6edc060e5",
"md5": "ca2e6b0ed010e48178dce0ac0c4996be",
"sha256": "7cc4b1ba1e473cea68581e38f25596572b6af9e93cfb07a69fb8726a90e40954"
},
"downloads": -1,
"filename": "mmWrt-0.0.8-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ca2e6b0ed010e48178dce0ac0c4996be",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 19205,
"upload_time": "2024-10-27T16:20:44",
"upload_time_iso_8601": "2024-10-27T16:20:44.532275Z",
"url": "https://files.pythonhosted.org/packages/14/ec/44f7b44be64f999ad5dd1f85dd5d730038c443afafa7fe1609a6edc060e5/mmWrt-0.0.8-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-27 16:20:44",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "matt-chv",
"github_project": "mmWrt",
"travis_ci": false,
"coveralls": true,
"github_actions": false,
"requirements": [
{
"name": "semver",
"specs": []
}
],
"tox": true,
"lcname": "mmwrt"
}