Skip to main content
Version: 1.0 (Latest)

Guide Server Protocol Buffer API

raptor.proto

Error and status enums

Result

Result status for pose estimation operations.

NameNumberDescription
RESULT_UNSPECIFIED0
OK1Operation completed without errors - check confidence for quality assessment
POSE_ESTIMATION_FAILED2No pose could be estimated
INVALID_INPUT3Input parameter(s) contains invalid values
INVALID_LICENSE4Operation could not be performed due to an invalid or insufficient license
INSUFFICIENT_MAP_COVERAGE5Insufficient 3D map coverage at the input pose location
POOR_FEATURE_DENSITY6Insufficient feature density in the input image
FAILED7Operation failed due to errors - output data should not be used

LicenseStatus

License verification status reported by server.

NameNumberDescription
LICENSE_STATUS_UNSPECIFIED0
LICENSE_STATUS_NOT_SET1License path not configured on the server
LICENSE_STATUS_OK2License is valid
LICENSE_STATUS_FILE_NOT_FOUND3License file could not be opened at the configured path
LICENSE_STATUS_INVALID4License is malformed or not authorized for this application
LICENSE_STATUS_EXPIRED5License has expired
LICENSE_STATUS_EXPIRES_INVALID6License Expires timestamp is invalid
LICENSE_STATUS_ISSUED_INVALID7License Issued timestamp is invalid or in the future
LICENSE_STATUS_APPLICATION_ID_MISMATCH8License ApplicationId does not match this application
LICENSE_STATUS_PROFILE_INVALID9License fingerprint profile is invalid
LICENSE_STATUS_FINGERPRINT_MISMATCH10Machine fingerprint does not match the license
LICENSE_STATUS_FINGERPRINT_MISSING11License requires a fingerprint but none could be generated
LICENSE_STATUS_CONTEXT_INVALID12Fingerprint context is invalid
LICENSE_STATUS_FEATURES_MISSING13License is missing the required Features bitmap

Coordinate reference system

Crs

FieldType
ecefCrs.Ecef
geodeticCrs.Geodetic

Crs.Ecef

FieldType
reference_frameCrs.ReferenceFrame

Crs.Geodetic

FieldType
reference_frameCrs.ReferenceFrame
horizontal_unitCrs.HorizontalUnit
vertical_unitCrs.VerticalUnit
height_systemCrs.HeightSystem

Crs.CoordinateSystem

Coordinate system type

NameNumberDescription
ECEF0Earth-Centered Earth-Fixed Cartesian coordinates (default)
GEODETIC1Geodetic coordinates (lat/lon/alt) with local NED orientation

Crs.HeightSystem

Height system reference for height measurements

NameNumberDescription
ELLIPSOID0WGS84 Ellipsoid (default)
EGM20081EGM2008 Geoid

Crs.HorizontalUnit

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

NameNumberDescription
DEGREES0Degrees (default)
RADIANS1Radians

Crs.ReferenceFrame

Reference frame

NameNumberDescription
ITRF20080ITRF2008 reference frame (default)
WGS84G16741WGS84 (G1674) reference frame

Crs.VerticalUnit

Unit of measurement for vertical coordinate (height/altitude)

NameNumberDescription
METER0Meters (default)
FOOT1Feet

Quaternion

Quaternion

Unit quaternion for attitude representation

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

Pose and Position types

Pose

Pose: variant type for either ECEF or Geodetic pose.

FieldType
ecefPose.Ecef
geodeticPose.Geodetic

Pose.Ecef

ECEF Pose: Earth-Centered Earth-Fixed coordinates with attitude

FieldTypeDescription
xdoublemeters
ydoublemeters
zdoublemeters
attitudeQuaternion
crsCrs.Ecef

Pose.Geodetic

Geodetic Pose: lat/lon/alt coordinates with attitude

FieldTypeDescription
latdoubleunits defined by crs.horizontal_unit
londoubleunits defined by crs.horizontal_unit
altdoubleunits defined by crs.vertical_unit
attitudeQuaternion
crsCrs.Geodetic

