ASMA is a modular framework for instruction-following drone navigation that integrates vision-language perception with real-time safety through scene-aware control barrier functions (CBFs). It enables collision-aware navigation guided by natural language prompts in complex environments.
-
Clone the repository:
git clone https://github.com/souravsanyal06/ASMA.git cd ASMA -
Make sure ROS is installed and source the files:
source /opt/ros/noetic/setup.bash -
Build the ROS workspace:
cd ros_ws bash build.shWhile building, you may have to install packages, for example
pip install future
-
Launch the simulation environment:
bash launch.sh
| Key | Description | Key | Description | |
|---|---|---|---|---|
| T | Takeoff | Space Bar | Land | |
| A | Roll (+) | D | Roll (−) | |
| W | Pitch (+) | S | Pitch (−) | |
| Q | Yaw (+) | E | Yaw (−) | |
| ↑ (Arrow Key) | Altitude (+) | ↓ (Arrow Key) | Altitude (−) | |
| ← (Arrow Key) | Speed (−) | → (Arrow Key) | Speed (+) |
-
Press T in the keyboard window to start the drone, Press Q or E to rotate the drone so that it faces the pedestrians.
-
Run the ASMA demo in the city world:
cd scripts python3 asma_city.pyYou will be prompted to enter an instruction number corresponding to a predefined natural language command (e.g., 1, 2, 3, 4).
Download the following files from Google Drive and extract them into the root ASMA/ directory:
- dataset.zip: https://drive.google.com/file/d/1GMgwVvNk5HmPSz_MLvAc9g2P6_qAKfTd/view?usp=drive_link
- pretrained.zip: https://drive.google.com/file/d/1gHSTfwxWUhXHuuLAlRK94-qcY9jB_P58/view?usp=drive_link
After extracting, your project directory should look like:
ASMA/
├── dataset/
├── pretrained/
├── ros_ws/
├── scripts/
├── build.sh
├── README.md
└── other utility files...
If you use this repository in your work, please cite:
@misc{sanyal2025asmaadaptivesafetymargin,
title={ASMA: An Adaptive Safety Margin Algorithm for Vision-Language Drone Navigation via Scene-Aware Control Barrier Functions},
author={Sourav Sanyal and Kaushik Roy},
year={2025},
eprint={2409.10283},
archivePrefix={arXiv},
primaryClass={cs.RO},
url={https://arxiv.org/abs/2409.10283}
}


