|
| navmap::NavMap | from_occupancy_grid (const nav_msgs::msg::OccupancyGrid &grid, std_msgs::msg::Header &header) |
| | Build a navmap::NavMap from a nav_msgs::msg::OccupancyGrid using a regular triangular surface with shared vertices.
|
| navmap::NavMap | from_regular_grid (const pcl::PointCloud< pcl::PointXYZ > &grid_points, navmap_ros_interfaces::msg::NavMap &out_msg, BuildParams params) |
| | Build a NavMap surface from an organized (grid-shaped) PCL point cloud.
|
| | TEST (FromRegularGrid, FlatGridProducesFullCoverageNoOverlap) |
| | TEST (FromRegularGrid, GentleSlopeUnderLimitStaysFullyCovered) |
| | TEST (FromRegularGrid, MatchesFromOccupancyGridWindingPattern) |
| | TEST (FromRegularGrid, NonFiniteVertexOnlySkipsItsOwnTriangles) |
| | TEST (FromRegularGrid, TooSmallGridReturnsEmpty) |
| | TEST (FromRegularGrid, TooSteepCellsAreSkippedNotTheWholeGrid) |
| | TEST (FromRegularGrid, UnorganizedCloudReturnsEmpty) |
| | TEST (NavMap_FullConversions, EmptyMap_RoundTrip) |
| | TEST (NavMap_FullConversions, RoundTrip_All) |
| | TEST (NavMap_LayerConversions, F32_RoundTrip) |
| | TEST (NavMap_LayerConversions, F64_RoundTrip) |
| | TEST (NavMap_LayerConversions, ToMsg_Throws_OnMissingLayer) |
| | TEST (NavMap_LayerConversions, U8_RoundTrip) |
| | TEST (TestConversions, RoundTrip_ExactEquality_4m_0p1) |
| | TEST (TestConversions, TriangleIndicesFollowPattern0) |
| nav_msgs::msg::OccupancyGrid | to_occupancy_grid (const navmap::NavMap &nm, const std_msgs::msg::Header &header) |
| | Convert a navmap::NavMap back to nav_msgs::msg::OccupancyGrid.
|
| navmap::NavMap from_regular_grid |
( |
const pcl::PointCloud< pcl::PointXYZ > & | grid_points, |
|
|
navmap_ros_interfaces::msg::NavMap & | out_msg, |
|
|
BuildParams | params ) |
Build a NavMap surface from an organized (grid-shaped) PCL point cloud.
Unlike navmap_ros::from_points – which discovers connectivity by neighbor search over an otherwise-unstructured point set, a heuristic that needs either a generous params.neighbor_radius (at real cost in redundant, overlapping triangles) or leaves gaps on an evenly-sampled surface even when every cell is individually navigable – this overload takes a cloud whose grid connectivity is already known (row-major, cloud.width x cloud.height, exactly as PCL's own "organized point cloud" convention) and builds the two triangles per grid cell directly from the (i, j) indices, the same deterministic scheme navmap_ros::from_occupancy_grid already uses. No neighbor search, no possibility of a meshing-artifact gap: the only triangles skipped are ones that fail the slope filter (params.max_slope_deg) or reference a non-finite vertex, i.e. every remaining hole is a real "not navigable here" gap, not a search-radius artifact.
- Parameters
-
| [in] | grid_points | Organized point set (cloud.height must be > 1); row j, column i is at index j * cloud.width + i. |
| [out] | out_msg | Output transport message mirroring the created NavMap. |
| [in] | params | Only params.max_slope_deg and params.max_surfaces apply here; the neighbor-search/edge-length/angle fields are meaningless without a search step and are ignored. |
- Returns
- The constructed navmap::NavMap; empty if
grid_points is not organized (height <= 1) or is smaller than 2x2.