SCAN-Planner
Spatial Collision-Aware Local Planning for Route-Guided
Long-Range Quadruped Navigation
Han Zheng, Zhe Chen, Yiwen Fu, Ming Yang, Tong Qin*
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.
🧭 System Overview
📢 News
- [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.
🤖 Demonstrations
|
|
|
|
More videos and interactive demonstrations are available on the project page.
🛠️ Installation
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
🚀 Quick Start
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
🔧 Important Functions
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.
⚙️ Optional
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.
🤓 Acknowledgements
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.
📚 Citation
@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}
}⚖️ License
This project is licensed under the Apache License 2.0. See LICENSE for details.