Struct MarkerPose
- Namespace
- Enpose
- Assembly
- Enpose.Api.dll
Pose of one tracked marker in world coordinates.
public readonly struct MarkerPose
- Inherited Members
Remarks
Units: X/Y/Z and PositionRmse are in meters; RotationRmse is in radians.
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.
Constructors
MarkerPose(ulong, ushort, double, double, double, double[], double, double, byte, byte)
Create a marker pose.
public MarkerPose(ulong timestamp, ushort markerId, double x, double y, double z, double[] rotation, double positionRmse, double rotationRmse, byte sensors, byte observedEmitters)
Parameters
timestampulongMicroseconds since the device started.
markerIdushortMarker identifier.
xdoubleWorld-space X position in meters.
ydoubleWorld-space Y position in meters.
zdoubleWorld-space Z position in meters.
rotationdouble[]Row-major 3x3 rotation (9 values), model frame to world.
positionRmsedoubleRMS position error in meters.
rotationRmsedoubleRMS rotation error in radians.
sensorsbyteNumber of sensors that contributed.
observedEmittersbyteNumber of marker emitters that contributed.
Properties
MarkerId
Marker identifier.
public ushort MarkerId { get; }
Property Value
ObservedEmitters
Number of marker emitters (LEDs) that contributed to this pose.
public byte ObservedEmitters { get; }
Property Value
Remarks
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 is correspondingly biased; 0 means
the pose was carried purely by prediction. Filter on this value to
reject poses computed from a partial view.
PositionRmse
RMS position error in meters (the same units as X/Y/Z).
public double PositionRmse { get; }
Property Value
Rotation
Row-major 3x3 rotation (9 values), model frame to world. Each pose owns its own array.
public double[] Rotation { get; }
Property Value
- double[]
RotationRmse
RMS rotation error (radians, axis-angle magnitude).
public double RotationRmse { get; }
Property Value
Sensors
Number of sensors that contributed to this pose.
public byte Sensors { get; }
Property Value
Timestamp
Microseconds since the device started.
public ulong Timestamp { get; }
Property Value
X
World-space X position in meters (of the first model emitter).
public double X { get; }
Property Value
Y
World-space Y position in meters.
public double Y { get; }
Property Value
Z
World-space Z position in meters.
public double Z { get; }