@page docutils OHM utilities
OHM includes a number of command line utilities supporting generating and manipulating ohm map files. This page provides high level information about the available utilities, their primary purpose and general usage.
The ohmpop
- "ohm populate" - utilities are used to generate ohm map files from a point cloud and corresponding
trajectory file. There are three versions of this utility which mostly share the same command line options. The GPU
enabled versions support some additional options to control GPU related settings.
ohmpopcpu
the CPU implementation of ohm map generationohmpopcuda
a CUDA enabled version of the algorithm. Only present when building with CUDA libraries.ohmpopocl
an OpenCL enabled version of the algorithm. Only present when building with OpenCL libraries.
The input point cloud is expected to be the results of a SLAM scan after global optimisation and loop closure and requires each point to be correctly timestamped in order to correlate the point against the trajectory file. The trajectory file is used to identify the scanner position corresponding to each sample.
Supported inputs are as follows:
- Point cloud:
- Supports LAS/LAZ when ohm is built against
libLAS
andlasZIP
. - Supports many point cloud formats when built against PDAL. Precise formats depend on the PDAL support.
- Supports LAS/LAZ when ohm is built against
- Trajectory file:
- Supports a text file format (see below).
- Supports the same point cloud formats as the input cloud.
The text file trajectory format supports an optional "headings" line as the first line of the file after which each line must be of the following form:
Field | Description |
---|---|
Timestamp | Floating point timestamp value in the same time base as the point cloud |
X | X coordinate for the sensor position, in the same frame as the point cloud |
Y | Y coordinate for the sensor position, in the same frame as the point cloud |
Z | X coordinate for the sensor position, in the same frame as the point cloud |
q0 | Quaternion W component for the sensor rotation (unused) |
q1 | Quaternion X component for the sensor rotation (unused) |
q2 | Quaternion Y component for the sensor rotation (unused) |
q3 | Quaternion Z component for the sensor rotation (unused) |
user fields | Additional fields (optional, ignored) |
For each sample point, ohmpop
tries to match a corresponding trajectory interval in the trajectory file and
interpolates the scanner pose between the nearest trajectory samples.
ohmpop
generates a .ohm
file for the map. By default it generates only the occupancy map layer, but command line
options may be used to generate the voxel mean layer and covariance (normal distribution transforms or ndt) layer. A ply
representation of the ohm map is also generated by default which contains a single point per occupied voxel.
A basic utility for displaying the content of a .ohm
map file. Most ohm algorithms add meta data about how the map was
generated which are included in the ohminfo
display.
A conversion utility which extracts data from an ohm map into a PLY point cloud file. ohm2ply
supports different
colourisation modes - e.g., colour by height - as well as different data extraction modes.
ohm2ply mode | Description |
---|---|
occupancy | (default) Extract a single point per occupied voxel preferring voxel mean over voxel centre if available |
occupancy-centre | Same as occupancy , but always uses the voxel centre to position points |
covariance | Uses the covariance/ndt layer to export polygonal ellipsoids from an ndt based map |
clearance | Extract the clearance layer colouring points by proximity to an occupied voxel (experimental) |
density | Use the voxel density mode as generated by ohmpop[X] --traversal |
heightmap | Extract points from a heightmap map file (see ohmheightmap ). Uses heights from the heightmap layer |
heightmap-mesh | Meshes a single layer heightmap into a polygonal PLY file (experimental) |
Additionally the --voxel-mode
modifies how voxels are exported. This has no effect when using --mode=covariance
.
ohm2ply voxel mode | Description |
---|---|
points | (default) extract a point cloud. |
voxel | Extract a cube per voxel. |
Generates a heightmap from an ohm map file. The output is another ohm map file with a heightmap data layer. Supports a number of heightmap generation methods including generating a multi-layer heightmap.
ohmheightmap mode | Description |
---|---|
planar | Simple planar walk, searching for a ground voxel within a band across the map. Generates a single layer. |
fill | A flood fill based extension of the planar technique. Generates a single layer. |
layered | Generates a multi-layer heightmap. Columns are sorted in ascending height order. |
layered-unordered | Generates a multi-layer heightmap. Columns are unsorted. |
Filters an input point cloud against an ohm map rejecting points which do not fall within occupied voxels in the occupancy map.
A simple utility which converts a floating point value between an occupancy probability and an occupancy value (log space). This uses the same algorithm used in ohm map occupancy calculations.
Converts an ohm heightmap file into a png image. This is an experimental utility and does not support layered heightmaps.
Supports running experimental ohm query algorithms - OhmLineQuery
, OhmNearestNeighbours
.