Central engineering reference and operations manual for the MRDT Autonomy Software.
View the Project on GitHub MissouriMRDT/Autonomy_Software
Return to RoveSoDocs Guides for Today, Tomorrow, and Forever.
This document provides systematic diagnostics and rapid-resolution procedures for common hardware, networking, algorithmic, and software anomalies encountered during field testing and competition operations.
The autonomy main loop runs in non-canonical terminal mode (SetNonCanonicalTerminalMode()), enabling real-time keyboard commands without requiring a trailing newline. When investigating system behavior via SSH, press the following single keys:
| Key | Diagnostic Action | Information Output |
|---|---|---|
h |
Print Help Menu | Displays the catalog of available terminal diagnostic keys. |
f |
Thread Performance Telemetry | Dumps instantaneous execution frequencies (FPS) across all 11 worker threads (Main, Cameras, Detectors, State Machine, RoveComm UDP/TCP, Visualizer). |
p |
Rover Spatial Pose | Dumps current UTM coordinates (Easting, Northing, Altitude) and compass heading from SmartRetrieveRoverPose(). |
s |
ZED Inertial Telemetry | Dumps raw linear acceleration (X, Y, Z), angular velocity (X, Y, Z), and Euler gyro orientation from the forward ZED camera. |
d |
Drive Actuation State | Dumps real-time normalized motor power commands (Left Power, Right Power) currently sent to the drive board. |
t |
ArUco Marker Telemetry | Dumps total detected tags, Best OpenCV tag ID, distance (m), and yaw angle, alongside Best Torch tag metrics. |
m |
Object Detection Telemetry | Dumps total identified mission objects, best detected class (Mallet, Water Bottle, Rock Pick), distance, and yaw angle. |
q |
Graceful System Shutdown | Signals all threads to halt, stops motor output, flushes logs, generates visualization.html, and exports spatial_map.ply. |
d to observe drive power fluctuations. If powers rapidly oscillate between positive and negative extremes, the heading controller is unstable.DRIVE_PID_PROPORTIONAL ($K_p$) by 20% to 30% in AutonomyConstants.cpp.DRIVE_PID_DERIVATIVE ($K_d$) slightly to dampen overshoot.DRIVE_PID_OUTPUT_FILTER to smooth high-frequency actuation chatter.p and verify that the compass heading is stable while driving in a straight line.DRIVE_PID_INTEGRAL ($K_i$) slightly to accelerate error integration.DRIVE_PID_MAX_INTEGRAL_TERM in AutonomyConstants.cpp to allow higher sustained current during stationary turning.RoveComm did not initialize properly! UDPNode Status: 0, TCPNode Status: 0.sudo lsof -i :11000
sudo lsof -i :11001
sudo kill -9 <PID>
./Autonomy_Software.lsusb in the terminal. Each connected ZED 2i camera should present two separate USB endpoints (one for video, one for internal sensors/IMU):
Bus 002 Device 004: ID 2b03:f880 STEREOLABS ZED 2i
Bus 001 Device 007: ID 2b03:f881 STEREOLABS ZED 2i MCU
sudo systemctl restart udev
f in the autonomy terminal to verify camera FPS recovers to 30 FPS.IdleStateStuckState were exhausted.console_output.log or press f to check current state.Battery cell voltage below minimum!. If present, swap the main LiPo battery.Exhausted all recovery attempts in StuckState!. If present, the rover was trapped by insurmountable terrain; inspect physical rover clearance and obstacle map.STATEMACHINE_ZED_REALIGN_THRESHOLD warnings appear repeatedly in the log.p to inspect current rover pose coordinates.q to halt cleanly and restart autonomy software to force visual odometry to re-anchor to GNSS UTM coordinates.Failed to open LiDAR database. at launch.constants::LIDAR_HANDLER_DB_PATH..db file exists and has read permissions:
ls -la data/LiDAR/