src
filter
imu_complementary_filter.cpp
Go to the documentation of this file.
1
//
2
// Created by yezi on 2022/3/26.
3
//
4
5
#include "
rm_common/filters/imu_complementary_filter.h
"
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
}
17
bool
ImuComplementaryFilter::initFilter
(
XmlRpc::XmlRpcValue
& imu_data)
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
}
28
void
ImuComplementaryFilter::resetFilter
()
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
}
40
if
(
do_bias_estimation_
)
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