The Odometry class handles odometry readings (2D pose and velocity with related timestamp)
More...
#include <odometry.h>
|
typedef bacc::accumulator_set< double, bacc::stats< bacc::tag::rolling_mean > > | RollingMeanAcc |
| Rolling mean accumulator and window: More...
|
|
typedef bacc::tag::rolling_window | RollingWindow |
|
The Odometry class handles odometry readings (2D pose and velocity with related timestamp)
Definition at line 60 of file odometry.h.
Integration function, used to integrate the odometry:
Definition at line 65 of file odometry.h.
Rolling mean accumulator and window:
Definition at line 159 of file odometry.h.
ackermann_steering_controller::Odometry::Odometry |
( |
size_t |
velocity_rolling_window_size = 10 | ) |
|
Constructor Timestamp will get the current time value Value will be set to zero.
- Parameters
-
velocity_rolling_window_size | Rolling window size used to compute the velocity mean |
Definition at line 51 of file odometry.cpp.
double ackermann_steering_controller::Odometry::getAngular |
( |
| ) |
const |
|
inline |
angular velocity getter
- Returns
- angular velocity [rad/s]
Definition at line 138 of file odometry.h.
double ackermann_steering_controller::Odometry::getHeading |
( |
| ) |
const |
|
inline |
heading getter
- Returns
- heading [rad]
Definition at line 102 of file odometry.h.
double ackermann_steering_controller::Odometry::getLinear |
( |
| ) |
const |
|
inline |
linear velocity getter
- Returns
- linear velocity [m/s]
Definition at line 129 of file odometry.h.
double ackermann_steering_controller::Odometry::getX |
( |
| ) |
const |
|
inline |
x position getter
- Returns
- x position [m]
Definition at line 111 of file odometry.h.
double ackermann_steering_controller::Odometry::getY |
( |
| ) |
const |
|
inline |
y position getter
- Returns
- y position [m]
Definition at line 120 of file odometry.h.
void ackermann_steering_controller::Odometry::init |
( |
const ros::Time & |
time | ) |
|
Initialize the odometry.
- Parameters
-
Definition at line 68 of file odometry.cpp.
void ackermann_steering_controller::Odometry::integrateExact |
( |
double |
linear, |
|
|
double |
angular |
|
) |
| |
|
private |
Integrates the velocities (linear and angular) using exact method.
Other possible integration method provided by the class.
- Parameters
-
linear | Linear velocity m computed by encoders |
angular | Angular velocity rad computed by encoders |
linear | |
angular | |
Exact integration (should solve problems when angular is zero):
Definition at line 154 of file odometry.cpp.
void ackermann_steering_controller::Odometry::integrateRungeKutta2 |
( |
double |
linear, |
|
|
double |
angular |
|
) |
| |
|
private |
Integrates the velocities (linear and angular) using 2nd order Runge-Kutta.
- Parameters
-
linear | Linear velocity m computed by encoders |
angular | Angular velocity rad computed by encoders |
Runge-Kutta 2nd order integration:
Definition at line 139 of file odometry.cpp.
void ackermann_steering_controller::Odometry::resetAccumulators |
( |
| ) |
|
|
private |
Reset linear and angular accumulators.
Definition at line 169 of file odometry.cpp.
void ackermann_steering_controller::Odometry::setVelocityRollingWindowSize |
( |
size_t |
velocity_rolling_window_size | ) |
|
Velocity rolling window size setter.
- Parameters
-
velocity_rolling_window_size | Velocity rolling window size |
Definition at line 132 of file odometry.cpp.
void ackermann_steering_controller::Odometry::setWheelParams |
( |
double |
wheel_reparation_h, |
|
|
double |
wheel_radius |
|
) |
| |
Sets the wheel parameters: radius and separation.
- Parameters
-
wheel_separation | Seperation between left and right wheels [m] |
wheel_radius | Wheel radius [m] |
Definition at line 126 of file odometry.cpp.
bool ackermann_steering_controller::Odometry::update |
( |
double |
rear_wheel_pos, |
|
|
double |
front_steer_pos, |
|
|
const ros::Time & |
time |
|
) |
| |
Updates the odometry class with latest wheels position.
- Parameters
-
rear_wheel_pos | Rear wheel position [rad] |
front_steer_pos | Front Steer position [rad] |
time | Current time |
- Returns
- true if the odometry is actually updated
Get current wheel joint positions:
Estimate velocity of wheels using old and current position:
Update old position with current:
Compute linear and angular diff:
Integrate odometry:
We cannot estimate the speed with very small time intervals:
Estimate speeds using a rolling mean to filter them out:
Definition at line 75 of file odometry.cpp.
void ackermann_steering_controller::Odometry::updateOpenLoop |
( |
double |
linear, |
|
|
double |
angular, |
|
|
const ros::Time & |
time |
|
) |
| |
Updates the odometry class with latest velocity command.
- Parameters
-
linear | Linear velocity [m/s] |
angular | Angular velocity [rad/s] |
time | Current time |
Save last linear and angular velocity:
Integrate odometry:
Definition at line 114 of file odometry.cpp.
double ackermann_steering_controller::Odometry::angular_ |
|
private |
double ackermann_steering_controller::Odometry::heading_ |
|
private |
Integration funcion, used to integrate the odometry:
Definition at line 206 of file odometry.h.
double ackermann_steering_controller::Odometry::linear_ |
|
private |
double ackermann_steering_controller::Odometry::rear_wheel_old_pos_ |
|
private |
Previous wheel position/state [rad]:
Definition at line 198 of file odometry.h.
ros::Time ackermann_steering_controller::Odometry::timestamp_ |
|
private |
size_t ackermann_steering_controller::Odometry::velocity_rolling_window_size_ |
|
private |
Rolling mean accumulators for the linar and angular velocities:
Definition at line 201 of file odometry.h.
double ackermann_steering_controller::Odometry::wheel_radius_ |
|
private |
double ackermann_steering_controller::Odometry::wheel_separation_h_ |
|
private |
Wheel kinematic parameters [m]:
Definition at line 194 of file odometry.h.
double ackermann_steering_controller::Odometry::x_ |
|
private |
double ackermann_steering_controller::Odometry::y_ |
|
private |
The documentation for this class was generated from the following files: