Marine systems simulation
Kalman HydroCable

Hydrodynamic ball with Kalman filtering capabilities.

+ Collaboration diagram for Kalman HydroCable:

KalmanHydroCable inherits from both HydroCable and KalmanObject, so that it can be used for Kalman filtering. It has all the setup HydroCable has, with additional inputs and parameters defined below.

Author
Joakim Haugen

Example configuration excerpt

<Lib
LibName = "fhsim_base"
SimObject = "Kalman/Example/HydroCable"
Name = "Cable"
Diameter = "0.02"
Density = "2000"
Length = "10"
Modulus = "200"
InternalPoints = "2"
ElementPositionUncertainty = "5e-4"
ElementVelocityUncertainty = "1e-6"
ElementInitialDiagP = "1e-3, 1e-3, 1e-3, 1e-4, 1-4, 1-4"
/>
...
<Connection
Cable.PositionA = "0,0,0"
Cable.PositionB = "Ball.Position"
Cable.VelocityA = "0,0,0"
Cable.VelocityB = "Ball.Velocity"
Cable.Current = "Current.State"
/>

Input Ports

Name Width Description
PositionA 3 Position of end point A.
PositionB 3 Position of end point B.
VelocityA 3 Velocity of end point A.
VelocityB 3 Velocity of end point B.
Current 3 The uniform current of the surrounding water.

Output Ports

Name Width Description
ForceA 3 The force acting on end point A.
ForceB 3 The force acting on end point B.

Configuration parameters

Name Width Description
Diameter 1 Diameter of the cable [meter].
Density 1 Density of the cable [kg/m^3].
Length 1 Length of the cable [m].
Modulus 1 Modulus of elasticity in giga pascal (1e9) [GPa].
InternalPoints 1

Number of internal mass points [-].

ElementPositionUncertainty 1 Variance of an internal element's position [m^2].
ElementVelocityUncertainty 1 Variance of an internal element's velocity [(m/s)^2].
ElementInitialDiagP 6 Estimation error variance at initial time for an internal element [diag([m^2, m^2, m^2], (m/s)^2, (m/s)^2, (m/s)^2])].

Initial conditions

By specifying no initial conditions, the end points are being used to calculate the catenary. Note that this will fail if the distance between the end points is greater than the cable length, or if the points have the same north and east components (hanging straight down). Otherwise, it is possible to specify each and every point's position and velocity:

Name Width Description
Position[i] 3 Position of point \(i \in {1\cdots\text{InternalElements}}\).
Velocity[i] 3 Velocity of point \(i \in {1\cdots\text{InternalElements}}\).

Full example file

<Contents>
<OBJECTS>
<Lib
LibName = "fhsim_base"
SimObject = "Kalman/ZeroDynamics"
Name = "Current"
Dimension = "3"
P0 = "5e-2,5e-2,1e-4"
Q = "1e-4,1e-4,1e-5"
/>
<Lib
LibName = "fhsim_base"
SimObject = "Kalman/Example/HydroBall"
Name = "Ball"
Radius = "1.0"
Density = "1100"
MeasurementNoise = "1"
PositionUncertainty = "5e-4"
VelocityUncertainty = "1e-6"
InitialDiagP = "1e-3,1e-3,1e-3,1e-3,1e-3,1e-3"
/>
<Lib
LibName = "fhsim_base"
SimObject = "Kalman/Example/HydroCable"
Name = "Cable"
Diameter = "0.02"
Density = "2000"
Modulus = "20"
Length = "20"
InternalPoints = "2"
ElementPositionUncertainty = "5e-4"
ElementVelocityUncertainty = "1e-6"
ElementInitialDiagP = "1e-3,1e-3,1e-3,1e-3,1e-3,1e-3"
/>
</OBJECTS>
<INTERCONNECTIONS>
<Connection
Ball.ExternForce = "Cable.ForceB"
Ball.Current = "Current.State"
/>
<Connection
Cable.PositionA = "0,0,0"
Cable.PositionB = "Ball.Position"
Cable.VelocityA = "0,0,0"
Cable.VelocityB = "Ball.Velocity"
Cable.Current = "Current.State"
/>
<Connection
Ball.MeasuredPosition = "0,0,18.8"
/>
</INTERCONNECTIONS>
<INITIALIZATION>
<InitialCondition
Ball.Position = "0,19,0"
Ball.Velocity = "0,0,0"
Current.State = "0,0,0"
/>
</INITIALIZATION>
<INTEGRATION>
<Engine
IntegratorMethod="0"
NumCores="1"
TOutput="0, 0:1e-1:Inf, 150"
stepsize ="2e-4"
HMin="0.5"
FileOutput="objects:ports"
/>
</INTEGRATION>
</Contents>

This SimObject is referred to as Kalman/Example/HydroCable