This is an implementation of paper Efficient Global Navigational Planning in 3D Structures based on Point Cloud Tomography (submitted to TMECH). It provides a highly efficient and extensible global navigation framework based on a tomographic understanding of the environment to navigate ground robots in multi-layer structures.
Demonstrations: pct_planner
- Ubuntu >= 20.04
- ROS >= Noetic with ros-desktop-full installation
- CUDA >= 11.7
- Python >= 3.8
- CuPy with CUDA >= 11.7
- Open3d
Inside the package, there are two modules: the point cloud tomography module for tomogram reconstruction (in tomography/) and the planner module for path planning and optimization (in planner/). You only need to build the planner module before use. In planner/, run build_thirdparty.sh first and then run build.sh.
cd planner/
./build_thirdparty.sh
./build.sh
Three example scenarios are provided: "Spiral", "Building", and "Plaza".
- "Spiral": A spiral overpass scenario released in the 3D2M planner.
- "Building": A multi-layer indoor scenario with various stairs, slopes, overhangs and obstacles.
- "Plaza": A complex outdoor plaza for repeated trajectory generation evaluation.
To plan in a scenario, first you need to construct the scene tomogram using the pcd file.
- Unzip the pcd files in rsc/pcd/pcd_files.zip to rsc/pcd/.
- For scene "Spiral", you can download the pcd file from 3D2M planner spiral0.3_2.pcd.
- Run roscore, start RViz with the provided config (rsc/rviz/pct_ros.rviz).
- In tomography/scripts/, run tomography.py with the --scene argument:
cd tomography/scripts/
python3 tomography.py --scene Spiral
- The generated tomogram is visualized as ROS PointCloud2 message in RViz and saved in rsc/tomogram/.
After the tomogram is constructed, you can run the trajectory generation example.
- In planner/scripts/, run plan.py with the --scene argument:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/YOUR/DIRECTORY/TO/PCT_planner/planner/lib/3rdparty/gtsam-4.1.1/install/lib
cd planner/scripts/
python3 plan.py --scene Spiral
- The generated trajectory is visualized as ROS Path message in RViz.
The source code is released under GPLv2 license.
For commercial use, please contact Bowen Yang [email protected].