Motivation
The semantic map is currently only visible as a JSON string on /natural_nav/semantic_map, readable only via ros2 topic echo. For demos, debugging, and general usability, the map should be visible directly in RViz alongside the robot and costmap.
Proposed design
Publish a visualization_msgs/MarkerArray (new topic, e.g. /natural_nav/semantic_map_markers) with, per known label:
- A
TEXT_VIEW_FACING marker at the label's map-frame pose showing the label text.
- A small
SPHERE (or CYLINDER) marker at the same pose as a visual anchor.
- Marker color scaled by detection confidence (e.g. green above ~0.6, yellow/red below).
- Stable marker IDs per label so RViz updates markers in place rather than accumulating duplicates on every publish cycle.
Dependency
Best done alongside #6: today each label has exactly one (possibly wrong, averaged) pose, so a marker for a multi-instance label would render in empty space. Once instances are separated, each instance gets its own marker.
Acceptance criteria
Motivation
The semantic map is currently only visible as a JSON string on
/natural_nav/semantic_map, readable only viaros2 topic echo. For demos, debugging, and general usability, the map should be visible directly in RViz alongside the robot and costmap.Proposed design
Publish a
visualization_msgs/MarkerArray(new topic, e.g./natural_nav/semantic_map_markers) with, per known label:TEXT_VIEW_FACINGmarker at the label's map-frame pose showing the label text.SPHERE(orCYLINDER) marker at the same pose as a visual anchor.Dependency
Best done alongside #6: today each label has exactly one (possibly wrong, averaged) pose, so a marker for a multi-instance label would render in empty space. Once instances are separated, each instance gets its own marker.
Acceptance criteria
/natural_nav/semantic_map_markerspublishes aMarkerArrayreflecting the live semantic map.