You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: discourse/3-layered-global-occupancy-map.md
+5-4Lines changed: 5 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ observations, can be added later.
23
23
* Robot-mounted sources include the observation-frame pose at observation time
24
24
* The Rust map server composes a static occupancy grid and active observations
25
25
into `/map`
26
-
* The Nav2 demo converts scans from three robots into point regions and displays the source contributions and combined map
26
+
* The Nav2 demo converts scans from three robots into clear ray sectors and occupied endpoint regions, then displays the source contributions and map
27
27
* The observation messages live in `rmf_layered_map_msgs`, leaving
28
28
`rmf_prototype_msgs` unchanged
29
29
@@ -125,13 +125,13 @@ occupied space is not accidentally erased by another active source.
125
125
126
126
# Three-Robot Nav2 Demo
127
127
128
-
The launch file starts three robots in different free corners of the warehouse, cycles them through fixed Nav2 goals, and spawns one deterministic Gazebo box near each robot. Each observation node subscribes to its robot's local `sensor_msgs/LaserScan`, filters invalid or out-of-range returns, and publishes the remaining scan endpoints as point regions.
128
+
The launch file starts three robots in different free corners of the warehouse, cycles them through fixed Nav2 goals, and spawns one deterministic Gazebo box near each robot. Each observation node subscribes to its robot's local `sensor_msgs/LaserScan`, filters invalid or out-of-range returns, and publishes free-space ray sectors as convex polygons and occupied endpoints as point regions.
129
129
130
-
Each scan is added to a rolling observation history until its TTL expires. An update may set `reset_source` so the new scan replaces all active observations from that source instead of being added to its history. The observation-frame pose is recorded in the shared `map` frame so the map server can transform the scan-local regions before rasterizing them.
130
+
Each scan adds temporary clear and obstacle patches to a rolling observation history. The map server rasterizes clear sectors before obstacle endpoints so a measured hit remains occupied. Active obstacle evidence still wins over clear evidence until its TTL expires. An update may set `reset_source` so the new scan replaces all active observations from that source instead of being added to its history. The observation-frame pose is recorded in the shared `map` frame so the map server can transform the scan-local regions before rasterizing them.
131
131
132
132
The demo launches Nav2 localization, planning, and control for the fixed goal loops, but does not launch RMF planning. Robot-local RViz windows show Nav2 state, while another RViz window displays the combined global `/map`. The combined view overlays incoming region updates as colored markers grouped by source, with the same retention behavior as the map contributions.
133
133
134
-
The scan-to-region conversion is deliberately simple so its information loss and publication cost are visible. Scan sampling reduces the number of point regions, publication throttling limits the snapshot rate, and the observation range limits represented returns. The TTL controls how quickly stale snapshots expire. Each publisher logs its number of input beams and output regions so message density, update rate, and visual fidelity can be compared. The current demo publishes occupied endpoints only; it does not convert raycast clearing into free-space regions or compress adjacent points into larger regions.
134
+
The scan-to-region conversion uses one convex sector per sampled beam instead of expanding a Bresenham line into many point regions. Scan sampling reduces the number of sectors, publication throttling limits the snapshot rate, and the observation range limits represented returns. The TTL controls how quickly stale observations expire. Each publisher logs its input beams and clear and obstacle regions so message density, update rate, and visual fidelity can be compared. The current demo remains a 2D occupancy approximation; it does not fuse probabilistic confidence or compress adjacent sectors into larger regions.
135
135
136
136
# Example Flow
137
137
@@ -165,6 +165,7 @@ The committed server and demo tests cover:
165
165
* late older snapshots being ignored
166
166
* reset updates removing observations from the same source and map
167
167
* multiple robot sources being stitched into one composed grid
168
+
* converting laser beams into clear sectors and occupied endpoints
168
169
* filtering invalid and out-of-range laser returns
169
170
* preserving original beam angles when scan points are sampled
170
171
* converting point and rectangle updates into source-colored markers
0 commit comments