This repository contains the implementation of our paper:
"ns3-uavlink: AI-Driven Dynamic MCS Scheduling for U2U Sidelink Communication" (Accepted at VTC2025-Fall).
To simplify the setup process, we provide a ready-to-use Docker image.
You can start the container directly. Docker will automatically pull the image if it’s not already available locally:
docker run -it rholand9/uavlink-ai:v1.1 /bin/bashAlternatively, you can create your own Dockerfile based on this image to add custom configurations.
Inside the container, clone the uavlink source code:
git clone https://github.com/YUJX19/uavlink.git
cd uavlinkRun the provided setup script to configure and build the UAVLink module:
chmod +x setup-ns3-v2x-uavlink.sh
./setup-ns3-v2x-uavlink.shThis will:
- Configure the ns-3 environment
- Copy the necessary NR sidelink source files
- Compile all required modules including
contrib/uavlink
After compilation, you can generate experimental demo data using the following scripts:
cd /ns-3-dev
python3 contrib/uavlink/examples/NR/uavlink_macs.pyThis script collects data for training AI-based MCS selection using LSTM.
cd /ns-3-dev
python3 contrib/uavlink/examples/NR/uavlink_sinr_mac_EKF.pyThis script collects real-time SINR and MCS estimation data using an Extended Kalman Filter.
uavlink/
├── helper/ # Helper classes for simulation setup
├── model/ # Core UAVLink simulation logic and OpenGym integration
├── nr-sidelink/ # Customized NR Sidelink MAC/PHY modules
├── examples/NR/ # LSTM and EKF experiment scripts
├── test/ # Unit test for ns-3 module
├── setup-ns3-v2x-uavlink.sh # One-step setup script
└── CMakeLists.txt # Build configuration
This project is licensed under the GNU General Public License v3.0. See LICENSE for details.
This project builds on top of ns-3-dev and NR module from CTTC.