Skip to content

Class inertialsim::sensors::Sensor

ClassList > inertialsim > sensors > Sensor

Abstract base class for sensors. More...

  • #include <sensor.h>

Inherited by the following classes: inertialsim::sensors::InertialSensor, inertialsim::sensors::Magnetometer

Public Functions

Type Name
Sensor (const SensorModel & model, const SensorSpecification & specification, std::optional< uint64_t > seed=std::nullopt, SimulationMode mode=SimulationMode::BATCH, std::optional< double > max_duration=std::nullopt)
Construct a Sensor .
virtual const SensorModel & model () const
Get the sensor model.
const std::mt19937_64 & rng () const
Get the rng generator.
virtual const SensorSpecification & specification () const
Get the sensor specification.
virtual SensorState & state ()
Get the sensor state.
virtual const SensorState & state () const
virtual ~Sensor () = default

Public Static Functions

Type Name
Array ApplyQuantization (const Array & signal, const SpecificationArray & quantization)
Apply quantization to a signal.

Protected Attributes

Type Name
bool initialized_
std::optional< double > max_duration_
SimulationMode mode_
const SensorModel & model_
int noise_index_
std::mt19937_64 rng_
double sample_rate_
const SensorSpecification & specification_
SensorState state_
std::optional< Array > wgn_buffer_

Protected Functions

Type Name
virtual void Initialize (int samples, double sample_rate)
Initialize the sensor for simulation.
void SetBias ()
Set bias parameters.
void SetInputLimits ()
Set input limit parameters.
void SetMisalignment ()
Set misalignment parameters.
virtual void SetNoise (Eigen::Index samples, double sample_rate)
Set noise parameters.
virtual void SetQuantization ()
Set quantization parameters.
void SetScaleFactor ()
Set scale factor parameters.
void SimulateBias (Array & signal, const std::optional< Scalar1D > & temperature=std::nullopt)
Simulate bias.
Measurement SimulateFromRate (const geometry::Vector & signal, const std::optional< Scalar1D > & temperature=std::nullopt)
Simulate sensor errors on a rate signal.
void SimulateInputLimits (Array & signal)
Simulate input limits.
Array SimulateMisalignment (const Vector3D & signal)
Simulate axis misalignment.
virtual void SimulateNoise (Array & signal)
Simulate noise.
void SimulateScaleFactor (Array & signal)
Simulate scale factor.
geometry::Vector ValidateInput (const geometry::Vector & signal)
Validate and potentially interpolate input signal.

Detailed Description

Sensors inherit common attributes and methods for simulating measurement errors including: * Misalignment (fixed axis orientation errors) * Input limits (minimum/maximum range constraints) * Bias (fixed + random + temperature-dependent) * Noise (white Gaussian, quantization, random walk, etc.) * Scale factor errors (fixed + random) * Quantization effects

The sensor simulation follows industry-standard error models documented in Standard [05] and related references.

Public Functions Documentation

function Sensor

Construct a Sensor .

inertialsim::sensors::Sensor::Sensor (
    const SensorModel & model,
    const SensorSpecification & specification,
    std::optional< uint64_t > seed=std::nullopt,
    SimulationMode mode=SimulationMode::BATCH,
    std::optional< double > max_duration=std::nullopt
) 

Initializes all error models based on the model and specification. Error sources are initialized in the following order: * Misalignment (6-axis model per Standard [05]) * Input limits * Bias (fixed + random initialization) * Noise (pre-computed buffer for efficiency) * Scale factor * Quantization

Parameters:

  • model Model options specifying which errors to simulate.
  • specification Sensor specification with error magnitudes.
  • seed Random number generator seed. If not provided (std::nullopt), the RNG is seeded with fresh randomness from std::random_device.
  • mode Simulation mode:
  • BATCH: Process all data at once (more efficient)
  • REALTIME: Process data incrementally (for online simulation)

  • max_duration Maximum simulation duration in seconds. Required for REALTIME mode to pre-allocate noise buffers.


function model

Get the sensor model.

inline virtual const SensorModel & inertialsim::sensors::Sensor::model () const

Returns:

Sensor model.


function rng

Get the rng generator.

inline const std::mt19937_64 & inertialsim::sensors::Sensor::rng () const

Returns:

Random number generator.


function specification

Get the sensor specification.

inline virtual const SensorSpecification & inertialsim::sensors::Sensor::specification () const

Returns:

Sensor specification.


function state [½]

Get the sensor state.

inline virtual SensorState & inertialsim::sensors::Sensor::state () 

Returns:

Current sensor state.


function state [2/2]

inline virtual const SensorState & inertialsim::sensors::Sensor::state () const

function ~Sensor

virtual inertialsim::sensors::Sensor::~Sensor () = default

Public Static Functions Documentation

function ApplyQuantization

Apply quantization to a signal.

static Array inertialsim::sensors::Sensor::ApplyQuantization (
    const Array & signal,
    const SpecificationArray & quantization
) 

Parameters:

  • signal Input signal (axes x samples).
  • quantization Quantization value per axis.

Returns:

Quantized signal.


Protected Attributes Documentation

variable initialized_

bool inertialsim::sensors::Sensor::initialized_;

variable max_duration_

std::optional<double> inertialsim::sensors::Sensor::max_duration_;

variable mode_

SimulationMode inertialsim::sensors::Sensor::mode_;

