|
Void Sentry
An AI-driven, real-time Sentry Turret platform leveraging asynchronous I/O and computer vision to deliver high-precision autonomous motion tracking on resource-constrained embedded hardware.
|
| ▼ include | |
| constants.h | |
| control_status.h | Read-only view of the controller state for the HUD and stats line |
| move_types.h | Movement definitions for the Smart Camera project |
| nvs_blob.h | One read sequence for fixed-size blobs in NVS, shared by the calibration and WiFi stores (device only) |
| pins.h | Single source of truth for every GPIO the turret uses |
| sync.h | Small RAII wrappers for the two locking patterns the firmware uses (device only) |
| system_control_types.h | Operating modes of the turret system |
| track_snapshot.h | Plain copies of the tracker output and detection timings, safe to hand across tasks |
| ▼ lib | |
| ▼ aiming | |
| ▼ include | |
| aim_map.h | Maps a target's image position to turret angles (pure C++20, natively tested) |
| aim_policy.h | Decides where the turret should point from the tracker state (pure C++20, natively tested) |
| button_classifier.h | Turns a raw push-button level into Short / Long press events (pure C++20, natively tested) |
| calibration_blob.h | Versioned, CRC-checked byte layout for saving an AimMap to NVS (pure C++20, natively tested) |
| calibration_session.h | Two-point joystick calibration as a state machine (pure C++20, natively tested) |
| step_planner.h | Trapezoidal velocity planner for the pan stepper, ticked at 1 kHz (pure C++20, natively tested) |
| ▼ checksum | |
| ▼ include | |
| blob_frame.h | Shared framing for versioned NVS blobs: magic, body, CRC-32 (pure C++20, natively tested) |
| crc32.h | Shared CRC-32 for versioned NVS blobs (pure C++20, natively tested) |
| ▼ control | |
| ▼ include | |
| control_logic.h | The controller's decisions: button gestures, HUD requests, modes, calibration and jog arbitration (pure C++20, natively tested) |
| ▼ controller | |
| ▼ include | |
| cal_store.h | Persists the aim calibration (an aiming::AimMap) in NVS |
| controller.h | |
| joystick.h | |
| ▼ detection | |
| ▼ include | |
| base_detection_module.h | Abstract interface for object detection logic on ESP32-CAM |
| camera.h | |
| camera_diff_detection.h | |
| test_detection.h | |
| ▼ frame_store | |
| ▼ include | |
| camera_task.h | FreeRTOS task that owns frame capture: driver frame -> checks -> copy into a FrameStore slot -> publish |
| frame_store.h | Thread-safe home for camera frames: FrameSlots bookkeeping + fixed PSRAM buffers, allocated once |
| ▼ frames | |
| ▼ include | |
| frame_slots.h | Slot bookkeeping for camera frames: who may write which slot, and RAII leases for readers |
| jpeg_check.h | Cheap integrity check for camera JPEG frames (pure C++20, no platform headers) |
| viewer_set.h | Which stream viewers should receive which frame (pure C++20, natively tested) |
| ▼ hud | |
| ▼ include | |
| reply_json.h | Formats the /commands JSON reply from the tracker snapshot and the controller status (pure C++20, natively tested) |
| status_fields.h | Computes the pose-derived HUD fields of ControlStatus (pure C++20, natively tested) |
| ▼ jpeg_gray | |
| ▼ include | |
| jpeg_gray.h | Decodes a QVGA camera JPEG at 1/8 scale straight into the 40x30 gray grid the tracker uses |
| ▼ motion | |
| ▼ include | |
| base_turret.h | What the controller can ask of the pan/tilt turret. Thread-safe: called from loop(), executed by the motor task |
| turret.h | Pan stepper + tilt servo driven by a dedicated FreeRTOS motor task |
| ▼ network | |
| ▼ include | |
| commands_handler.h | |
| handshake_guard.h | |
| stream_broadcaster.h | Pushes the latest camera frame to each idle /stream WebSocket viewer (drop-when-busy, low latency) |
| turret_server.h | Web server interface for MJPEG streaming and remote command handling |
| wifi_http.h | HTTP routes of the WiFi setup page and its JSON API |
| wifi_manager.h | Non-blocking WiFi provisioning: saved networks, setup hotspot, PIN-protected changes |
| wifi_store.h | NVS persistence for the saved WiFi networks, the PIN record and the setup hotspot password |
| ▼ provisioning | |
| ▼ include | |
| blobs.h | Versioned, CRC-checked byte layouts for the saved networks and the PIN record (pure C++20, no heap) |
| choose.h | Picks which saved networks to try, given a scan (pure C++20, no heap) |
| form.h | X-www-form-urlencoded decoding and input validation for the WiFi page (pure C++20, no heap) |
| network_list.h | Fixed-capacity list of saved WiFi networks with recency-based eviction (pure C++20, no heap) |
| pin_guard.h | PIN storage (salted SHA-256) with constant-time check and escalating lockout (pure C++20, no heap) |
| prov_types.h | Plain value types shared by the WiFi provisioning logic (pure C++20, no heap) |
| sha256.h | SHA-256 (FIPS 180-4), pure C++20, no heap |
| wifi_plan.h | WiFi connection state machine: events in, actions out (pure C++20, no heap) |
| ▼ remote | |
| ▼ include | |
| log_sanitize.h | |
| origin_check.h | |
| remote_command.h | Parses the HUD's /commands text messages into typed commands (pure C++20, natively tested) |
| remote_inbox.h | Holds the latest remote command state with a dead-man jog timeout (pure C++20, natively tested) |
| ▼ stats | |
| ▼ include | |
| windowed_counter.h | Per-window deltas of monotonically increasing counters, and the averages/percentages built on them (pure) |
| ▼ tracking | |
| ▼ include | |
| direction.h | Maps a tracked target to a pan/tilt direction relative to the grid centre (pure C++20, header-only) |
| motion_detector.h | Finds moving regions in 40x30 gray frames with a background model (pure C++20, natively tested) |
| tracker.h | Single-target persistent tracker over detector blobs (pure C++20, natively tested) |
| tracking_types.h | Value types shared by the motion detector and the tracker (pure C++20, natively tested) |
| ▼ src | |
| ▼ pin_check | |
| pin_check.cpp | Wiring bring-up check. Exercises each turret part on its own, with no camera or WiFi |
| telemetry.h | Periodic benchmark stats lines (every 5 s, from loop()) |