Collision-free trajectories for multi-agent systems using rotating hyperplanes learned from expert trajectories. Read the full paper here.
An example using Hill-Clohessy-Wiltshire equations for relative orbital motion:
1. Expert trajectories | 2. Learned hyperplanes | 3. Collision-free trajectory |
A core challenge of multi-robot interactions is collision avoidance among robots with potentially conflicting objectives. We propose a game-theoretic method for collision avoidance based on rotating hyperplane constraints. These constraints ensure collision avoidance by defining separating hyperplanes that rotate around a keep-out zone centered on certain robots. Since it is challenging to select the parameters that define a hyperplane without introducing infeasibilities, we propose to learn them from an expert trajectory i.e., one collected by recording human operators. To do so, we solve for the parameters whose corresponding equilibrium trajectory best matches the expert trajectory.
Read the full paper here.
-
src/
contains the implementations of our method. This includes forward and inverse game solvers, visualization tools, and utilities to interface with ParametricMCPs.jl and TrajectoryGamesBase.jl. -
experiments/
contains the code for reproducing the Monte Carlo analysis shown in the paper.
After cloning the repository
- Navigate to the directory where you cloned this repo.
- Open a Julia terminal hit
]
to activate package mode and activate the project by typingactivate .
- Still in package mode, run
instantiate
to install all required dependencies.
You should now be ready to use the package by including using InverseHyperplanes
in your code, or running one of the existing examples, e.g., generate collision-free trajectories given hyperplane parameters.
This package uses the proprietary PATH solver under the hood (via PATHSolver.jl). Therefore, you will need a license key to solve larger problems. However, by courtesy of Steven Dirkse, Michael Ferris, and Tudd Munson, temporary licenses are available free of charge. Please consult the documentation of PATHSolver.jl to learn about loading the license key.
Let's start by generating a collision-free trajectory given a set of feasible hyperplane parameters.
- Run
include(examples/trajectory_game_example)
. If you have Revise.jl installed (highly recommended), useincludet
instead. - Then, setup the experimental parameters shown in the paper by running
experiment_setup = setup_experiment()
- Once this is done, you can run the forward game solver by running
forward(experiment_setup.θ_truth, experiment_setup; visualize = true)
. This should save an animation namedtest.gif
in thefigures/
folder.
Note that the time horizon of this trajectory is only 10 steps, so it may not be very interesting.
To understand how to use this package to learn hyperplane parameters from an expert demonstration, take a look at this ADD LINK. It outlines the learning pipeline, and may be useful in understanding how the learning happens and how to format the expert trajectories.
Note: For any questions on how to use this code, do not hesitate to reach out to Fernando Palafox at [email protected] or open an issue.