No version for distro humble. Known supported distros are highlighted in the buttons above.
No version for distro jazzy. Known supported distros are highlighted in the buttons above.
No version for distro rolling. Known supported distros are highlighted in the buttons above.
Repository Summary
Description | Toy LiDAR SLAM based on NDT for course AAE4011 |
Checkout URI | https://github.com/weisongwen/toyslam.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2025-03-30 |
Dev Status | UNKNOWN |
CI status | No Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
README
ToySLAM: A ROS Package for 3D Point Cloud Registration using NDT for PolyU course AAE4011
Overview
ToySLAM is a lightweight ROS package for 3D point cloud registration using the Normal Distributions Transform (NDT) algorithm. Designed for educational purposes and experimentation, this package provides a modular pipeline to process, align, and visualize point clouds in real-time. It serves as a foundational framework for SLAM (Simultaneous Localization and Mapping) applications and can be extended for robotics or autonomous systems.
Features
- Modular Architecture: Four standalone nodes for processing, alignment, mapping, and visualization.
- NDT-Based Registration: Efficient alignment of 3D point clouds using the NDT implementation.
- Real-Time Visualization: Live preview of registered point clouds and trajectory in RViz.
- Configurable Parameters: Tune algorithm behavior via ROS parameters for optimal performance.
- Configurable Parameters: Tune algorithm behavior via ROS parameters for optimal performance.
Nodes
- lidar_subscriber_node.cpp: subscribe the 3D LiDAR point clouds from the rosbag file and save the point clouds to the PCD files.
- ndt_omp_mapping_node.cpp: read the PCD file continuously and perform the ICP for the continuous PCD files. Output the 4x4 transformation matrix.
- ndt_omp_node.cpp: similar to the File 2, but also plot the trajectory in the Rviz of ROS.
- ndt_rosbag_mapping_node.cpp: Directly read the 3D point clouds from the rosbag file and perform the ICP continuously.
Folder tree
.
├── CMakeLists.txt
├── package.xml
└── src
├── lidar_subscriber_node.cpp
├── ndt_omp_mapping_node.cpp
├── ndt_omp_node.cpp
└── ndt_rosbag_mapping_node.cpp
Dependencies
- ROS Noetic (or other ROS distributions)
-
PCL 1.10+ (
libpcl-dev
,ros-<distro>-pcl-ros
) - Eigen3
- RViz for visualization
Installation
- Clone this repository into your ROS workspace:
cd ~/catkin_ws/src
git clone https://github.com/weisongwen/ToySLAM
catkin_make
rosrun ToySLAM ndt_rosbag_mapping_node /home/wws/Download/UrbanNav-HK_Whampoa-20210521_sensors.bag
NEW updates for further extension (Optional)
-
- simulate the UWB ranging measurements and do the positioning
roslaunch ToySLAM fusion.launch
-
- UWB/IMU fusion via sliding window optimization
rosrun ToySLAM uwb_imu_node
-
- UWB/IMU data simulation. Perform the least square estimation for UWB ranging measurements with visualization
roslaunch ToySLAM uwb_imu_fusion_sim.launch
-
- UWB/IMU fusion with EKF. The simulated IMU data is not correct, please use the dataset
rosrun ToySLAM uwb_imu_EKF_node
rosbag play 2025-02-06-16-30-08.bag
- UWB/IMU fusion with EKF. The simulated IMU data is not correct, please use the dataset
CONTRIBUTING
No CONTRIBUTING.md found.
No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.