Bench-MR
A Motion Planning Benchmark for Wheeled Mobile Robots
Public Member Functions | Public Attributes | List of all members
POSQ Class Reference

POSQ class that implements the POSQ steering function. More...

#include <POSQ.hpp>

Public Member Functions

 POSQ ()
 
void setRes (const double *r) const
 Set the current result of the integration. More...
 
double normAngle (double a, double mina) const
 Normalize the angle a rispect to the minimum angle mina. More...
 
double * posControlStep (double x_c, double y_c, double t_c, double x_end, double y_end, double t_end, double ct, double b, int dir, int &eot) const
 Single step of the Steer Function. More...
 
std::vector< UnicycleStatesteer (const ob::State *from, const ob::State *to, double &distance) const
 Propagate the model of the system forward, starting at a given state, with a given control, for a given number of steps. More...
 
double distance (const ompl::base::State *state1, const ompl::base::State *state2)
 Compute the distance between two states. More...
 
UnicycleState interpolate (const ompl::base::State *from, std::vector< UnicycleState > states, const double t)
 Return state at time t. More...
 

Public Attributes

double B {.54}
 length of the wheels axis More...
 
double DT {0.1}
 Integration Time Step
More...
 
const int MAX_SIZE = 10001
 Max Size of the Control (HacK: in this case equal to the dimension) More...
 
const double END_CONTROLS = 2000
 Value used to mark the end of the vector, no used at the moment. More...
 
double * result_
 Internal Results of the integration. More...
 
double * intRes_
 
int * ind_
 Internal Counter to access the current control to propagate. More...
 
double Krho
 
double Kalpha
 
double Kbeta
 
double Kv
 
double Vmax
 
double RhoEndCondition
 
ompl::base::StateSpacePtr space_
 

Detailed Description

POSQ class that implements the POSQ steering function.

Constructor & Destructor Documentation

◆ POSQ()

POSQ::POSQ ( )
inline

Read the paper and see how to set the proper gain values

double Kphi; Kphi = -1;

Read the paper and see how to set the proper gain values

double Kphi; Kphi = -1;

Member Function Documentation

◆ distance()

double POSQ::distance ( const ompl::base::State state1,
const ompl::base::State state2 
)
inline

Compute the distance between two states.

◆ interpolate()

UnicycleState POSQ::interpolate ( const ompl::base::State from,
std::vector< UnicycleState states,
const double  t 
)
inline

Return state at time t.

◆ normAngle()

double POSQ::normAngle ( double  a,
double  mina 
) const
inline

Normalize the angle a rispect to the minimum angle mina.

Parameters
doublea
doublemina

◆ posControlStep()

double * POSQ::posControlStep ( double  x_c,
double  y_c,
double  t_c,
double  x_end,
double  y_end,
double  t_end,
double  ct,
double  b,
int  dir,
int &  eot 
) const
inline

Single step of the Steer Function.

Parameters
doublex_c, initial x-coord
doubley_c, initial y-coord
doublet_c, initial orientation
doublex_end, final x-coord.
doubley_end, final y-coord.
doublet_end, final orientation
doublec_t, integration time step
doubleb, length of the wheel axis
doubledir, direction of the robot dir==1 forward

This function will generate a vector of double as output: [0] Vl velocity of the left wheel; [1] Vr velocity of the right wheel; [2] V translational Velocity; [3] W Angular Velocity. [4] EOT End Of Trajectory

◆ setRes()

void POSQ::setRes ( const double *  r) const
inline

Set the current result of the integration.

◆ steer()

std::vector< UnicycleState > POSQ::steer ( const ob::State from,
const ob::State to,
double &  distance 
) const
inline

Propagate the model of the system forward, starting at a given state, with a given control, for a given number of steps.

Parameters
statefrom Initial state of the steering
stateto Ending state of the steering
doubleduration, number of control steps needed to steer the robot

Member Data Documentation

◆ B

double POSQ::B {.54}

length of the wheels axis

◆ DT

double POSQ::DT {0.1}

Integration Time Step

◆ END_CONTROLS

const double POSQ::END_CONTROLS = 2000

Value used to mark the end of the vector, no used at the moment.

◆ ind_

int* POSQ::ind_

Internal Counter to access the current control to propagate.

◆ intRes_

double* POSQ::intRes_

◆ Kalpha

double POSQ::Kalpha

◆ Kbeta

double POSQ::Kbeta

◆ Krho

double POSQ::Krho

◆ Kv

double POSQ::Kv

◆ MAX_SIZE

const int POSQ::MAX_SIZE = 10001

Max Size of the Control (HacK: in this case equal to the dimension)

◆ result_

double* POSQ::result_

Internal Results of the integration.

◆ RhoEndCondition

double POSQ::RhoEndCondition

◆ space_

ompl::base::StateSpacePtr POSQ::space_

◆ Vmax

double POSQ::Vmax

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