Wenyi Liu, Yunfan REN, Rui Guo, Vickie W. W. Kong, Anthony S. P. Hung, Fangcheng Zhu, Yixi Cai, Huajie Wu, Yuying Zou, and Fu Zhang
Paper: Nature Communications
Code: Github
Video Links: youtube, Bilibili
Click for the video demo.
If our repository supports your academic projects, please cite our work. Thank you!
@article{liu2025slope,
title={Slope inspection under dense vegetation using LiDAR-based quadrotors},
author={Liu, Wenyi and Ren, Yunfan and Guo, Rui and Kong, Vickie WW and Hung, Anthony SP and Zhu, Fangcheng and Cai, Yixi and Wu, Huajie and Zou, Yuying and Zhang, Fu},
journal={Nature Communications},
volume={16},
number={1},
pages={7411},
year={2025},
publisher={Nature Publishing Group UK London}
}
Landslides pose significant threats to residents' safety and daily lives. To mitigate such risks, flexible debris-resisting barriers are constructed and regularly inspected, a task known as slope inspection. Traditional manual inspections are costly and difficult due to steep terrains and dense vegetation. Unmanned aerial vehicle (UAV) equipped with LiDAR and cameras offers high mobility, making them well-suited for slope inspections. However, existing UAV solutions lack comprehensive frameworks to handle dense vegetation, including robust localization, high-precision mapping, small and dynamic obstacle avoidance, and cluttered under-canopy navigation. To address these challenges, we develop a LiDAR-based quadrotor with a comprehensive software system. Our quadrotor features assisted obstacle avoidance, enabling it to autonomously avoid intricate obstacles while executing pilot commands. Field experiments conducted in collaboration with the Hong Kong Civil Engineering and Development Department demonstrate our quadrotor's ability to avoid small obstacles and maneuver in dense vegetation, validating its practical potential for slope inspection.
Ubuntu 18.04~20.04, ROS Installation
PCL >= 1.6, follow PCL Installation
Eigen >= 3.3.4, follow Eigen Installation
glfw3:
sudo apt-get install libglfw3-dev libglew-dev
Select the version below v0.6.3
Install OSQP
git clone --recursive https://github.com/osqp/osqp
cd osqp
mkdir build
cd build
cmake ..
sudo make install
Install OSQP-Eigen
git clone https://github.com/robotology/osqp-eigen.git
cd osqp-eigen
mkdir build
cd build
cmake ..
sudo make
sudo make install
sudo apt-get install ros-noetic-serialsudo apt-get install ros-noetic-rosfmt -ysudo apt-get install ros-noetic-joyA debug tool: backward.cpp
Installation
sudo apt-get install libdw-dev
wget https://raw.githubusercontent.com/bombela/backward-cpp/master/backward.hpp
sudo mv backward.hpp /usr/include
mkdir -p slope_ws
cd slope_ws
git clone https://github.com/hku-mars/IPC.git
sudo mv slope_inspection src
catkin_make -DCATKIN_WHITELIST_PACKAGES="mars_base"
catkin_make -DCATKIN_WHITELIST_PACKAGES=
static environment
source devel/setup.bash
roslaunch test_interface map.launch
dynamic environment
source devel/setup.bash
roslaunch test_interface map_dyn.launch
for static environment (high traversability)
source devel/setup.bash
roslaunch ipc ipc_sim.launch
for dynamic environment (low traversability)
source devel/setup.bash
roslaunch ipc ipc_sim_dyn.launch
option 1: PX4 flight controller + receiver + remote controller
roslauch mavros px4.launch
option 2: sbus to USB module + receiver + remote controller
rosrun joy_rc subs_rc_node
purchase: sbus to USB module
option 3: joystick
roslaunch joy_rc BT_x1.launch
| Mode | Description | Channel 4 | Channel 5 | Channel 10 |
|---|---|---|---|---|
| Manual | Initial | < 1800 | < 1500 | < 1500 |
| Hover | Keep hovering | > 1800 | < 1500 | < 1500 |
| Pilot | Position control (without assisted obstacle avoidance) |
> 1800 | > 1500 | < 1500 |
| AutoPilot | Position control (with assisted obstacle avoidance) |
> 1800 | > 1500 | trigger > 1500 |
Note: When switching mode, keep Channel 2 near the center position of 1500.
Note: Channel 11 for rc gain, trigger to high position to increase flight speed.
Due to the limited FOV of the LiDAR, the number of Unknown grid cells may reduce the traversability to navigate during assisted obstacle avoidance flight. In such cases, the pilot can move the control stick rapidly in multiple directions (forward, backward, left, and right) to convert as many Unknown grid cells as possible into Known Free state.

