Skip to main content

Guide Server Protocol Buffer API

guide.proto

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.

CoordinateSystem

Coordinate system specification

FieldTypeLabelDescription
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.

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

GeodeticOptions

Options for geodetic coordinate representation

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

GetConfigRequest

Config management messages (read-only server default configuration)

GetConfigResponse

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

GetStatusRequest

A simple ping/status request

GetStatusResponse

FieldTypeLabelDescription
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)

GuideDestroyRequest

Request message for Guide cleanup/destruction

GuideDestroyResponse

Response message for Guide cleanup/destruction

FieldTypeLabelDescription
successboolSuccess status

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.

FieldTypeLabelDescription
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

FieldTypeLabelDescription
successboolSuccess status
error_messagestringError message if initialization failed

GuideRequest

ZeroMQ communication wrapper messages (separate request/response)

FieldTypeLabelDescription
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

FieldTypeLabelDescription
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

MapDirectoryEntry

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

MapInfo

Per-directory map listing entry

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

PoseOutput

Output data from pose estimation

FieldTypeLabelDescription
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]
fomdoubleDEPRECATED: Figure of Merit - quality score (0.0-1.0) This field is deprecated and will be removed in future versions. Use 'confidence' instead as the recommended quality metric.
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

Position3D

3D position vector

FieldTypeLabelDescription
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)

PositionOutput

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

FieldTypeLabelDescription
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]
fomdoubleDEPRECATED: Figure of Merit - quality score (0.0-1.0) This field is deprecated and will be removed in future versions. Use 'confidence' instead as the recommended quality metric.
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

Quaternion

Unit quaternion for attitude representation

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

QueryAvailableMapsRequest

Request message for querying available maps

No parameters needed - returns all available maps

QueryAvailableMapsResponse

Response message for querying available maps

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

RenderReferenceImageRequest

Request message for rendering reference image

FieldTypeLabelDescription
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

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

Timestamp

High-resolution timestamp (nanoseconds since epoch)

FieldTypeLabelDescription
nanosecondsint64

UpdatePoseRequest

Request message for pose update

FieldTypeLabelDescription
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

FieldTypeLabelDescription
pose_outputPoseOutputPose estimation output

UpdatePositionRequest

Request message for position update

FieldTypeLabelDescription
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

FieldTypeLabelDescription
position_outputPositionOutputPosition estimation output

HorizontalUnit

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

NameNumberDescription
HORIZONTAL_UNIT_UNSPECIFIED0
RADIAN1Radians (default)
DEGREE2Degrees

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

ReferenceFrame

Spatial reference frame for input/output coordinates

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

Result

Result status for pose estimation operations

NameNumberDescription
RESULT_UNSPECIFIED0
OK1Operation completed without errors - check confidence for quality assessment
FAILED2Operation failed due to errors - output data should not be used

VerticalDatum

Vertical datum reference for height measurements

NameNumberDescription
VERTICAL_DATUM_UNSPECIFIED0
ELLIPSOID1WGS84 Ellipsoid (default)
EGM20082EGM2008 Geoid

VerticalUnit

Unit of measurement for vertical coordinate (height/altitude)

NameNumberDescription
VERTICAL_UNIT_UNSPECIFIED0
METER1Meters (default)
FOOT2Feet

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)