Seungchan Kim
·
Omar Alama
·
Dmytro Kurdydyk
·
John Keller
Nikhil Keetha
·
Wenshan Wang
·
Yonatan Bisk
·
Sebastian Scherer
Paper | Project Page | Video
🚧 Work in Progress
- This repository is under active development. The code is not yet ready for general use. We plan to release a stable version with full documentation and instructions soon. For questions, please open an issue or check back later for updates.
- 01/31/2026: RAVEN was accepted to IEEE ICRA 2026!
- 10/25/2025: RAVEN was presented at IROS 2025 Active Perception Workshop, and received Outstanding Best Paper Award Finalist!
- 09/28/2025: arXiv paper is uploaded. Stay tuned for code release!
RayFronts serves as a perception and representation backbone of RAVEN.
AirStack serves as an aerial robot autonomy stack, which supports interface for Isaac Sim, and handles sensors, global & local planning, collision avoidance.
+-------------+ Interface +-------------------+ Sensor Topics +-------------------+
| Isaac Sim | -----------> | AirStack | ------------------> | RayFronts |
| Simulation | | Autonomy Stack | | Perception & Map |
+-------------+ |-------------------| |-------------------|
| - Sim interface | | - 3D Mapping |
| - Sensor drivers | | - Representation |
| - Global planner | <-------------------| - Semantic logic |
| - Local planner | Global Waypoints | - Behavior Tree |
| - Collision avoid | | |
+-------------------+ +-------------------+
First, clone this repository.
git clone --recurse-submodules https://github.com/castacks/RAVEN.git
cd RAVEN
git checkout main
git submodule update --init --recursive
Next, you should set up a docker image for RayFronts. Please follow the instructions in: RayFronts Setup.
Now, for AirStack setup, please follow the instructions in: AirStack Setup.
After setting up AirStack, download scenes:
cd ~/RAVEN/AirStack/scenes
./download_scenes.sh
[Optional] For LVLM-guided behavior and FPV+LVLM baselines, you need set up LVLM as well. Please follow the instructions in: LVLM Setup.
In one terminal, start the AirStack with IsaacSim:
cd ~/RAVEN/AirStack
xhost + (This is needed only when you rebooted your computer)
airstack up
An alternative command to airstack up is docker compose up -d.
This will start Isaac-Sim, RViz and RQT-GUI.
First, click the play button in Isaac Sim.
Then hit the Arm and Takeoff button on the RQT-GUI. The robot will start taking off.
(If you click Fixed Trajectory and Publish buttons, the robot will fly according to the predefined trajectory on the right configurations. We will not use this for RAVEN.)
Hit the Global Plan button. The robot will fly following a global waypoint plan. By default, AirStack generates random walk plans. For our purpose, RayFronts will continuously generate a semantic global plan and will overwrite it.
To shut down the AirStack containers and remove them, run:
airstack down
, or equivalently, docker compose down (in ~/RAVEN/AirStack).
On another terminal, start the RayFronts docker container:
cd ~/RAVEN/RayFronts
./run_docker.sh
Then, inside the RayFronts docker container,
./run_mapping_server_rosnode.sh
You will see the following log messages (make sure to press the Play button in Isaac Sim):
[rayfronts.datasets.ros][INFO] - Waiting for intrinsics to be published..
[rayfronts.datasets.ros][INFO] - Loaded intrinsics:
....
[rayfronts.datasets.ros][INFO] - Ros2Subscriber initialized successfully.
If intrinsics is not loaded, check the intrinsics topic in the configuration file, and verify that the expected ROS2 topics are being published:
ros2 topic echo /robot_1/sensors/front_stereo/left/camera_info
If this is your first time running the command, pretrained models will be automatically downloaded from external sources such as Torch Hub and Hugging Face. To avoid re-downloading on every fresh container startup, we recommend caching these files in the Docker image. For example,
docker commit <container_id> rayfronts:desktop
This will cache the pretrained models inside the existing rayfronts Docker image.
If you see log messages reporting mapping speed / efficiency similar to the example below, the RayFronts mapper is running correctly:
[__main__][INFO] - [# 0#] Wall (#77462.1434# ms/batch - # 0.01# frame/s), Mapping (#369.3345# ms/batch - # 2.71# frame/s), Mapping/Wall (#0.4768%)
[__main__][INFO] - [# 1#] Wall (#284.1268# ms/batch - # 3.52# frame/s), Mapping (#17.1590# ms/batch - # 58.28# frame/s), Mapping/Wall (#6.0392%)
[__main__][INFO] - [# 2#] Wall (#797.8671# ms/batch - # 1.25# frame/s), Mapping (#13.3219# ms/batch - # 75.06# frame/s), Mapping/Wall (#1.6697%)
....
Once the RayFronts container is running, open another terminal and enter the container:
docker exec -it rayfronts_container bash
Then run:
python3 input_prompt.py
You will see the following interface:
=== Input Publisher ===
Current input: ''
1. Set new input
2. Clear input
3. Exit
To set a new input prompt, type 1 and enter your text.
To update the input, you can first clear it with 2, then set a new one using 1.
To exit the program, type 3.
By default, the robot launches the Fire Academy scene. To switch to other environments, locate the .env file in ~/RAVEN/AirStack and update ISAAC_SIM_SCRIPT_NAME.
We are currently supporting:
FireAcademy_Launch.py
RetroNeighborhood_Launch.py
AbandonedFactory_Launch.py
ConstructionSite_Launch.py
Make sure these scenes were downloaded during the setup process. All scene files should be located in ~/RAVEN/AirStack/scenes.
While running AirStack, you may want to inspect what is happening inside each Docker container. To enter the robot container:
docker exec -it airstack-robot-1 bash
To enter the Isaac Sim container:
docker exec -it isaac-sim bash
Once inside the container, you can attach to the main session using tmux.
tmux a
To detach from tmux (without stopping processes): Ctrl + B then D.
Container names may vary depending on your docker-compose setup.
Use docker ps to list running containers.