SCAN-Planner is a spatial collision-aware local planner, providing a robust low-level planning foundation for various upper-level tasks, such as autonomous exploration and vision-language navigation.
- [Jul. 29, 2026]: CAD files for our sensor layout are now available.
- [Jul. 13, 2026]: ROS2 support is now available from community! Thanks to xiaoqi371317 for contributing the ROS2 interface. Check out the ros2-community branch.
- [Jul. 9, 2026]: Release the main algorithm of SCAN-Planner.
|
|
|
|
|
|
More videos and interactive demonstrations are available on the project page.
Tested on Ubuntu 20.04 with ROS Noetic
Step 1. Install Armadillo, which is required by simulator.
sudo apt-get install libarmadillo-dev
Step 2. Clone our repository and compile.
git clone https://github.com/wuyi2121/SCAN-Planner.git
cd SCAN-Planner
catkin_make
Launch RViz in one terminal:
source devel/setup.bash && roslaunch scan_planner rviz.launch
Launch the algorithm in another terminal:
source devel/setup.bash && roslaunch scan_planner run.launch
The main launch options are defined in run.launch:
-
is_real_world: set totruewhen running with real robot topics (body_pose_topic and sensor_pose_topic), andfalsewhen testing with the simulator. -
navi_mode: selects the navigation interface:1: interactive 2D Nav Goal mode2: keypoint-based multi-floor navigation; seetools/README.md3: reference-path tracking with local obstacle avoidance; seeTravExplorer
Note: If the robot cannot climb stairs, increase the z height of body, keypoints or initial path.
-
sensor_type: select the sensing input. Uselidarfor point-cloud sensors such as MID360, anddepthfor depth cameras such as RealSense D435.
Other algorithm-related parameters are listed in advanced_param.xml. The default settings are tuned for Unitree Go2 and should be adjusted when using a different robot platform.
local_sensing provides CPU and GPU implementations: pcl_render_node and opengl_render_node.
The CPU version is built by default for better compatibility. To build the GPU backend, first install the dependencies:
sudo apt-get install libglew-dev libglfw3-dev libgl1-mesa-dev libglu1-mesa-devThen enable the GPU build option and compile:
catkin_make -DUSE_GPU=ONThe use_gpu option in simulator.xml selects which sensing node to launch.
To support the robotics community and enhance the reproducibility of our work, we provide CAD files for our sensor layout, available in ".SLDPRT" and ".STL" formats. These files can be opened and edited using Solidworks.
We would like to express our gratitude to the following projects, which have provided significant support and inspiration for our work:
-
Our planner supports various high-level tasks, such as a cross-floor embodied exploration project TravExplorer.
-
Our localization module is based on Elevator-LIO, a robust multi-floor extension of FAST-LIO2.
-
Our framework builds on EGO-Planner, which achieves impressive performance in quadrotor local planning.
-
Our map representation is inspired by ROG-Map, a high-performance robot-centric mapping framework.
-
Our simulator is adapted from MARSIM, with map generation from Mockamap and trotting motion from Leg-KILO.
@article{zheng2026scan,
title={SCAN-Planner: Spatial Collision-Aware Local Planning for Route-Guided Long-Range Quadruped Navigation},
author={Zheng, Han and Chen, Zhe and Fu, Yiwen and Yang, Ming and Qin, Tong},
journal={arXiv preprint arXiv:2606.19555},
year={2026}
}This project is licensed under the Apache License 2.0. See LICENSE for details.