|
terrain_estimator
|
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 |
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.
Contact: patrick.merz_paranhos@dfki.de
| SlipDetectionModelBased::SlipDetectionModelBased | ( | double | axis_rotation, |
| uint | fl, | ||
| uint | fr, | ||
| uint | rl, | ||
| uint | rr | ||
| ) |
| 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 ****************
| void SlipDetectionModelBased::analyzeConsecutiveSlips | ( | ) |
accumulate the slip votes if they are consecutive
| double SlipDetectionModelBased::getWheelSlipSingleCase | ( | ) |
| bool SlipDetectionModelBased::hasWheelConsecutivelySliped | ( | int | wheel | ) |
| bool SlipDetectionModelBased::hasWheelSingleSliped | ( | int | wheel | ) |
| bool SlipDetectionModelBased::hasWheelSliped | ( | int | wheel | ) |
| 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
| 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 |
| 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)
1.8.11