ASAP: Asynchronous Spatial-Temporal Allocation Planning Method for Heterogeneous Multi-Agent Systems
video (Youtube): https://youtu.be/au3fhqbySOE or Bilibili: https://b23.tv/8ywUSl3
paper: https://arxiv.org/abs/2309.07431
In this package, we provide a multi-agent trajectory planning method for heterogeneous system. The inter-agent communication is based on ROS and do not any synchronization. We achieve this by an inter-agent allocation named as ASTA (Asynchronous Spatial-Temproal Allocation). The following figures will illustrate its performance.
16 heterogeneous agents exchange their positions
8 Ackman cars exchang lateral positions
Unsignalized intersection
- Install ROS following https://www.ros.org/
- Install some python packages:
pip install rospkg==1.4.0 numpy scipy
Here, we only support python3
-
Install ACADOS and its Python interface as this link (https://docs.acados.org/)
-
Install tmux as follows:
sudo apt-get install tmux
Setup the project as follows:
git clone https://github.com/CYDXYYJ/ASAP.git
cd ASAP
catkin_make
source devel/setup.bash
If you install acados and rospkg in a specific conda envirogment, you need to uncomment the following code in ./src/planner/scripts/launch.py
.
os.system('tmux send-keys -t '+session_name+':0.'+str(i) +' "conda activate $conda-env-name$" C-m')
Additionally, the $conda-env-name$
above should be replaced by your conda enviroment name.
- Open the visualization panel:
roslaunch visual vis.launch
- Start the planner:
python3 src/planner/scripts/launch.py
- Publish the targets:
python3 src/planner/scripts/publish.py
Here, we deine more than 7 kinds of controlled objects which can be found under ASAP/src/planner/scripts/Dynamic/
Commenly, we classify these objects into three category which are car
for bicycle model, unicycle
for unicycle model and omnidirection
for omnidirectional model.
The specific object is defined under coresponding three folder.
For example, a mini-ackman car is defined at ASAP/src/planner/scripts/Dynamic/Car/Mini_ack
.