terrain_estimator
Public Member Functions | Public Attributes | List of all members
terrain_estimator::SlipDetectionModelBased Class Reference

Estimates slip using the vehicle model constrains. More...

#include <ModelBaseAnalysis.hpp>

Public Member Functions

EIGEN_MAKE_ALIGNED_OPERATOR_NEW SlipDetectionModelBased (double axis_rotation, uint fl, uint fr, uint rl, uint rr)
 
 ~SlipDetectionModelBased ()
 
bool slipDetection (Vector4d translation, double delta_heading_measured, double slip_threashold)
 
double getWheelSlipSingleCase ()
 
bool hasWheelSingleSliped (int wheel)
 
bool hasWheelSliped (int wheel)
 
bool hasWheelConsecutivelySliped (int wheel)
 
void analyzeConsecutiveSlips ()
 

Public Attributes

double delta_theta_model
 
double delta_theta_measured
 
Eigen::Vector4d total_slip
 
Vector4d slip_votes
 
Vector4d consectuive_slip_votes
 

Detailed Description

Estimates slip using the vehicle model constrains.

Do to the Vehicle mechanical constrain the distance between axis should be constant. Using the translation given by the encouder and a heading given by a measurement unit one can estimate the position of each of the wheel axis. But do to the fact that each wheel can slip the problem is underderterminated.

4 hypotesis are created: each hypotesis assumes that one of the wheels didn't slip Once you consider that 1 wheel has 0 meter slip (hypotesis) the problem becomes determined. Solving the problem will yeal 3 slip values, one for each wheel. If this slip value is above a certain threashold, that wheel is considered to be slipping under that hypotesis.

Once all 4 hypotesis have been tested, each will have casted a vote if the other wheels are considered to be slipping or not. If a wheel get's 3 votes, while all other wheels have under 2 votes this wheel is considered to be very likely slipping.

Author
Author
Patrick Merz Paranhos
Date
Date
15/09/2011

Contact: patri.nosp@m.ck.m.nosp@m.erz_p.nosp@m.aran.nosp@m.hos@d.nosp@m.fki..nosp@m.de

Constructor & Destructor Documentation

SlipDetectionModelBased::SlipDetectionModelBased ( double  axis_rotation,
uint  fl,
uint  fr,
uint  rl,
uint  rr 
)
Parameters
axis_rotation- the axis of rotation for the vehicle
fl- the front left wheel index
fr- the front right wheel index
rl- the rear left wheel index
rr- the rear right wheel index
SlipDetectionModelBased::~SlipDetectionModelBased ( )

********* SlipDetectionModelBased **************** ********* SlipDetectionModelBased **************** ********* SlipDetectionModelBased ****************

Member Function Documentation

void SlipDetectionModelBased::analyzeConsecutiveSlips ( )

accumulate the slip votes if they are consecutive

double SlipDetectionModelBased::getWheelSlipSingleCase ( )
Returns
The wheel that sliped or -1 if no wheel sliped
bool SlipDetectionModelBased::hasWheelConsecutivelySliped ( int  wheel)
Returns
true if it is likely that this wheel sliped consecutiv time, which caracterize a strong slip chance.
bool SlipDetectionModelBased::hasWheelSingleSliped ( int  wheel)
Returns
true if it is likely that this wheel sliped in the single sliped scenario
bool SlipDetectionModelBased::hasWheelSliped ( int  wheel)
Returns
true if it is likely that this wheel sliped
bool SlipDetectionModelBased::slipDetection ( Vector4d  translation,
double  delta_heading_measured,
double  slip_threashold 
)

If the distance variation between the axis exceed a certain value there is a slip Since the problem is underterminated this work with multiple hypotesis that each wheel didn't slip

Parameters
translation- each of the robot axis translation
delta_heading_measured- the measured heading CHANGE during the measured translation
slip_threashold- if the distance variation between axis exceed a certain value a slip is detected
Returns
slip? - if there was a slip or not

Member Data Documentation

Vector4d terrain_estimator::SlipDetectionModelBased::consectuive_slip_votes

accumulates consecutive slip votes over a period of time (it reduces the speed of the slip detection, but increases the certantie

double terrain_estimator::SlipDetectionModelBased::delta_theta_measured

The change in the heading between time steps measured by the imu

double terrain_estimator::SlipDetectionModelBased::delta_theta_model

The change in the heading between times step in the model

Vector4d terrain_estimator::SlipDetectionModelBased::slip_votes

The number of votes casted by each of the hypotesis if this wheel is slipping or not

Eigen::Vector4d terrain_estimator::SlipDetectionModelBased::total_slip

The distance sliped in the defined time step (this value is calulate by averaging the distance slip in each hypotesis)


The documentation for this class was generated from the following files: