Table of Contents

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

timestamp ulong

Microseconds since the device started.

markerId ushort

Marker identifier.

x double

World-space X position in meters.

y double

World-space Y position in meters.

z double

World-space Z position in meters.

rotation double[]

Row-major 3x3 rotation (9 values), model frame to world.

positionRmse double

RMS position error in meters.

rotationRmse double

RMS rotation error in radians.

sensors byte

Number of sensors that contributed.

observedEmitters byte

Number of marker emitters that contributed.

Properties

MarkerId

Marker identifier.

public ushort MarkerId { get; }

Property Value

ushort

ObservedEmitters

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

public byte ObservedEmitters { get; }

Property Value

byte

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

double

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

double

Sensors

Number of sensors that contributed to this pose.

public byte Sensors { get; }

Property Value

byte

Timestamp

Microseconds since the device started.

public ulong Timestamp { get; }

Property Value

ulong

X

World-space X position in meters (of the first model emitter).

public double X { get; }

Property Value

double

Y

World-space Y position in meters.

public double Y { get; }

Property Value

double

Z

World-space Z position in meters.

public double Z { get; }

Property Value

double