pub struct CalibrationPerturbation {
pub camera_position_m: f64,
pub look_at_m: f64,
pub focal_length_px: f64,
pub principal_point_px: f64,
}Expand description
Calibration perturbation: the generation calibration (used to project ground truth into 2D — i.e. “what was imaged”) stays perfect, while the tracking calibration (what Braid reconstructs with) is perturbed by these magnitudes. A nonzero perturbation makes triangulation slightly inconsistent with the detections, so reprojection error is realistic rather than zero — exercising robustness and reprojection-error-driven behavior.
All magnitudes default to zero (perfect == tracking, the clean baseline).
Offsets are sampled deterministically from the scenario seed, so a
(config, seed) reproduces the perturbed calibration exactly.
Fields§
§camera_position_m: f64Max per-axis camera position error (meters): moves each camera center.
look_at_m: f64Max per-axis look-at target error (meters): rotates each camera (a pointing error) without moving its center.
focal_length_px: f64Max focal-length error (pixels).
principal_point_px: f64Max per-axis principal-point error (pixels).
Implementations§
Source§impl CalibrationPerturbation
impl CalibrationPerturbation
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Whether this perturbation is a no-op (all magnitudes zero), so the tracking calibration equals the perfect generation calibration.
Sourcepub fn offsets(&self, seed: u64, cam_index: usize) -> CameraCalibOffsets
pub fn offsets(&self, seed: u64, cam_index: usize) -> CameraCalibOffsets
The deterministic calibration offsets for camera cam_index, given the
scenario seed. Each component is uniform in [-magnitude, +magnitude].
Trait Implementations§
Source§impl Clone for CalibrationPerturbation
impl Clone for CalibrationPerturbation
Source§fn clone(&self) -> CalibrationPerturbation
fn clone(&self) -> CalibrationPerturbation
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CalibrationPerturbation
impl Debug for CalibrationPerturbation
Source§impl Default for CalibrationPerturbation
impl Default for CalibrationPerturbation
Source§fn default() -> CalibrationPerturbation
fn default() -> CalibrationPerturbation
Source§impl<'de> Deserialize<'de> for CalibrationPerturbation
impl<'de> Deserialize<'de> for CalibrationPerturbation
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl PartialEq for CalibrationPerturbation
impl PartialEq for CalibrationPerturbation
Source§impl Serialize for CalibrationPerturbation
impl Serialize for CalibrationPerturbation
impl StructuralPartialEq for CalibrationPerturbation
Auto Trait Implementations§
impl Freeze for CalibrationPerturbation
impl RefUnwindSafe for CalibrationPerturbation
impl Send for CalibrationPerturbation
impl Sync for CalibrationPerturbation
impl Unpin for CalibrationPerturbation
impl UnsafeUnpin for CalibrationPerturbation
impl UnwindSafe for CalibrationPerturbation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Preferences for Twhere
T: Serialize + DeserializeOwned,
impl<T> Preferences for Twhere
T: Serialize + DeserializeOwned,
Source§fn save<S>(&self, app: &AppInfo, key: S) -> Result<(), PreferencesError>
fn save<S>(&self, app: &AppInfo, key: S) -> Result<(), PreferencesError>
Source§fn load<S>(app: &AppInfo, key: S) -> Result<T, PreferencesError>
fn load<S>(app: &AppInfo, key: S) -> Result<T, PreferencesError>
key. This is
an instance method which completely overwrites the object’s state with the serialized
data. Thus, it is recommended that you call this method immediately after instantiating
the preferences object. Read moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.