Hydrodynamic ball with Kalman filtering capabilities.
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