MCPcopy Create free account
hub / github.com/byangw/PCT_planner

github.com/byangw/PCT_planner @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
29,487 symbols 90,405 edges 3,438 files 7,637 documented · 26% updated 17mo ago★ 45012 open issues

Browse by type

Functions 22,826 Types & classes 6,654 Endpoints 7
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

PCT Planner

Overview

This is an implementation of paper Efficient Global Navigational Planning in 3-D Structures Based on Point Cloud Tomography (accepted by 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

demo

Citing

If you use PCT Planner, please cite the following paper:

Efficient Global Navigational Planning in 3-D Structures Based on Point Cloud Tomography

@ARTICLE{yang2024efficient,
  author={Yang, Bowen and Cheng, Jie and Xue, Bohuan and Jiao, Jianhao and Liu, Ming},
  journal={IEEE/ASME Transactions on Mechatronics}, 
  title={Efficient Global Navigational Planning in 3-D Structures Based on Point Cloud Tomography}, 
  year={2024},
  volume={},
  number={},
  pages={1-12}
}

Prerequisites

Environment

  • Ubuntu >= 20.04
  • ROS >= Noetic with ros-desktop-full installation
  • CUDA >= 11.7

Python

  • Python >= 3.8
  • CuPy with CUDA >= 11.7
  • Open3d

Build & Install

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

Run Examples

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.

Tomogram Construction

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/.

Trajectory Generation

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.

License

The source code is released under GPLv2 license.

For commercial use, please contact Bowen Yang byangar@connect.ust.hk.

Core symbols most depended-on inside this repo

Shape

Method 13,058
Function 9,768
Class 6,463
Enum 191
Route 7

Languages

C++87%
Python8%
C3%
C#1%
Java1%
TypeScript1%

Modules by API surface

planner/lib/3rdparty/pybind11/include/pybind11/pytypes.h237 symbols
planner/lib/3rdparty/gtsam-4.1.1/wrap/pybind11/include/pybind11/pytypes.h212 symbols
planner/lib/3rdparty/gtsam-4.1.1/gtsam/3rdparty/Eigen/unsupported/test/mpreal/mpreal.h206 symbols
planner/lib/3rdparty/gtsam-4.1.1/wrap/pybind11/include/pybind11/cast.h178 symbols
planner/lib/3rdparty/pybind11/include/pybind11/numpy.h163 symbols
planner/lib/3rdparty/gtsam-4.1.1/gtsam/3rdparty/Eigen/Eigen/src/Core/util/ForwardDeclarations.h152 symbols
planner/lib/3rdparty/gtsam-4.1.1/wrap/pybind11/include/pybind11/numpy.h150 symbols
planner/lib/3rdparty/gtsam-4.1.1/gtsam/3rdparty/Eigen/Eigen/src/Core/util/Meta.h149 symbols
planner/lib/3rdparty/gtsam-4.1.1/gtsam/3rdparty/metis/GKlib/gkregex.c146 symbols
planner/lib/3rdparty/gtsam-4.1.1/gtsam/3rdparty/Eigen/Eigen/src/Core/MathFunctions.h145 symbols
planner/lib/3rdparty/gtsam-4.1.1/gtsam/3rdparty/Eigen/Eigen/src/Core/functors/UnaryFunctors.h141 symbols
planner/lib/3rdparty/gtsam-4.1.1/gtsam/3rdparty/Eigen/unsupported/Eigen/CXX11/src/util/CXX11Meta.h131 symbols

For agents

$ claude mcp add PCT_planner \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page