NASA Astrobee Robot Software  0.19.1
Flight software for the Astrobee robots operating inside the International Space Station.
imu_bias_initializer.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 #ifndef ROS_GRAPH_VIO_IMU_BIAS_INITIALIZER_H_
19 #define ROS_GRAPH_VIO_IMU_BIAS_INITIALIZER_H_
20 
26 
27 #include <gtsam/navigation/ImuBias.h>
28 
29 #include <vector>
30 
31 namespace ros_graph_vio {
33  ImuBiasWithStddev(const gtsam::imuBias::ConstantBias& bias, const Eigen::Vector3d& accelerometer_bias_stddev,
36  gtsam::imuBias::ConstantBias bias;
39 };
40 
41 // Buffers IMU measurements (and flight speed mode if available to help filter speed specific vibration noise) and
42 // estimates IMU biases. Assumes standstill behavior so the estimated bias is simply the average of the buffered
43 // measurements. Saves biases to a file and optionally loads from a file as well.
44 // If using in a gravity environment, assumes the IMU orientation wrt gravity doesn't
45 // change, so gravity is considered a constant IMU bias that contributes to the estimated IMU bias.
47  public:
48  // Construct with params.
49  explicit ImuBiasInitializer(const ImuBiasInitializerParams& params);
50 
51  // Add fan speed mode measurement for IMU bias filter.
53 
54  // Add IMU measurement. Estimate biases if enough measurements have been received and
55  // save this to a file.
57 
58  // Returns bias if it is available.
59  boost::optional<ImuBiasWithStddev> Bias() const;
60 
61  // Manually sets the bias and saves it to file.
62  void UpdateBias(const ImuBiasWithStddev& bias);
63 
64  // Clears measurement buffer, filter, and estimated bias.
65  void Reset();
66 
67  // Loads the IMU bias from a file (filename set in params).
68  bool LoadFromFile();
69 
70  // Save biases to a file (filename set in params).
71  bool SaveToFile() const;
72 
73  private:
74  boost::optional<ImuBiasWithStddev> imu_bias_;
75  std::unique_ptr<imu_integration::DynamicImuFilter> imu_bias_filter_;
76  std::vector<localization_measurements::ImuMeasurement> imu_bias_measurements_;
78 };
79 } // namespace ros_graph_vio
80 
81 #endif // ROS_GRAPH_VIO_IMU_BIAS_INITIALIZER_H_
ros_graph_vio::ImuBiasInitializer::Reset
void Reset()
Definition: imu_bias_initializer.cc:81
localization_measurements::ImuMeasurement
Definition: imu_measurement.h:30
ros_graph_vio::ImuBiasInitializer::Bias
boost::optional< ImuBiasWithStddev > Bias() const
Definition: imu_bias_initializer.cc:74
ros_graph_vio::ImuBiasWithStddev::ImuBiasWithStddev
ImuBiasWithStddev(const gtsam::imuBias::ConstantBias &bias, const Eigen::Vector3d &accelerometer_bias_stddev, const Eigen::Vector3d &gyro_bias_stddev)
Definition: imu_bias_initializer.h:33
ros_graph_vio
Definition: imu_bias_initializer.h:31
ros_graph_vio::ImuBiasInitializer::AddFanSpeedModeMeasurement
void AddFanSpeedModeMeasurement(const localization_measurements::FanSpeedMode fan_speed_mode)
Definition: imu_bias_initializer.cc:29
ros_graph_vio::ImuBiasInitializer::LoadFromFile
bool LoadFromFile()
Definition: imu_bias_initializer.cc:87
ros_graph_vio::ImuBiasInitializerParams
Definition: imu_bias_initializer_params.h:26
point_cloud_common::Vector3d
Eigen::Vector3d Vector3d(const PointType &point)
Definition: utilities.h:328
ros_graph_vio::ImuBiasInitializer::AddImuMeasurement
void AddImuMeasurement(const localization_measurements::ImuMeasurement &imu_measurement)
Definition: imu_bias_initializer.cc:33
ros_graph_vio::ImuBiasWithStddev::bias
gtsam::imuBias::ConstantBias bias
Definition: imu_bias_initializer.h:36
ros_graph_vio::ImuBiasInitializer::UpdateBias
void UpdateBias(const ImuBiasWithStddev &bias)
Definition: imu_bias_initializer.cc:76
imu_bias_initializer_params.h
ros_graph_vio::ImuBiasWithStddev::gyro_bias_stddev
Eigen::Vector3d gyro_bias_stddev
Definition: imu_bias_initializer.h:38
localization_measurements::FanSpeedMode
FanSpeedMode
Definition: fan_speed_mode.h:23
ros_graph_vio::ImuBiasInitializer::ImuBiasInitializer
ImuBiasInitializer(const ImuBiasInitializerParams &params)
Definition: imu_bias_initializer.cc:27
ros_graph_vio::ImuBiasInitializer
Definition: imu_bias_initializer.h:46
msg_conversions.h
imu_measurement.h
ros_graph_vio::ImuBiasInitializer::SaveToFile
bool SaveToFile() const
Definition: imu_bias_initializer.cc:124
ros_graph_vio::ImuBiasWithStddev::accelerometer_bias_stddev
Eigen::Vector3d accelerometer_bias_stddev
Definition: imu_bias_initializer.h:37
dynamic_imu_filter.h
fan_speed_mode.h
ros_graph_vio::ImuBiasWithStddev
Definition: imu_bias_initializer.h:32