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/measurement.h | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/measurement.h (limited to 'src/measurement.h') diff --git a/src/measurement.h b/src/measurement.h new file mode 100644 index 0000000..bad199c --- /dev/null +++ b/src/measurement.h @@ -0,0 +1,93 @@ +/* measurement.h -- data sets we gather + * 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_MEASUREMENT_H +#define PPAML_VREP_AUTOMOBILE_PLUGIN_MEASUREMENT_H + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "csv.h" + +// Base class for time-series data +struct Datum { + inline Datum(float time) + : time(time) { + } + float time; +}; + + +// Datum definitions // + +class Pose : public Datum, public csv::Datum { +public: + inline Pose(float time, float x, float y, float theta) + : ::Datum(time), x(x), y(y), theta(theta) { + } + float x; + float y; + float theta; + inline virtual std::string csvHeader() const; + inline virtual std::string csv() const; + inline virtual unsigned int nCols() const; + +protected: + static const std::string csvHeader_; +}; + + +class ControlSignals : public Datum, public csv::Datum { +public: + inline ControlSignals(float time, float speed, float steeringAngle) + : ::Datum(time), speed(speed), steeringAngle(steeringAngle) { + } + float speed; + float steeringAngle; + inline virtual std::string csvHeader() const; + inline virtual std::string csv() const; + inline virtual unsigned int nCols() const; + +protected: + static const std::string csvHeader_; +}; + + +class LidarDatum : public Datum, public csv::Datum { +public: + inline LidarDatum(float time, std::vector distance, + std::vector intensity) + : ::Datum(time), distance(distance), intensity(intensity) { + } + std::vector distance; + std::vector intensity; + virtual std::string csvHeader() const; + inline virtual std::string csv() const; + inline virtual unsigned int nCols() const; +}; + + +#include "measurement-inl.h" + +#endif -- cgit v1.2.3