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 }
Kinematic simulator of a holonomic 2D robot capable of moving in any direction, with "blended" veloci...
void internal_clear() override
Resets all pending cmds.
void sendVelCmd(const CVehicleVelCmd &cmd_vel) override
Sends a velocity command to the robot.
void sendVelRampCmd(double vel, double dir, double ramp_time, double rot_speed)
Sends a velocity cmd to the holonomic robot.
TVelRampCmd m_vel_ramp_cmd
the last cmd received from the user.
CVehicleVelCmd::Ptr getVelCmdType() const override
Gets an empty velocity command object that can be queried to find out the number of velcmd components...
void internal_simulControlStep(const double dt) override
This class can be used to simulate the kinematics and dynamics of a differential driven planar mobile...
double rot_speed
: (rad/s) rotational speed for rotating such as the robot slowly faces forward.
double ramp_time
: Blending time between current and target time.
double dir_local
: direction, relative to the current robot heading (radians).
Virtual base for velocity commands of different kinematic models of planar mobile robot.
std::shared_ptr< CVehicleVelCmd > Ptr
#define ASSERTMSG_(f, __ERROR_MSG)
Definition: mrpt_macros.h:306
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
double issue_time
time when the cmd was issued.
double phi
Orientation (rads)
2D twist: 2D velocity vector (vx,vy) + planar angular velocity (omega)



Page generated by Doxygen 1.9.1 for MRPT 1.9.9 Git: 63ea9d1f1 Thu Nov 23 00:06:53 2017 +0100 at mar 26 may 2026 12:19:29 CEST