zainar-halo
ZaiNar RF halo awareness — egocentric proximity for Device Connect nodes.
A robot's onboard sensors see line-of-sight only. ZaiNar's RF network sees
every tagged entity in a facility, through walls and around blind corners.
zainar-halo packages that awareness as Device Connect–native primitives:
a halo (per-node view of surrounding entities) computed locally by the
robot from a zone broadcast, with no GPU and no training run required.
Install
pip install zainar-halo
Requires device-connect-edge>=0.2.5.
What's in the box
| Class | What it does |
|---|---|
HaloConfig |
Per-node filter spec — radius, entity types, time-decay, detail |
Position |
One tracked entity's 3D position (cm-int, spatial_vocab wire types) |
HaloProvider |
Computes halos; also provides heartbeat_provider_for() for stock DC |
RobotDriver |
DeviceDriver subclass with @on subscription + local compute_halo() |
TMIPayload / TMIEntity |
TMI (Traffic Management Information) wire contract |
Quick start — robot subscriber
from zainar_halo import HaloConfig, RobotDriver
class MyRobot(RobotDriver):
async def _on_halo_computed(self, halo: dict) -> None:
# feed to costmap, planner, alerting...
nearest = halo["nearest_entity_type"]
dist_m = (halo["nearest_distance_cm"] or 0) / 100
print(f"{nearest} at {dist_m:.1f}m")
robot = MyRobot(halo_config=HaloConfig(radius_cm=1500, entity_types=["forklift", "human"]))
# register with DeviceRuntime and connect — the @on subscription is automatic
Quick start — heartbeat provider (stock Device Connect, no core change)
from zainar_halo import HaloConfig, HaloProvider, Position
provider = HaloProvider()
provider.set_config("amr-7", HaloConfig(radius_cm=1500, zone_of=my_zone_fn))
# returns a callable for DeviceRuntime.set_heartbeat_provider()
heartbeat_fn = provider.heartbeat_provider_for("amr-7", live_positions, now_fn=time.time)
runtime.set_heartbeat_provider(heartbeat_fn)
Units and conventions
- Lengths: centimeters as
int(distance_cm,radius_cm,x_cm/y_cm/z_cm) - Speeds: cm/s as
int(closing_speed_cmps,vx_cmps) - Entity types: spatial_vocab wire values —
human,amr,forklift,drone,pallet, … - 3D throughout — distance is 3D Euclidean; a drone 4m overhead is 400cm away
See also
zainar-halo-agent-tools— FastMCP server exposing halo tools to LLM agentsCLAUDE.mdat repo root — full architecture, scenario, and integration guide
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file zainar_halo-0.1.2.tar.gz.
File metadata
- Download URL: zainar_halo-0.1.2.tar.gz
- Upload date:
- Size: 21.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41854730f80b400341a37328781c742c5183cb399c0b87b798b0ef326fc1b7fa
|
|
| MD5 |
2075fd27bd1a6a4979fb4d9287d1d9d6
|
|
| BLAKE2b-256 |
fc74a521592eae8c40db6e575899e7c5d8b0075e64329c746b057d21ed30a3e0
|
File details
Details for the file zainar_halo-0.1.2-py3-none-any.whl.
File metadata
- Download URL: zainar_halo-0.1.2-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51a7437ae23fd38e9948c5014a1cd1a17b4280473469e512619d81b7b1e57d95
|
|
| MD5 |
1697e01ae128bf4c285b3c6088b23dd3
|
|
| BLAKE2b-256 |
e93713d4fb53666275e3c57a0e65384f32ac7c901bc60af05ec21faa4a1b5580
|