FrictionBase.h
Go to the documentation of this file.
1 /*+-------------------------------------------------------------------------+
2  | MultiVehicle simulator (libmvsim) |
3  | |
4  | Copyright (C) 2014-2024 Jose Luis Blanco Claraco |
5  | Copyright (C) 2017 Borys Tymchenko (Odessa Polytechnic University) |
6  | Distributed under 3-clause BSD License |
7  | See COPYING |
8  +-------------------------------------------------------------------------+ */
9 
10 #pragma once
11 
12 #include <mvsim/ClassFactory.h>
13 #include <mvsim/CsvLogger.h>
14 #include <mvsim/Wheel.h>
15 #include <mvsim/basic_types.h> // fwrd decls.
16 
17 namespace mvsim
18 {
27 {
28  public:
29  using Ptr = std::shared_ptr<FrictionBase>;
30 
31  FrictionBase(VehicleBase& my_vehicle);
32  virtual ~FrictionBase();
33 
36  static FrictionBase::Ptr factory(VehicleBase& parent, const rapidxml::xml_node<char>* xml_node);
37 
39  {
42 
46  double weight = 0;
47 
50  double motorTorque = 0;
51 
54  mrpt::math::TVector2D wheelCogLocalVel{0, 0};
55 
56  TFrictionInput(const TSimulContext& _context, Wheel& _wheel)
57  : context(_context), wheel(_wheel)
58  {
59  }
60  };
61 
64  virtual mrpt::math::TVector2D evaluate_friction(
65  const FrictionBase::TFrictionInput& input) const = 0;
66 
67  void setLogger(const std::weak_ptr<CSVLogger>& logger);
68 
69  protected:
72 
73  std::weak_ptr<CSVLogger> logger_;
74 };
75 
76 using FrictionBasePtr = std::shared_ptr<FrictionBase>;
77 
78 // Class factory:
82 
83 #define DECLARES_REGISTER_FRICTION(CLASS_NAME) \
84  DECLARES_REGISTER_CLASS2( \
85  CLASS_NAME, FrictionBase, VehicleBase&, const rapidxml::xml_node<char>*)
86 
87 #define REGISTER_FRICTION(TEXTUAL_NAME, CLASS_NAME) \
88  REGISTER_CLASS2(TClassFactory_friction, classFactory_friction, TEXTUAL_NAME, CLASS_NAME)
89 } // namespace mvsim
mvsim::FrictionBase::evaluate_friction
virtual mrpt::math::TVector2D evaluate_friction(const FrictionBase::TFrictionInput &input) const =0
mvsim::FrictionBasePtr
std::shared_ptr< FrictionBase > FrictionBasePtr
Definition: FrictionBase.h:76
mvsim
Definition: Client.h:21
mvsim::TClassFactory_friction
ClassFactory< FrictionBase, VehicleBase &, const rapidxml::xml_node< char > * > TClassFactory_friction
Definition: FrictionBase.h:80
mvsim::FrictionBase::TFrictionInput::context
const TSimulContext & context
Definition: FrictionBase.h:40
mvsim::classFactory_friction
TClassFactory_friction classFactory_friction
Definition: FrictionBase.cpp:19
mvsim::FrictionBase
Definition: FrictionBase.h:26
mvsim::FrictionBase::TFrictionInput::TFrictionInput
TFrictionInput(const TSimulContext &_context, Wheel &_wheel)
Definition: FrictionBase.h:56
mvsim::FrictionBase::factory
static FrictionBase::Ptr factory(VehicleBase &parent, const rapidxml::xml_node< char > *xml_node)
Definition: FrictionBase.cpp:43
basic_types.h
mvsim::FrictionBase::FrictionBase
FrictionBase(VehicleBase &my_vehicle)
Definition: FrictionBase.cpp:37
mvsim::FrictionBase::Ptr
std::shared_ptr< FrictionBase > Ptr
Definition: FrictionBase.h:29
mvsim::FrictionBase::TFrictionInput
Definition: FrictionBase.h:38
mvsim::FrictionBase::myVehicle_
VehicleBase & myVehicle_
Definition: FrictionBase.h:71
mvsim::FrictionBase::~FrictionBase
virtual ~FrictionBase()
Definition: FrictionBase.cpp:42
mvsim::FrictionBase::setLogger
void setLogger(const std::weak_ptr< CSVLogger > &logger)
Definition: FrictionBase.cpp:64
mvsim::FrictionBase::world_
World * world_
Definition: FrictionBase.h:70
mvsim::Wheel
Definition: Wheel.h:33
mvsim::TSimulContext
Definition: basic_types.h:58
mvsim::FrictionBase::TFrictionInput::wheel
Wheel & wheel
Definition: FrictionBase.h:41
mvsim::World
Definition: World.h:82
mvsim::VehicleBase
Definition: VehicleBase.h:44
rapidxml::xml_node< char >
mvsim::FrictionBase::TFrictionInput::weight
double weight
Definition: FrictionBase.h:46
mvsim::FrictionBase::TFrictionInput::wheelCogLocalVel
mrpt::math::TVector2D wheelCogLocalVel
Definition: FrictionBase.h:54
Wheel.h
CsvLogger.h
mvsim::ClassFactory
Definition: ClassFactory.h:25
mvsim::FrictionBase::TFrictionInput::motorTorque
double motorTorque
Definition: FrictionBase.h:50
ClassFactory.h
mvsim::FrictionBase::logger_
std::weak_ptr< CSVLogger > logger_
Definition: FrictionBase.h:73


mvsim
Author(s):
autogenerated on Wed May 28 2025 02:13:07