imu_complementary_filter.cpp
Go to the documentation of this file.
1 //
2 // Created by yezi on 2022/3/26.
3 //
4 
6 
7 namespace rm_common
8 {
9 void ImuComplementaryFilter::filterUpdate(double ax, double ay, double az, double wx, double wy, double wz, double dt)
10 {
11  filter_->update(ax, ay, az, wx, wy, wz, dt);
12 }
13 void ImuComplementaryFilter::getOrientation(double& q0, double& q1, double& q2, double& q3)
14 {
15  filter_->getOrientation(q0, q1, q2, q3);
16 }
18 {
19  use_mag_ = imu_data.hasMember("use_mag") && (bool)imu_data["use_mag"];
20  gain_acc_ = imu_data.hasMember("gain_acc") ? (double)imu_data["gain_acc"] : 0.01;
21  gain_mag_ = imu_data.hasMember("gain_mag") ? (double)imu_data["gain_mag"] : 0.01;
22  do_bias_estimation_ = !imu_data.hasMember("do_bias_estimation") || (bool)imu_data["do_bias_estimation"];
23  bias_alpha_ = imu_data.hasMember("bias_alpha") ? (double)imu_data["bias_alpha"] : 0.01;
24  do_adaptive_gain_ = !imu_data.hasMember("do_adaptive_gain") || (bool)imu_data["do_adaptive_gain"];
25  resetFilter();
26  return true;
27 }
29 {
30  filter_ = std::make_shared<imu_tools::ComplementaryFilter>();
31  filter_->setDoBiasEstimation(do_bias_estimation_);
32  filter_->setDoAdaptiveGain(do_adaptive_gain_);
33  if (!filter_->setGainAcc(gain_acc_))
34  ROS_WARN("Invalid gain_acc passed to ComplementaryFilter.");
35  if (use_mag_)
36  {
37  if (!filter_->setGainMag(gain_mag_))
38  ROS_WARN("Invalid gain_mag passed to ComplementaryFilter.");
39  }
41  {
42  if (!filter_->setBiasAlpha(bias_alpha_))
43  ROS_WARN("Invalid bias_alpha passed to ComplementaryFilter.");
44  }
45  return;
46 }
47 } // namespace rm_common
rm_common::ImuComplementaryFilter::filterUpdate
void filterUpdate(double ax, double ay, double az, double wx, double wy, double wz, double dt) override
Definition: imu_complementary_filter.cpp:9
rm_common::ImuComplementaryFilter::do_adaptive_gain_
bool do_adaptive_gain_
Definition: imu_complementary_filter.h:27
rm_common::ImuComplementaryFilter::use_mag_
bool use_mag_
Definition: imu_complementary_filter.h:28
rm_common::ImuComplementaryFilter::bias_alpha_
double bias_alpha_
Definition: imu_complementary_filter.h:26
rm_common::ImuComplementaryFilter::filter_
std::shared_ptr< imu_tools::ComplementaryFilter > filter_
Definition: imu_complementary_filter.h:29
rm_common::ImuComplementaryFilter::getOrientation
void getOrientation(double &q0, double &q1, double &q2, double &q3) override
Definition: imu_complementary_filter.cpp:13
rm_common
Definition: calibration_queue.h:43
ROS_WARN
#define ROS_WARN(...)
imu_complementary_filter.h
rm_common::ImuComplementaryFilter::do_bias_estimation_
bool do_bias_estimation_
Definition: imu_complementary_filter.h:25
XmlRpc::XmlRpcValue::hasMember
bool hasMember(const std::string &name) const
rm_common::ImuComplementaryFilter::gain_acc_
double gain_acc_
Definition: imu_complementary_filter.h:23
rm_common::ImuComplementaryFilter::initFilter
bool initFilter(XmlRpc::XmlRpcValue &imu_data) override
Definition: imu_complementary_filter.cpp:17
rm_common::ImuComplementaryFilter::gain_mag_
double gain_mag_
Definition: imu_complementary_filter.h:24
rm_common::ImuComplementaryFilter::resetFilter
void resetFilter() override
Definition: imu_complementary_filter.cpp:28
XmlRpc::XmlRpcValue


rm_common
Author(s):
autogenerated on Tue May 6 2025 02:23:36