Skip to content

About

Python package that fuses 2-D mmWave observations into room-frame tracks, zone events and trajectory scores

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MMWave Engine

中文

Python package that fuses 2D millimetre-wave observations into room-frame tracks, zone events, and trajectory scores. Those events are the highest-weight tag used to review security video. It does not import Home Assistant or tracecue-engine.

mmwave-fusion is the Home Assistant shell. A future desktop or Docker shell can import this same package.

Quick start

pip install mmwave-engine

Feed a versioned target frame, not a brand protocol and not a presence bit:

{"v":1,"f":42,"ts":1234,"t":[[120.0,340.0,-8]]}

x and y are centimetres in the radar's local frame. observations_from_frame applies the shared yaw/pitch/roll convention. 1D radars have nothing to fuse. Do not pass them in. Do not pass NVR intrusion or line-crossing events into FusionEngine.step() either.

Video is a VideoSink: snapshot and record of a live stream. This package does not seek an NVR timeline.

Releases go to PyPI from a GitHub Release via trusted publishing. Tag vX.Y.Z must match mmwave_engine.__version__. Home Assistant installs the pin in mmwave-fusion's manifest.json. Do not point that pin at a version that is not on PyPI yet.

Documentation map

If you want Read
What must not enter the tracker AGENTS.md
Home Assistant shell, entities, retention mmwave-fusion
Firmware that emits the v1 frame mmwave-component
The only UI mmwave-card
Why this tag outranks an NVR label ADR-0009
Module Role
fusion.py Transform, clustering, association, tracking
frames.py / radar.py v1 frame decode and room-frame observations
events.py Zone enter / exit / dwell
quality.py Score a finished track
recording.py Which events keep a still and a clip
storage.py SQLite history
video.py Sink protocol only

The coordinate convention matches mmwave-component and mmwave-card. Change it in all three together.

Radars

1D radars cannot use this package or mmwave-fusion. They report distance without direction. 2D radars can use every feature, including this tracker. R60ABD1 also reports height; it is listed with the 2D models because it can be fused.

Figures and progress match mmwave-component. — means the manual does not state it. A cell marked accuracy is not a range-gate width. LD2410 at 0.20 m resolution reaches 1.6 m. LD2451 reports whole metres. LD2450 and LD2454 publish resolution in each target frame. LD2454's performance table says 8 m; the install section says 6 m tracking.

1D radars

Model Detection distance Distance resolution Progress
LD2410 6 m 0.75 m / 0.20 m Developing
LD2410B 6 m 0.75 m (protocol can also select 0.20 m) Testing
LD2410C 6 m 0.75 m (protocol can also select 0.20 m) Testing
LD2411 2 m (gesture 1 m) — Developing
LD2411S 6 m (micro-motion 3.5 m) ±5 cm / ±5% (accuracy) Developing
LD2412 9 m 0.75 m Developing
LD2420 8 m (micro-motion 6 m) 0.70 m Developing
LD2450A 2 m 0.2 m (sensing accuracy) Developing
LD6002 1.5 m (breath / heart) — Developing
RD-03E 6 m (micro-motion 3.5 m) ±5 cm / ±5% (accuracy) Developing

2D radars

Model Detection distance Angle Distance resolution Progress
LD2450 6 m azimuth ±60°, elevation ±35° per frame Developing
LD2451 100 m horizontal ±15°, vertical ±7° 1 m Testing
LD2452 6 m azimuth ±60°, elevation ±30° 0.72 m Testing
LD2453 6 m azimuth ±40°, elevation ±30° 0.72 m Developing
LD2454 8 m azimuth ±60°, elevation ±30° per frame Testing
R60ABD1 2.5 m (breath / heart 1.5 m) ±20° — Completed

About

Python package that fuses 2-D mmWave observations into room-frame tracks, zone events and trajectory scores

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages