BIULab-BUAA/AirSimAG

A High-Fidelity Simulation Platform for Aerial-Ground Collaborative Robotics Based on AirSim

C++

78

12 commits

updated Apr 9, 2026

See the code

README

AirSimAG 🚀

Air–Ground Cooperative Simulation Platform

Unreal Engine 4.27 AirSim ROS arXiv paper

AirSimAG overview

AirSimAG is a high-fidelity simulator for cooperative air–ground robotics. It lets you simulate UAVs (drones) + UGVs (ground vehicles) together, with:

  • 🌍 Shared environments & globally consistent states
  • 🛰️ Multi-modal sensors (RGB, depth, segmentation, LiDAR, IMU…)
  • 🤖 Unified ROS & RPC APIs
  • ⚙️ Pipelines for mapping, planning, tracking, and multi-agent formations

Perfect for RL, vision-based planning, and cooperative control experiments!


📑 Contents


✨ Key Features

🤖 Air–ground coordinationTight coupling between UAVs & UGVs with shared state & coordinated control
🧩 Unified ROS interfaceRPC + ROS wrapper; synchronized topics & services for multi-agent experiments
🛰️ SensorsRGB, depth, segmentation, LiDAR, IMU; multi-camera & multi-vehicle support
🌍 Space–time consistencyGlobally aligned coordinates + synchronized timestamps for multi-agent fusion
⚙️ Task-oriented workflowsPipelines & hooks for mapping, planning, tracking, formation control

🎮 Simulation Capabilities

AirSimAG inherits AirSim features:

  • Vehicles: Multirotor (UAV), Car (UGV)
  • Sensors: Configurable in settings.json
  • ROS Wrapper: Optional, fully integrated

📷 Vision & images

ModalityDescription
RGB / SceneColor cameras for learning & perception
DepthPlanar / perspective depth
SegmentationSemantic / instance masks
ExtrasOptical flow, surface normals, IR-style view (optional)

📡 Sensors

SensorDescription
LiDAR3D point cloud scans
IMULinear acceleration + angular velocity
GPS / GNSSGlobal positioning & navigation
OtherBarometer, magnetometer, distance sensors

🌍 Environment & State

Odometry / KinematicsPose, velocity, acceleration; ROS-friendly
Clock / Time steppingSimulation time, pause/step for repeatable experiments
WeatherRain, snow, dust, wind
Collision & WorldMeshes, ray casts, collision detection

🎬 Task Demos

🎥 Demo video: fig_airsimag/AirSimAG.mp4

🗺️ Mapping

Cooperative mapping with UAV + UGV, synchronized scene & point clouds.

Mapping task

(a) Mapping scene. (b) Fused point cloud map: UAV points in blue, UGV points in green. (c) UAV and UGV trajectories during the mapping task.

🛤️ Path Planning

Multi-level path planning: overpasses, tunnels, obstacles.

Planning task

(a) UGV planned path from UAV’s first-person view. (b) UGV first-person view during planning. (c) Executed UGV trajectory.

🎯 Target Tracking

UAV: aerial global view
UGV: local ground view

Tracking task

(a) Unreal Engine scene showing the third-person view, UAV first-person view, and UGV first-person view. (b) Tracking map.

🛸 Multi-agent Formation

4 UAVs (square) + 3 UGVs (circle)

Formation task

Hardware: RTX 4090 + Intel i7-14700KF + 62GB RAM

MetricValue
Num. UAV4
Num. UGV3
Odometry ROS Topic (Hz)>25
Image ROS Topic (Hz)>5
UE4 FPS45–60
Memory Usage (MB)~14,852

💾 Download pre-recorded rosbags: Baidu Netdisk (password: e7jx)


🧰 Getting Started

Dependencies:

  • 🎮 Unreal Engine 4.27
  • 🧩 AirSim plugin
  • 🤖 ROS (optional)

Documentation & Build:

APIs: Python / C++ for images, LiDAR, IMU, vehicle control, ROS integration.


🚀 Quick Start

1️⃣ Clone repo

git clone https://github.com/BIULab-BUAA/AirSimAG
cd AirSimAG

2️⃣ Build the Unreal Engine project

# Linux
./build.sh

Copy compiled Plugins folder to your environment project (e.g., CityParkEnvironmentCollection 4.27).

3️⃣ Run the simulation

# Linux
cd ~/UnrealEngine-4.27.0-files
./Engine/Binaries/Linux/UE4Editor

Set GameMode to AirSimGameMode.

4️⃣ Play the simulation

Copy fig_airsimag/settings.json to your AirSim settings.json (Documents on Windows, ~/Documents/AirSim on Linux). This example configures an air–ground setup with LiDAR and cameras; sensor options are described in the AirSim documentation.

Click Play in the Unreal Editor.

5️⃣ Control the vehicle

📷 5.1 AirSim Python API — camera recording

cd AirSimAG/ros
python src/example/camera_record_ag.py

📡 5.2 AirSim Python API — LiDAR recording

cd AirSimAG/ros
python src/example/lidar_record_ag.py

🛰️ 5.3 ROS Wrapper

cd AirSimAG/ros
catkin_make
source devel/setup.bash
roslaunch airsim_ros_pkgs airsim_all.launch

Use rostopic list to inspect odometry, images, and control topics.

⌨️ 5.4 Keyboard control example

cd AirSimAG/ros
source devel/setup.bash
python src/example/keyboard_ctrl.py

This node publishes body-frame velocity commands for the UAV and car control commands for the UGV. If no key is pressed in the polling window, both vehicles are commanded to stop (UAV zero velocity, UGV brake applied). Key bindings for ros/src/example/keyboard_ctrl.py:

🚁 UAV (multirotor)

KeyAction
WMove forward (positive body-frame forward velocity)
SMove backward
AStrafe left
DStrafe right
FAscend (negative vertical velocity in NED; “up” in world frame)
BDescend (positive vertical velocity in NED; “down” in world frame)
YYaw (positive angular rate about the body vertical axis)

🚗 UGV (ground vehicle)

Keys 8, 2, 4, 6, and 5 follow a numeric keypad layout (8 = up, 2 = down, 4 = left, 6 = right, 5 = center).

KeyAction
8Drive forward (throttle, straight)
2Drive backward (reverse throttle, straight)
4Forward motion with steering to the left
6Forward motion with steering to the right
5Release throttle and steering (coast / stop maneuver; brake command cleared in this example)

🔑 Common

KeyAction
QQuit the keyboard control node

💡 Note: Ensure Num Lock is on if you use a keyboard where the number keys share the numpad; otherwise use the dedicated digit keys that produce 8, 2, 4, 6, 5 in the terminal.


📖 Citation

If you use this platform in academic work, please cite AirSim and AirSimAG:

@misc{airsimag2026cui,
      title={AirSimAG: A High-Fidelity Simulation Platform for Air-Ground Collaborative Robotics}, 
      author={Yangjie Cui and Xin Dong and Boyang Gao and Jinwu Xiang and Daochun Li and Zhan Tu},
      year={2026},
      eprint={2603.23079},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2603.23079}, 
}

@inproceedings{airsim2017fsr,
  author = {Shital Shah and Debadeepta Dey and Chris Lovett and Ashish Kapoor},
  title = {AirSim: High-Fidelity Visual and Physical Simulation for Autonomous Vehicles},
  year = {2017},
  booktitle = {Field and Service Robotics},
  eprint = {arXiv:1705.05065},
  url = {https://arxiv.org/abs/1705.05065}
}

📜 License

All rights reserved.

BIULab-BUAA/AirSimAG

A High-Fidelity Simulation Platform for Aerial-Ground Collaborative Robotics Based on AirSim

C++

78

12 commits

updated Apr 9, 2026

See the code

README

AirSimAG 🚀

Air–Ground Cooperative Simulation Platform

Unreal Engine 4.27 AirSim ROS arXiv paper

AirSimAG overview

AirSimAG is a high-fidelity simulator for cooperative air–ground robotics. It lets you simulate UAVs (drones) + UGVs (ground vehicles) together, with:

  • 🌍 Shared environments & globally consistent states
  • 🛰️ Multi-modal sensors (RGB, depth, segmentation, LiDAR, IMU…)
  • 🤖 Unified ROS & RPC APIs
  • ⚙️ Pipelines for mapping, planning, tracking, and multi-agent formations

Perfect for RL, vision-based planning, and cooperative control experiments!


📑 Contents


✨ Key Features

🤖 Air–ground coordinationTight coupling between UAVs & UGVs with shared state & coordinated control
🧩 Unified ROS interfaceRPC + ROS wrapper; synchronized topics & services for multi-agent experiments
🛰️ SensorsRGB, depth, segmentation, LiDAR, IMU; multi-camera & multi-vehicle support
🌍 Space–time consistencyGlobally aligned coordinates + synchronized timestamps for multi-agent fusion
⚙️ Task-oriented workflowsPipelines & hooks for mapping, planning, tracking, formation control

🎮 Simulation Capabilities

AirSimAG inherits AirSim features:

  • Vehicles: Multirotor (UAV), Car (UGV)
  • Sensors: Configurable in settings.json
  • ROS Wrapper: Optional, fully integrated

📷 Vision & images

ModalityDescription
RGB / SceneColor cameras for learning & perception
DepthPlanar / perspective depth
SegmentationSemantic / instance masks
ExtrasOptical flow, surface normals, IR-style view (optional)

📡 Sensors

SensorDescription
LiDAR3D point cloud scans
IMULinear acceleration + angular velocity
GPS / GNSSGlobal positioning & navigation
OtherBarometer, magnetometer, distance sensors

🌍 Environment & State

Odometry / KinematicsPose, velocity, acceleration; ROS-friendly
Clock / Time steppingSimulation time, pause/step for repeatable experiments
WeatherRain, snow, dust, wind
Collision & WorldMeshes, ray casts, collision detection

🎬 Task Demos

🎥 Demo video: fig_airsimag/AirSimAG.mp4

🗺️ Mapping

Cooperative mapping with UAV + UGV, synchronized scene & point clouds.

Mapping task

(a) Mapping scene. (b) Fused point cloud map: UAV points in blue, UGV points in green. (c) UAV and UGV trajectories during the mapping task.

🛤️ Path Planning

Multi-level path planning: overpasses, tunnels, obstacles.

Planning task

(a) UGV planned path from UAV’s first-person view. (b) UGV first-person view during planning. (c) Executed UGV trajectory.

🎯 Target Tracking

UAV: aerial global view
UGV: local ground view

Tracking task

(a) Unreal Engine scene showing the third-person view, UAV first-person view, and UGV first-person view. (b) Tracking map.

🛸 Multi-agent Formation

4 UAVs (square) + 3 UGVs (circle)

Formation task

Hardware: RTX 4090 + Intel i7-14700KF + 62GB RAM

MetricValue
Num. UAV4
Num. UGV3
Odometry ROS Topic (Hz)>25
Image ROS Topic (Hz)>5
UE4 FPS45–60
Memory Usage (MB)~14,852

💾 Download pre-recorded rosbags: Baidu Netdisk (password: e7jx)


🧰 Getting Started

Dependencies:

  • 🎮 Unreal Engine 4.27
  • 🧩 AirSim plugin
  • 🤖 ROS (optional)

Documentation & Build:

APIs: Python / C++ for images, LiDAR, IMU, vehicle control, ROS integration.


🚀 Quick Start

1️⃣ Clone repo

git clone https://github.com/BIULab-BUAA/AirSimAG
cd AirSimAG

2️⃣ Build the Unreal Engine project

# Linux
./build.sh

Copy compiled Plugins folder to your environment project (e.g., CityParkEnvironmentCollection 4.27).

3️⃣ Run the simulation

# Linux
cd ~/UnrealEngine-4.27.0-files
./Engine/Binaries/Linux/UE4Editor

Set GameMode to AirSimGameMode.

4️⃣ Play the simulation

Copy fig_airsimag/settings.json to your AirSim settings.json (Documents on Windows, ~/Documents/AirSim on Linux). This example configures an air–ground setup with LiDAR and cameras; sensor options are described in the AirSim documentation.

Click Play in the Unreal Editor.

5️⃣ Control the vehicle

📷 5.1 AirSim Python API — camera recording

cd AirSimAG/ros
python src/example/camera_record_ag.py

📡 5.2 AirSim Python API — LiDAR recording

cd AirSimAG/ros
python src/example/lidar_record_ag.py

🛰️ 5.3 ROS Wrapper

cd AirSimAG/ros
catkin_make
source devel/setup.bash
roslaunch airsim_ros_pkgs airsim_all.launch

Use rostopic list to inspect odometry, images, and control topics.

⌨️ 5.4 Keyboard control example

cd AirSimAG/ros
source devel/setup.bash
python src/example/keyboard_ctrl.py

This node publishes body-frame velocity commands for the UAV and car control commands for the UGV. If no key is pressed in the polling window, both vehicles are commanded to stop (UAV zero velocity, UGV brake applied). Key bindings for ros/src/example/keyboard_ctrl.py:

🚁 UAV (multirotor)

KeyAction
WMove forward (positive body-frame forward velocity)
SMove backward
AStrafe left
DStrafe right
FAscend (negative vertical velocity in NED; “up” in world frame)
BDescend (positive vertical velocity in NED; “down” in world frame)
YYaw (positive angular rate about the body vertical axis)

🚗 UGV (ground vehicle)

Keys 8, 2, 4, 6, and 5 follow a numeric keypad layout (8 = up, 2 = down, 4 = left, 6 = right, 5 = center).

KeyAction
8Drive forward (throttle, straight)
2Drive backward (reverse throttle, straight)
4Forward motion with steering to the left
6Forward motion with steering to the right
5Release throttle and steering (coast / stop maneuver; brake command cleared in this example)

🔑 Common

KeyAction
QQuit the keyboard control node

💡 Note: Ensure Num Lock is on if you use a keyboard where the number keys share the numpad; otherwise use the dedicated digit keys that produce 8, 2, 4, 6, 5 in the terminal.


📖 Citation

If you use this platform in academic work, please cite AirSim and AirSimAG:

@misc{airsimag2026cui,
      title={AirSimAG: A High-Fidelity Simulation Platform for Air-Ground Collaborative Robotics}, 
      author={Yangjie Cui and Xin Dong and Boyang Gao and Jinwu Xiang and Daochun Li and Zhan Tu},
      year={2026},
      eprint={2603.23079},
      archivePrefix={arXiv},
      primaryClass={cs.RO},
      url={https://arxiv.org/abs/2603.23079}, 
}

@inproceedings{airsim2017fsr,
  author = {Shital Shah and Debadeepta Dey and Chris Lovett and Ashish Kapoor},
  title = {AirSim: High-Fidelity Visual and Physical Simulation for Autonomous Vehicles},
  year = {2017},
  booktitle = {Field and Service Robotics},
  eprint = {arXiv:1705.05065},
  url = {https://arxiv.org/abs/1705.05065}
}

📜 License

All rights reserved.