SlamToolbox
面向 ROS2 激光点云地图的交互式处理工具,提供 rosbag 录制、点云帧提取、 位姿修正、动态障碍物清除、3D 地图构建和 2D 栅格地图生成。用户通过统一的 终端菜单完成操作,不需要直接调用内部算法脚本。
1. 支持环境
已验证和支持的环境:
- Ubuntu 22.04 x86_64、Python 3.10、ROS2 Humble;
- Ubuntu 24.04 x86_64、Python 3.12、ROS2 Jazzy;
- CMake 3.18 或更高版本;
- 支持 C++17 的编译器;
- OctoMap development package;
- ROS2 的
rclpy和 rosbag2 Python 包。
ERASOR2、Removert 和 Interactive SLAM 通过 Docker 运行;使用这些功能前还需
按 Docker Engine 官方文档
安装 Docker,并确保当前用户能够执行 docker info。其他菜单功能不要求 Docker。
其他 Linux 发行版、macOS、Windows 和 ARM64 尚未验证,不能直接套用下面的 Ubuntu 安装命令。完整安装包含 Open3D,建议至少预留 5 GiB 磁盘空间。
2. 全新安装
请先安装与 Ubuntu 版本匹配的 ROS2:
- Ubuntu 22.04:ROS2 Humble 官方安装文档;
- Ubuntu 24.04:ROS2 Jazzy 官方安装文档。
ROS2 安装完成后,下面的代码块同时安装项目的系统依赖、源码和 Python 环境。
sudo apt update
sudo apt install -y \
build-essential \
cmake \
git \
liboctomap-dev \
python3-dev \
python3-venv
# 必须输出 octomap-config.cmake;没有输出时不要继续安装 Python 包。
dpkg -L liboctomap-dev | grep -E '/octomap-(config|targets)\.cmake$'
git clone https://github.com/FineNav/SlamToolbox.git
cd SlamToolbox
python3 -m venv venv-native
venv-native/bin/python -m pip install --upgrade pip
venv-native/bin/python -m pip install -e .
安装 PyPI 发布版时,在完成上述系统依赖安装后,可以用下面的命令替代
git clone 和 editable install:
python3 -m venv venv-native
venv-native/bin/python -m pip install --upgrade pip
venv-native/bin/python -m pip install slam_toolbox==0.2.0
需要升级到 PyPI 上的最新发布版时执行:
venv-native/bin/python -m pip install --upgrade slam_toolbox
liboctomap-dev 是 native 扩展的必需依赖,不是只在导出 OctoMap 时才需要。
必须先安装它,再执行 pip install -e .;否则 CMake 会因为找不到
octomap-config.cmake 而终止配置。安装 Open3D 等 Python 依赖时下载量较大,
网速较慢并不表示 native 构建卡死。
不要使用系统 Python 直接执行 pip install。Ubuntu 的 externally-managed
Python 可能报 PEP 668 错误,虚拟环境可以避免这个问题。
验证当前 Python、项目路径和 native 扩展:
venv-native/bin/python - <<'PY'
import sys
import slam_toolbox
from slam_toolbox import _native
print("python:", sys.executable)
print("package:", slam_toolbox.__file__)
print("native api:", _native.api_version)
PY
正确安装时应看到:
native api: 5
3. 启动和使用
每次打开新终端后,先加载 ROS2 环境,再从项目目录启动 SlamToolbox。
Ubuntu 22.04 / ROS2 Humble:
source /opt/ros/humble/setup.bash
cd ~/SlamToolbox
venv-native/bin/python -c "import rclpy, rosbag2_py" (自检,不是每次必须)
venv-native/bin/slam_toolbox
或
source /opt/ros/humble/setup.bash
venv-native/bin/slam_toolbox
Ubuntu 24.04 / ROS2 Jazzy:
source /opt/ros/jazzy/setup.bash
cd ~/SlamToolbox
venv-native/bin/python -c "import rclpy, rosbag2_py"(自检,不是每次必须)
venv-native/bin/slam_toolbox
或
source /opt/ros/jazzy/setup.bash
venv-native/bin/slam_toolbox
如果项目没有克隆在 ~/SlamToolbox,把 cd 后面的路径换成实际项目路径。
如果还使用自己的 ROS2 工作空间,应在加载系统 ROS2 后继续 source 该工作空间的
install/setup.bash。
启动后按终端菜单操作:
- 选择已有地图,或者选择“新建地图”并输入名称;
- 第一次进入地图时确认
fixed_frame、base_link_frame和点云话题; - 进入
3D Map,根据数据状态依次完成 rosbag 录制、Frame Extractor、 位姿修正、动态障碍物清除和 Map Builder;不需要的步骤可以跳过; - 需要 2D 导航地图时,进入
2D Map并选择 PGM Generator; - 每个功能完成后,终端都会打印本次输出的绝对路径。
SlamToolbox 只扫描 ~/Map 下的地图目录。选择“新建地图”时会自动创建基本目录;
已有 rosbag 也可以放到 ~/Map/<地图名称>/bag/ 后再启动工具。
4. 输入和输出位置
一个地图的主要目录如下:
~/Map/<map-name>/
├── config.yaml # 地图坐标系和点云话题
├── bag/ # 录制或导入的 rosbag
├── frame/ # 提取的 PCD 帧和对应 .odom 位姿
├── interactive_slam/
│ ├── original/ # 位姿图原始数据
│ └── corrected/ # 交互优化结果
├── pose_correction/ # 位姿修正报告和备份
├── runs/
│ ├── <dynamic-method>/<timestamp>/ # 每次动态清除的独立结果
│ └── map_builder/<timestamp>/ # 每次 3D 建图结果
└── map/
├── map.pcd # 最新 3D 地图
├── map.pgm # 最新 2D 栅格图
└── map.yaml # ROS2 2D 地图配置
动态障碍物清除的每次运行都写入新的时间戳目录,不会覆盖以前的结果:
~/Map/<map-name>/runs/<dynamic-method>/<timestamp>/
├── before.pcd # 动态清除前的完整点云
├── static.pcd # 动态清除后的静态点云
├── dynamic.pcd # 被移除的动态点
├── resource_usage.yaml # 运行时间和资源统计
└── ... # 参数、日志和可视化文件
Map Builder 的历史结果位于:
~/Map/<map-name>/runs/map_builder/<timestamp>/map.pcd
同时会把最新结果复制到 ~/Map/<map-name>/map/map.pcd。PGM Generator
读取这个最新 3D 地图,并把 map.pgm 和 map.yaml 写入同一个 map/ 目录。
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file slam_toolbox-0.2.0.tar.gz.
File metadata
- Download URL: slam_toolbox-0.2.0.tar.gz
- Upload date:
- Size: 94.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd7c16b1733d83602b8299a37f8b97c85e772d786e9a7f0466be74e265d7c3ae
|
|
| MD5 |
f7bf9f18968dfb26330d8a98e846a749
|
|
| BLAKE2b-256 |
7747d59e511e221404b634be69a6c5a55e5fb764157f7046d948fce530e3e9ff
|
Provenance
The following attestation bundles were made for slam_toolbox-0.2.0.tar.gz:
Publisher:
publish.yml on FineNav/SlamToolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slam_toolbox-0.2.0.tar.gz -
Subject digest:
cd7c16b1733d83602b8299a37f8b97c85e772d786e9a7f0466be74e265d7c3ae - Sigstore transparency entry: 2379305177
- Sigstore integration time:
-
Permalink:
FineNav/SlamToolbox@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FineNav
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file slam_toolbox-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: slam_toolbox-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 295.6 kB
- Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
468cba2789e995cf1c4378ec4dc07cd6536b96f4877072af1f37ac5e6a6cdbf9
|
|
| MD5 |
7260067fec2f16ba1cd4f2d19b97ba91
|
|
| BLAKE2b-256 |
e330ddf2b355c46e56ff2206ac4dad613cb39f88eab3e447a0adfaf668663e5d
|
Provenance
The following attestation bundles were made for slam_toolbox-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl:
Publisher:
publish.yml on FineNav/SlamToolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slam_toolbox-0.2.0-cp312-cp312-manylinux_2_34_x86_64.whl -
Subject digest:
468cba2789e995cf1c4378ec4dc07cd6536b96f4877072af1f37ac5e6a6cdbf9 - Sigstore transparency entry: 2379306230
- Sigstore integration time:
-
Permalink:
FineNav/SlamToolbox@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FineNav
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file slam_toolbox-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: slam_toolbox-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 293.3 kB
- Tags: CPython 3.11, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
970226ed369b69bfd87c12c8e922228883af8d1d7148e112ed894562db2efcd1
|
|
| MD5 |
6e5e2432bfdc6f19944d8a0cf883b178
|
|
| BLAKE2b-256 |
221cc32618b04bb07ff56069c99c9d5fd98b749bdd67b49531b199c6571c68a8
|
Provenance
The following attestation bundles were made for slam_toolbox-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl:
Publisher:
publish.yml on FineNav/SlamToolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slam_toolbox-0.2.0-cp311-cp311-manylinux_2_34_x86_64.whl -
Subject digest:
970226ed369b69bfd87c12c8e922228883af8d1d7148e112ed894562db2efcd1 - Sigstore transparency entry: 2379306586
- Sigstore integration time:
-
Permalink:
FineNav/SlamToolbox@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FineNav
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file slam_toolbox-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl.
File metadata
- Download URL: slam_toolbox-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl
- Upload date:
- Size: 291.7 kB
- Tags: CPython 3.10, manylinux: glibc 2.34+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
38b4e25dc0e1be93e174cc87bcd90f26fec5803b3d32d24117dd5ef2b14dbd45
|
|
| MD5 |
2d59bb0b9af2041e98a34a15bfd793f0
|
|
| BLAKE2b-256 |
82e770948ade9688264aa1557bf820b6767b6d117b8bdf5aaed7ca0be8f23149
|
Provenance
The following attestation bundles were made for slam_toolbox-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl:
Publisher:
publish.yml on FineNav/SlamToolbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
slam_toolbox-0.2.0-cp310-cp310-manylinux_2_34_x86_64.whl -
Subject digest:
38b4e25dc0e1be93e174cc87bcd90f26fec5803b3d32d24117dd5ef2b14dbd45 - Sigstore transparency entry: 2379305700
- Sigstore integration time:
-
Permalink:
FineNav/SlamToolbox@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/FineNav
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79bf8a41009a95cde7c422a0d4f68e772ffd77f6 -
Trigger Event:
workflow_dispatch
-
Statement type: