From a9067eb46b845f70c9282bad59fbe6e8dba0e515 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Fri, 20 Dec 2013 13:57:39 -0800 Subject: Initial commit --- src/noise.h | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/noise.h (limited to 'src/noise.h') diff --git a/src/noise.h b/src/noise.h new file mode 100644 index 0000000..e0b9980 --- /dev/null +++ b/src/noise.h @@ -0,0 +1,72 @@ +/* noise.h -- noisy data + * Copyright (C) 2013 Galois, Inc. + * + * This library is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this library. If not, see . + * + * To contact Galois, complete the Web form at + * or write to Galois, Inc., 421 Southwest 6th Avenue, Suite 300, Portland, + * Oregon, 97204-1622. */ + +#ifndef PPAML_VREP_AUTOMOBILE_PLUGIN_NOISE_H +#define PPAML_VREP_AUTOMOBILE_PLUGIN_NOISE_H + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#include "csv.h" +#include "measurement.h" + + +// Noise sources // + +template +class GaussianNoiseSource { +public: + inline GaussianNoiseSource(RealType mean, RealType stddev); + inline RealType get(); + +private: + std::mt19937 generator; + std::normal_distribution distribution; +}; + +/* Convenience function to construct a GaussianNoiseSource from a + * two-element float vector representing mean and standard deviation. + * Throws a std::invalid_argument if the vector is of the wrong + * length. */ +inline GaussianNoiseSource gaussian(const std::vector); + + +// Noisy values // + +// Adds noise to a value. +Pose addNoise(const Pose &, GaussianNoiseSource &positionNoise, + GaussianNoiseSource &angleNoise); +ControlSignals addNoise(const ControlSignals &, + GaussianNoiseSource &speedNoise, + GaussianNoiseSource &steeringAngleNoise); +LidarDatum addNoise(const LidarDatum &, + GaussianNoiseSource &distanceNoise, + GaussianNoiseSource &intensityNoise); + + +#include "noise-inl.h" + +#endif -- cgit v1.2.3