This repository implements our CDC 2022 submission on
Trust-based Rate-Tunable Control Barrier Functions for Non-Cooperative Multi-Agent Systems
Authors: Hardik Parwana and Dimitra Panagou, University of Michigan
A pre-print version is available here.
Note: this repo is under development. While all the relevant code is present, we will work on making it more readable and customizable soon! Stay Tuned!
This work considers the question:
How to identify an unknown robot in the system as being:
- Cooperative: i.e., it actively tries to maintain safety requirements
- Aeversarial: i.e., it tries to chase and actively violate safety requirements
- Uncooperative: i.e., it disregards any interaction with other agent and only moves toward's it's own goal. This is like saying: "Stay away from me and you won't be harmed!"
How can an autonomous agent adapt to these different types of robots? Treating all unknown agents in similar fashion can lead to conservative response. For example, a controller might try to make the agent back-off from an adversarial agent so as to avoid collision in future. However, if it were to know that the other agent is uncooperative, then it can adjust it's parameters to allow going closer to the other robot, slowing down enough to let the other robot pass first, and then continue on it's own path. This would cause minimal deviation from nominal trajectories.
This work adapts parameters of Control Barrier Functions and this page provides supplementary plots and videos to our submission.
Trust based adaptation | Constant CBF parameter(small) | Constant CBF parameter(large) |
---|---|---|
Above we show results for 3 cases
- Trust based Adaptation: The CBF parameters are adapted based on trust mertic proposed in paper
- Constant CBF parameter(small): The CBF parameters are kept same. Their values are same as the initial values of parameters in Trust-based adaptation
- Constant CBF parameter(large): if you think having large CBF parameter that always allow close approach to other agents would work, then check this. The CBF parameter is about 3 times of that used before.
Simulation settings:
- 3 intact agents: these robots implement the proposed algorithm. Each tries to move vertically up while trying not to collide with any other agent. None of these robots know the identity of any other agnet (including the other 2 intact agent besides themselves). They use the proposed algorithm to update the CBF parameter corresponding to barrier constraint of every other agent individually. These follow unicycle dynamics and . Green circles show their location and lines originitaing from these circles show their heading direction (the heading angle psi).
- 2 uncooperative red robots: these move horizontally at constant speed without regard to movements of any other agent
- 1 adversarial red robot: this follows single integartor dynamics and chases one of the intact agent with a rate of 1 m/s.
The code was run on Ubuntu 20 with Python 3.6 and following packages
- cvxpy==1.2.0
- gurobipy==9.5.1
- matplotlib==3.5.1
- numpy==1.22.3
- osqp==0.6.2.post5
- fonttools==4.31.2
In addition to above dependencies, run source export_setup.sh
from main folder to set the paths required to access submodules.
To simulate the scenario in paper run
python paper_task.py