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):
- companion_monitor.py — psutil + YAML config + MAVLink output at 1Hz
- 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) - Graduated failsafe actions: WARN→GCS notify, CRIT→RTL/Loiter, LOST→heartbeat FS
Questions for mentors:
- Is NAMED_VALUE_FLOAT the right transport for health metrics, or
should I propose a custom MAVLink message from the start? - Which vehicle (Copter/Plane/Rover) should be the primary
integration target? - 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)