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:
modelModel options specifying which errors to simulate.specificationSensor specification with error magnitudes.seedRandom number generator seed. If not provided (std::nullopt), the RNG is seeded with fresh randomness from std::random_device.modeSimulation mode:- BATCH: Process all data at once (more efficient)
-
REALTIME: Process data incrementally (for online simulation)
-
max_durationMaximum simulation duration in seconds. Required for REALTIME mode to pre-allocate noise buffers.
function model¶
Get the sensor model.
Returns:
Sensor model.
function rng¶
Get the rng generator.
Returns:
Random number generator.
function specification¶
Get the sensor specification.
Returns:
Sensor specification.
function state [½]¶
Get the sensor state.
Returns:
Current sensor state.
function state [2/2]¶
function ~Sensor¶
Public Static Functions Documentation¶
function ApplyQuantization¶
Apply quantization to a signal.
static Array inertialsim::sensors::Sensor::ApplyQuantization (
const Array & signal,
const SpecificationArray & quantization
)
Parameters:
signalInput signal (axes x samples).quantizationQuantization value per axis.
Returns:
Quantized signal.
Protected Attributes Documentation¶
variable initialized_¶
variable max_duration_¶
variable mode_¶
variable model_¶
variable noise_index_¶
variable rng_¶
variable sample_rate_¶
variable specification_¶
variable state_¶
variable wgn_buffer_¶
Protected Functions Documentation¶
function Initialize¶
Initialize the sensor for simulation.
Parameters:
samplesNumber of samples to simulate.sample_rateSample rate in Hz.
function SetBias¶
Set bias parameters.
function SetInputLimits¶
Set input limit parameters.
function SetMisalignment¶
Set misalignment parameters.
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.
Parameters:
samplesNumber of samples.sample_rateSample rate in Hz.
function SetQuantization¶
Set quantization parameters.
function SetScaleFactor¶
Set scale factor parameters.
function SimulateBias¶
Simulate bias.
void inertialsim::sensors::Sensor::SimulateBias (
Array & signal,
const std::optional< Scalar1D > & temperature=std::nullopt
)
Parameters:
signalInput signal (axes x N).temperatureOptional 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:
signalInput signal (3 x N Vector).temperatureOptional temperature array (1 x N).
Returns:
Measurement with simulated errors.
function SimulateInputLimits¶
Simulate input limits.
Parameters:
signalInput signal (axes x N).
Returns:
Signal with input limits applied.
function SimulateMisalignment¶
Simulate axis misalignment.
Parameters:
signalInput signal (3 x N).
Returns:
Signal with misalignment applied (axes x N).
function SimulateNoise¶
Simulate noise.
Parameters:
signalInput signal (axes x N).
Returns:
Signal with noise applied.
function SimulateScaleFactor¶
Simulate scale factor.
Parameters:
signalInput signal (axes x N).
Returns:
Signal with scale factor applied.
function ValidateInput¶
Validate and potentially interpolate input signal.
Parameters:
signalInput 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