MRPT  1.9.9
mrpt::kinematics::CVehicleSimul_DiffDriven Class Reference

Detailed Description

Simulates the kinematics of a differential-driven planar mobile robot/vehicle, including odometry errors and dynamics limitations.

Definition at line 21 of file CVehicleSimul_DiffDriven.h.

#include <mrpt/kinematics/CVehicleSimul_DiffDriven.h>

Inheritance diagram for mrpt::kinematics::CVehicleSimul_DiffDriven:
Inheritance graph

Public Types

using kinematic_cmd_t = CVehicleVelCmd_DiffDriven
 

Public Member Functions

 CVehicleSimul_DiffDriven ()
 
virtual ~CVehicleSimul_DiffDriven ()
 
void setDelayModelParams (double TAU_delay_sec=1.8, double CMD_delay_sec=0.)
 Change the model of delays used for the orders sent to the robot. More...
 
void setV (double v)
 
void setW (double w)
 
double getV ()
 
double getW ()
 
void movementCommand (double lin_vel, double ang_vel)
 Used to command the robot a desired movement: More...
 
void sendVelCmd (const CVehicleVelCmd &cmd_vel) override
 Sends a velocity command to the robot. More...
 
CVehicleVelCmd::Ptr getVelCmdType () const override
 Gets an empty velocity command object that can be queried to find out the number of velcmd components,... More...
 
Kinematic simulation and control interface
void simulateOneTimeStep (const double dt)
 Runs the simulator during "dt" seconds. More...
 
const mrpt::math::TPose2DgetCurrentGTPose () const
 Returns the instantaneous, ground truth pose in world coordinates. More...
 
void setCurrentGTPose (const mrpt::math::TPose2D &pose)
 Brute-force move robot to target coordinates ("teleport") More...
 
const mrpt::math::TPose2DgetCurrentOdometricPose () const
 Returns the current pose according to (noisy) odometry. More...
 
template<typename T >
void setCurrentOdometricPose (const T &pose)
 Brute-force overwrite robot odometry. More...
 
const mrpt::math::TTwist2DgetCurrentGTVel () const
 Returns the instantaneous, ground truth velocity vector (vx,vy,omega) in world coordinates. More...
 
mrpt::math::TTwist2D getCurrentGTVelLocal () const
 Returns the instantaneous, ground truth velocity vector (vx,vy,omega) in the robot local frame. More...
 
const mrpt::math::TTwist2DgetCurrentOdometricVel () const
 Returns the instantaneous, odometric velocity vector (vx,vy,omega) in world coordinates. More...
 
mrpt::math::TTwist2D getCurrentOdometricVelLocal () const
 Returns the instantaneous, odometric velocity vector (vx,vy,omega) in the robot local frame. More...
 
double getTime () const
 Get the current simulation time. More...
 
void setOdometryErrors (bool enabled, double Ax_err_bias=1e-3, double Ax_err_std=10e-3, double Ay_err_bias=1e-3, double Ay_err_std=10e-3, double Aphi_err_bias=mrpt::DEG2RAD(1e-3), double Aphi_err_std=mrpt::DEG2RAD(10e-3))
 Enable/Disable odometry errors. More...
 
void resetStatus ()
 
