# carto_map_toolbox
**Repository Path**: gebidashu/carto_map_toolbox
## Basic Information
- **Project Name**: carto_map_toolbox
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2025-02-15
- **Last Updated**: 2025-09-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# carto_map_toolbox
## 简介
carto_map_toolbox是一个基于Cartographer的离线地图编辑工具,可以读取pbstream地图文件并通过ROS话题发布地图数据,在Rviz上可视化显示地图数据。与cartographer_ros中的`visualize_pbstream.launch`不同的是在carto_map中使用了独立的节点加载和显示地图数据,并且提供ROS service接口实现对地图的编辑,目前支持以下地图编辑功能:
- 子图数据删除
- 轨迹数据删除
- 子图位姿编辑
- 手动回环优化
- 子图重叠率检测
参考:https://github.com/sqrt81/carto_slam
https://github.com/SteveMacenski/slam_toolbox
## 安装编译
系统环境:ubuntu20.04、ROS noetic
> **注意:** 仓库内包含了原生的cartographer和cartographer_ros功能包,注意编译冲突
安装absl
安装glog
在本地创建ROS工作空间,将仓库克隆到工作空间然后编译
```
mkdir -p docker_ws/src
cd docker_ws/src
git clone
cd ..
catkin_make_isolated
source devel_isolated/setup.bash
```
## 使用说明
使用前确认已经source工作空间的环境变量
```
source devel_isolated/setup.bash
```
使用roslaunch启动节点
```
roslaunch carto_map visualize_pbstream.launch pbstream_filename:=/home/dean/map/
```
其中变量`pbstream_filename`为加载地图文件夹路径
> **注意:** 输入参数为**地图文件夹路径**,不是pbstream地图文件的路径
节点启动后会自动打开Rviz显示从文件中加载到的地图,然后可以使用Rviz中的CartoSlamToolboxPlugin对地图进行编辑操作。也可以通过调用ROS service接口实现对地图的编辑。
1. 删除子图数据
2. 删除轨迹数据
3. 保存地图
4. 子图重叠率检测
5. 子图位姿编辑和优化
> **注意:** 在Interactive Mode开启的时候,Submap中发布的Submap Pose Markers遮挡InteractiveMarkers,导致鼠标无法选中和拖动InteractiveMarkers,需要先在Submap中关闭All Submap Pose Markers的显示
## ROS service接口
1. 删除子图数据
```
rosservice call /carto_map/remove_submap "trajectory_id: 0 submap_index: 1"
```
2. 删除轨迹数据
```
rosservice call /carto_map/remove_trajectory "trajectory_id: 1"
```
3. 保存地图
```
rosservice call /carto_map/save_map "filename: '/home/dean/map'"
```
- 参数`filename`为地图文件夹路径
4. 手动回环优化
```
rosservice call /carto_map/optimize_submap "{trajectory_id: 0, submap_index: 9, x: 0.0, y: 45.0, theta: 0.04}"
```
5. 子图重叠率检测
```
rosservice call /carto_map/compute_overlap_submap "{}"
```
此版本使用低分辨率子图进行重叠率检测,每次新生成的低分辨率子图会保存到meta.json文件中。
每次启动节点加载地图文件过程中,会从meta.json文件中读取之前生成好的低分辨率子图。
## TODO