5 releases
Uses new Rust 2024
| new 0.0.1-alpha.9 | Oct 31, 2025 |
|---|---|
| 0.0.1-alpha.8 | Aug 8, 2025 |
| 0.0.1-alpha.4 | Aug 5, 2024 |
| 0.0.1-alpha.3 | Jul 9, 2024 |
| 0.0.1-alpha.2 | Jul 8, 2024 |
#895 in Math
445 downloads per month
Used in 33 crates
(19 directly)
140KB
3K
SLoC
ecoord
Library for transforming between 3D coordinate frames.
The library is at an early stage of development.
Contributing
The library is developed at the TUM Chair of Geoinformatics and contributions are highly welcome.
lib.rs:
A library for transforming between 3D coordinate frames.
The position of an object in 3D space can be described geometrically using an inertial frame of reference. If the transform (translation and rotation) between two reference frames is known, the object's position can be determined for each frame.
As some objects, like pedestrians or UAVs, move in space, a reference frame can be time-dependent. Each transform object has a timestamp defined in seconds and nanoseconds, whereby different interpolation strategies, such as step-wise or linear, can be applied.
The transforms from a frame to another are assigned to channels, which enables the activation and deactivation of selected channels. If multiple channels describe the same transform from a frame to another frame, the channel with the highest prioritization number is used. If multiple channels have the same prioritization number, the alphabetically sorted last channel name is used.
Overview
Data Structure
For de/serializing JSON is used in three forms:
ecoord.json: readable JSONfile_name.ecoord.jsonprefixing with a file namefile_name.ecoord.json.zst: compressed JSON using the ZStandard compression algorithm
Document Structure:
- document
transformschannel_id: [String]frame_id: [String]child_frame_id: [String]timestamp:- sec: [i32]
- nanosec: [u32]
translationx: [f64]y: [f64]z: [f64]
rotation: in Quaternionx: [f64]y: [f64]z: [f64]w: [f64]
channel_info: additional information on channelsid: [String]priority: [Option]<[i32]>- default:
0 - if multiple channels hold transforms for the same frame to child frame, the one with the higher priority is selected
- default:
frame_info: additional information on framesid: [String]- unique identifier
crs_epsg: [Option]<[i32]>
transform_infoframe_id: [String]child_frame_id: [String]interpolation_method: [Option]<[String]>step(default): piecewise constant interpolationlinear: linear interpolation
extrapolation_method: [Option]<[String]>constant(default): constant extrapolationlinear: linear extrapolation
Dependencies
~15MB
~254K SLoC