High-rate spatial telemetry, multi-sensor synchronization, and edge intelligence engineered for GPS-denied environments.
Varsha addresses the engineering bottleneck of localized state estimation, multi-spectral perception, and deterministic telemetry logging in GPS-denied robotics.
By unifying a 6-DoF inertial measurement unit, Time-of-Flight ranging, and high-speed bus interfaces onto a dedicated dual-core embedded architecture, the platform enables sub-millisecond attitude determination and packet transmission under strict 3.5W system power limits.
Development is heavily grounded in bench verification, subjecting sensor rails and filtering algorithms to rigorous physical testing before field deployment.
Measured technical parameters, operating tolerances, and interface protocols for the Varsha telemetry node.
| Subsystem / Parameter | Specification / Value | Engineering Notes & Tolerances |
|---|---|---|
| Processor / Main MCU | ESP32-S3 (Xtensa® Dual-Core 32-bit LX7) | 240 MHz clock speed; integrated vector instructions accelerated for matrix Kalman filter calculation. |
| Sensor Co-Processor | ARM Cortex-M4 @ 168 MHz | Dedicated high-frequency interrupt handling for I2C and SPI peripheral buses. |
| Memory Architecture | 512 KB SRAM + 8 MB Octal PSRAM + 16 MB Flash | Zero-copy DMA circular ring buffer supporting continuous 250 KB/s telemetry data logging. |
| Power Consumption | Peak: 3.2W @ 5.0V | Idle: 180mW | Dual-rail buck-boost regulator (3.3V logic / 5.0V sensor bus) with 92% power conversion efficiency. |
| Communication Protocols | CAN Bus 2.0B (1 Mbps) + ESP-NOW (2.4 GHz RF) | ISO 11898-2 differential signaling with hardware CRC verification and sub-5ms packet ACK latency. |
| Peripheral Interfaces | SPI (10 MHz Mode 0) + 2x I2C Fast-Mode (400 kHz) | Low-jitter DMA-driven sensor polling loop with dedicated hardware interrupt lines. |
| Inertial Sensor Suite | 6-DoF IMU (200 Hz) + ToF Rangefinder (4m @ 30 Hz) | Complementary Kalman fusion providing 0.2° pitch/roll angular resolution with drift compensation. |
| Physical Dimensions | 85 mm × 54 mm (4-Layer FR4, 1.6mm thickness) | Controlled 50Ω RF impedance traces with solid internal ground planes and ENIG gold surface finish. |
| Operating Temperature | -20°C to +70°C Industrial Rating | Thermal relief pads for all power regulators; component tolerances verified across temperature spectrum. |
| Firmware Architecture | FreeRTOS Kernel v10.4 + Bare-Metal C++17 | Deterministic priority-based task scheduling with zero-copy packet queues and Micro-ROS support. |
Interactive instrumentation stream running synthetic sensor fusion models at up to 200 Hz with attitude estimation.
Hardware components and software libraries powering the Varsha platform.
ESP32-S3 running FreeRTOS with core separation between RF communication pipelines and floating-point sensor algorithms.
6-DoF inertial measurement units (MPU6050 / BNO085) paired with Time-of-Flight ranging sensors over dedicated I2C/SPI buses.
CAN Bus 2.0B differential transceivers combined with ESP-NOW 2.4 GHz RF transmission with CRC check and hardware packet filtering.
Dual-rail buck-boost regulation providing 3.3V logic and 5.0V sensor buses with onboard current shunt telemetry monitoring.
Modern C++17 driver abstraction layers featuring DMA circular ring buffers and zero-copy binary serialization.
Dedicated low-power PMW3901 optical tracking sensor computing localized XY displacement vectors without external beacon infrastructure.
Features and performance metrics confirmed through physical laboratory bench testing and prototype execution.
200 Hz continuous sampling of accelerometer and gyro registers with an onboard complementary Kalman filter for real-time roll/pitch drift correction.
Deterministic microsecond packet transmission over CAN Bus 2.0B differential lines preventing packet collision under heavy robotic network loads.
Real-time sensor fusion combining wheel odometry, optical flow, and inertial telemetry to navigate accurately within GPS-denied environments.
Dedicated high-speed SPI microSD storage recording raw sensor frames at up to 250 KB/s without blocking main loop execution.
Inter-subsystem dataflow from sensor inputs to embedded processing and telemetry actuation.
Low-level FreeRTOS telemetry serialization and Kalman filter attitude estimation task.
// North Star — OnSight Telemetry & Attitude Estimation Task
// Target: ESP32-S3 (Xtensa Dual-Core 240MHz) • FreeRTOS Priority 5
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <driver/twai.h> // Two-Wire Automotive Interface (CAN 2.0B)
#include "onsight_fusion.hpp"
struct __attribute__((packed)) TelemetryFrame {
uint32_t timestamp_us;
int16_t pitch_mdeg; // Pitch angle in milli-degrees
int16_t roll_mdeg; // Roll angle in milli-degrees
int16_t accel_z_mg; // Vertical G-force in milli-G
uint16_t tof_range_mm; // Time-of-Flight forward distance
uint16_t crc16; // Hardware packet verification
};
void Task_TelemetryLoop(void* pvParameters) {
TickType_t xLastWakeTime = xTaskGetTickCount();
const TickType_t xFrequency = pdMS_TO_TICKS(5); // Deterministic 200 Hz loop
KalmanFilter6DoF ekf;
ekf.init(200.0f, 0.001f, 0.03f);
while (true) {
// 1. Synchronously sample IMU over dedicated SPI DMA channel
IMURawData raw = read_imu_registers();
ekf.update(raw.ax, raw.ay, raw.az, raw.gx, raw.gy, raw.gz);
// 2. Package zero-copy telemetry packet
TelemetryFrame frame;
frame.timestamp_us = esp_timer_get_time();
frame.pitch_mdeg = static_cast<int16_t>(ekf.getPitch() * 1000.0f);
frame.roll_mdeg = static_cast<int16_t>(ekf.getRoll() * 1000.0f);
frame.accel_z_mg = static_cast<int16_t>(raw.az * 1000.0f);
frame.tof_range_mm = read_tof_distance_mm();
frame.crc16 = compute_crc16(&frame, sizeof(frame) - 2);
// 3. Dispatch to CAN Bus 2.0B controller with sub-5ms latency
twai_transmit_telemetry(0x140, (uint8_t*)&frame, sizeof(frame));
// 4. Enforce strict real-time deadline
vTaskDelayUntil(&xLastWakeTime, xFrequency);
}
}