RTAB-Map 0.23.10
Real-Time Appearance-Based Mapping
Loading...
Searching...
No Matches
IMUFilter.h
1/*
2Copyright (c) 2010-2019, Mathieu Labbe - IntRoLab - Universite de Sherbrooke
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7 * Redistributions of source code must retain the above copyright
8 notice, this list of conditions and the following disclaimer.
9 * Redistributions in binary form must reproduce the above copyright
10 notice, this list of conditions and the following disclaimer in the
11 documentation and/or other materials provided with the distribution.
12 * Neither the name of the Universite de Sherbrooke nor the
13 names of its contributors may be used to endorse or promote products
14 derived from this software without specific prior written permission.
15
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
20DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*/
27
28#ifndef CORELIB_INCLUDE_RTABMAP_CORE_IMUFILTER_H_
29#define CORELIB_INCLUDE_RTABMAP_CORE_IMUFILTER_H_
30
31#include "rtabmap/core/rtabmap_core_export.h" // DLL export/import defines
32#include <rtabmap/core/Parameters.h>
33#include <Eigen/Geometry>
34
35namespace rtabmap {
36
58class RTABMAP_CORE_EXPORT IMUFilter
59{
60public:
64 enum Type {
65 kMadgwick = 0,
66 kComplementaryFilter = 1
67 };
68
74 static IMUFilter * create(const ParametersMap & parameters = ParametersMap());
75
83 static IMUFilter * create(IMUFilter::Type type, const ParametersMap & parameters = ParametersMap());
84
85 virtual ~IMUFilter() {}
86
91 virtual void parseParameters(const ParametersMap & parameters) {}
92
103 void update(
104 double gx, double gy, double gz,
105 double ax, double ay, double az,
106 double stamp);
107
109 virtual IMUFilter::Type type() const = 0;
110
118 virtual void getOrientation(double & qx, double & qy, double & qz, double & qw) const = 0;
119
127 virtual void reset(double qx = 0.0, double qy = 0.0, double qz = 0.0, double qw = 1.0) = 0;
128
129protected:
130 IMUFilter(const ParametersMap & parameters = ParametersMap()) : previousStamp_(0) {}
131
132private:
133 virtual void updateImpl(
134 double gx, double gy, double gz,
135 double ax, double ay, double az,
136 double dt) = 0;
137
138 double previousStamp_;
139};
140
141} // namespace rtabmap
142
143#endif /* CORELIB_INCLUDE_RTABMAP_CORE_IMUFILTER_H_ */
Fuses gyroscope and accelerometer samples into an orientation quaternion.
Definition IMUFilter.h:59
Type
Orientation fusion algorithm.
Definition IMUFilter.h:64
static IMUFilter * create(const ParametersMap &parameters=ParametersMap())
Creates a filter using type parsed from parameters.
virtual void parseParameters(const ParametersMap &parameters)
Re-reads filter parameters from parameters.
Definition IMUFilter.h:91
virtual void reset(double qx=0.0, double qy=0.0, double qz=0.0, double qw=1.0)=0
Resets internal state to the given orientation.
static IMUFilter * create(IMUFilter::Type type, const ParametersMap &parameters=ParametersMap())
Creates a filter of the given type.
void update(double gx, double gy, double gz, double ax, double ay, double az, double stamp)
Integrates one IMU sample and updates the internal orientation estimate.
virtual IMUFilter::Type type() const =0
virtual void getOrientation(double &qx, double &qy, double &qz, double &qw) const =0
Current orientation estimate.
std::map< std::string, std::string > ParametersMap
Parameter keys mapped to their values, as used by every configurable class (see Parameters).
Definition Parameters.h:44