MRPT  2.0.4
CVehicleSimul_Holo.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | https://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2020, Individual contributors, see AUTHORS file |
6  | See: https://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See: https://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 #pragma once
10 
13 #include <mrpt/math/TTwist2D.h>
14 
15 namespace mrpt::kinematics
16 {
17 /** Kinematic simulator of a holonomic 2D robot capable of moving in any
18  * direction, with "blended"
19  * velocity profiles. See CVehicleSimul_Holo::sendVelCmd() for a description of
20  * the velocity commands in this kinematic model.
21  * \ingroup mrpt_kinematics_grp
22  */
24 {
25  public:
27 
29 
30  /** Sends a velocity cmd to the holonomic robot.
31  * \param[in] vel Linear speed (m/s)
32  * \param[in] dir Direction (rad) (In the odometry frame of reference)
33  * \param[in] ramp_time Blend the cmd during this period (seconds)
34  * \param[in] rot_speed Rotational speed while there is heading error and
35  * to this constant (rad/s)
36  */
37  void sendVelRampCmd(
38  double vel, double dir, double ramp_time, double rot_speed);
39 
40  void sendVelCmd(const CVehicleVelCmd& cmd_vel) override
41  {
42  const auto* cmd = dynamic_cast<const kinematic_cmd_t*>(&cmd_vel);
43  ASSERTMSG_(
44  cmd,
45  "Wrong vehicle kinematic class, expected `CVehicleVelCmd_Holo`");
47  cmd->vel,
48  cmd->dir_local + m_odometry.phi /* local to odometry dir */,
49  cmd->ramp_time, cmd->rot_speed);
50  }
52  {
54  }
55 
56  private:
57  /** @name Vel ramp cmds
58  * @{ */
59  struct TVelRampCmd
60  {
61  /** time when the cmd was issued. (<0: invalid, means there are no
62  * pending cmds to execute) */
63  double issue_time{-1.0};
66 
67  TVelRampCmd() = default;
68  };
69  /** the last cmd received from the user. */
71  /** @} */
72 
73  void internal_simulControlStep(const double dt) override;
74  void internal_clear() override;
75 };
76 } // namespace mrpt::kinematics
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::rot_speed
double rot_speed
Definition: CVehicleSimul_Holo.h:64
CVehicleVelCmd_Holo.h
mrpt::kinematics::CVehicleSimulVirtualBase
This class can be used to simulate the kinematics and dynamics of a differential driven planar mobile...
Definition: CVehicleSimulVirtualBase.h:32
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::dir
double dir
Definition: CVehicleSimul_Holo.h:64
mrpt::math::TPose2D::phi
double phi
Orientation (rads)
Definition: TPose2D.h:32
mrpt::kinematics::CVehicleSimul_Holo::CVehicleSimul_Holo
CVehicleSimul_Holo()
Definition: CVehicleSimul_Holo.cpp:17
mrpt::kinematics::CVehicleSimul_Holo::sendVelCmd
void sendVelCmd(const CVehicleVelCmd &cmd_vel) override
Sends a velocity command to the robot.
Definition: CVehicleSimul_Holo.h:40
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::ramp_time
double ramp_time
Definition: CVehicleSimul_Holo.h:64
mrpt::kinematics::CVehicleSimul_Holo::m_vel_ramp_cmd
TVelRampCmd m_vel_ramp_cmd
the last cmd received from the user.
Definition: CVehicleSimul_Holo.h:70
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::target_vel_x
double target_vel_x
Definition: CVehicleSimul_Holo.h:64
mrpt::kinematics::CVehicleSimul_Holo::kinematic_cmd_t
CVehicleVelCmd_Holo kinematic_cmd_t
Definition: CVehicleSimul_Holo.h:26
CVehicleSimulVirtualBase.h
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::target_vel_y
double target_vel_y
Definition: CVehicleSimul_Holo.h:64
TTwist2D.h
mrpt::kinematics::CVehicleSimul_Holo
Kinematic simulator of a holonomic 2D robot capable of moving in any direction, with "blended" veloci...
Definition: CVehicleSimul_Holo.h:23
mrpt::kinematics::CVehicleSimul_Holo::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_Holo.h:51
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd
Definition: CVehicleSimul_Holo.h:59
cmd
TCLAP::CmdLine cmd("system_control_rate_timer_example")
ASSERTMSG_
#define ASSERTMSG_(f, __ERROR_MSG)
Defines an assertion mechanism.
Definition: exceptions.h:108
mrpt::kinematics::CVehicleVelCmd::Ptr
std::shared_ptr< CVehicleVelCmd > Ptr
Definition: CVehicleVelCmd.h:22
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::TVelRampCmd
TVelRampCmd()=default
mrpt::kinematics::CVehicleSimul_Holo::internal_clear
void internal_clear() override
Resets all pending cmds.
Definition: CVehicleSimul_Holo.cpp:72
mrpt::kinematics::CVehicleSimul_Holo::internal_simulControlStep
void internal_simulControlStep(const double dt) override
Definition: CVehicleSimul_Holo.cpp:23
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::issue_time
double issue_time
time when the cmd was issued.
Definition: CVehicleSimul_Holo.h:63
dir
const auto dir
Definition: chessboard_stereo_camera_calib_unittest.cpp:28
mrpt::kinematics::CVehicleVelCmd_Holo
Kinematic model for.
Definition: CVehicleVelCmd_Holo.h:19
mrpt::kinematics::CVehicleSimulVirtualBase::m_odometry
mrpt::math::TPose2D m_odometry
Definition: CVehicleSimulVirtualBase.h:124
mrpt::kinematics
Definition: CKinematicChain.h:18
mrpt::kinematics::CVehicleSimul_Holo::TVelRampCmd::init_vel
mrpt::math::TTwist2D init_vel
Definition: CVehicleSimul_Holo.h:65
mrpt::kinematics::CVehicleVelCmd
Virtual base for velocity commands of different kinematic models of planar mobile robot.
Definition: CVehicleVelCmd.h:20
mrpt::math::TTwist2D
2D twist: 2D velocity vector (vx,vy) + planar angular velocity (omega)
Definition: TTwist2D.h:19
mrpt::kinematics::CVehicleSimul_Holo::sendVelRampCmd
void sendVelRampCmd(double vel, double dir, double ramp_time, double rot_speed)
Sends a velocity cmd to the holonomic robot.
Definition: CVehicleSimul_Holo.cpp:73



Page generated by Doxygen 1.8.17 for MRPT 2.0.4 at Sat Jun 27 14:00:59 UTC 2020