FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
Rudder.h
1#ifndef CRudder_h__
2#define CRudder_h__
52#include <cmath>
53#include <string>
54#include <fhsim/simobject/ISimObjectCreator.h>
55#include <fhsim_environment/EnvironmentProvider.h>
56
57#include <memory>
58#include "./Ship/Actuators/IRudderCalculator.h"
59namespace Ship{
60
61 class Rudder: public SimObject
62 {
63 public:
64 Rudder(const std::string simObjectName, ISimObjectCreator* const creator);
65 ~Rudder();
66
67 void FinalSetup( const double T, const double *const X, ISimObjectCreator* const creator );
68 void OdeFcn(const double T, const double* const X, double* const XDot) const;
69
70 #ifdef FH_VISUALIZATION
71 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
72 void RenderUpdate( const double T, const double* const X);
73 #endif
75 const double* ForceNED(const double T, const double* const X);
76 const double* Alfa(const double T, const double* const X);
77 const double* Cd(const double T, const double* const X);
78 const double* Cl(const double T, const double* const X);
79 const double* Inflow(const double T, const double* const X);
80
81 private:
82
83 double m_Force[3];
84 double m_alfa;
85 double m_cd;
86 double m_cl;
87 double m_inflow[2];
88
89 double m_forceCorrection;
90
92 std::string m_RudderType;
94 ISignalPort *m_InRudderAngleBODY;
96 ISignalPort *m_InVelocityNED;
98 ISignalPort *m_InPositionNED;
100 ISignalPort *m_InQuaternionNED;
101 private:
103 double m_Bredth;
105 double m_Chord;
107 double m_Area;
108
109 std::unique_ptr<IRudderCalculator> m_RudderCalculator;
110 environment::EnvironmentProvider *m_Environment = nullptr;
111
112 #ifdef FH_VISUALIZATION
113 std::string m_Material;
114 Ogre::SceneNode* m_RenderNode;
115 #endif
116 };
117}
118
119#endif // CRudder_h__
Definition Rudder.h:62
const double * ForceNED(const double T, const double *const X)
Simple waypoint object.
Definition CableAttach.h:58