void resetTime ()
 Reset all simulator variables to 0 (except the. More...
 

Protected Attributes

double m_firmware_control_period
 The period at which the low-level controller updates velocities (Default: 0.5 ms) More...
 
bool m_use_odo_error
 Whether to corrupt odometry with noise. More...
 
double m_Ax_err_bias
 
double m_Ax_err_std
 
double m_Ay_err_bias
 
double m_Ay_err_std
 
double m_Aphi_err_bias
 
double m_Aphi_err_std
 
State vector
double m_time
 simulation running time More...
 
mrpt::math::TPose2D m_GT_pose
 ground truth pose in world coordinates. More...
 
mrpt::math::TTwist2D m_GT_vel
 Velocity in (x,y,omega) More...
 
mrpt::math::TTwist2D m_odometric_vel
 Velocity in (x,y,omega) More...
 
mrpt::math::TPose2D m_odometry
 

Private Member Functions

void internal_simulControlStep (const double dt) override
 
void internal_clear () override
 Resets all pending cmds. More...
 

Private Attributes

double m_v
 lin & angular velocity in the robot local frame. More...
 
double m_w
 
double Command_Time
 Dynamic limitations of the robot. More...
 
double Command_v
 
double Command_w
 
double Command_v0
 
double Command_w0
 
double cTAU
 The time-constants for the first order low-pass filter for the velocities changes. More...
 
double cDELAY
 The delay constant for the velocities changes. More...
 

Member Typedef Documentation

◆ kinematic_cmd_t

Constructor & Destructor Documentation

◆ CVehicleSimul_DiffDriven()

CVehicleSimul_DiffDriven::CVehicleSimul_DiffDriven ( )

◆ ~CVehicleSimul_DiffDriven()

CVehicleSimul_DiffDriven::~CVehicleSimul_DiffDriven ( )
virtual

Definition at line 21 of file CVehicleSimul_DiffDriven.cpp.

Member Function Documentation

◆ getCurrentGTPose()

const mrpt::math::TPose2D& mrpt::kinematics::CVehicleSimulVirtualBase::getCurrentGTPose ( ) const
inlineinherited

◆ getCurrentGTVel()

const mrpt::math::TTwist2D& mrpt::kinematics::CVehicleSimulVirtualBase::getCurrentGTVel ( ) const
inlineinherited

Returns the instantaneous, ground truth velocity vector (vx,vy,omega) in world coordinates.

Definition at line 63 of file CVehicleSimulVirtualBase.h.

References mrpt::kinematics::CVehicleSimulVirtualBase::m_GT_vel.

Referenced by mrpt::nav::CRobot2NavInterfaceForSimulator_Holo::getCurrentPoseAndSpeeds(), and mrpt::nav::CRobot2NavInterfaceForSimulator_DiffDriven::getCurrentPoseAndSpeeds().

◆ getCurrentGTVelLocal()

mrpt::math::TTwist2D CVehicleSimulVirtualBase::getCurrentGTVelLocal ( ) const
inherited

Returns the instantaneous, ground truth velocity vector (vx,vy,omega) in the robot local frame.

Definition at line 89 of file CVehicleSimulVirtualBase.cpp.

References mrpt::kinematics::CVehicleSimulVirtualBase::m_GT_pose, mrpt::kinematics::CVehicleSimulVirtualBase::m_GT_vel, mrpt::math::TPose2D::phi, and mrpt::math::TTwist2D::rotate().

◆ getCurrentOdometricPose()

const mrpt::math::TPose2D& mrpt::kinematics::CVehicleSimulVirtualBase::getCurrentOdometricPose ( ) const
inlineinherited

◆ getCurrentOdometricVel()

const mrpt::math::TTwist2D& mrpt::kinematics::CVehicleSimulVirtualBase::getCurrentOdometricVel ( ) const
inlineinherited

Returns the instantaneous, odometric velocity vector (vx,vy,omega) in world coordinates.

Definition at line 70 of file CVehicleSimulVirtualBase.h.

References mrpt::kinematics::CVehicleSimulVirtualBase::m_odometric_vel.

◆ getCurrentOdometricVelLocal()

mrpt::math::TTwist2D CVehicleSimulVirtualBase::getCurrentOdometricVelLocal ( ) const
inherited

◆ getTime()

◆ getV()

double mrpt::kinematics::CVehicleSimul_DiffDriven::getV ( )
inline

Definition at line 40 of file CVehicleSimul_DiffDriven.h.

References m_v.

◆ getVelCmdType()

CVehicleVelCmd::Ptr mrpt::kinematics::CVehicleSimul_DiffDriven::getVelCmdType ( ) const
inlineoverridevirtual

Gets an empty velocity command object that can be queried to find out the number of velcmd components,...

Implements mrpt::kinematics::CVehicleSimulVirtualBase.

Definition at line 58 of file CVehicleSimul_DiffDriven.h.

◆ getW()

double mrpt::kinematics::CVehicleSimul_DiffDriven::getW ( )
inline

Definition at line 41 of file CVehicleSimul_DiffDriven.h.

References m_w.

◆ internal_clear()

void CVehicleSimul_DiffDriven::internal_clear ( )
overrideprivatevirtual

Resets all pending cmds.

Implements mrpt::kinematics::CVehicleSimulVirtualBase.

Definition at line 22 of file CVehicleSimul_DiffDriven.cpp.

References Command_Time, Command_v, Command_w, m_v, and m_w.

◆ internal_simulControlStep()

◆ movementCommand()

void CVehicleSimul_DiffDriven::movementCommand ( double  lin_vel,
double  ang_vel 
)

Used to command the robot a desired movement:

Parameters
lin_velLinar velocity (m/s)
ang_velAngular velocity (rad/s)

Definition at line 62 of file CVehicleSimul_DiffDriven.cpp.

References Command_Time, Command_v, Command_v0, Command_w, Command_w0, mrpt::kinematics::CVehicleSimulVirtualBase::m_time, m_v, and m_w.

Referenced by sendVelCmd().

◆ resetStatus()

◆ resetTime()

void CVehicleSimulVirtualBase::resetTime ( )
inherited

Reset all simulator variables to 0 (except the.

simulation time).

See also
resetTime Reset time counter
resetStatus

Definition at line 88 of file CVehicleSimulVirtualBase.cpp.

References mrpt::kinematics::CVehicleSimulVirtualBase::m_time.

Referenced by CVehicleSimul_DiffDriven(), and mrpt::kinematics::CVehicleSimul_Holo::CVehicleSimul_Holo().

◆ sendVelCmd()

void mrpt::kinematics::CVehicleSimul_DiffDriven::sendVelCmd ( const CVehicleVelCmd cmd_vel)
inlineoverridevirtual

◆ setCurrentGTPose()

void CVehicleSimulVirtualBase::setCurrentGTPose ( const mrpt::math::TPose2D pose)
inherited

Brute-force move robot to target coordinates ("teleport")

Definition at line 24 of file CVehicleSimulVirtualBase.cpp.

References mrpt::kinematics::CVehicleSimulVirtualBase::m_GT_pose.

◆ setCurrentOdometricPose()

template<typename T >
void mrpt::kinematics::CVehicleSimulVirtualBase::setCurrentOdometricPose ( const T &  pose)
inlineinherited

Brute-force overwrite robot odometry.

Definition at line 56 of file CVehicleSimulVirtualBase.h.

References mrpt::kinematics::CVehicleSimulVirtualBase::m_odometry.

◆ setDelayModelParams()

void mrpt::kinematics::CVehicleSimul_DiffDriven::setDelayModelParams ( double  TAU_delay_sec = 1.8,
double  CMD_delay_sec = 0. 
)
inline

Change the model of delays used for the orders sent to the robot.

See also
movementCommand

Definition at line 31 of file CVehicleSimul_DiffDriven.h.

References cDELAY, and cTAU.

◆ setOdometryErrors()

void mrpt::kinematics::CVehicleSimulVirtualBase::setOdometryErrors ( bool  enabled,
double  Ax_err_bias = 1e-3,
double  Ax_err_std = 10e-3,
double  Ay_err_bias = 1e-3,
double  Ay_err_std = 10e-3,
double  Aphi_err_bias = mrpt::DEG2RAD(1e-3),
double  Aphi_err_std = mrpt::DEG2RAD(10e-3) 
)
inlineinherited

◆ setV()

void mrpt::kinematics::CVehicleSimul_DiffDriven::setV ( double  v)
inline

Definition at line 38 of file CVehicleSimul_DiffDriven.h.

References m_v.

◆ setW()

void mrpt::kinematics::CVehicleSimul_DiffDriven::setW ( double  w)
inline

Definition at line 39 of file CVehicleSimul_DiffDriven.h.

References m_w.

◆ simulateOneTimeStep()

Member Data Documentation

◆ cDELAY

double mrpt::kinematics::CVehicleSimul_DiffDriven::cDELAY
private

The delay constant for the velocities changes.

Definition at line 81 of file CVehicleSimul_DiffDriven.h.

Referenced by internal_simulControlStep(), and setDelayModelParams().

◆ Command_Time

double mrpt::kinematics::CVehicleSimul_DiffDriven::Command_Time
private

Dynamic limitations of the robot.

Approximation to non-infinity motor forces: A first order low-pass filter, using: Command_Time: Time "t" when the last order was received. Command_v, Command_w: The user-desired velocities. Command_v0, Command_w0: Actual robot velocities at the moment of user request.

Definition at line 75 of file CVehicleSimul_DiffDriven.h.

Referenced by internal_clear(), internal_simulControlStep(), and movementCommand().

◆ Command_v

double mrpt::kinematics::CVehicleSimul_DiffDriven::Command_v
private

◆ Command_v0

double mrpt::kinematics::CVehicleSimul_DiffDriven::Command_v0
private

Definition at line 75 of file CVehicleSimul_DiffDriven.h.

Referenced by internal_simulControlStep(), and movementCommand().

◆ Command_w

double mrpt::kinematics::CVehicleSimul_DiffDriven::Command_w
private

◆ Command_w0

double mrpt::kinematics::CVehicleSimul_DiffDriven::Command_w0
private

Definition at line 75 of file CVehicleSimul_DiffDriven.h.

Referenced by internal_simulControlStep(), and movementCommand().

◆ cTAU

double mrpt::kinematics::CVehicleSimul_DiffDriven::cTAU
private

The time-constants for the first order low-pass filter for the velocities changes.

Definition at line 79 of file CVehicleSimul_DiffDriven.h.

Referenced by internal_simulControlStep(), and setDelayModelParams().

◆ m_Aphi_err_bias

double mrpt::kinematics::CVehicleSimulVirtualBase::m_Aphi_err_bias
protectedinherited

◆ m_Aphi_err_std

double mrpt::kinematics::CVehicleSimulVirtualBase::m_Aphi_err_std
protectedinherited

◆ m_Ax_err_bias

double mrpt::kinematics::CVehicleSimulVirtualBase::m_Ax_err_bias
protectedinherited

◆ m_Ax_err_std

double mrpt::kinematics::CVehicleSimulVirtualBase::m_Ax_err_std
protectedinherited

◆ m_Ay_err_bias

double mrpt::kinematics::CVehicleSimulVirtualBase::m_Ay_err_bias
protectedinherited

◆ m_Ay_err_std

double mrpt::kinematics::CVehicleSimulVirtualBase::m_Ay_err_std
protectedinherited

◆ m_firmware_control_period

double mrpt::kinematics::CVehicleSimulVirtualBase::m_firmware_control_period
protectedinherited

The period at which the low-level controller updates velocities (Default: 0.5 ms)

Definition at line 127 of file CVehicleSimulVirtualBase.h.

Referenced by mrpt::kinematics::CVehicleSimulVirtualBase::simulateOneTimeStep().

◆ m_GT_pose

◆ m_GT_vel

◆ m_odometric_vel

◆ m_odometry

◆ m_time

◆ m_use_odo_error

bool mrpt::kinematics::CVehicleSimulVirtualBase::m_use_odo_error
protectedinherited

◆ m_v

double mrpt::kinematics::CVehicleSimul_DiffDriven::m_v
private

lin & angular velocity in the robot local frame.

Definition at line 65 of file CVehicleSimul_DiffDriven.h.

Referenced by getV(), internal_clear(), internal_simulControlStep(), movementCommand(), and setV().

◆ m_w

double mrpt::kinematics::CVehicleSimul_DiffDriven::m_w
private



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: 7d5e6d718 Fri Aug 24 01:51:28 2018 +0200 at lun nov 2 08:35:50 CET 2020