Goby3  3.1.5a
2024.05.23
frontseat_data.proto
Go to the documentation of this file.
1 syntax = "proto2";
2 import "dccl/option_extensions.proto";
3 import "goby/middleware/protobuf/geographic.proto";
4 
5 package goby.middleware.frontseat.protobuf;
6 
7 message NodeStatus
8 {
9  option (dccl.msg) = {
10  unit_system: "si"
11  };
12 
13  required double time = 1 [(dccl.field).units.derived_dimensions = "time"];
14  optional string name = 2;
15  optional VehicleType type = 3;
16 
17  // lat, lon, depth
18  required .goby.middleware.protobuf.LatLonPoint global_fix = 10;
19  // x, y, z on local cartesian grid
20  optional CartesianCoordinate local_fix = 11;
21 
22  // roll, pitch, yaw
23  required EulerAngles pose = 20;
24 
25  required Speed speed = 30;
26 
27  optional Source source = 40;
28 
29  extensions 1000 to max;
30 }
31 
32 message DesiredCourse
33 {
34  option (dccl.msg).unit_system = "si";
35 
36  required double time = 1 [(dccl.field).units.derived_dimensions = "time"];
37  optional double heading = 2 [
38  default = 0,
39  (dccl.field).units.derived_dimensions = "plane_angle",
40  (dccl.field).units.system = "angle::degree"
41  ];
42  optional double speed = 3
43  [default = 0, (dccl.field).units.derived_dimensions = "length/time"];
44  optional double depth = 4
45  [default = 0, (dccl.field).units.derived_dimensions = "length"];
46  optional double pitch = 5 [
47  default = 0,
48  (dccl.field).units.derived_dimensions = "plane_angle",
49  (dccl.field).units.system = "angle::degree"
50  ];
51 
52  optional double roll = 6 [
53  default = 0,
54  (dccl.field).units.derived_dimensions = "plane_angle",
55  (dccl.field).units.system = "angle::degree"
56  ];
57 
58  optional double z_rate = 7
59  [default = 0, (dccl.field).units.derived_dimensions = "length/time"];
60  optional double altitude = 8
61  [default = 10, (dccl.field).units.derived_dimensions = "length"];
62 
63  extensions 1000 to max;
64 }
65 
66 // Type of vehicle for a given node
67 enum VehicleType
68 {
69  UNKNOWN = 0;
70  AUV = 10;
71  GLIDER = 11;
72 
73  USV = 20;
74  USV_POWERED = 21;
75  USV_SAILING = 22;
76 
77  ROV = 30;
78 
79  TARGET = 50;
80 
81  BUOY = 60;
82  MOORING = 61;
83  MOORING_SUBSURFACE = 62;
84  MOORING_SURFACE = 63;
85 
86  SHIP = 100;
87 
88  OTHER = -1;
89 }
90 
91 message Source
92 {
93  enum Sensor
94  {
95  GPS = 1;
96  USBL = 2;
97  LBL = 3;
98  INERTIAL_NAVIGATION_SYSTEM = 4;
99 
100  PRESSURE = 10;
101 
102  DVL = 20;
103  RPM_LOOKUP = 30;
104 
105  MAGNETIC_COMPASS = 40;
106  }
107 
108  optional Sensor position = 1;
109  optional Sensor depth = 2;
110  optional Sensor speed = 3;
111  optional Sensor heading = 4;
112 
113  extensions 1000 to max;
114 }
115 
116 // computed from LatLonPoint
117 message CartesianCoordinate
118 {
119  option (dccl.msg).unit_system = "si";
120 
121  required double x = 1 [(dccl.field).units.derived_dimensions = "length"];
122  required double y = 2 [(dccl.field).units.derived_dimensions = "length"];
123  optional double z = 3
124  [(dccl.field).units.derived_dimensions = "length", default = 0];
125 
126  extensions 1000 to max;
127 }
128 
129 message EulerAngles
130 {
131  option (dccl.msg).unit_system = "si";
132 
133  optional double roll = 1 [(dccl.field) = {
134  units { derived_dimensions: "plane_angle" system: "angle::degree" }
135  }];
136  optional double pitch = 2 [(dccl.field) = {
137  units { derived_dimensions: "plane_angle" system: "angle::degree" }
138  }];
139  optional double heading = 3 [(dccl.field) = {
140  units { derived_dimensions: "plane_angle" system: "angle::degree" }
141  }];
142  optional double course_over_ground = 4 [(dccl.field) = {
143  units { derived_dimensions: "plane_angle" system: "angle::degree" }
144  }];
145 
146  optional double roll_rate = 10 [(dccl.field) = {
147  units { derived_dimensions: "plane_angle/time" system: "angle::degree" }
148  }];
149  optional double pitch_rate = 11 [(dccl.field) = {
150  units { derived_dimensions: "plane_angle/time" system: "angle::degree" }
151  }];
152  optional double heading_rate = 12 [(dccl.field) = {
153  units { derived_dimensions: "plane_angle/time" system: "angle::degree" }
154  }];
155 
156  extensions 1000 to max;
157 }
158 
159 message Speed
160 {
161  option (dccl.msg).unit_system = "si";
162 
163  required double over_ground = 1
164  [(dccl.field).units.derived_dimensions = "length/time"];
165  optional double over_water = 2
166  [(dccl.field).units.derived_dimensions = "length/time"];
167 
168  extensions 1000 to max;
169 }
170 
171 message CTDSample
172 {
173  option (dccl.msg).unit_system = "si";
174 
175  required double time = 2 [(dccl.field).units.base_dimensions = "T"];
176 
177  // required "primary" measurements
178  optional double conductivity = 10
179  [(dccl.field).units = { derived_dimensions: "conductivity" }];
180  required double temperature = 11 [(dccl.field).units = {
181  system: "celsius"
182  derived_dimensions: "temperature"
183  }];
184 
185  required double pressure = 12
186  [(dccl.field).units = { base_dimensions: "M L^-1 T^-2" }];
187 
188  // required "secondary" or calculated quantities (can be calculated
189  // from "primary" measurements alone using empirical formulas).
190  required double salinity = 20
191  [(dccl.field).units = { base_dimensions: "-" }];
192  required double sound_speed = 21
193  [(dccl.field).units = { base_dimensions: "L T^-1" }];
194  required double density = 22
195  [(dccl.field).units = { base_dimensions: "M L^-3" }];
196 
197  required .goby.middleware.protobuf.LatLonPoint global_fix = 23;
198 
199  // algorithm used for secondary quantities
200  enum SalinityAlgorithm
201  {
202  SAL_ALGORITHM_UNKNOWN = 0;
203  UNESCO_44_PREKIN_AND_LEWIS_1980 = 1;
204  }
205  optional SalinityAlgorithm salinity_algorithm = 30
206  [default = SAL_ALGORITHM_UNKNOWN];
207 
208  enum SoundSpeedAlgorithm
209  {
210  SS_ALGORITHM_UNKNOWN = 0;
211  UNESCO_44_CHEN_AND_MILLERO_1977 = 1;
212  MACKENZIE_1981 = 2;
213  DEL_GROSSO_1974 = 3;
214  }
215  optional SoundSpeedAlgorithm sound_speed_algorithm = 31
216  [default = SS_ALGORITHM_UNKNOWN];
217 
218  enum DensityAlgorithm
219  {
220  DENSITY_ALGORITHM_UNKNOWN = 0;
221  UNESCO_38_MILLERO_AND_POISSON_1981 = 1;
222  }
223  optional DensityAlgorithm density_algorithm = 32
224  [default = DENSITY_ALGORITHM_UNKNOWN];
225 
226  extensions 1000 to max;
227 }
228 
229 message DatumUpdate
230 {
231  option (dccl.msg) = {
232  unit_system: "si"
233  };
234 
235  required .goby.middleware.protobuf.LatLonPoint datum = 1;
236 }