|
Enpose API — C++
Enpose 6-DoF tracking API
|
Classes | |
| struct | DeviceInfo |
| One device discovered on the local network. More... | |
| class | Error |
| Exception thrown by the wrapper when a C call fails. More... | |
| class | PoseStream |
| RAII handle to a live pose stream from one device. More... | |
Typedefs | |
| using | MarkerPose = ::EnposeMarkerPose |
| Pose of one tracked marker in world coordinates. | |
Functions | |
| std::vector< DeviceInfo > | discover () |
| Discover Enpose devices on the local network. | |
| using enpose::MarkerPose = typedef ::EnposeMarkerPose |
Pose of one tracked marker in world coordinates.
Alias of the C POD struct, so all fields are available directly: timestamp, marker_id, x/y/z, rotation[9], position_rmse, rotation_rmse, sensors, observed_emitters. Units: x/y/z and position_rmse are in meters; rotation_rmse is in radians.
observed_emitters counts the marker LEDs whose measurements contributed to the pose (four on the standard marker); a lower count means some were occluded, leaving the pose fitted from a reduced set of points.
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.
|
inline |
Discover Enpose devices on the local network.
Returns one entry per device (empty if none are found). Throws Error on an I/O failure.