fixed some issues

added new pose/turn detections
new helper classes
define-flags for libEigen
This commit is contained in:
2018-09-04 10:49:00 +02:00
parent f990485d44
commit 857d7a1553
51 changed files with 2149 additions and 207 deletions

View File

@@ -11,29 +11,51 @@ struct Timestamp {
private:
/** internal timestamp in milliseconds */
int64_t _ms;
//int64_t _ms;
int64_t _us;
/** HIDDEN ctor. use factory methods */
explicit Timestamp(const int64_t ms) : _ms(ms) {;}
/** hidden ctor. for internal methods only */
Timestamp(int64_t us) : _us(us) {;}
public:
/** empty ctor */
explicit Timestamp() : _ms(0) {;}
explicit Timestamp() : _us(0) {;}
/** get timestamp from the given value which represents microseconds */
static inline Timestamp fromUS(const int64_t us) {
Timestamp ts;
ts._us = us;
return ts;
}
/** get timestamp from the given value which represents milliesconds */
static inline Timestamp fromMS(const int64_t ms) {return Timestamp(ms);}
static inline Timestamp fromMS(const int64_t ms) {
Timestamp ts;
ts._us = ms * 1000;
return ts;
}
/** get timestamp from the given value which represents seconds */
static inline Timestamp fromSec(const float sec) {return Timestamp(sec*1000);}
static inline Timestamp fromSec(const float sec) {
Timestamp ts;
ts._us = static_cast<int64_t>(sec * 1000 * 1000);
return ts;
}
/** get timestamp from the given value which represents a sample rate in hz */
static inline Timestamp fromHz(const float hz) {
const float sec = 1.0f / hz;
return Timestamp::fromSec(sec);
}
/** get timestamp for the current unix-time */
static inline Timestamp fromUnixTime() {
auto now = std::chrono::system_clock::now();
auto duration = now.time_since_epoch();
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
return Timestamp(millis);
//auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
auto micros = std::chrono::duration_cast<std::chrono::microseconds>(duration).count();
return Timestamp::fromUS(micros);
}
/** get timestamp for the current system-time */
@@ -46,44 +68,50 @@ public:
public:
/** get finest available value */
inline int64_t finest() const {return _us;}
/** get timestamp in microseconds */
inline int64_t us() const {return _us;}
/** get timestamp in milliseconds */
inline int64_t ms() const {return _ms;}
inline int64_t ms() const {return _us/1000;}
/** get timestamp in seconds */
inline float sec() const {return _ms/1000.0f;}
inline float sec() const {return _us/1000.0f/1000.0f;}
public:
/** is this timestamp zero? */
bool isZero() const {return _ms == 0;}
bool isZero() const {return _us == 0;}
/** equal? */
bool operator == (const Timestamp& o) const {return _ms == o._ms;}
bool operator == (const Timestamp& o) const {return _us == o._us;}
/** not equal? */
bool operator != (const Timestamp& o) const {return _ms != o._ms;}
bool operator != (const Timestamp& o) const {return _us != o._us;}
/** smaller than the given one? */
bool operator < (const Timestamp& o) const {return _ms < o._ms;}
bool operator <= (const Timestamp& o) const {return _ms <= o._ms;}
bool operator < (const Timestamp& o) const {return _us < o._us;}
bool operator <= (const Timestamp& o) const {return _us <= o._us;}
/** greater than the given one? */
bool operator > (const Timestamp& o) const {return _ms > o._ms;}
bool operator >= (const Timestamp& o) const {return _ms >= o._ms;}
bool operator > (const Timestamp& o) const {return _us > o._us;}
bool operator >= (const Timestamp& o) const {return _us >= o._us;}
Timestamp operator - (const Timestamp& o) const {return Timestamp(_ms - o._ms);}
Timestamp& operator -= (const Timestamp& o) {_ms += o._ms; return *this;}
Timestamp operator - (const Timestamp& o) const {return Timestamp(_us - o._us);}
Timestamp& operator -= (const Timestamp& o) {_us += o._us; return *this;}
Timestamp operator + (const Timestamp& o) const {return Timestamp(_ms + o._ms);}
Timestamp& operator += (const Timestamp& o) {_ms += o._ms; return *this;}
Timestamp operator + (const Timestamp& o) const {return Timestamp(_us + o._us);}
Timestamp& operator += (const Timestamp& o) {_us += o._us; return *this;}
template <typename T> Timestamp operator * (const T val) const {return Timestamp(_ms * val);}
template <typename T> Timestamp operator * (const T val) const {return Timestamp(_us * val);}
template <typename T> Timestamp operator / (const T val) const {return Timestamp(_ms / val);}
template <typename T> Timestamp operator / (const T val) const {return Timestamp(_us / val);}
// /** cast to float */
// operator float () const {return sec();}