Position

Position: variant type for either ECEF or Geodetic position.

FieldType
ecefPosition.Ecef
geodeticPosition.Geodetic

Position.Ecef

ECEF Position: Earth-Centered Earth-Fixed coordinates

FieldTypeDescription
xdoublemeters
ydoublemeters
zdoublemeters
crsCrs.Ecef

Position.Geodetic

Geodetic Position: lat/lon/alt coordinates

FieldTypeDescription
latdoubleunits defined by crs.horizontal_unit
londoubleunits defined by crs.horizontal_unit
altdoubleunits defined by crs.vertical_unit
crsCrs.Geodetic

Lens model

LensModel

Camera intrinsic parameters (lens model)

FieldType
pinholeLensModel.Pinhole

LensModel.Pinhole

Pinhole lens parameters

FieldType
fxdouble
fydouble
cxdouble
cydouble

Image

Image

FieldType
typeImage.Type
widthuint32
heightuint32
databytes

Image.Type

NameNumberDescription
GRAY808-bit grayscale (default)
RGB8124-bit RGB
RGBA8232-bit RGBA

Configuration

Config

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

FieldTypeLabelDescription
image_widthuint32Width of input images in pixels (REQUIRED) Must be consistent for all images processed with this PoseEstimator 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 PoseEstimator instance. Must match the actual height of images passed to updatePose() and updatePosition().
map_pathsstringrepeatedOptional server-side map selection for future PoseEstimators. 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.
detail_stage_1uint32optionalLevel 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_2uint32optionalLevel 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
coordinate_epochfloatoptionalCoordinate 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. 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.
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

PoseEstimator types

PoseCovariance

6x6 pose covariance in row-major order over (x, y, z, yaw, pitch, roll). Expressed in the camera frame (DIN 9300: x forward, y right, z down).

FieldTypeLabelDescription
valuesdoublerepeated36 elements in row-major order

PositionCovariance

3x3 position covariance in row-major order over (x, y, z). Expressed in the camera frame (DIN 9300: x forward, y right, z down).

FieldTypeLabelDescription
valuesdoublerepeated9 elements in row-major order

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
posePoseRefined camera pose (position + attitude).
covariancePoseCovarianceoptional6x6 pose covariance over (x, y, z, yaw, pitch, roll) in the camera body frame (DIN 9300). Set when an uncertainty estimate is available; otherwise unset.
confidencedoubleConfidence score (0.0-1.0) 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
map_coveragedoubleFraction of the camera's view covered by valid 3D map data (0.0-1.0). Low values mean large portions of the frame fall outside the map, which reduces matching quality and typically degrades the result.
timestampTimestampImage timestamp (preserved from the request, identifies when the input image was captured). Always populated; echoed back unchanged from the request timestamp.

PositionOutput

Output data from position estimation.

FieldTypeLabelDescription
resultResultOperation result status
positionPositionRefined camera position.
covariancePositionCovarianceoptional3x3 position covariance over (x, y, z) in the camera frame (DIN 9300). Set when an uncertainty estimate is available; otherwise unset.
confidencedoubleConfidence score (0.0-1.0)
map_coveragedoubleFraction of the camera's view covered by valid 3D map data (0.0-1.0).
timestampTimestampImage timestamp (preserved from the request, identifies when the input image was captured). Always populated; echoed back unchanged from the request timestamp.

EstimationOptions

Per-call tuning knobs for updatePose / updatePosition.

