Project Highlight: Free Flyer Space Robotics MPC Controller
The Autonomous Systems Lab's (ASL) space robotics facility includes the Free Flyer, an autonomous free-flying space robot (as featured in the 2024 Stanford Robotics Center Launch event!) . Floating on its air bearing and navigating on top of a smooth granite table using eight cold-gas CO2 thrusters, the platform simulates a 2D space environment on a hardware platform where a variety of autonomy algorithms can be developed, validated, and verified for deployment.
Previously, a PWM-based PD controller was used for low-level waypoint tracking, but in practice the controller's sub-optimal performance led to excessive fuel usage, freezing of fuel tanks and rapid degradation of performance over time. To address this, I developed an optimization-based MPC for low-level waypoint tracking, which improved position tracking performance while reducing fuel consumption, thereby enabling significantly higher mileage during hardware experiments.
Collaborated with Alvin Sun, Rohan Sinha, Chris Agia, Joshua Lee
ODROID Controller (top) and two CO2 thrusters (underneath)
Hardware Specifications
Air bearing on granite table to provide near-frictionless surface on which to "float", emulating simplified space dynamics in 2D
8 Independently-controlled compressed CO2 gas thrusters arranged in opposite pairs offset from the COM, to apply bi-directional force along each line of action
External Motion Capture system for ground truth state
Existing ROS2 Stack on ODROID controller, implemented in hybrid Python and C++, largely implemented by Alvin Sun
Controller Selection/Tuning
Implemented simulation in Python to evaluate standard metrics (eg tracking, fuel usage, optimization convergence time, etc)
Evaluated various optimization formulations (eg planning on force/moment, planning on thrusters directly, sampling-based methods, mixed-integer solver for discrete thruster inputs, etc)
Selected Formulation: Directly optimize over continuous trinary thruster pairs, then use rounding to translate to thruster inputs
Gain-scheduled controller with long-lookahead default controller (8s horizon, 6Hz control freq) and high-frequency close controller for fine adjustments near the goal (0.9s horizon, 40Hz control freq)
Ported controller to interface with Free Flyer ROS2 stack
Hardware Experiments
Designed a suite of experiments to quantifiably compare new optimization MPC with existing PD-PWM controller
Ran trials of a set of representative tasks (ie turn in place, move short distance with turn, move long distance with turn) for each controller, and collected metrics including rise/settling time, max overshoot, total gas used, etc
Ran each task from full tank until empty to empirically characterize the "fuel mileage" of each controller for each task
Key Result: In most applications, the new controller displays improved tracking performance (i.e. reduced overshoot/steady-state holding error), faster convergence, and greatly reduced fuel consumption: a pure upgrade!
Phased in as default controller for the Free Flyer platform
Video Demo
