Galileo: Gauss-Legendre Pseudospectral Collocation Library

Overview

Galileo is the result of Ethan Chandler's Masters Thesis and Bachelor's Capstone project (MQP). It is a light-weight and extensible C++ library for Gauss-Legendre Pseudospectral collocation, with a focus on switched systems. Galileo is named after famous scientist Galileo Galilei, who posed one variation of the Brachistochone problem, which is a classic problem in the calculus of variations. The library is designed to be used for optimal control of legged robots, but it can be used for any system that can be modeled as a hybrid dynamical system.

Pseudospectral Collocation

The library uses Gauss-Legendre pseudospectral collocation, a numerical method that approximates the solution of optimal control problems by discretizing the state and control variables at a set of collocation points, and enforcing the system dynamics and constraints at these points. The resulting nonlienar programming problem can be solved by various solvers, such as IPOPT.

Solver for Arbitrary Robots

Galileo is built on top of Casadi and Pinocchio, two powerful frameworks for algorithmic differentiation and rigid body dynamics, respectively. Casadi provides the symbolic expressions and automatic differentiation capabilities for the collocation method, while Pinocchio provides the kinematics and dynamics models for the system. Used in tandem, Galileo can solve optimal control problems for arbitrary robots, including the Atlas humanoid robot from Boston Dynamics, and the Unitree Go1 quadruped with a custom arm. The library is designed to be extensible and modular, allowing users to define their own system models, cost functions, constraints, and collocation schemes. The library also provides some examples of optimal control problems, such as control of the Van der Pol oscillator, double mass-spring damper system, and multiple legged robot examples.