TextMap builds 3D text landmarks for indoor navigation.
This package is the mapping-side component in the text navigation pipeline:
- Consumes text detections from NavOCR, and pose from an external SLAM
- Lifts detected text into 3D landmarks in the map frame
- Merges repeated observations into stable landmark entries
This README only summarizes the package role and ROS interface.
For dependencies, build instructions, and end-to-end launch examples, see the
TextMap_Examples repository.

TextMap does not perform SLAM itself.
Currently, it supports rtabmap and slam_toolbox as slam_backend options, and custom SLAM backends can also be integrated.
| Topic | Type | Description |
|---|---|---|
/navocr/detections |
vision_msgs/Detection2DArray |
OCR detections consumed as landmark observations |
/camera/depth/image_rect_raw |
sensor_msgs/Image |
Depth image used to project detections into 3D |
/camera/infra1/camera_info |
sensor_msgs/CameraInfo |
Camera intrinsics for depth projection |
/odom |
nav_msgs/Odometry |
Robot odometry used for motion filtering and pose buffering |
/mapGraph |
rtabmap_msgs/msg/MapGraph |
RTAB-Map pose graph used for landmark re-anchoring |
/info |
rtabmap_msgs/msg/Info |
RTAB-Map graph update timing / synchronization info |
| Topic | Type | Description |
|---|---|---|
/textmap/markers |
visualization_msgs/msg/MarkerArray |
Landmark markers for RViz visualization |
| Service | Type | Description |
|---|---|---|
/textmap/save_landmarks |
std_srvs/srv/Trigger |
Saves the current landmark set to YAML |
| Parameter | Description |
|---|---|
slam_backend |
Selects the localization / SLAM backend used by TextMap, such as rtabmap or slam_toolbox |
landmark_save_path |
Output path for the exported landmarks.yaml file |
The text landmark mapping process can be monitored in RViz through the published landmark markers.
TextMap produces landmarks.yaml, which is consumed by text_nav_bridge
for text-command navigation.
Example output:
landmarks:
- id: 1
text: "restroom"
position: {x: 3.21, y: -1.05, z: 0.82}
confidence: 0.92
observation_count: 5Apache License 2.0