This repository contains code for reproducing the CoSpar algorithm simulation results and plots in the paper:
Preference-Based Learning for Exoskeleton Gait Optimization
Maegan Tucker*, Ellen Novoseller*, Claudia Kann, Yanan Sui, Yisong Yue, Joel W. Burdick, and Aaron D. Ames
IEEE Conference on Robotics and Automation (ICRA), 2020
(*equal contribution)
PDF Video
The CoSpar algorithm was experimentally deployed on a lower-body robotic exoskeleton to identify personalized, user-preferred exoskeleton walking gaits. CoSpar is a human-in-the-loop learning framework that adapts to mixed-initiative qualitative feedback from a human (i.e., pairwise preferences and coactive feedback) to optimize an unknown objective function, for instance, an exoskeleton user's comfort.
The code is divided into two subfolders, corresponding to the compass-gait biped simulations and the 2D synthetic function simulations, respectively. The Python files included are as follows:
- Scripts titled Optimize_*.py contain the code for running the simulations.
- Scripts titled Plot_*.py generate the plots in Section 4 of the paper.
- Scripts titled Animate_*.py generate the image stacks used to make the animations in the video accompanying the paper.
- Preference_GP_learning.py and CoSpar_feedback_functions.py contain helper functions called by 1), 2), and 3).
- Generate_and_plot_2D_objective_functions.py contains the code for generating the 2D synthetic objective functions used in the 2nd set of simulations.
- Illustrate_self_sparring.py makes some plots of posterior samples (for the compass-gait biped) that were used in the video accompanying the paper.
Descriptions of other folders:
- The folders "Compass_gait_biped_simulations/Compass_biped_results/" and "2D function simulations/Sim_results/" contain the simulation results depicted in Figures 2-4 in the paper.
- The folders "Compass_gait_biped_simulations/Plotting_data/" and "2D function simulations/2D_obj_1_sim_posteriors" contain results of computations performed by some of the plotting code (which processes data saved by the simulations), so that these quantities don't need to be re-computed each time that one runs the plotting scripts.
- The folder "2D function simulations/Sampled_functions_2D/" contains the 2D synthetic objective functions used in the simulations; these are generated by the script Generate_and_plot_2D_objective_functions.py.