104 double maxPoseInterval = 1.0,
105 double velocityWindow = 0.5,
106 double gravity = 9.80665);
108 double maxPoseInterval()
const {
return maxPoseInterval_;}
109 double velocityWindow()
const {
return velocityWindow_;}
165 void addSample(
double stamp,
const Eigen::Quaterniond & orientation,
166 const Eigen::Vector3d & specificForce,
bool hasAcceleration);
168 void estimateGravity(
double stamp,
const Eigen::Vector3d & specificForce,
double angularVelocity);
172 Eigen::Quaterniond orientation;
174 Eigen::Vector3d specificForce;
175 bool hasAcceleration;
178 Eigen::Vector3d accelerationOf(
const Sample & sample)
const;
179 Eigen::Quaterniond orientationAt(
double stamp)
const;
180 Eigen::Vector3d accelerationAt(
double stamp)
const;
181 void integrate(
double from,
double to,
const Eigen::Quaterniond & rotation,
182 Eigen::Vector3d & velocity, Eigen::Vector3d & position)
const;
183 void updateIntegration()
const;
189 Eigen::Vector3d acceleration;
190 Eigen::Vector3d velocity;
191 Eigen::Vector3d position;
195 double maxPoseInterval_;
196 double velocityWindow_;
198 bool gravityEstimated_;
199 std::map<double, Sample> samples_;
206 Eigen::Vector3d specificForce;
207 double angularVelocity;
209 std::vector<StillSample> stillWindow_;
210 std::vector<double> gravityWindows_;
211 size_t gravityWindowsCount_;
213 std::map<double, rtabmap::Transform> poses_;
218 Eigen::Vector3d velocity_;
221 Eigen::Quaterniond worldToOdom_;
225 mutable std::map<double, Integrated> integrated_;
228 mutable bool integratedStartIsFinal_;