Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
3D LIDAR-based Graph SLAM
| Date | Stars |
|---|---|
| 2026-07-24 | 2318 |
| 2026-07-25 | 2318 |
| 2026-07-28 | 2318 |
| 2026-07-30 | 2318 |
| 2026-08-06 | 2318 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# New SLAM package is released A new 3D SLAM package is released: https://github.com/koide3/glim. # hdl_graph_slam ***hdl_graph_slam*** is an open source ROS package for real-time 6DOF SLAM using a 3D LIDAR. It is based on 3D Graph SLAM with NDT scan matching-based odometry estimation and loop detection. It also supports several graph constraints, such as GPS, IMU acceleration (gravity vector), IMU orientation (magnetic sensor), and floor plane (detected in a point cloud). We have tested this package with Velodyne (HDL32e, VLP16) and RoboSense (16 channels) sensors in indoor and outdoor environments. <img src="imgs/hdl_graph_slam.png" width="712pix" /> [](https://github.com/koide3/hdl_graph_slam/actions/workflows/build.yml) on melodic & noetic ## Third-party extensions See also the following nice works built upon hdl_graph_slam. Feel free to request to include your work in the list :) - Multi-Robot Mapping (ROS2) developed by [Andreas Serov](https://github.com/aserbremen) : [aserbremen/Multi-Robot-Graph-SLAM](https://github.com/aserbremen/Multi-Robot-Graph-SLAM) - [CURB-SG: Collaborative Dynamic 3D Scene Graphs](http://curb.cs.uni-freiburg.de/) developed by Elias Greve : [robot-learning-freiburg/CURB-SG](https://github.com/robot-learning-freiburg/CURB-SG) ## Nodelets ***hdl_graph_slam*** consists of four nodelets. - *prefiltering_nodelet* - *scan_matching_odometry_nodelet* - *floor_detection_nodelet* - *hdl_graph_slam_nodelet* The input point cloud is first downsampled by *prefiltering_nodelet*, and then passed to the next nodelets. While *scan_matching_odometry_nodelet* estimates the sensor pose by iteratively applying a scan matching between consecutive frames (i.e., odometry estimation), *floor_detection_nodelet* detects floor planes by RANSAC. The estimated odometry and the detected floor planes are sent to *hdl_graph_slam*. To compensate the accumulated error of the scan matching, it performs loop detection and optimizes a pose graph which takes various constraints into account. <img src="imgs/nodelets.png" width="712pix" /> ## Constraints (Edges) You can enable/disable each constraint by changing params in the launch file, and you can also change the weight (\*_stddev) and the robust kernel (\*_robust_kernel) of each constraint. - ***Odometry*** - ***Loop closure*** - ***GPS*** - */gps/geopoint* (geographic_msgs/GeoPointStamped) - */gps/navsat* (sensor_msgs/NavSatFix) - */gpsimu_driver/nmea_sentence* (nmea_msgs/Sentence) hdl_graph_slam supports several GPS message types. All the supported types contain (latitude, longitude, and altitude). hdl_graph_slam converts them into [the UTM coordinate](http://wiki.ros.org/geodesy), and adds them into the graph as 3D position constraints. If altitude is set to NaN, the GPS data is treated as a 2D constrait. GeoPoint is the most basic one, which consists of only (lat, lon, alt). Although NavSatFix provides many information, we use only (lat, lon, alt) and ignore all other data. If you're using HDL32e, you can directly connect *hdl_graph_slam* with *velodyne_driver* via */gpsimu_driver/nmea_sentence*. - ***IMU acceleration (gravity vector)*** - */gpsimu_driver/imu_data* (sensor_msgs/Imu) This constraint rotates each pose node so that the acceleration vector associated with the node becomes vertical (as the gravity vector). This is useful to compensate for accumulated tilt rotation errors of the scan matching. Since we ignore acceleration by sensor motion, you should not give a big weight for this constraint. - ***IMU orientation (magnetic sensor)*** - */gpsimu_driver/imu_data* (sensor_msgs/Imu) If your IMU has a reliable magnetic orientation sensor, you can add orientation data to the graph as 3D rotation constraints. Note that, magnetic orientation sensors can be affected by external magnetic disturbances. In such cases, this constraint should be disabled. - ***F
Excerpt of 10,919 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:a5064eb5c65fdc60, topic:ros, topic:slam, readme:robot learning