variable model_

const SensorModel& inertialsim::sensors::Sensor::model_;

variable noise_index_

int inertialsim::sensors::Sensor::noise_index_;

variable rng_

std::mt19937_64 inertialsim::sensors::Sensor::rng_;

variable sample_rate_

double inertialsim::sensors::Sensor::sample_rate_;

variable specification_

const SensorSpecification& inertialsim::sensors::Sensor::specification_;

variable state_

SensorState inertialsim::sensors::Sensor::state_;

variable wgn_buffer_

std::optional<Array> inertialsim::sensors::Sensor::wgn_buffer_;

Protected Functions Documentation

function Initialize

Initialize the sensor for simulation.

virtual void inertialsim::sensors::Sensor::Initialize (
    int samples,
    double sample_rate
) 

Parameters:

  • samples Number of samples to simulate.
  • sample_rate Sample rate in Hz.

function SetBias

Set bias parameters.

void inertialsim::sensors::Sensor::SetBias () 


function SetInputLimits

Set input limit parameters.

void inertialsim::sensors::Sensor::SetInputLimits () 


function SetMisalignment

Set misalignment parameters.

void inertialsim::sensors::Sensor::SetMisalignment () 

The misalignment model follows Standard [05] for 6-axis sensors (3 input axes with 2 perturbation angles each). For sensors with more or fewer axes, this implementation uses a generalized model where each input axis (IA) can be misaligned from its nominal reference axis (IRA) by a rotation vector with components in all three reference axes (XRA-YRA-ZRA).

For nominally aligned tri-axial sensors (XA↔XRA, YA↔YRA, ZA↔ZRA), this model simplifies to the classic 6-angle model: * Sensitive z-axis (IA, ZA) misalignment modeled as perturbing rotation vector in x-y plane (XRA-YRA), per Standard [05] Figure 1 * x-axis (XA) misalignment from rotation vector in y-z (YRA-ZRA) plane * y-axis (YA) misalignment from rotation vector in x-z (XRA-ZRA) plane

This is equivalent to Reference [27] Section 11.6.⅔ and Reference [22] Section 2.5.1.3, which document the classic non-orthogonal rotation matrix with six independent small angles using first-order rotation vector approximation. In those references, the reference axes (RA) are the "platform" frame.

For 4+ axis sensors where input axes are deliberately non-aligned with reference axes, perturbing rotation vectors use all three components (XRA-YRA-ZRA) for each input axis. This provides consistent modeling across any number of simulated axes (1-3+).

Note:

The fixed misalignment is always applied. If simulate_random is enabled, random perturbations are added to each input axis orientation.

See also: Standard [05] for the standard 6-axis misalignment model

See also: Reference [22] Section 2.5.1.3 for first-order approximation

See also: Reference [27] Section 11.6.⅔ for platform frame model


function SetNoise

Set noise parameters.

virtual void inertialsim::sensors::Sensor::SetNoise (
    Eigen::Index samples,
    double sample_rate
) 

Parameters:

  • samples Number of samples.
  • sample_rate Sample rate in Hz.

function SetQuantization

Set quantization parameters.

virtual void inertialsim::sensors::Sensor::SetQuantization () 


function SetScaleFactor

Set scale factor parameters.

void inertialsim::sensors::Sensor::SetScaleFactor () 


function SimulateBias

Simulate bias.

void inertialsim::sensors::Sensor::SimulateBias (
    Array & signal,
    const std::optional< Scalar1D > & temperature=std::nullopt
) 

Parameters:

  • signal Input signal (axes x N).
  • temperature Optional temperature array (1 x N).

Returns:

Signal with bias applied.


function SimulateFromRate

Simulate sensor errors on a rate signal.

Measurement inertialsim::sensors::Sensor::SimulateFromRate (
    const geometry::Vector & signal,
    const std::optional< Scalar1D > & temperature=std::nullopt
) 

Parameters:

  • signal Input signal (3 x N Vector).
  • temperature Optional temperature array (1 x N).

Returns:

Measurement with simulated errors.


function SimulateInputLimits

Simulate input limits.

void inertialsim::sensors::Sensor::SimulateInputLimits (
    Array & signal
) 

Parameters:

  • signal Input signal (axes x N).

Returns:

Signal with input limits applied.


function SimulateMisalignment

Simulate axis misalignment.

Array inertialsim::sensors::Sensor::SimulateMisalignment (
    const Vector3D & signal
) 

Parameters:

  • signal Input signal (3 x N).

Returns:

Signal with misalignment applied (axes x N).


function SimulateNoise

Simulate noise.

virtual void inertialsim::sensors::Sensor::SimulateNoise (
    Array & signal
) 

Parameters:

  • signal Input signal (axes x N).

Returns:

Signal with noise applied.


function SimulateScaleFactor

Simulate scale factor.

void inertialsim::sensors::Sensor::SimulateScaleFactor (
    Array & signal
) 

Parameters:

  • signal Input signal (axes x N).

Returns:

Signal with scale factor applied.


function ValidateInput

Validate and potentially interpolate input signal.

geometry::Vector inertialsim::sensors::Sensor::ValidateInput (
    const geometry::Vector & signal
) 

Parameters:

  • signal Input vector with time.

Returns:

Validated (and potentially interpolated) vector.



The documentation for this class was generated from the following file cpp/include/inertialsim/sensors/sensor.h