128#include <Eigen/Eigen>
130#include <fhsim/simobject/SimObject.h>
132using namespace Eigen;
138 TrawlBeam(
const std::string& simObjectName, ISimObjectCreator*
const creator);
139 void InitialConditionSetup(
const double T,
const double*
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
140 void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator);
141 virtual void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
142 virtual void PreOdeFcn(
const double T,
const double*
const X, IStateUpdater* updater);
144 bool HasJacobians()
const override;
145 void OdeJacobian(
double T,
const double* X,
double* J,
int nStates)
override;
146 int GetJacobianSparsity(
int nStates,
int* rowPtr,
int* colIdx)
override;
148#ifdef FH_VISUALIZATION
150 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator) { }
152 virtual void RenderUpdate(
const double T,
const double*
const X) { }
155 const double* ShipForce(
const double T,
const double*
const X);
156 const double* Error(
const double T,
const double*
const X);
157 const double* ErrorI(
const double T,
const double*
const X);
158 const double* ErrorD(
const double T,
const double*
const X);
159 const double* StateDist(
const double T,
const double*
const X);
160 const double* StateVel(
const double T,
const double*
const X);
161 const double* PositionNED(
const double T,
const double*
const X,
int index);
162 const double* VelocityNED(
const double T,
const double*
const X,
int index);
165 ISignalPort *m_inForceStbd, *m_inForcePort;
167 void compute(
const double T,
const double*
const X)
const;
168 ICommonComputation* m_compute;
173 mutable double m_position[6];
174 mutable double m_velocity[6];
183 double m_forceSaturation;
185 double m_kp, m_kd, m_ki;
188 mutable double m_outError;
189 mutable double m_outForce;
191 double m_speedTravel;
Definition TrawlBeam.h:136
bool IsForceSaturated(double shipForce) const
True when SaturationForce is set and the ship force has reached it.
void InitialConditionSetup(const double T, const double *const currentIC, double *const updatedIC, ISimObjectCreator *const creator)
reads parameters, registers states, input/output ports and shared resources
virtual void PreOdeFcn(const double T, const double *const X, IStateUpdater *updater)
returns object derivatives as a function of time, states and input ports