ROS 2 LiDAR SLAM. Frontend is RKO-LIO (MIT), backend is graph_based_slam (BSD-2). Output is an Autoware-compatible pointcloud_map/ directory plus map_projector_info.yaml. No GPL components on the default workflow.
develop tracks the current v2 alpha line. Latest tagged public beta: v0.2.2 Release Notes.
cd ~/ros2_ws/src
git clone --recursive https://github.com/rsasaki0109/lidarslam_ros2.git
cd ..
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bashIf you cloned without --recursive: git -C src/lidarslam_ros2 submodule update --init --recursive.
Downloads NTU VIRAL tnp_01 (~580 s outdoor bag) and runs RKO-LIO + graph_based_slam end to end into an Autoware-loadable map.
cd src/lidarslam_ros2
bash scripts/download_ntu_viral_tnp01.sh
bash scripts/run_autoware_quickstart.sh
python3 scripts/verify_autoware_map.py output/.../pointcloud_mapverify_autoware_map.py prints map_verify: PASS when Autoware map loaders can open the result.
bash scripts/run_autoware_map_beginner.sh /path/to/rosbag2Or invoke the launch files directly:
ros2 launch lidarslam rko_lio_slam.launch.py \
bag_path:=/path/to/rosbag2 \
lidar_topic:=/os_cloud_node/points \
imu_topic:=/os_cloud_node/imu
ros2 service call /map_save std_srvs/srv/EmptyRequired topics, optional GNSS / IMU pre-integration, and the dynamic-object filter parameters are documented in docs/workflows.md.
- Loop closure with built-in Scan Context (GPL-free), plus opt-in BEV / SOLiD / STD/BTC-style Triangle descriptors and optional 3D-BBS verification.
- Optional GNSS georeferencing; writes
map_projector_info.yamlfor direct Autoware loading. - AWSIM → Autoware autonomous-driving demo on the map you build, including lanelet2 auto-generation from the SLAM trajectory.
- Save-time dynamic-object filter and NIS-driven adjacent-edge auto-scaling.
- Benchmark + release-gate tooling with per-dataset thresholds and report helpers.
bash scripts/test_awsim_setup.sh
bash scripts/run_awsim_selfmade_map_demo.shMulti-terminal bringup and lanelet2 notes: docs/awsim-autonomous-driving-tutorial.md.
bash scripts/run_rko_lio_graph_benchmark.sh
bash scripts/run_release_readiness_checks.sh --fail-on-profilesPer-dataset pass / target thresholds live in scripts/release_profiles.yaml. Details and optional MID-360 / production-bundle gates: docs/benchmarking.md.
- Getting started: Autoware quickstart · Operator workflows · Autoware Foxglove
- Pipelines: AWSIM autonomous-driving tutorial · Autoware-compatible map authoring
- Benchmarking: Benchmarking and release gate · Comparison
- Project: v0.2.2 release notes · Contributing · Changelog · Releasing
Preview the doc site locally: python3 -m mkdocs serve.
| ROS 2 distro | Ubuntu | Scope |
|---|---|---|
| Humble | 22.04 | default workflow build + package tests in CI |
| Jazzy | 24.04 | default workflow build + package tests in CI; Autoware dogfood exercised locally |
graph_based_slam is BSD-2-Clause; RKO-LIO, DLIO, and the optional vendored 3D-BBS are MIT; FAST_GICP is BSD-3-Clause; built-in Scan Context is implemented locally. The default workflow excludes GPL-only components — Thirdparty/lio-sam and Thirdparty/3d_bbs are gated by COLCON_IGNORE.
bash scripts/run_default_ci_checks.sh
bash scripts/run_release_readiness_checks.sh --ape-threshold 0.10Reference commands and parameter pointers live in docs/workflows.md.