FieldTypeLabelDescription
max_time_msdoubleoptionalOptional maximum processing time in milliseconds. The algorithm returns the best result found within this budget.
confidence_intervaldoubleoptionalConfidence interval driving the covariance search range (0.0, 1.0). Controls how much of the input PoseCovariance ellipsoid is searched around the input pose. Per dimension, the search range is ±sqrt(chiSquared(confidence_interval, 6 dof) * variance). Common values:
• 0.68: 1-sigma
• 0.90: default
• 0.95: 2-sigma
• 0.99: high confidence Must be in range (0.0, 1.0) - validated at runtime.
exhaustive_range_searchbooloptionalEnable exhaustive range search (default: false). Significantly increases processing time; pair with max_time_ms.
feature_density_checkbooloptionalEnable a feature density check before range search (default: false). Images with too few features return POOR_FEATURE_DENSITY.

RPC requests and responses

PoseEstimatorInitRequest

Request message for PoseEstimator 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
configConfigoptionalOptional configuration to apply before initializing this PoseEstimator. Semantics are equivalent to calling the Config RPC with this Config and then calling PoseEstimatorInitRequest without config.

PoseEstimatorInitResponse

Response message for PoseEstimator initialization.

FieldTypeLabel
successbool
error_messagestringoptional

UpdatePoseRequest

Request message for pose update.

FieldTypeLabelDescription
imageImage
lensLensModelCamera intrinsic parameters (lens model)
posePoseCamera pose (position + attitude).
timestampTimestampImage timestamp identifying when the input image was captured. Required. The epoch is client-defined and must be consistent across calls. Echoed back unchanged in PoseOutput.timestamp.
covariancePoseCovarianceoptionalOptional input pose covariance. Drives the range search around the input pose. Values should reflect input pose uncertainty for optimal results.
optionsEstimationOptionsoptionalOptional per-call tuning knobs.

UpdatePoseResponse

Response message for pose update.

FieldType
pose_outputPoseOutput

UpdatePositionRequest

Request message for position update.

FieldTypeLabel
imageImage
lensLensModel
posePose
timestampTimestamp
covariancePoseCovarianceoptional
optionsEstimationOptionsoptional

UpdatePositionResponse

Response message for position update.

FieldType
position_outputPositionOutput

PoseEstimatorDestroyRequest

Request message for PoseEstimator destruction.

PoseEstimatorDestroyResponse

Response message for PoseEstimator destruction.

FieldTypeLabel
successbool
error_messagestringoptional

GetStatusRequest

Request message for getting server status (version, license, fingerprint).

GetStatusResponse

Response message for getting server status.

FieldTypeLabel
successbool
server_versionstring
raptor_sdk_versionstring
license_statusLicenseStatus
fingerprintstringoptional
pose_estimator_initializedbool
error_messagestringoptional

MapInfo

Map info entry within a map directory

FieldTypeDescription
map_idstringStable identifier (relative path used by clients)
relative_pathstringRelative path within the directory

MapDirectoryEntry

Map directory entry (base directory + maps within)

FieldTypeLabelDescription
base_dirstringBase directory absolute path
mapsMapInforepeatedMaps discovered in this directory

QueryAvailableMapsRequest

Request message for querying available maps

QueryAvailableMapsResponse

Response message for querying available maps

FieldTypeLabel
successbool
directoriesMapDirectoryEntryrepeated
error_messagestringoptional

GetConfigRequest

Config management messages (read-only server default configuration)

GetConfigResponse

FieldTypeLabelDescription
successbool
configConfigoptionalServer default configuration only (not modified by RPCs)
error_messagestringoptional

ZeroMQ communication wrapper messages (separate request/response)

RaptorRequest

FieldTypeDescription
request_idstringFor request/response correlation
init_requestPoseEstimatorInitRequest
update_pose_requestUpdatePoseRequest
update_position_requestUpdatePositionRequest
destroy_requestPoseEstimatorDestroyRequest
query_maps_requestQueryAvailableMapsRequest
get_config_requestGetConfigRequest
get_status_requestGetStatusRequest

RaptorResponse

FieldTypeDescription
request_idstringCorrelates to RaptorRequest.request_id
init_responsePoseEstimatorInitResponse
update_pose_responseUpdatePoseResponse
update_position_responseUpdatePositionResponse
destroy_responsePoseEstimatorDestroyResponse
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)