Learning Efficient Frontier Selection with Reinforcement Learning for Exploring Unstructured Environments With Minimal Sensing
Code accompanying the MDPI 'Drones' paper “Learning Efficient Frontier Selection with Reinforcement Learning for Exploring Unstructured Environments With Minimal Sensing.”
| Ours (Low Density) | Ours (Medium Density) | Ours (High Density) |
|---|---|---|
Ours (Low Density) |
Ours (Medium Density) |
Ours (High Density) |
| Nearest (Low Density) | Nearest (Medium Density) | Nearest (High Density) |
|---|---|---|
Nearest Heuristic (Low Density) |
Nearest Heuristic (Medium Density) |
Nearest Heuristic (High Density) |
- Prerequisites
- Environment Setup
- Building & Launching Docker
- Running Simulations
- Testing the Learned Policy
- Testing Heuristic Methods
- Script Reference
- License
- Ubuntu 22.04 or later
- Docker ≥ 20.10
- NVIDIA drivers & CUDA (if running on GPU)
xhostfor display forwarding
-
Install NVIDIA Isaac ROS Dev Environment Follow the official guide: https://nvidia-isaac-ros.github.io/getting_started/dev_env_setup.html
-
Allow GUI forwarding
xhost +local:root
All development tools, libraries, and simulation environments run in Docker.
-
Build the Dev Container
cd isaac_ros_common_rl/scripts ./run_dev.sh -
Modify isaac_ros_common_rl/docker/compose/docker-compose.yml project path
cd isaac_ros_common_rl/docker/compose vim docker-compose.ymlChange "~/frontier-selection-rl" line for the path where you cloned this project. This line will mount that directory's volume into the /root/frontier-selection-rl folder inside the container.
-
Compose the Full Stack
cd isaac_ros_common_rl/docker/compose ./compose.sh
Once the Docker container is up:
-
Open a shell in your host machine (or attach to the container).
-
Navigate to the project root folder.
-
Launch the simulation:
./launch_as2 -s <world_density>
Where
<world_density>is one of:Option Description low_densitySparse obstacle environment medium_densityModerately cluttered environment high_densityVery cluttered environment This command will spawn a
tmuxsession with multiple panes. In themissionpane, you’ll see a prompt ready for your testing commands.
From within the mission pane:
python3 rl/test_policy \
--num_episodes <N> \
--world_type <world_density>| Parameter | Type | Required | Description |
|---|---|---|---|
--num_episodes |
int | Yes | Number of episodes to run |
--world_type |
string | Yes | One of low_density, medium_density, high_density |
Example
python3 rl/test_policy --num_episodes 1 --world_type low_densityTo compare against classical heuristics:
python3 rl/environments/as2_gymnasium_env_discrete_heuristics.py \
--num_episodes <N> \
--method <heuristic> \
--plot_path <true|false> \
--world_type <world_density>| Parameter | Type | Required | Description |
|---|---|---|---|
--num_episodes |
int | Yes | Number of episodes to run |
--method |
string | Yes | Heuristic selection method ( nearest, random, hybrid, tare.) |
--plot_path |
bool | No | true to save trajectory plots, false otherwise (default: false) |
--world_type |
string | Yes | One of low_density, medium_density, high_density |
Example
python3 rl/environments/as2_gymnasium_env_discrete_heuristics.py \
--num_episodes 1 \
--method nearest \
--plot_path true \
--world_type low_density-
run_dev.sh- Launches the ROS/Docker development container.
-
compose.sh- Starts all necessary Docker compose services (simulator, ROS bridge, etc.).
-
launch_as2-
ROS launch wrapper.
-
Flags:
-s <world_density>: select map density (required).
-
-
test_policy- Runs the learned cross-attention policy for a specified number of episodes.
-
as2_gymnasium_env_discrete_heuristics.py- Benchmarks classical heuristics in the same environment interface.
This project is distributed under the BDS3 Clause License. See LICENSE for details.





