Data sharing

Communication of signals and data between software systems, which is indicated in Figure 10, is achieved using a data distribution service standard OMG DDS. In the following, we provide an overview of the various signals. This overview also includes the interface definition language (IDL) types used for the different signals. The IDL types are defined in the companion project RatatoskIDL.

../_images/container.svg

Figure 10 Container diagram for Balder.

Signal overview

The diagram in Figure 10 only give a high-level view of the data sharing between the different systems. With focus on the two algorithm systems Mimir: Leadline and Mimir: Path planner, we provide a more complete signal list in Table 1. Source is a signal originator, it is the system that sends out the signal. Target is an intended signal receiver. The DCPS DDS interface (data-centric publish-subscribe) is designed to allow multiple recipients – one-to-many. Causality is one of input, output, parameter and describes the variable type. In our case, the variability for parameter in the table is always tunable, that is, they can be changed while algorithms are running. Please consult the documentation for the respective system/algorithm on how to specify the DDS topic and other settings in their configuration files. In the case of Balder, the DDS topic names are specified in FkinDdsTopics. Note that Name in the table below is not the topic name of a signal. It is the variable named used in the Mimir configuration file.

Table 1 Overview of signal flow between systems.

Name

Causality

IDL type

(S)ource/(T)arget

Mimir: Leadline

command

input

fkin::Command

S: Balder

command

output

fkin::CommandResponse

T: Balder

notifier

output

fkin::ProcessStateAutomaton

T: Balder

parameters

parameter

fkin::IdVec2d

S: Balder,

Mimir: Path planner

depth

output

fkin::BatchIdVec1d

T: Balder

Mimir: Path planner

command

input

fkin::Command

S: Balder

command

output

fkin::CommandResponse

T: Balder

notifier

output

fkin::ProcessStateAutomaton

T: Balder

setting_speed_U_v

parameter

fkin::IdVec1d

S: Balder

setting_radii

parameter

fkin::IdVec2d

S: Balder

aim_distance_D_s

parameter

fkin::IdVec1d

S: Balder

fish_margin_d_f

parameter

fkin::IdVec1d

S: Balder

sink_margin_z_min

parameter

fkin::IdVec1d

S: Balder

leadline_tau_ll_z_d

parameter

fkin::IdVec2d

S: Balder

current_surface

parameter

ratatosk::types::Double2

S: Ratatosk

current_fish

parameter

ratatosk::types::Double2

S: Ratatosk

fish_velocity_over_ground

parameter

ratatosk::types::Double2

S: Ratatosk, Balder 1

fish_depth_z_s

parameter

fkin::IdVec1d

S: Ratatosk, Balder

GPS_origin

input

ratatosk::types::Double2

S: Balder 2

vessel_pos_info

input

ratatosk::types::PosInfo

S: Ratatosk

vessel_gyro_info

input

ratatosk::types::PosInfo

S: Ratatosk

fish_pos_info

input

ratatosk::types::PosInfo

S: Ratatosk

fish_relative_pos

input

ratatosk::types::Double3

S: Ratatosk

keep_solution

input

fkin::Bit

S: Balder

trajectory_vessel

output

fkin::BatchKinematics2D

T: Balder

trajectory_vessel_rot

output

fkin::BatchIdVec1D

T: Balder

trajectory_fish

output

fkin::BatchKinematics2D

T: Balder

nlp_config

output

fkin::NlpConfig

T: Balder

nlp_stats

output

fkin::OptiStats

T: Balder

vessel_speed

output

ratatosk::types::DoubleVal

T: Balder

vessel_course_rate

output

ratatosk::types::DoubleVal

T: Balder

deploy_position

output

ratatosk::types::Double2

T: Balder

collide_position

output

ratatosk::types::Double2

T: Balder

deploy_time

output

ratatosk::types::DoubleVal

T: Balder

Note

Balder currently does not support user configuration of topic names. Future improvements include moving FkinDdsTopics outside the compiled program, so that it can be loaded at runtime. This would allow configuration of topics without recompilation.

1

The user can set manually.

2

Calculated from vessel_pos_info.