1#ifndef LocalConnection_h__
2#define LocalConnection_h__
86#include <fhsim/simobject/ISimObjectCreator.h>
89#ifdef FH_VISUALIZATION
90 #include "sfh/ogre/C3DArrow.h"
100 LocalConnection(
const std::string simObjectName, ISimObjectCreator*
const creator);
102 virtual void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
103 virtual void InitialConditionSetup(
const double T,
const double *
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
104 #ifdef FH_VISUALIZATION
105 virtual void RenderInit(Ogre::Root*
const ogreRoot, ISimObjectCreator*
const creator);
106 virtual void RenderUpdate(
const double T,
const double*
const X );
111 const double *
OffsetBody(
const double T,
const double *
const X);
116 const double *
PositionNED(
const double T,
const double *
const X);
118 const double *
VelocityNED(
const double T,
const double *
const X);
122 const double *
OmegaNED(
const double T,
const double *
const X);
127 const double *
Axis1NED(
const double T,
const double *
const X);
129 const double *
Axis2NED(
const double T,
const double *
const X);
131 const double *
Axis3NED(
const double T,
const double *
const X);
134 const double *
ForceNED(
const double T,
const double *
const X);
136 const double *
TorqueNED(
const double T,
const double *
const X);
138 const double *
ForceBody(
const double T,
const double *
const X);
140 const double *
TorqueBody(
const double T,
const double *
const X);
146 const double * Force(
const double T,
const double *
const X);
148 const double *
Torque(
const double T,
const double *
const X);
150 mutable double m_positionNED[3];
151 mutable double m_omegaNED[3];
152 mutable double m_velocityNED[3];
153 mutable double m_omegaBody[3];
154 mutable double m_velocityBody[3];
155 mutable double m_quaternionNED[4];
157 mutable double m_axis1NED[3];
158 mutable double m_axis2NED[3];
159 mutable double m_axis3NED[3];
161 mutable double m_ForceNED[3];
162 mutable double m_TorqueNED[3];
164 mutable double m_ForceBody[3];
165 mutable double m_TorqueBody[3];
168 double m_azimuthLoss[2];
201 bool m_isLinearMotor;
202 bool m_isAngularMotor;
203 int m_stateLinearMotor[3];
204 int m_stateAngularMotor[3];
206 double m_linearMotorMaxChangerate[3];
207 double m_angularMotorMaxChangerate[3];
208 double m_linearMotorConstants[3];
209 double m_angularMotorConstants[3];
211 double m_linearStaticOffset[3];
212 double m_angularStaticOffset[3];
214 double m_linearForceAttackOffset[3];
216 ICommonComputation *m_computePosition, *m_computeForce;
217 void ComputePostition(
const double T,
const double *
const X)
const;
219 Eigen::Vector3d
AngularMotorRate(
const Eigen::Vector3d& target,
const Eigen::Vector3d& state )
const;
220 void ComputeForce(
const double T,
const double *
const X)
const;
222#ifdef FH_VISUALIZATION
224 bool m_DrawConnection;
225 Ogre::Entity* m_RenderEntity;
226 Ogre::SceneNode* m_RenderNode;
227 C3DArrow *m_ForceArrow;
Definition LocalConnection.h:98
const double * Axis2NED(const double T, const double *const X)
double m_Offset[3]
Definition LocalConnection.h:189
double AzimuthLossFactor(const double angle) const
The factor on the force at the yaw angle angle of the connection: 1 with AzimuthLoss off,...
const double * ForceNED(const double T, const double *const X)
ISignalPort * m_InOffset
Definition LocalConnection.h:196
const double * OffsetBody(const double T, const double *const X)
const double * Axis3NED(const double T, const double *const X)
const double * TorqueNED(const double T, const double *const X)
const double * Torque(const double T, const double *const X)
ISignalPort * m_InParentOmegaNED
Definition LocalConnection.h:181
ISignalPort * m_InParentVelocityNED
Definition LocalConnection.h:179
ISignalPort * m_InPositionCGNED
Definition LocalConnection.h:199
const double * TorqueBody(const double T, const double *const X)
Eigen::Vector3d AngularMotorRate(const Eigen::Vector3d &target, const Eigen::Vector3d &state) const
The rate of the angular motor state: the angle error wrapped to [-pi,pi], divided by the motor consta...
ISignalPort * m_InMotorAngularTarget[3]
Definition LocalConnection.h:185
const double * QuaternionNED(const double T, const double *const X)
bool m_ForceInBodyFrame
Definition LocalConnection.h:193
const double * OmegaNED(const double T, const double *const X)
ISignalPort * m_InMotorLinearTarget[3]
Definition LocalConnection.h:187
const double * RotationBody(const double T, const double *const X)
ISignalPort * m_InForce
Definition LocalConnection.h:183
const double * ForceBody(const double T, const double *const X)
const double * Axis1NED(const double T, const double *const X)
const double * PositionNED(const double T, const double *const X)
ISignalPort * m_InParentQuaternionNED
Definition LocalConnection.h:177
bool m_ForceCalculator
Definition LocalConnection.h:191
const double * VelocityNED(const double T, const double *const X)
ISignalPort * m_InParentPositionNED
Definition LocalConnection.h:175
const double * VelocityBody(const double T, const double *const X)
const double * ParentQuaterion(const double T, const double *const X)
Simple waypoint object.
Definition CableAttach.h:58