91#include "trawl/subroutines/PidWithExternalState.h"
93#include <fhsim/simobject/SimObject.h>
94#include <fhsim_environment/EnvironmentProvider.h>
95#include <fhsim_environment/SeafloorForcesInterface.h>
104 void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const override;
105 void FinalSetup(
const double T,
const double*
const X, ISimObjectCreator*
const creator)
override;
106 void AcceptedStep(
const double T,
const double*
const X)
override;
108#ifdef FH_VISUALIZATION
109 void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
110 void RenderUpdate(
const double T,
const double*
const X);
123 double bottomForceError;
129 const double* OutPos(
const double T,
const double*
const X,
const int index);
130 const double* OutVel(
const double T,
const double*
const X,
const int index);
131 const double* OutLift(
const double T,
const double*
const X);
132 const double* OutDrag(
const double T,
const double*
const X);
133 const double* OutWeight(
const double T,
const double*
const X);
134 const double* OutBottomContact(
const double T,
const double*
const X);
142 environment::SeafloorForcesInterface* m_seafloorForces =
nullptr;
143 environment::EnvironmentProvider* m_environment =
nullptr;
145 std::vector<ISignalPort*> m_inForces;
146 ISignalPort* m_inDistanceGoal;
147 ISignalPort* m_inDistance;
148 ISignalPort* m_inBottomForceGoal;
152 int m_IStateIntegratedSpreadError;
153 int m_IStateIntegratedBottomForceError;
158 double m_outLift = 0.0;
159 double m_outDrag = 0.0;
160 double m_outWeight = 0.0;
161 double m_outBottomContact = 0.0;
163#ifdef FH_VISUALIZATION
164 Ogre::SceneNode* m_renderNode =
nullptr;
PID controller for use inside a SimObject, whose integral is a state that FhSim integrates.
Definition PidWithExternalState.h:22
Definition TrawlDoorControlledLift.h:100
double m_mass
The mass [kg].
Definition TrawlDoorControlledLift.h:138
PidWithExternalState m_weightController
Weight from the bottom force error.
Definition TrawlDoorControlledLift.h:156
double m_liftDragRatio
Lift divided by drag.
Definition TrawlDoorControlledLift.h:139
bool m_isPort
Is this the port door?
Definition TrawlDoorControlledLift.h:136
double m_size
The diameter of the contact sphere [m].
Definition TrawlDoorControlledLift.h:140
PidWithExternalState m_distanceController
Lift from the spread error.
Definition TrawlDoorControlledLift.h:155
Loads ComputeLoads(const double T, const double *const X) const
The loads at (T, X).
bool m_useWidthMeasurement
Is Distance a measured width, rather than a reference position?
Definition TrawlDoorControlledLift.h:137
The forces and controller errors at one time and state.
Definition TrawlDoorControlledLift.h:116