Class CObservationGasSensors

Nested Relationships

Nested Types

Inheritance Relationships

Base Type

Class Documentation

class CObservationGasSensors : public mrpt::obs::CObservation

Declares a class derived from “CObservation” that represents a set of readings from gas sensors.

See also

CObservation

Public Functions

CObservationGasSensors()

Constructor.

virtual void getSensorPose(mrpt::poses::CPose3D &out_sensorPose) const override

A general method to retrieve the sensor pose on the robot. Note that most sensors will return a full (6D) CPose3D, but see the derived classes for more details or special cases.

See also

setSensorPose

virtual void setSensorPose(const mrpt::poses::CPose3D &newSensorPose) override

A general method to change the sensor pose on the robot. Note that most sensors will use the full (6D) CPose3D, but see the derived classes for more details or special cases.

See also

getSensorPose

virtual void getDescriptionAsText(std::ostream &o) const override

Build a detailed, multi-line textual description of the observation contents and dump it to the output stream.

Note

If overried by derived classes, call base CObservation::getDescriptionAsText() first to show common information.

Note

This is the text that appears in RawLogViewer when selecting an object in the dataset

Public Members

std::vector<TObservationENose> m_readings

One entry per e-nose on the robot

class CMOSmodel

Declares a class within “CObservationGasSensors” that represents a set of gas concentration readings from the modelation of a MOS gas sensor readings. This class provides the parameters and functions to simulate the inverse model of a MOS gas sensor.

MOS-model parameters

size_t winNoise_size = {30}

The size of the mobile average window used to reduce noise on sensor reagings.

int decimate_value = {6}

[useMOSmodel] The decimate frecuency applied after noise filtering

float a_rise = {0}

tau = a*AMPLITUDE +b (linear relationship)

float b_rise = {0}

tau = a*AMPLITUDE +b (linear relationship)

float a_decay = {0}

tau = a*AMPLITUDE +b (linear relationship)

float b_decay = {0}

tau = a*AMPLITUDE +b (linear relationship)

bool save_maplog = {false}

If true save generated gas map as a log file

Public Functions

bool get_GasDistribution_estimation(float &reading, mrpt::system::TTimeStamp &timestamp)

Obtain an estimation of the gas distribution based on raw sensor readings

Protected Functions

void inverse_MOSmodeling(float reading, const mrpt::system::TTimeStamp &timestamp)

Estimates the gas concentration based on readings and sensor model

void noise_filtering(float reading, const mrpt::system::TTimeStamp &timestamp)

Reduce noise by averaging with a mobile window of specific size (winNoise_size)

void save_log_map(const mrpt::system::TTimeStamp &timestamp, float reading, float estimation, float tau)

Save the gas distribution estiamtion into a log file for offline representation

Protected Attributes

TdataMap last_Obs

The content of each m_lastObservations in the estimation when using the option : MOS_MODEl (useMOSmodel =1)

TdataMap temporal_Obs
std::vector<TdataMap> m_antiNoise_window

Vector to temporally store and averge readings to reduce noise

std::ofstream *m_debug_dump = {nullptr}

Ofstream to save to file option “save_maplog”

uint16_t decimate_count = {1}

Decimate value for oversampled enose readings

double fixed_incT = {0}

To force e-nose samples to have fixed time increments

bool first_incT = {true}

To force e-nose samples to have fixed time increments

float min_reading = {10}

Minimum reading value till the moment, used as approximation to baeline level

bool first_iteration = {true}

To avoid the model estimation on first iteration

struct TdataMap

The content of each m_lastObservations in the estimation when using the option : MOS_MODEl (useMOSmodel =1)

Public Members

float reading

Sensore reading

mrpt::system::TTimeStamp timestamp

Timestamp of the observation

float tau

tau value applied

float estimation

The value estimated according to the MOXmodel

float reading_filtered

Reading after smooth (noise averaging)

struct TObservationENose

The structure for each e-nose

Public Functions

inline TObservationENose()

Public Members

math::TPose3D eNosePoseOnTheRobot

The pose of the sensors on the robot

std::vector<float> readingsVoltage

The set of readings (in volts) from the array of sensors (size of “sensorTypes” is the same that the size of “readingsVoltage”)

std::vector<int> sensorTypes

The kind of sensors in the array (size of “sensorTypes” is the same that the size of “readingsVoltage”) The meaning of values for types of sensors is as follows: 0x0000 : No sensor installed in this slot 0x2600 : Figaro TGS 2600 0x2602 : Figaro TGS 2602 0x2620 : Figaro TGS 2620 0x4161 : Figaro TGS 4161

bool hasTemperature = {false}

Must be true for “temperature” to contain a valid measurement

float temperature = {0}

Sensed temperature in Celcius (valid if hasTemperature=true only)

bool isActive

True if the input to this chamber/enose is poluted air, False if clean air