Skip to main content
Version: 0.6 (Latest)

Guide Server Protocol Buffer API

guide.proto

Result

Result status for pose estimation operations

NameNumberDescription
RESULT_UNSPECIFIED0
OK1Operation completed without errors - check confidence for quality assessment
INSUFFICIENT_MAP_COVERAGE2Insufficient 3D map coverage at the input pose location
FAILED3Operation failed due to errors - output data should not be used

ReferenceFrame

Spatial reference frame for input/output coordinates

NameNumberDescription
REFERENCE_FRAME_UNSPECIFIED0
ECEF1Earth-Centered Earth-Fixed coordinates
GEODETIC2Geodetic coordinates with local NED orientation

HorizontalUnit

Unit of measurement for horizontal geodetic coordinates (latitude/longitude)

NameNumberDescription
HORIZONTAL_UNIT_UNSPECIFIED0
RADIAN1Radians (default)
DEGREE2Degrees

VerticalUnit

Unit of measurement for vertical coordinate (height/altitude)

NameNumberDescription
VERTICAL_UNIT_UNSPECIFIED0
METER1Meters (default)
FOOT2Feet

VerticalDatum

Vertical datum reference for height measurements

NameNumberDescription
VERTICAL_DATUM_UNSPECIFIED0
ELLIPSOID1WGS84 Ellipsoid (default)
EGM20082EGM2008 Geoid

LicenseStatus

License verification status reported by server

NameNumberDescription
LICENSE_STATUS_UNSPECIFIED0
LICENSE_STATUS_OK1
LICENSE_STATUS_INVALID2
LICENSE_STATUS_EXPIRED3
LICENSE_STATUS_PROFILE_INVALID4
LICENSE_STATUS_FINGERPRINT_MISMATCH5
LICENSE_STATUS_FINGERPRINT_MISSING6
LICENSE_STATUS_DISABLED7License enforcement disabled at build time
LICENSE_STATUS_NOT_SET8License path not configured

GeodeticOptions

Options for geodetic coordinate representation

FieldTypeDescription
vertical_datumVerticalDatumVertical datum reference (default: ELLIPSOID)
horizontal_unitHorizontalUnitUnit for latitude and longitude (default: RADIAN)
vertical_unitVerticalUnitUnit for height/altitude (default: METER)

CoordinateSystem

Coordinate system specification

FieldTypeDescription
reference_frameReferenceFrameSpatial reference frame for coordinates (default: GEODETIC)
geodetic_optionsGeodeticOptionsGeodetic coordinate options (optional) Only applies when reference_frame is GEODETIC. If not provided, default GeodeticOptions will be used.
coordinate_epochfloatCoordinate epoch for tectonic plate correction (optional, RECOMMENDED: omit) Year as decimal number (e.g., 2025.0 for January 1st, 2025). Enables correction for tectonic plate movement between epoch of reference map and epoch of mission, improving accuracy for high-precision applications. Uses GSRM2.1 model for tectonic plate movement. If not provided, no tectonic correction is applied. Configure this via the server options CoordinateSystem when high-precision tectonic correction is required. NOTE: Tectonic plate shift is typically only a few centimeters per year in most locations, so this can be omitted for many applications unless high precision is required. LIMITATION: Models average, long-term plate movement only (GSRM2.1). Does NOT model deformation in zones along tectonic plate borders, compensate for sudden shifts (earthquakes, landslides), or account for local subsidence/uplift from other geological processes.

Config

Configuration that can be tuned via the Guide Server RPC API.

