Status: Concept / Pre-deployment planning
Last updated: 2026-06-08
Project type: R&D / Municipal infrastructure
Primary sensor: TI IWR6843ISK-ODS (60GHz mmWave)
A local-only vehicle counting and speed monitoring system for multi-lane Wisconsin highways. Designed around a 60GHz mmWave radar primary sensor with no camera, no image storage, and no personally identifiable data of any kind. Output is structured point cloud and tracked object data — counts, speeds, lane estimates — relayable over LoRa or LTE without any privacy concerns.
Primary use case: traffic counts, speed distribution, and infrastructure planning data for Door County municipalities who currently have little or no traffic monitoring data.
Camera-based systems were evaluated and rejected for v1 for the following reasons:
Camera could be added later as a classification enrichment layer if a specific use case demands it (e.g. vehicle type breakdown for axle-load or pavement analysis). For v1 it adds cost and failure modes without meaningful benefit.
LD2410 sensors were also considered and rejected. The LD2410 is a presence detector with ~6m practical range, single-zone, no multi-target support, and no velocity measurement. It is appropriate for room presence detection but completely unsuitable for highway traffic monitoring.
| Parameter | Value |
|---|---|
| Frequency | 60–64 GHz |
| Azimuth FoV | ±60° (120° total) |
| Elevation FoV | ±60° (120° total) |
| Practical vehicle range | 50–80m |
| Simultaneous targets | 20+ tracked objects |
| Velocity resolution | ~0.1–0.5 mph radial |
| Power consumption (active) | ~1.1–1.5W chip; ~2W at board level |
| Interface | UART (USB on EVM) |
| Output | TLV frames — point cloud + tracked objects |
The ODS (Overhead Detection Sensor) variant was selected for its wide 120° FoV. Overhead mounting at highway scale was ruled out due to cost — gantry installation, WisDOT permitting, structural engineering. See mounting section below.
The IWR6843 outputs structured TLV (Type-Length-Value) frames over UART at 10–20 fps.
Point cloud — raw detected reflections:
{
"frame_number": 1042,
"timestamp_ms": 1749234567400,
"num_detected_points": 14,
"point_cloud": [
{ "x": 3.2, "y": 18.4, "z": -5.1, "velocity": -28.3, "snr": 14.2, "noise": 8.1 },
{ "x": 3.4, "y": 18.6, "z": -5.0, "velocity": -28.1, "snr": 16.7, "noise": 7.9 }
]
}
Tracked objects — clustered and filtered:
{
"tracked_objects": [
{ "id": 3, "x": 3.3, "y": 18.5, "z": -5.05, "vx": -0.3, "vy": -28.2, "ax": 0.0 }
]
}
Per tracked object: position in meters (X/Y/Z), velocity vector in m/s (multiply by 2.237 for mph), acceleration. No image data, no identifiers, nothing linkable to a person or license plate.
Data volume: ~2–5 KB/s raw JSON, under 1 KB/s for tracked object summaries only. Relayable over LoRa, LTE, or any low-bandwidth link.
TI provides two relevant reference designs:
Use TIDEP-0090 as the firmware base for this project.
Overhead mounting from a gantry or overpass was the original preferred geometry (clean lane discrimination, symmetric coverage). Rejected due to:
Physics issue at high elevations: Radial velocity = true_velocity × cos(θ). At 85° elevation angle (nearly straight down from 100ft), a 65mph vehicle appears to travel at ~5.7mph — velocity data becomes useless. The ODS is designed for 15–25ft overhead mounting, not 60–100ft.
Standard roadside deployment, the same method used by commercial RTMS sensors and radar speed signs. Sensor mounted on a pole at the road shoulder, aimed along the road axis at a calibrated horizontal angle.
Advantages:
Lane discrimination: At 30ft road offset, a 12ft lane width subtends ~22° per lane — resolvable by the IWR6843. At 60ft offset, ~11° per lane — tight but within spec.
Two-sensor architecture: One sensor per direction of travel, each handling two lanes. Cleaner than trying to discriminate all four lanes from a single unit.
Minimum 10ft to clear Wisconsin highway snowplow blade path (typically 6–8ft clearance on main highways). Verify with county highway department for the specific road.
Enclosure: NEMA 4X polycarbonate — handles road spray, salt, and Wisconsin temperature cycling.
If the mounting location is near a cliff or rock face, evaluate multipath reflection risk. A vertical surface within the antenna FoV will reflect radar energy and can generate ghost points. Mitigations:
Raw Doppler velocity accuracy: ±0.1–0.5 mph on the radial component. Side-fire angle correction:
true_speed = radial_velocity / cos(θ)
Where θ = angle between sensor boresight and vehicle travel direction. A 1° mount angle error → ~0.3 mph systematic error at 65 mph. A 5° error → ~1.5 mph systematic bias across all readings.
| Condition | Expected accuracy |
|---|---|
| Single vehicle, clear road | ±1–2 mph |
| Multiple vehicles, light traffic | ±2–3 mph |
| Dense traffic | ±3–5 mph |
| WisDOT standard for traffic monitoring | ±2 mph at 85th percentile |
The 85th percentile speed — what traffic engineers use for speed limit setting and safety analysis — will be accurate to ±1–2 mph even with ±4 mph individual reading variance, because random errors average out across hundreds of vehicles per hour.
On deployment day:
| Item | Part number | Source | Unit price |
|---|---|---|---|
| mmWave sensor ×2 | IWR6843ISK-ODS | DigiKey #296-IWR6843ISK-ODS-ND | $210 each |
| Host compute | Raspberry Pi 5 8GB | Various | ~$80 |
| Storage | 64GB industrial microSD | Mouser/Amazon | ~$15 |
| Enclosure | NEMA 4X polycarbonate 8×6×4 | Grainger/Allied | ~$45 |
| Mounting hardware | Unistrut + stainless hardware | Local | ~$30 |
| Power supply | 5V 5A DIN rail PSU | Amazon | ~$22 |
| Misc (connectors, weatherproofing, cable) | ~$25 | ||
| Pole — new install | 4" steel pipe + baseplate + concrete | Local | ~$200–400 |
| Total (existing pole) | ~$640 | ||
| Total (new pole) | ~$840–$1,040 |
At 3+ nodes, the $210 EVM price becomes the dominant cost. The bare IWR6843 chip is ~$15–20 in quantity. Custom PCB warranted at 5+ node deployments — reduces per-node sensor cost to ~$60–80 for two sensors.
| Component | Draw |
|---|---|
| 2× IWR6843ISK-ODS (active tracking) | ~3–4W |
| Raspberry Pi 5 (moderate load) | ~5–7W |
| Misc board overhead | ~0.5W |
| Total sustained | ~8–11W |
mmWave point cloud data has zero privacy surface — range, azimuth, and velocity numbers with no image reconstruction possible.
| Method | Bandwidth needed | Notes |
|---|---|---|
| LoRaWAN | ~1–5 KB/s | Tracked objects only; adequate for counts + speed |
| LTE/4G (GL.iNet or similar) | ~5–50 KB/s | Full point cloud possible |
| WiFi backhaul | Unlimited | Only if infrastructure nearby |
Recommended pattern: Process locally on the Pi (count aggregation, speed binning, lane assignment). Relay only summary events and statistics — not raw point cloud — to keep bandwidth minimal. mmWave relay runs continuously; camera layer (if added later) stays local-only.