All Projects → HJReachability → ilqgames

HJReachability / ilqgames

Licence: BSD-3-Clause License
Iterative Linear-Quadratic Games!

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
matlab
3953 projects
CMake
9771 projects

Projects that are alternatives of or similar to ilqgames

gamegym
A game theory framework with examples and algorithms
Stars: ✭ 49 (-9.26%)
Mutual labels:  game-theory
Robotics-Object-Pose-Estimation
A complete end-to-end demonstration in which we collect training data in Unity and use that data to train a deep neural network to predict the pose of a cube. This model is then deployed in a simulated robotic pick-and-place task.
Stars: ✭ 153 (+183.33%)
Mutual labels:  motion-planning
matching
A package for solving matching games.
Stars: ✭ 97 (+79.63%)
Mutual labels:  game-theory
algorithms
The All ▲lgorithms documentation website.
Stars: ✭ 114 (+111.11%)
Mutual labels:  game-theory
Deep-Learning-Mahjong---
Reinforcement learning (RL) implementation of imperfect information game Mahjong using markov decision processes to predict future game states
Stars: ✭ 45 (-16.67%)
Mutual labels:  game-theory
IterativeLQR.jl
A Julia package for constrained iterative LQR (iLQR)
Stars: ✭ 15 (-72.22%)
Mutual labels:  motion-planning
robowflex
Making MoveIt Easy!
Stars: ✭ 83 (+53.7%)
Mutual labels:  motion-planning
piper
No description or website provided.
Stars: ✭ 50 (-7.41%)
Mutual labels:  motion-planning
scikit-robot
A Flexible Framework for Robot Control in Python
Stars: ✭ 70 (+29.63%)
Mutual labels:  motion-planning
multi robot traj planner
An Efficient Multi-Robot Trajectory Planner for Ground Vehicles.
Stars: ✭ 104 (+92.59%)
Mutual labels:  motion-planning
highway-path-planning
My path-planning pipeline to navigate a car safely around a virtual highway with other traffic.
Stars: ✭ 39 (-27.78%)
Mutual labels:  motion-planning
the-Cooper-Mapper
An open source autonomous driving research platform for Active SLAM & Multisensor Data Fusion
Stars: ✭ 38 (-29.63%)
Mutual labels:  motion-planning
MPNet
Motion Planning Networks
Stars: ✭ 139 (+157.41%)
Mutual labels:  motion-planning
gt
Source files for my course on Game Theory.
Stars: ✭ 28 (-48.15%)
Mutual labels:  game-theory
HRVO
The Hybrid Reciprocal Velocity Obstacle (C++)
Stars: ✭ 90 (+66.67%)
Mutual labels:  motion-planning
ContactImplicitMPC.jl
Fast contact-implicit model-predictive control for robotic systems that make and break contact with their environments.
Stars: ✭ 51 (-5.56%)
Mutual labels:  motion-planning
Computational-Economics
Algorithmic game theory, recursive macroeconomics, machine learning for econometrics
Stars: ✭ 35 (-35.19%)
Mutual labels:  game-theory
Efficient-motion-planning
To guarantee safe and efficient driving for automated vehicles in complicated traffic conditions, the motion planning module of automated vehicles are expected to generate collision-free driving policies as soon as possible in varying traffic environment. However, there always exist a tradeoff between efficiency and accuracy for the motion plann…
Stars: ✭ 24 (-55.56%)
Mutual labels:  motion-planning
egtplot
egtplot: A python package for 3-Strategy Evolutionary Games
Stars: ✭ 33 (-38.89%)
Mutual labels:  game-theory
bench-mr
Motion Planning Benchmark
Stars: ✭ 44 (-18.52%)
Mutual labels:  motion-planning

ilqgames

Build Status License

Iterative Linear-Quadratic Games - a new, real-time solver for N-player general differential games.

NOTE that this project is still under active development and is only intended to be used as an academic reference at this stage. However, my intent is that it should eventually become stable enough for use as a reliable substitute for a model-predictive control backend.

Paper

For a full description of the algorithm itself and examples of how it can be applied in collision-avoidance problems, please refer to the paper, which was presented at ICRA 2020.

If you find this repository useful, please do cite the paper:

@inproceedings{fridovich2020efficient,
  title={Efficient iterative linear-quadratic approximations for nonlinear multi-player general-sum differential games},
  author={Fridovich-Keil, David and Ratner, Ellis and Peters, Lasse and Dragan, Anca D and Tomlin, Claire J},
  booktitle={2020 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={1475--1481},
  year={2020},
  organization={IEEE}
}

If you are interested in the feedback linearized version of this algorithm, please also refer to that paper, which is also published at ICRA 2020:

@inproceedings{fridovich2020iterative,
  title={An iterative quadratic method for general-sum differential games with feedback linearizable dynamics},
  author={Fridovich-Keil, David and Rubies-Royo, Vicenc and Tomlin, Claire J},
  booktitle={2020 IEEE International Conference on Robotics and Automation (ICRA)},
  pages={2216--2222},
  year={2020},
  organization={IEEE}
}

Primary contributor

The primary contributor is David Fridovich-Keil, a recent PhD grad from Claire Tomlin's group in the EECS department at UC Berkeley. David is currently an assistant professor at UT Austin. The best way to contact David is by email, dfk at utexas dot edu, or if you have specific questions about this repository, please post an issue.

Documentation

Documentation is automatically generated by a continuous integration service with each push to the master branch, and it may be found here. Additionally, a more high-level form of documentation is available in PDF form here.

Language

An early version of the iterative linear-quadratic game algorithm was implemented in Python; it is now deprecated and stored in the python/ directory. Ongoing and future development will proceed primarily in C++, although a colleague has built a standalone version in Julia here

Dependencies

ilqgames has been tested both in OS X and Ubuntu. Depending on your version of Ubuntu, you may notice a linker error related to aclocal-XX, which may be fixed by symlinking Ubuntu's native aclocal to the desired executable aclocal-XX. Otherwise, external dependencies are standard:

  • glog (Google's logging tools)
  • gflags (Google's command line flag tools)
  • opengl, glut (graphics tools)
  • eigen3 (linear algebra library)

Getting started

This repository uses the cmake build system and may be compiled following standard cmake protocols:

mkdir build && cd build
cmake ..
make -j8

Executables will be stored in the bin/ directory, with the exception of build/run_tests, which runs unit tests. To run unit tests from the build directory, simply execute:

./run_tests

To run a particular example from the bin/ directory, e.g., the three-player intersection:

./three_player_intersection

With any executable, a full explanation of command line arguments can be found by running:

./<name-of-executable> --help

Extending ilqgames

New examples

All specific examples, e.g. the three-player intersection, inherit from the base class Problem. This base class provides a number of utilities, such as warm starting, and also wraps the solver. To inherit, simply write a constructor which instantiates the appropriate solver with costs, and also set the initial state, operating point, and strategies. To see an example, consult the ThreePlayerIntersectionExample class.

ROS

There is a companion ROS extension under development, which may be found here. It is currently still marked private, but rest assured that the usage of the ilqgames toolbox in ROS is straightforward! If you want to implement this yourself for a custom application it is not too hard.

GUI

The native ilqgames graphical user interface can be a very useful tool in debugging algorithm changes, new costs, etc. Currently, it supports so-called TopDownRenderableProblem games, where the state encodes x-y position and (potentially) heading information. To extend the GUI to other types of games, simply write a custom renderer, e.g. mirroring the TopDownRenderer class. All GUI functionality is based on the DearImGui library, a copy of which is maintained locally in the external/ directory.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].