1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//! The [`MarkerPose`] wire type, shared between the Enpose API and the
//! on-device daemon.
//!
//! [`MarkerPose`] is serialized with MessagePack on the wire (see
//! [`crate::posestream`]). It carries no networking logic itself, so this
//! module compiles on any target — including ones without a sockets stack —
//! and is available regardless of the `net` feature.
use ;
/// Position and orientation of one tracked marker in world coordinates.
///
/// One [`MarkerPose`] is produced per localized marker per tracking
/// update. A [`crate::PoseStream`] delivers these as they arrive from the
/// device.
///
/// # Units
///
/// All positions ([`x`](Self::x), [`y`](Self::y), [`z`](Self::z) and
/// [`position_rmse`](Self::position_rmse)) are in **meters**; rotation error
/// ([`rotation_rmse`](Self::rotation_rmse)) is in **radians**.
///
/// The layout is `#[repr(C)]` so the C API can use a struct with the same
/// fields directly. This does not affect the MessagePack wire format, which
/// is derived from the field definitions, not the memory layout.