FieldTypeLabelDescription
image_widthuint32Width of input images in pixels (REQUIRED) Must be consistent for all images processed with this Guide instance. Must match the actual width of images passed to updatePose() and updatePosition().
image_heightuint32Height of input images in pixels (REQUIRED) Must be consistent for all images processed with this Guide instance. Must match the actual height of images passed to updatePose() and updatePosition().
coordinate_systemCoordinateSystemCoordinate system specification Defines the complete coordinate system configuration including reference frame, geodetic options, and coordinate epoch for tectonic plate correction.
detail_stage_1uint32Level of detail of map for initial pose search Higher values = more accurate but slower processing. Recommended values: 7-8 Values >= 32 will cause overflow - validated at runtime
detail_stage_2uint32Level of detail of map for final pose refinement Should be >= detail_stage_1 for best results. Recommended values: 8-9 Values >= 32 will cause overflow - validated at runtime
confidence_intervalfloatConfidence interval for covariance estimation (0.0-1.0) Statistical confidence level for uncertainty estimates.
• 0.68: 1-sigma (68% confidence)
• 0.90: Default, good balance
• 0.95: 2-sigma (95% confidence)
• 0.99: High confidence Must be in range (0.0, 1.0) - validated at runtime
map_pathsstringrepeatedOptional server-side map selection for future guides. When configured via the Config RPC, these override server defaults from JSON configuration and discovered maps from directories. If empty, the server falls back to CLI and JSON configuration.
map_idsstringrepeatedOptional map IDs (resolved server-side to absolute paths). Map IDs are obtained from QueryAvailableMapsResponse. When provided, these override map_paths and the server's default map set.

Timestamp

High-resolution timestamp (nanoseconds since epoch)

FieldType
nanosecondsint64

Position3D

3D position vector

FieldTypeDescription
xdoubleFor Geodetic: Latitude(rad), For ECEF: X(m)
ydoubleFor Geodetic: Longitude(rad), For ECEF: Y(m)
zdoubleFor Geodetic: Height above Ellipsoid(m), For ECEF: Z(m)

Quaternion

Unit quaternion for attitude representation

FieldTypeDescription
xdoublex component
ydoubley component
zdoublez component
wdoublew component (scalar)

CovarianceMatrix3x3

3x3 covariance matrix in row-major order

FieldTypeLabelDescription
valuesdoublerepeated9 elements in row-major order

CovarianceMatrix6x6

6x6 covariance matrix in row-major order

FieldTypeLabelDescription
valuesdoublerepeated36 elements in row-major order

PoseOutput

Output data from pose estimation

FieldTypeDescription
resultResultOperation result status Indicates whether the operation completed without errors. This does NOT indicate quality - check confidence field for that. Only use other fields if result == Result::Ok
positionPosition3DRefined camera position Format depends on the configured reference frame:
• Geodetic: [Latitude(rad), Longitude(rad), Height above Ellipsoid(m)]
• ECEF: [X(m), Y(m), Z(m)]
attitudeQuaternionRefined camera attitude as unit quaternion Format: [x, y, z, w] where w is the scalar component. Represents rotation from reference frame to camera frame:
• Geodetic: Rotation from local NED to camera
• ECEF: Rotation from ECEF axes to camera
pose_covarianceCovarianceMatrix6x66x6 pose covariance matrix in row-major order Represents uncertainty in position (first 3 diagonal elements) and attitude (last 3 diagonal elements). Both position and attitude uncertainties are represented as variances (squared values) and refer to the axes of the configured reference frame. Units:
• Position uncertainty: meters (squared)
• Attitude uncertainty: radians (squared) Access element (i,j) as: poseCovariance[i*6 + j]
timestampTimestampOptional timestamp (same as input) Preserved from input for correlation with image data.
confidencedoubleConfidence score (0.0-1.0)
• Recommended quality metric Primary indicator of result quality and reliability. Quality assessment guidelines:
• > 0.95: Excellent quality - high confidence result
• 0.85-0.95: Good quality - reliable for most applications
• 0.7-0.85: Moderate quality - use with caution
• < 0.7: Poor quality - recommended to reject the result Always check this value even when result == Result::Ok

PositionOutput

Output data from position estimation Same as PoseOutput but without attitude estimation.

