NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
imu_integrator.h
Go to the documentation of this file.
1 /* Copyright (c) 2017, United States Government, as represented by the
2  * Administrator of the National Aeronautics and Space Administration.
3  *
4  * All rights reserved.
5  *
6  * The Astrobee platform is licensed under the Apache License, Version 2.0
7  * (the "License"); you may not use this file except in compliance with the
8  * License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15  * License for the specific language governing permissions and limitations
16  * under the License.
17  */
18 
19 #ifndef IMU_INTEGRATION_IMU_INTEGRATOR_H_
20 #define IMU_INTEGRATION_IMU_INTEGRATOR_H_
21 
24 
30 
31 #include <gtsam/navigation/CombinedImuFactor.h>
32 #include <gtsam/navigation/ImuBias.h>
33 
34 #include <map>
35 
36 namespace imu_integration {
37 // Integrates imu measurements and propagates uncertainties.
38 // Maintains a window of measurements so that any interval of measurements in
39 // that window can be integrated into a pim.
40 class ImuIntegrator : public localization_common::TimestampedSet<localization_measurements::ImuMeasurement> {
41  public:
42  explicit ImuIntegrator(const ImuIntegratorParams& params = ImuIntegratorParams());
43 
44  // Buffers an imu measurement.
46 
47  // Creates an integrated GTSAM Pim using the provided bias and imu measurements
48  // between the provided start and end times.
49  boost::optional<gtsam::PreintegratedCombinedMeasurements> IntegratedPim(
50  const gtsam::imuBias::ConstantBias& bias, const localization_common::Time start_time,
51  const localization_common::Time end_time) const;
52 
53  // Extrapolates the provided combined nav state using imu measurements up to the provided
54  // end time.
55  boost::optional<localization_common::CombinedNavState> Extrapolate(
56  const localization_common::CombinedNavState& combined_nav_state, const localization_common::Time end_time) const;
57 
58  // Extrapolates using all IMU measurements more recent than the combined nav state
59  boost::optional<localization_common::CombinedNavState> ExtrapolateLatest(
60  const localization_common::CombinedNavState& combined_nav_state) const;
61 
63 
65 
66  private:
67  // Returns last integrated measurement timestamp.
68  boost::optional<localization_common::Time> IntegrateImuMeasurements(
69  const localization_common::Time start_time, const localization_common::Time end_time,
70  gtsam::PreintegratedCombinedMeasurements& pim) const;
71 
72  ImuIntegratorParams params_;
73  boost::shared_ptr<gtsam::PreintegratedCombinedMeasurements::Params> pim_params_;
74  std::unique_ptr<DynamicImuFilter> imu_filter_;
75 };
76 } // namespace imu_integration
77 
78 #endif // IMU_INTEGRATION_IMU_INTEGRATOR_H_
localization_measurements::ImuMeasurement
Definition: imu_measurement.h:30
imu_integration::ImuIntegratorParams
Definition: imu_integrator_params.h:29
imu_integration::ImuIntegrator::AddImuMeasurement
void AddImuMeasurement(const localization_measurements::ImuMeasurement &imu_measurement)
Definition: imu_integrator.cc:44
localization_common::CombinedNavState
Definition: combined_nav_state.h:48
imu_integration::ImuIntegrator::SetFanSpeedMode
void SetFanSpeedMode(const localization_measurements::FanSpeedMode fan_speed_mode)
Definition: imu_integrator.cc:145
imu_integration::ImuIntegrator::ExtrapolateLatest
boost::optional< localization_common::CombinedNavState > ExtrapolateLatest(const localization_common::CombinedNavState &combined_nav_state) const
Definition: imu_integrator.cc:128
imu_integration::ImuIntegrator::Extrapolate
boost::optional< localization_common::CombinedNavState > Extrapolate(const localization_common::CombinedNavState &combined_nav_state, const localization_common::Time end_time) const
Definition: imu_integrator.cc:117
imu_integration
Definition: butterO1.h:26
timestamped_set.h
localization_common::TimestampedSet
Definition: timestamped_set.h:49
time.h
imu_integration::ImuIntegrator::fan_speed_mode
localization_measurements::FanSpeedMode fan_speed_mode() const
Definition: imu_integrator.cc:149
imu_integration::ImuIntegrator::ImuIntegrator
ImuIntegrator(const ImuIntegratorParams &params=ImuIntegratorParams())
Definition: imu_integrator.cc:27
imu_integrator_params.h
imu_integration::ImuIntegrator::IntegratedPim
boost::optional< gtsam::PreintegratedCombinedMeasurements > IntegratedPim(const gtsam::imuBias::ConstantBias &bias, const localization_common::Time start_time, const localization_common::Time end_time) const
Definition: imu_integrator.cc:106
combined_nav_state.h
imu_integration::ImuIntegrator
Definition: imu_integrator.h:40
localization_measurements::FanSpeedMode
FanSpeedMode
Definition: fan_speed_mode.h:23
imu_measurement.h
localization_common::Time
double Time
Definition: time.h:23
dynamic_imu_filter.h
fan_speed_mode.h