Goby3 3.3.0
2025.07.10
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 { 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
159message 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
171message 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
229message DatumUpdate
230{
231 option (dccl.msg) = {
232 unit_system: "si"
233 };
234
235 required .goby.middleware.protobuf.LatLonPoint datum = 1;
236}