FieldTypeDescription
resultResultOperation result status Indicates whether the operation completed without errors. This does NOT indicate quality - check confidence field for that. Only use other fields if result == Result::Ok
positionPosition3DRefined camera position Format depends on the configured reference frame:
• Geodetic: [Latitude(rad), Longitude(rad), Height above Ellipsoid(m)]
• ECEF: [X(m), Y(m), Z(m)]
position_covarianceCovarianceMatrix3x33x3 position covariance matrix in row-major order Represents uncertainty in position. Units: meters (squared) Access element (i,j) as: positionCovariance[i*3 + j]
timestampTimestampOptional timestamp (same as input) Preserved from input for correlation with image data.
confidencedoubleConfidence score (0.0-1.0)
• Recommended quality metric Primary indicator of result quality and reliability. Quality assessment guidelines:
• > 0.95: Excellent quality - high confidence result
• 0.85-0.95: Good quality - reliable for most applications
• 0.7-0.85: Moderate quality - use with caution
• < 0.7: Poor quality - recommended to reject the result Always check this value even when result == Result::Ok

GuideInitRequest

Request message for Guide initialization Global configuration such as image size, reference frame and coordinate epoch is configured via the server's default config or optionally attached here.

FieldTypeDescription
configConfigOptional configuration to apply before initializing this guide. Semantics are equivalent to calling the Config RPC with this Config and then calling GuideInitRequest without config.

GuideInitResponse

Response message for Guide initialization

FieldTypeDescription
successboolSuccess status
error_messagestringError message if initialization failed

UpdatePoseRequest

Request message for pose update

FieldTypeDescription
image_databytesGrayscale image data (8-bit, single channel)
h_fovdoubleHorizontal field of view in radians
v_fovdoubleVertical field of view in radians
positionPosition3DRefined camera position Format depends on the configured reference frame:
• Geodetic: [Latitude(rad), Longitude(rad), Height above Ellipsoid(m)]
• ECEF: [X(m), Y(m), Z(m)]
attitudeQuaternionRefined camera attitude as unit quaternion Format: [x, y, z, w] where w is the scalar component. Represents rotation from reference frame to camera frame:
• Geodetic: Rotation from local NED to camera
• ECEF: Rotation from ECEF axes to camera
pose_covarianceCovarianceMatrix6x66x6 pose covariance matrix in row-major order Represents uncertainty in position (first 3 diagonal elements) and attitude (last 3 diagonal elements). Both position and attitude uncertainties are represented as variances (squared values) and refer to the axes of the configured reference frame. Units:
• Position uncertainty: meters (squared)
• Attitude uncertainty: radians (squared) Access element (i,j) as: poseCovariance[i*6 + j]
max_time_msdoubleOptional maximum processing time in milliseconds
timestampTimestampOptional timestamp (same as input) Preserved from input for correlation with image data.

UpdatePoseResponse

Response message for pose update

FieldTypeDescription
pose_outputPoseOutputPose estimation output

UpdatePositionRequest

Request message for position update

FieldTypeDescription
image_databytesGrayscale image data (8-bit, single channel)
h_fovdoubleHorizontal field of view in radians
v_fovdoubleVertical field of view in radians
positionPosition3DCamera position Format depends on the configured reference frame:
• Geodetic: [Latitude(rad), Longitude(rad), Height above Ellipsoid(m)]
• ECEF: [X(m), Y(m), Z(m)]
position_covarianceCovarianceMatrix3x33x3 position covariance matrix in row-major order Represents uncertainty in position. Units: meters (squared) Access element (i,j) as: positionCovariance[i*3 + j]
max_time_msdoubleOptional maximum processing time in milliseconds
timestampTimestampOptional timestamp (same as input) Preserved from input for correlation with image data.

UpdatePositionResponse

Response message for position update

FieldTypeDescription
position_outputPositionOutputPosition estimation output

RenderReferenceImageRequest

Request message for rendering reference image

FieldTypeDescription
h_fovdoubleHorizontal field of view in radians
v_fovdoubleVertical field of view in radians
positionPosition3DPosition for rendering
attitudeQuaternionAttitude as unit quaternion

