2import "dccl/option_extensions.proto";
3import "goby/middleware/protobuf/geographic.proto";
5package goby.middleware.frontseat.protobuf;
13 required double time = 1 [(dccl.field).units.derived_dimensions = "time"];
14 optional string name = 2;
15 optional VehicleType type = 3;
18 required .goby.middleware.protobuf.LatLonPoint global_fix = 10;
19 // x, y, z on local cartesian grid
20 optional CartesianCoordinate local_fix = 11;
23 required EulerAngles pose = 20;
25 required Speed speed = 30;
27 optional Source source = 40;
29 extensions 1000 to max;
34 option (dccl.msg).unit_system = "si";
36 required double time = 1 [(dccl.field).units.derived_dimensions = "time"];
37 optional double heading = 2 [
39 (dccl.field).units.derived_dimensions = "plane_angle",
40 (dccl.field).units.system = "angle::degree"
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 [
48 (dccl.field).units.derived_dimensions = "plane_angle",
49 (dccl.field).units.system = "angle::degree"
52 optional double roll = 6 [
54 (dccl.field).units.derived_dimensions = "plane_angle",
55 (dccl.field).units.system = "angle::degree"
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"];
63 extensions 1000 to max;
66// Type of vehicle for a given node
83 MOORING_SUBSURFACE = 62;
98 INERTIAL_NAVIGATION_SYSTEM = 4;
105 MAGNETIC_COMPASS = 40;
108 optional Sensor position = 1;
109 optional Sensor depth = 2;
110 optional Sensor speed = 3;
111 optional Sensor heading = 4;
113 extensions 1000 to max;
116// computed from LatLonPoint
117message CartesianCoordinate
119 option (dccl.msg).unit_system = "si";
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];
126 extensions 1000 to max;
131 option (dccl.msg).unit_system = "si";
133 optional double roll = 1 [(dccl.field) = {
134 units { derived_dimensions: "plane_angle" system: "angle::degree" }
136 optional double pitch = 2 [(dccl.field) = {
137 units { derived_dimensions: "plane_angle" system: "angle::degree" }
139 optional double heading = 3 [(dccl.field) = {
140 units { derived_dimensions: "plane_angle" system: "angle::degree" }
142 optional double course_over_ground = 4 [(dccl.field) = {
143 units { derived_dimensions: "plane_angle" system: "angle::degree" }
146 optional double roll_rate = 10 [(dccl.field) = {
149 unit: "dccl::units::degrees_per_second_unit"
150 header: "dccl/units/degrees.h"
155 optional double pitch_rate = 11 [(dccl.field) = {
158 unit: "dccl::units::degrees_per_second_unit"
159 header: "dccl/units/degrees.h"
163 optional double heading_rate = 12 [(dccl.field) = {
166 unit: "dccl::units::degrees_per_second_unit"
167 header: "dccl/units/degrees.h"
172 extensions 1000 to max;
177 option (dccl.msg).unit_system = "si";
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"];
184 extensions 1000 to max;
189 option (dccl.msg).unit_system = "si";
191 required double time = 2 [(dccl.field).units.base_dimensions = "T"];
193 // required "primary" measurements
194 optional double conductivity = 10
195 [(dccl.field).units = { derived_dimensions: "conductivity" }];
196 required double temperature = 11 [(dccl.field).units = {
198 derived_dimensions: "temperature"
201 required double pressure = 12
202 [(dccl.field).units = { base_dimensions: "M L^-1 T^-2" }];
204 // required "secondary" or calculated quantities (can be
205 // calculated from "primary" measurements alone using empirical
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" }];
214 required .goby.middleware.protobuf.LatLonPoint global_fix = 23;
216 // algorithm used for secondary quantities
217 enum SalinityAlgorithm
219 SAL_ALGORITHM_UNKNOWN = 0;
220 UNESCO_44_PREKIN_AND_LEWIS_1980 = 1;
222 optional SalinityAlgorithm salinity_algorithm = 30
223 [default = SAL_ALGORITHM_UNKNOWN];
225 enum SoundSpeedAlgorithm
227 SS_ALGORITHM_UNKNOWN = 0;
228 UNESCO_44_CHEN_AND_MILLERO_1977 = 1;
232 optional SoundSpeedAlgorithm sound_speed_algorithm = 31
233 [default = SS_ALGORITHM_UNKNOWN];
235 enum DensityAlgorithm
237 DENSITY_ALGORITHM_UNKNOWN = 0;
238 UNESCO_38_MILLERO_AND_POISSON_1981 = 1;
240 optional DensityAlgorithm density_algorithm = 32
241 [default = DENSITY_ALGORITHM_UNKNOWN];
243 extensions 1000 to max;
248 option (dccl.msg) = {
252 required .goby.middleware.protobuf.LatLonPoint datum = 1;