Enpose API — C
Enpose 6-DoF tracking API
Loading...
Searching...
No Matches
EnposeMarkerPose Struct Reference

Pose of one tracked marker in world coordinates. More...

#include <enpose_api.h>

Data Fields

uint64_t timestamp
 Microseconds since the device started.
 
uint16_t marker_id
 Marker identifier.
 
double x
 World position in meters (first model emitter).
 
double y
 
double z
 
double rotation [9]
 Row-major 3x3 rotation, model frame to world.
 
double position_rmse
 RMS position error, in meters (units of x/y/z).
 
double rotation_rmse
 RMS rotation error (radians, axis-angle magnitude).
 
uint8_t sensors
 Number of sensors that contributed.
 
uint8_t observed_emitters
 Number of marker emitters (LEDs) whose measurements contributed to this pose.
 

Detailed Description

Pose of one tracked marker in world coordinates.

Mirrors the Rust MarkerPose type field-for-field (the Rust type is #[repr(C)]).

Units: x/y/z and position_rmse are in meters; rotation_rmse is in radians.

Coordinate system: the world frame is right-handed, and where its origin and axes lie is decided by the device's extrinsics calibration. By default it is the reference sensor's optical frame — origin at that sensor, +X to its right, +Y down and +Z into the scene, so a marker in front of the device has a positive z. Calibrating against a measured origin puts the frame there instead, and measuring a ground plane makes that plane z = 0 with +Z pointing up out of it. Treat the axes as a property of the calibration rather than a fixed convention: recalibrating a device can move the frame.

Field Documentation

◆ timestamp

uint64_t EnposeMarkerPose::timestamp

Microseconds since the device started.

◆ marker_id

uint16_t EnposeMarkerPose::marker_id

Marker identifier.

◆ x

double EnposeMarkerPose::x

World position in meters (first model emitter).

◆ y

double EnposeMarkerPose::y

◆ z

double EnposeMarkerPose::z

◆ rotation

double EnposeMarkerPose::rotation[9]

Row-major 3x3 rotation, model frame to world.

◆ position_rmse

double EnposeMarkerPose::position_rmse

RMS position error, in meters (units of x/y/z).

◆ rotation_rmse

double EnposeMarkerPose::rotation_rmse

RMS rotation error (radians, axis-angle magnitude).

◆ sensors

uint8_t EnposeMarkerPose::sensors

Number of sensors that contributed.

◆ observed_emitters

uint8_t EnposeMarkerPose::observed_emitters

Number of marker emitters (LEDs) whose measurements contributed to this pose.

The standard marker carries four; a lower count means some were occluded or could not be decoded, so the pose was fitted from a reduced set of points and might be correspondingly biased. 0 on a pose carried purely by prediction. Filter on this to reject poses from a partial view.


The documentation for this struct was generated from the following file: