13 KiB
Hivemapper Bee Detection Pipeline — Complete Analysis
Generated: 2026-03-29 17:40 PDT
Source: Live data from camera at 192.168.0.10
Last Detection: 2026-03-24 15:55:31 UTC (5 days ago)
🚨 ROOT CAUSE IDENTIFIED
hivemapper-data-logger.service is DISABLED and DEAD
● hivemapper-data-logger.service - Data Logger
Loaded: loaded (/lib/systemd/system/hivemapper-data-logger.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Evidence:
- Last GPS log entry:
2026-03-24 16:02:51 UTC - Last SQLite detection:
2026-03-24 15:55:31 UTC GNSSFusion30HzRedis key has 0 entries- Service was disabled at some point on Mar 24
Impact: Without the GPS data logger:
- No GNSS data flows into Redis (
GNSSFusion30Hz) LocateLandmarkNodecannot compute lat/lon for detectionsStoreLandmarksNodehas nothing to write- Detection pipeline is broken at GPS fusion stage
Complete Pipeline Map (from live /opt/map-ai/map-ai.py)
Service Flow
┌─────────────────────────────────────────────────────────────────────┐
│ HARDWARE LAYER │
├─────────────────────────────────────────────────────────────────────┤
│ Sony IMX412 Sensor (2028×1024 working resolution, 15fps) │
│ GPS: u-blox @ /dev/ttyS2 (DISABLED - not running!) │
│ IMU: /dev/spidev0.0 │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ hivemapper-data-logger.service ← ⛔ DISABLED & DEAD │
│ Binary: /opt/dashcam/bin/datalogger │
│ Function: Reads GPS/IMU, writes to Redis + SQLite │
│ Output: GNSSFusion30Hz (Redis sorted set) │
│ Status: INACTIVE since Mar 24 ~16:02 UTC │
└─────────────────────────────────────────────────────────────────────┘
↓ (BROKEN - no data flowing)
┌─────────────────────────────────────────────────────────────────────┐
│ depthai_gate.service ← ✅ RUNNING │
│ Binary: /usr/bin/depthai_gate │
│ VPU firmware: /tmp/gate_fw_89czcchq/... │
│ Status: Active (running) since Thu Mar 26 14:19:27 UTC │
│ Memory: 855.8M │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ redis.service ← ✅ RUNNING │
│ Port: 127.0.0.1:6379 │
│ Status: Active since Thu Mar 26 14:19:27 UTC │
│ Memory: 2.6M │
│ Keys present: FRAME_COUNT_RGB, FRAME_COUNT_LEFT, FRAME_COUNT_RIGHT │
│ MAP_AI_READY=True, EXTERNAL_MODEL_CLASSIFIER_READY │
│ ⚠️ MISSING: GNSSFusion30Hz (has 0 entries!) │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ redis-handler.service ← ✅ RUNNING │
│ Binary: /opt/dashcam/bin/RedisHandler │
│ Status: Active since Thu Mar 26 14:19:27 UTC │
│ Output DBs: /data/recording/redis_handler/ │
│ - fusion-v3-0-0.db (GNSS fusion) │
│ - sensors-v3-0-0.db (raw sensors) │
└─────────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────────┐
│ map-ai.service ← ✅ RUNNING (but starved of GPS data) │
│ Binary: /opt/map-ai/map-ai.sh → python3 /opt/map-ai/map-ai.py │
│ Requires: redis.service only (odc-api dependency removed!) │
│ Status: Active since Thu Mar 26 14:19:25 UTC │
│ Memory: 489.2M │
│ Log: /data/recording/map-ai.log │
│ │
│ ⚠️ Constant error: "No input received from any classifier │
│ after 10000 attempts" (every ~11 seconds) │
└─────────────────────────────────────────────────────────────────────┘
Internal map-ai.py Pipeline
ImageSelectorNode (camera frames @ 15fps)
↓
ResizeNode (scale for inference)
↓
[Optional: EmbeddingsNode]
↓
ObjectDetectionNode (YOLOv8 on VPU, ObjectDetectionUS.blob)
↓
[Optional: ObjectDetectionNode2 (highlandUs.blob)]
↓
FilterDetectionsNode (confidence threshold)
↓
OpticalFlowLiveNode (tracking)
↓
PrivacyBlurNode (face/plate blur)
↓
DepthSGBMNode (stereo depth)
↓
LocateLandmarkNode ← ⚠️ REQUIRES GPS FROM REDIS!
↓ - Reads GNSSFusion30Hz for lat/lon/heading
↓ - If no GPS data: can't compute sign location
↓ - Detection can't proceed without geolocation
ClassificationRouterNode ← ⚠️ "No input received" errors here
↓ - Waiting for frames from classifiers
↓ - Nothing coming through because pipeline blocked
StoreLandmarksNode → SQLite /data/recording/odc-api.db
↓ - Writes to landmarks table
↓ - FROZEN since Mar 24 (no GPS = no writes)
CleanUpNode
Service Status Summary
| Service | Status | Since | Notes |
|---|---|---|---|
map-ai.service |
✅ Running | Mar 26 14:19 | Main process active but starved |
depthai_gate.service |
✅ Running | Mar 26 14:19 | VPU loaded, camera working |
redis.service |
✅ Running | Mar 26 14:19 | Keys present |
redis-handler.service |
✅ Running | Mar 26 14:19 | Writing to DBs |
adacam-odc.service |
✅ Running | Mar 26 14:19 | Forwarder active |
hivemapper-data-logger.service |
⛔ DEAD | - | DISABLED — ROOT CAUSE |
Evidence from Live System
1. GPS Data Missing
root@keembay:~# redis-cli zcard GNSSFusion30Hz
0
root@keembay:~# redis-cli KEYS "*GNSS*"
(empty array)
2. Last Detection Timestamp
root@keembay:~# sqlite3 /data/recording/odc-api.db \
"SELECT MAX(id), MAX(ts), datetime(MAX(ts)/1000, 'unixepoch') FROM landmarks"
229787|1774367731312|2026-03-24 15:55:31
3. Data Logger Last Activity
/data/recording/hivemapper-data-logger.log (last modified: Mar 24 16:02)
2026-03-24 16:02:51.475089267 +0000 UTC [WARNING] TimTp drop of 2000 ms
Timeline: GPS logger stopped ~7 minutes after last detection.
4. Camera Still Working
root@keembay:~# ls /tmp/recording/pics/ | tail -5
1774831137_602000_187520980.jpg
1774831139_536000_187522914.jpg
1774831141_470000_187524848.jpg
1774831143_403000_187526781.jpg
1774831145_337000_187528715.jpg
Camera frames are being captured continuously.
5. map-ai Service Unit
[Unit]
Description=map-AI
Requires=redis.service # ← odc-api.service dependency REMOVED!
[Service]
ExecStart=/opt/map-ai/map-ai.sh
...
Note: The Requires=odc-api.service line was removed at some point.
All Failure Modes Identified
Primary Failure (Current Issue)
| Component | State | Impact |
|---|---|---|
hivemapper-data-logger |
DISABLED & DEAD | No GPS data |
GNSSFusion30Hz Redis key |
Empty (0 entries) | LocateLandmarkNode has no GPS |
| Detection pipeline | Blocked at geo-location | StoreLandmarks has nothing |
| SQLite landmarks table | Frozen at ID 229787 | No new detections since Mar 24 |
Secondary Issues
| Issue | Evidence | Impact |
|---|---|---|
| "No classifier input" spam | Log every ~11 seconds | ClassificationRouter starved |
| odc-api dependency removed | map-ai.service changed | May have side effects |
The Fix
Immediate Action Required
# SSH to camera
ssh root@192.168.0.10
# Enable and start the GPS data logger
systemctl enable hivemapper-data-logger.service
systemctl start hivemapper-data-logger.service
# Verify it's running
systemctl status hivemapper-data-logger
# Verify GPS data is flowing
redis-cli zcard GNSSFusion30Hz
# Should start showing count > 0
# May need to restart map-ai to pick up GPS data flow
systemctl restart map-ai
Verification After Fix
# Wait 1-2 minutes, then check new detections
sqlite3 /data/recording/odc-api.db "SELECT MAX(id) FROM landmarks"
# Should show number > 229787 after driving
# Check GPS data
redis-cli GET GNSSFusion30Hz
# Should return GPS JSON data
Key File Locations
| File | Path | Purpose |
|---|---|---|
| map-ai.py | /opt/map-ai/map-ai.py |
Main detection script |
| map-ai.sh | /opt/map-ai/map-ai.sh |
Wrapper script |
| map-ai service | /etc/systemd/system/map-ai.service |
Service unit |
| GPS logger service | /lib/systemd/system/hivemapper-data-logger.service |
GPS service |
| landmarks DB | /data/recording/odc-api.db |
Detection storage |
| GPS fusion DB | /data/recording/redis_handler/fusion-v3-0-0.db |
GNSS data |
| map-ai log | /data/recording/map-ai.log |
Service log |
| GPS logger log | /data/recording/hivemapper-data-logger.log |
GPS service log |
| cache mode flag | /data/.cache |
Should NOT exist |
| Redis Key | Purpose |
|---|---|
GNSSFusion30Hz |
GPS fusion data (sorted set) — MUST HAVE DATA |
MAP_AI_READY |
map-ai status flag |
FRAME_COUNT_RGB |
Frame counter |
EXTERNAL_MODEL_CLASSIFIER_READY |
Classifier status |
What Changed Since Mar 22 (Last Working)
| Date | Change | Impact |
|---|---|---|
| Mar 22 | map-ai.service Requires=odc-api.service | Fixed at that time |
| Mar 24 ~16:02 | hivemapper-data-logger stopped/disabled | ROOT CAUSE |
| Mar 24 15:55 | Last detection written | Pipeline froze |
| Mar 26 14:19 | System rebooted (all services show this start time) | Services restarted but GPS logger stayed disabled |
Summary
The detection pipeline is fully functional except for one disabled service.
The GPS data logger (hivemapper-data-logger.service) was disabled at some point on March 24, 2026. Without GPS data flowing into Redis, the LocateLandmarkNode cannot compute geographic coordinates for detected signs, and StoreLandmarksNode cannot write detections to SQLite.
Fix: Enable and start hivemapper-data-logger.service.
The camera, VPU, object detection models, and all other components are working correctly.
Report generated from live system inspection via SSH