Main MRPT website > C++ reference for MRPT 1.9.9
CVehicleSimul_DiffDriven.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 #pragma once
10 
13 
14 namespace mrpt
15 {
16 namespace kinematics
17 {
18 /** Simulates the kinematics of a differential-driven planar mobile
19  * robot/vehicle, including odometry errors and dynamics limitations.
20  *
21  * \ingroup mrpt_kinematics_grp
22  */
24 {
25  public:
27 
29  virtual ~CVehicleSimul_DiffDriven();
30 
31  /** Change the model of delays used for the orders sent to the robot \sa
32  * movementCommand */
34  double TAU_delay_sec = 1.8, double CMD_delay_sec = 0.)
35  {
36  cTAU = TAU_delay_sec;
37  cDELAY = CMD_delay_sec;
38  }
39 
40  void setV(double v) { m_v = v; }
41  void setW(double w) { m_w = w; }
42  double getV() { return m_v; }
43  double getW() { return m_w; }
44  /** Used to command the robot a desired movement:
45  * \param lin_vel Linar velocity (m/s)
46  * \param ang_vel Angular velocity (rad/s)
47  */
48  void movementCommand(double lin_vel, double ang_vel);
49 
50  void sendVelCmd(const CVehicleVelCmd& cmd_vel) override
51  {
52  const kinematic_cmd_t* cmd =
53  dynamic_cast<const kinematic_cmd_t*>(&cmd_vel);
54  ASSERTMSG_(
55  cmd,
56  "Wrong vehicle kinematic class, expected "
57  "`CVehicleVelCmd_DiffDriven`");
58  movementCommand(cmd->lin_vel, cmd->ang_vel);
59  }
61  {
63  }
64 
65  private:
66  /** lin & angular velocity in the robot local frame. */
67  double m_v, m_w;
68 
69  /** Dynamic limitations of the robot.
70  * Approximation to non-infinity motor forces: A first order low-pass
71  * filter, using:
72  * Command_Time: Time "t" when the last order was received.
73  * Command_v, Command_w: The user-desired velocities.
74  * Command_v0, Command_w0: Actual robot velocities at the moment of
75  * user request.
76  */
78 
79  /** The time-constants for the first order low-pass filter for the
80  * velocities changes. */
81  double cTAU;
82  /** The delay constant for the velocities changes */
83  double cDELAY;
84 
85  void internal_simulControlStep(const double dt) override;
86  void internal_clear() override;
87 };
88 
89 } // End of namespace
90 } // End of namespace
mrpt::kinematics::CVehicleSimul_DiffDriven::cDELAY
double cDELAY
The delay constant for the velocities changes.
Definition: CVehicleSimul_DiffDriven.h:83
mrpt::kinematics::CVehicleSimul_DiffDriven::kinematic_cmd_t
CVehicleVelCmd_DiffDriven kinematic_cmd_t
Definition: CVehicleSimul_DiffDriven.h:26
mrpt::kinematics::CVehicleSimulVirtualBase
This class can be used to simulate the kinematics and dynamics of a differential driven planar mobile...
Definition: CVehicleSimulVirtualBase.h:33
mrpt::kinematics::CVehicleSimul_DiffDriven::Command_v0
double Command_v0
Definition: CVehicleSimul_DiffDriven.h:77
mrpt::kinematics::CVehicleSimul_DiffDriven::getW
double getW()
Definition: CVehicleSimul_DiffDriven.h:43
mrpt::kinematics::CVehicleSimul_DiffDriven::sendVelCmd
void sendVelCmd(const CVehicleVelCmd &cmd_vel) override
Sends a velocity command to the robot.
Definition: CVehicleSimul_DiffDriven.h:50
mrpt::kinematics::CVehicleSimul_DiffDriven::Command_v
double Command_v
Definition: CVehicleSimul_DiffDriven.h:77
mrpt::kinematics::CVehicleSimul_DiffDriven::m_w
double m_w
Definition: CVehicleSimul_DiffDriven.h:67
mrpt::kinematics::CVehicleVelCmd_DiffDriven::ang_vel
double ang_vel
Angular velocity (rad/s)
Definition: CVehicleVelCmd_DiffDriven.h:28
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CKalmanFilterCapable.h:30
w
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:4178
CVehicleSimulVirtualBase.h
v
const GLdouble * v
Definition: glext.h:3678
mrpt::kinematics::CVehicleSimul_DiffDriven::setV
void setV(double v)
Definition: CVehicleSimul_DiffDriven.h:40
mrpt::kinematics::CVehicleSimul_DiffDriven::~CVehicleSimul_DiffDriven
virtual ~CVehicleSimul_DiffDriven()
Definition: CVehicleSimul_DiffDriven.cpp:21
mrpt::kinematics::CVehicleSimul_DiffDriven::cTAU
double cTAU
The time-constants for the first order low-pass filter for the velocities changes.
Definition: CVehicleSimul_DiffDriven.h:81
mrpt::kinematics::CVehicleSimul_DiffDriven::Command_Time
double Command_Time
Dynamic limitations of the robot.
Definition: CVehicleSimul_DiffDriven.h:77
mrpt::kinematics::CVehicleSimul_DiffDriven::internal_clear
void internal_clear() override
Resets all pending cmds.
Definition: CVehicleSimul_DiffDriven.cpp:22
mrpt::kinematics::CVehicleSimul_DiffDriven::CVehicleSimul_DiffDriven
CVehicleSimul_DiffDriven()
Definition: CVehicleSimul_DiffDriven.cpp:16
mrpt::kinematics::CVehicleSimul_DiffDriven::getVelCmdType
CVehicleVelCmd::Ptr getVelCmdType() const override
Gets an empty velocity command object that can be queried to find out the number of velcmd components...
Definition: CVehicleSimul_DiffDriven.h:60
mrpt::kinematics::CVehicleSimul_DiffDriven::getV
double getV()
Definition: CVehicleSimul_DiffDriven.h:42
mrpt::kinematics::CVehicleSimul_DiffDriven::Command_w0
double Command_w0
Definition: CVehicleSimul_DiffDriven.h:77
mrpt::kinematics::CVehicleSimul_DiffDriven::Command_w
double Command_w
Definition: CVehicleSimul_DiffDriven.h:77
CVehicleVelCmd_DiffDriven.h
mrpt::kinematics::CVehicleSimul_DiffDriven::internal_simulControlStep
void internal_simulControlStep(const double dt) override
Definition: CVehicleSimul_DiffDriven.cpp:30
ASSERTMSG_
#define ASSERTMSG_(f, __ERROR_MSG)
Defines an assertion mechanism.
Definition: exceptions.h:101
mrpt::kinematics::CVehicleVelCmd::Ptr
std::shared_ptr< CVehicleVelCmd > Ptr
Definition: CVehicleVelCmd.h:24
mrpt::kinematics::CVehicleSimul_DiffDriven::movementCommand
void movementCommand(double lin_vel, double ang_vel)
Used to command the robot a desired movement:
Definition: CVehicleSimul_DiffDriven.cpp:62
mrpt::kinematics::CVehicleSimul_DiffDriven
Simulates the kinematics of a differential-driven planar mobile robot/vehicle, including odometry err...
Definition: CVehicleSimul_DiffDriven.h:23
mrpt::kinematics::CVehicleVelCmd_DiffDriven::lin_vel
double lin_vel
Linear velocity (m/s)
Definition: CVehicleVelCmd_DiffDriven.h:26
mrpt::kinematics::CVehicleSimul_DiffDriven::setW
void setW(double w)
Definition: CVehicleSimul_DiffDriven.h:41
mrpt::kinematics::CVehicleSimul_DiffDriven::setDelayModelParams
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.
Definition: CVehicleSimul_DiffDriven.h:33
mrpt::kinematics::CVehicleVelCmd
Virtual base for velocity commands of different kinematic models of planar mobile robot.
Definition: CVehicleVelCmd.h:22
mrpt::kinematics::CVehicleSimul_DiffDriven::m_v
double m_v
lin & angular velocity in the robot local frame.
Definition: CVehicleSimul_DiffDriven.h:67
mrpt::kinematics::CVehicleVelCmd_DiffDriven
Kinematic model for Ackermann-like or differential-driven vehicles.
Definition: CVehicleVelCmd_DiffDriven.h:21



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST