-
Notifications
You must be signed in to change notification settings - Fork 0
/
mainpage.dox
52 lines (42 loc) · 2.59 KB
/
mainpage.dox
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/**
\mainpage
\htmlinclude manifest.html
The pose-twist MESKF package provides a Kalman filter based solution to full 3D
pose and twist estimation for mobile vehicles with inertial sensors. Actually,
it provides both node and nodelet interfaces for a filter that combines
information from an inertial measurment unit (IMU) with odometry measurements
and depth or height measurements.
The pose and twist estimation is done using an Extended Kalman Filter with
multiplicative orientation error. The filter is updated using IMU samples as
inputs (linear acceleration and angular velocity), and corrected with samples
from the other measurements. Gyroscope noise and accelerometer noise in IMU
samples are assumed to be isotropic, independent and constant in time.
Measurement uncertainty does not need to be constant, and should be provided
with each sample. Inputs and measurements are enqueued to ensure that they are
processed in chronological order, dealing with the possibly different delays of
each sensor, and the filter state is updated and corrected at a regular rate.
Finally, it may be initialized, reset or stopped through by service calls.
\section nodes Nodes and nodelets
Both node and nodelet versions of the base filter class are provided.
For more information about the topics, services and parameters please
see the pose_twist_meskf::PoseTwistMESKFNodeBase class description.
\section codeapi Code API
To avoid reinventing the wheel or adding a dependency not provided by ROS
distributions, the package uses the Orocos Bayesian Filtering Library (BFL).
Please note that BFL does not support error state filters, and its design does
not seem to allow adding these kind of filters as a simple extension.
Hence, the low level code organization is quite hacky. To leverage the problem,
all the estimation code is encapsulated in a ROS independent library.
ROS node and nodelet interfaces are provided, sharing the same base code.
The package is organized as follows:
- BFL classes provide the Kalman filtering computations (the math).
- Low level classes (derived from BFL classes) implement the system model and
the measurement models, and provide some adaptions for error state filtering.
- Class pose_twist_meskf::PoseTwistMESKF manages input and measurement queues
and filter initialization and updates.
- Class pose_twist_meskf::PoseTwistMESKFNodeBase provides the common components
of the ROS interface (parameters, topics and services, format conversions...).
- Main file pose_twist_meskf_node.cpp and class
pose_twist_meskf::PoseTwistMESKFNodelet respectively provide the ROS node and
nodelet interface.
*/