video: https://www.youtube.com/watch?v=qTtVinPomfs
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 protocol named as ASAP (Asynchronous Spatial Allocation Protocol). 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 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 deve/setup.bash
If you install acados and rospkg in a specific conda enviroment, 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 tarets:
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
.