Main MRPT website > C++ reference for MRPT 1.9.9
CVehicleSimul_Holo.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-2017, 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 /** Kinematic simulator of a holonomic 2D robot capable of moving in any
19  * direction, with "blended"
20  * velocity profiles. See CVehicleSimul_Holo::sendVelCmd() for a description of
21  * the velocity commands in this kinematic model.
22  * \ingroup mrpt_kinematics_grp
23  */
25 {
26  public:
28 
30 
31  /** Sends a velocity cmd to the holonomic robot.
32  * \param[in] vel Linear speed (m/s)
33  * \param[in] dir Direction (rad) (In the odometry frame of reference)
34  * \param[in] ramp_time Blend the cmd during this period (seconds)
35  * \param[in] rot_speed Rotational speed while there is heading error and
36  * to this constant (rad/s)
37  */
38  void sendVelRampCmd(
39  double vel, double dir, double ramp_time, double rot_speed);
40 
41  void sendVelCmd(const CVehicleVelCmd& cmd_vel) override
42  {
43  const kinematic_cmd_t* cmd =
44  dynamic_cast<const kinematic_cmd_t*>(&cmd_vel);
45  ASSERTMSG_(
46  cmd,
47  "Wrong vehicle kinematic class, expected `CVehicleVelCmd_Holo`");
49  cmd->vel,
50  cmd->dir_local + m_odometry.phi /* local to odometry dir */,
51  cmd->ramp_time, cmd->rot_speed);
52  }
54  {
56  }
57 
58  private:
59  /** @name Vel ramp cmds
60  * @{ */
61  struct TVelRampCmd
62  {
63  /** time when the cmd was issued. (<0: invalid, means there are no
64  * pending cmds to execute) */
65  double issue_time;
68 
69  TVelRampCmd() : issue_time(-1.0) {}
70  };
71  /** the last cmd received from the user. */
73  /** @} */
74 
75  void internal_simulControlStep(const double dt) override;
76  void internal_clear() override;
77 };
78 }
79 }
CVehicleVelCmd::Ptr getVelCmdType() const override
Gets an empty velocity command object that can be queried to find out the number of velcmd components...
This class can be used to simulate the kinematics and dynamics of a differential driven planar mobile...
void sendVelRampCmd(double vel, double dir, double ramp_time, double rot_speed)
Sends a velocity cmd to the holonomic robot.
void internal_simulControlStep(const double dt) override
Virtual base for velocity commands of different kinematic models of planar mobile robot...
2D twist: 2D velocity vector (vx,vy) + planar angular velocity (omega)
double ramp_time
: Blending time between current and target time.
void sendVelCmd(const CVehicleVelCmd &cmd_vel) override
Sends a velocity command to the robot.
double dir_local
: direction, relative to the current robot heading (radians).
double issue_time
time when the cmd was issued.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Kinematic simulator of a holonomic 2D robot capable of moving in any direction, with "blended" veloci...
void internal_clear() override
Resets all pending cmds.
std::shared_ptr< CVehicleVelCmd > Ptr
TVelRampCmd m_vel_ramp_cmd
the last cmd received from the user.
#define ASSERTMSG_(f, __ERROR_MSG)
double rot_speed
: (rad/s) rotational speed for rotating such as the robot slowly faces forward.
double phi
Orientation (rads)



Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019