GSoC 2026: Real-Time Companion Computer Health Monitoring & Failsafe — Ram Yatishwar

Hi ArduPilot mentors and community,

I’m Ram Yatishwar, a 3rd year Electronics and Computer Engineering
student at Amrita Viswa Vidyapeetham, Bangalore. I’m submitting a
GSoC 2026 proposal for the Companion Computer Health Monitoring
and Failsafe project.

Background:

  • C/C++ embedded systems programming
  • ARM assembly on ARM7TDMI and LPC2148 (register-level, bare metal)
  • Python scripting

What I have already done:

  • WSL2 + Ubuntu 22.04 set up, ArduPilot cloned with all submodules
  • ArduCopter SITL running: 1368 parameters loaded, EKF3 GPS lock
    confirmed, pre-arm good
  • Explored existing failsafe params live in SITL:
    • FS_GCS_ENABLE = 0
    • FS_GCS_TIMEOUT = 5.0s
    • FS_CRASH_CHECK = 1
  • Studied GCS_MAVLink/GCS.cpp, AP_AdvancedFailsafe state machine,
    SYS_STATUS MAVLink message bitmasks
  • Prototyped psutil metric collection (CC_CPU=0.0, CC_RAM=6.9,
    CC_DISK=0.7) — ready to transmit as NAMED_VALUE_FLOAT

Proposed solution (3 layers):

  1. companion_monitor.py — psutil + YAML config + MAVLink output at 1Hz
  2. AP_CompanionMonitor C++ library — health FSM (HEALTHY→WARN→CRIT→LOST),
    parameters: CC_ENABLE, CC_CPU_WARN, CC_HBEAT_TIMEOUT (mirrors FS_GCS_TIMEOUT=5.0s)
  3. Graduated failsafe actions: WARN→GCS notify, CRIT→RTL/Loiter, LOST→heartbeat FS

Questions for mentors:

  1. Is NAMED_VALUE_FLOAT the right transport for health metrics, or
    should I propose a custom MAVLink message from the start?
  2. Which vehicle (Copter/Plane/Rover) should be the primary
    integration target?
  3. Should the companion agent support non-systemd Linux distros
    (e.g. for Jetson without systemd)?

Full proposal submitted on the Google GSoC portal.

Thank you for your time and feedback!

Ram Yatishwar
GitHub: ram-yatishwar (Ram Yatishwar) · GitHub
Discord: Ram Yatishwar (active in gsoc channel)