RenderReferenceImageResponse

Response message for rendering reference image

FieldTypeDescription
successboolSuccess status
image_databytesRendered grayscale image data (if successful)
error_messagestringError message if rendering failed

GuideDestroyRequest

Request message for Guide cleanup/destruction

GuideDestroyResponse

Response message for Guide cleanup/destruction

FieldTypeDescription
successboolSuccess status

GetStatusRequest

A simple ping/status request

GetStatusResponse

FieldTypeDescription
successbool
server_versionstring
messagestringoptional human-readable info
guide_initializedboolwhether a guide instance exists
license_statusLicenseStatusserver-side license status
fingerprint_b64stringdevice fingerprint (base64), if available
guide_sdk_versionstringRaptor Guide SDK version (MAJOR.MINOR.PATCH)

QueryAvailableMapsRequest

Request message for querying available maps

No parameters needed - returns all available maps

MapInfo

Per-directory map listing entry

FieldTypeDescription
map_idstringUnique identifier for the map
relative_pathstringRelative path to the map with respect to its base directory

MapDirectoryEntry

FieldTypeLabelDescription
directorystringDirectory path (absolute or canonical top-level directory configured on server)
mapsMapInforepeatedMaps under this directory

QueryAvailableMapsResponse

Response message for querying available maps

FieldTypeLabelDescription
successboolSuccess status
directoriesMapDirectoryEntryrepeatedMaps grouped per directory
error_messagestringError message if query failed

GetConfigRequest

Config management messages (read-only server default configuration)

GetConfigResponse

FieldTypeDescription
successbool
configConfigServer default configuration only (not modified by RPCs)
error_messagestring

GuideRequest

ZeroMQ communication wrapper messages (separate request/response)

FieldTypeDescription
request_idstringFor request/response correlation
init_requestGuideInitRequest
update_pose_requestUpdatePoseRequest
update_position_requestUpdatePositionRequest
render_requestRenderReferenceImageRequest
destroy_requestGuideDestroyRequest
query_maps_requestQueryAvailableMapsRequest
get_config_requestGetConfigRequest
get_status_requestGetStatusRequest

GuideResponse

FieldTypeDescription
request_idstringCorrelates to GuideRequest.request_id
init_responseGuideInitResponse
update_pose_responseUpdatePoseResponse
update_position_responseUpdatePositionResponse
render_responseRenderReferenceImageResponse
destroy_responseGuideDestroyResponse
query_maps_responseQueryAvailableMapsResponse
get_config_responseGetConfigResponse
get_status_responseGetStatusResponse

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
doubledoubledoublefloatfloat64doublefloatFloat
floatfloatfloatfloatfloat32floatfloatFloat
int32Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.int32intintint32intintegerBignum or Fixnum (as required)
int64Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.int64longint/longint64longinteger/stringBignum
uint32Uses variable-length encoding.uint32intint/longuint32uintintegerBignum or Fixnum (as required)
uint64Uses variable-length encoding.uint64longint/longuint64ulonginteger/stringBignum or Fixnum (as required)
sint32Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.int32intintint32intintegerBignum or Fixnum (as required)
sint64Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.int64longint/longint64longinteger/stringBignum
fixed32Always four bytes. More efficient than uint32 if values are often greater than 2^28.uint32intintuint32uintintegerBignum or Fixnum (as required)
fixed64Always eight bytes. More efficient than uint64 if values are often greater than 2^56.uint64longint/longuint64ulonginteger/stringBignum
sfixed32Always four bytes.int32intintint32intintegerBignum or Fixnum (as required)
sfixed64Always eight bytes.int64longint/longint64longinteger/stringBignum
boolboolbooleanbooleanboolboolbooleanTrueClass/FalseClass
stringA string must always contain UTF-8 encoded or 7-bit ASCII text.stringStringstr/unicodestringstringstringString (UTF-8)
bytesMay contain any arbitrary sequence of bytes.stringByteStringstr[]byteByteStringstringString (ASCII-8BIT)