FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
ShipCrane.h
1#ifndef CShipCrane_h__
2#define CShipCrane_h__
3
44#include <vector>
45#include <string>
46
47#include <Eigen/Eigen>
48#include <fhsim/simobject/SimObject.h>
49
50#ifdef FH_VISUALIZATION
51#include "sfh/ogre/C3DLine.h"
52#endif
53
54
55namespace Ship{
56 class ShipCrane: public SimObject
57 {
58 public:
59 EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
60 ShipCrane(const std::string simObjectName, ISimObjectCreator* const creator);
61
62 void OdeFcn(const double T, const double* const X, double* const XDot) const{};
63
64 #ifdef FH_VISUALIZATION
65 void RenderInit(Ogre::Root* const ogreRoot, ISimObjectCreator* const creator);
66 void RenderUpdate( const double T, const double* const X);
67 #endif
68 void Compute( const double T, const double* const _X ) const;
69
70 const double * CraneTipPosition(const double T, const double* const X);
71 const double * CraneTipVelocity(const double T, const double* const X);
72
73 const double * ForceAtBase(const double T, const double* const X);
74 const double * TorqueAtBase(const double T, const double* const X);
75
76 private:
77
78 int m_numberOfJoints;
79 mutable std::vector<Eigen::Vector3d> m_jointPosition;
80 mutable std::vector<Eigen::Vector3d> m_jointVelocity;
81
82 ISignalPort *m_InBasePosition;
83 ISignalPort *m_InBaseVelocity;
84 ISignalPort *m_InBaseOrientation;
85 ISignalPort *m_InBaseOmega;
86
87 ISignalPort *m_InBaseAngle;
88 ISignalPort *m_InBaseAngleRate;
89
90 std::vector<ISignalPort*> m_InJointAngle;
91 std::vector<ISignalPort*> m_InJointAngleRate;
92 std::vector<ISignalPort*> m_InJointLength;
93
94 ISignalPort *m_InForceAtTip;
95
96 ICommonComputation *m_Compute;
97
98 Eigen::Vector3d m_BaseTorque;
99 Eigen::Vector3d m_TipVelocity;
100
101 #ifdef FH_VISUALIZATION
102 C3DLine * m_line;
103 Ogre::SceneNode** m_RenderNodes;
104 #endif
105
106 };
107}
108#endif // CWindForce_h__
Definition ShipCrane.h:57
Simple waypoint object.
Definition CableAttach.h:58