Goby3 3.4.0
2026.04.13
Loading...
Searching...
No Matches
frontseat_data.proto
Go to the documentation of this file.
1syntax = "proto2";
2import "dccl/option_extensions.proto";
3import "goby/middleware/protobuf/geographic.proto";
4
5package goby.middleware.frontseat.protobuf;
6
7message 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
32message 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
67enum 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
91message 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
117message 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
129message 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 {
148 custom {
149 unit: "dccl::units::degrees_per_second_unit"
150 header: "dccl/units/degrees.h"
151 }
152 }
153 }];
154
155 optional double pitch_rate = 11 [(dccl.field) = {
156 units {
157 custom {
158 unit: "dccl::units::degrees_per_second_unit"
159 header: "dccl/units/degrees.h"
160 }
161 }
162 }];
163 optional double heading_rate = 12 [(dccl.field) = {
164 units {
165 custom {
166 unit: "dccl::units::degrees_per_second_unit"
167 header: "dccl/units/degrees.h"
168 }
169 }
170 }];
171
172 extensions 1000 to max;
173}
174
175message Speed
176{
177 option (dccl.msg).unit_system = "si";
178
179 required double over_ground = 1
180 [(dccl.field).units.derived_dimensions = "length/time"];
181 optional double over_water = 2
182 [(dccl.field).units.derived_dimensions = "length/time"];
183
184 extensions 1000 to max;
185}
186
187message CTDSample
188{
189 option (dccl.msg).unit_system = "si";
190
191 required double time = 2 [(dccl.field).units.base_dimensions = "T"];
192
193 // required "primary" measurements
194 optional double conductivity = 10
195 [(dccl.field).units = { derived_dimensions: "conductivity" }];
196 required double temperature = 11 [(dccl.field).units = {
197 system: "celsius"
198 derived_dimensions: "temperature"
199 }];
200
201 required double pressure = 12
202 [(dccl.field).units = { base_dimensions: "M L^-1 T^-2" }];
203
204 // required "secondary" or calculated quantities (can be
205 // calculated from "primary" measurements alone using empirical
206 // formulas).
207 required double salinity = 20
208 [(dccl.field).units = { base_dimensions: "-" }];
209 required double sound_speed = 21
210 [(dccl.field).units = { base_dimensions: "L T^-1" }];
211 required double density = 22
212 [(dccl.field).units = { base_dimensions: "M L^-3" }];
213
214 required .goby.middleware.protobuf.LatLonPoint global_fix = 23;
215
216 // algorithm used for secondary quantities
217 enum SalinityAlgorithm
218 {
219 SAL_ALGORITHM_UNKNOWN = 0;
220 UNESCO_44_PREKIN_AND_LEWIS_1980 = 1;
221 }
222 optional SalinityAlgorithm salinity_algorithm = 30
223 [default = SAL_ALGORITHM_UNKNOWN];
224
225 enum SoundSpeedAlgorithm
226 {
227 SS_ALGORITHM_UNKNOWN = 0;
228 UNESCO_44_CHEN_AND_MILLERO_1977 = 1;
229 MACKENZIE_1981 = 2;
230 DEL_GROSSO_1974 = 3;
231 }
232 optional SoundSpeedAlgorithm sound_speed_algorithm = 31
233 [default = SS_ALGORITHM_UNKNOWN];
234
235 enum DensityAlgorithm
236 {
237 DENSITY_ALGORITHM_UNKNOWN = 0;
238 UNESCO_38_MILLERO_AND_POISSON_1981 = 1;
239 }
240 optional DensityAlgorithm density_algorithm = 32
241 [default = DENSITY_ALGORITHM_UNKNOWN];
242
243 extensions 1000 to max;
244}
245
246message DatumUpdate
247{
248 option (dccl.msg) = {
249 unit_system: "si"
250 };
251
252 required .goby.middleware.protobuf.LatLonPoint datum = 1;
253}