3 import "jaiabot/messages/geographic_coordinate.proto";
4 import "dccl/option_extensions.proto";
5 import "goby/middleware/protobuf/gpsd.proto";
7 package jaiabot.protobuf;
11 PRE_DEPLOYMENT__STARTING_UP = 0;
12 PRE_DEPLOYMENT__IDLE = 1;
13 PRE_DEPLOYMENT__SELF_TEST = 2;
14 PRE_DEPLOYMENT__FAILED = 3;
15 PRE_DEPLOYMENT__WAIT_FOR_MISSION_PLAN = 4;
16 PRE_DEPLOYMENT__READY = 5;
18 IN_MISSION__UNDERWAY__REPLAN = 100;
20 IN_MISSION__UNDERWAY__MOVEMENT__TRANSIT = 110;
21 IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__SETPOINT = 112;
22 IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__STATION_KEEP = 113;
23 IN_MISSION__UNDERWAY__MOVEMENT__REMOTE_CONTROL__SURFACE_DRIFT = 114;
25 IN_MISSION__UNDERWAY__TASK__STATION_KEEP = 120;
26 IN_MISSION__UNDERWAY__TASK__SURFACE_DRIFT = 121;
27 IN_MISSION__UNDERWAY__TASK__DIVE__DIVE_PREP = 123;
28 IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_DESCENT = 124;
29 IN_MISSION__UNDERWAY__TASK__DIVE__HOLD = 125;
30 IN_MISSION__UNDERWAY__TASK__DIVE__UNPOWERED_ASCENT = 126;
31 IN_MISSION__UNDERWAY__TASK__DIVE__POWERED_ASCENT = 127;
32 IN_MISSION__UNDERWAY__TASK__DIVE__REACQUIRE_GPS = 128;
33 IN_MISSION__UNDERWAY__TASK__DIVE__SURFACE_DRIFT = 129;
34 IN_MISSION__UNDERWAY__TASK__DIVE__CONSTANT_HEADING = 130;
35 IN_MISSION__UNDERWAY__TASK__CONSTANT_HEADING = 131;
37 IN_MISSION__UNDERWAY__RECOVERY__TRANSIT = 140;
38 IN_MISSION__UNDERWAY__RECOVERY__STATION_KEEP = 141;
39 IN_MISSION__UNDERWAY__RECOVERY__STOPPED = 142;
41 IN_MISSION__UNDERWAY__ABORT = 150;
43 IN_MISSION__PAUSE__IMU_RESTART = 160;
44 IN_MISSION__PAUSE__REACQUIRE_GPS = 161;
45 IN_MISSION__PAUSE__MANUAL = 162;
46 IN_MISSION__PAUSE__RESOLVE_NO_FORWARD_PROGRESS = 163;
48 POST_DEPLOYMENT__RECOVERED = 200;
49 POST_DEPLOYMENT__DATA_OFFLOAD = 202;
50 POST_DEPLOYMENT__IDLE = 203;
51 POST_DEPLOYMENT__SHUTTING_DOWN = 204;
52 POST_DEPLOYMENT__FAILED = 205;
61 optional double transit = 1 [
67 units { base_dimensions: "LT^-1" }
70 optional double stationkeep_outer = 2 [
76 units { base_dimensions: "LT^-1" }
81 message BottomDepthSafetyParams
87 required double constant_heading = 1 [
93 units { derived_dimensions: "plane_angle" system: "angle::degree" }
97 required int32 constant_heading_time = 2 [
103 units { base_dimensions: "T" }
107 required double constant_heading_speed = 3 [
113 units { base_dimensions: "LT^-1" }
117 required double safety_depth = 4 [
123 units { base_dimensions: "LT^-1" }
128 message MissionReport
130 option (dccl.msg) = {
134 required MissionState state = 10;
135 optional int32 active_goal = 11;
136 optional GeographicCoordinate active_goal_location = 12;
137 optional double distance_to_active_goal = 13 [(dccl.field) = {
141 units: { derived_dimensions: "length" }
143 optional uint32 active_goal_timeout = 14 [(dccl.field) = {
147 units { base_dimensions: "T" }
149 optional int32 data_offload_percentage = 15
150 [(dccl.field) = { min: 0 max: 100 precision: 0 }];
151 optional int32 repeat_index = 16
152 [(dccl.field) = { min: 0 max: 1000 precision: 0 }];
157 option (dccl.msg) = {
167 CONSTANT_HEADING = 4;
169 optional TaskType type = 1 [default = NONE];
171 message DiveParameters
173 optional double max_depth = 1 [
179 units { base_dimensions: "L" }
182 optional double depth_interval = 2 [
188 units { base_dimensions: "L" }
191 optional double hold_time = 3 [
197 units { base_dimensions: "T" }
200 optional bool bottom_dive = 4 [default = false];
204 optional DiveParameters dive = 2;
206 message DriftParameters
208 optional int32 drift_time = 3 [
214 units { base_dimensions: "T" }
219 // for type == SURFACE_DRIFT and type == DIVE
220 optional DriftParameters surface_drift = 3;
222 message ConstantHeadingParameters
224 optional double constant_heading = 1 [(dccl.field) = {
228 units { derived_dimensions: "plane_angle" system: "angle::degree" }
231 optional int32 constant_heading_time = 2 [
237 units { base_dimensions: "T" }
241 optional double constant_heading_speed = 3 [
247 units { base_dimensions: "LT^-1" }
252 // for type == CONSTANT_HEADING
253 optional ConstantHeadingParameters constant_heading = 4;
254 optional bool start_echo = 5 [default = false];
256 message StationKeepParameters
258 optional int32 station_keep_time = 1 [
264 units { base_dimensions: "T" }
269 // for type == STATION_KEEP
270 optional StationKeepParameters station_keep = 6;
275 option (dccl.msg) = {
281 START_IMMEDIATELY = 1;
282 START_ON_COMMAND = 2;
283 // START_IN_WATER_DETECT = 3;
284 // START_AFTER_DELAY = 4;
286 optional MissionStart start = 1 [default = START_ON_COMMAND];
293 optional MovementType movement = 2 [default = TRANSIT];
297 optional string name = 1 [(dccl.field).omit = true];
298 required GeographicCoordinate location = 2;
299 optional MissionTask task = 3;
300 optional bool moveWptMode = 4;
303 repeated Goal goal = 3 [(dccl.field).max_repeat = 10];
307 optional bool recover_at_final_goal = 1 [default = true];
308 optional GeographicCoordinate location = 2;
310 optional Recovery recovery = 4;
312 optional Speeds speeds = 5;
313 optional BottomDepthSafetyParams bottom_depth_safety_params = 6;
314 optional uint32 fragment_index = 7 [(dccl.field) = { min: 0 max: 2 }];
315 optional uint32 expected_fragments = 8 [(dccl.field) = { min: 1 max: 3 }];
316 optional uint32 repeats = 9 [default = 1, (dccl.field) = {min: 1 max: 100 }];
319 message IvPBehaviorUpdate
321 message TransitUpdate
323 // unit dimensions must match those used by MOOS-IvP
324 option (dccl.msg) = {
327 required bool active = 1;
329 optional double x = 2
330 [(dccl.field).units = { base_dimensions: "L" }]; // meters
331 optional double y = 3
332 [(dccl.field).units = { base_dimensions: "L" }]; // meters
333 optional double speed = 4 [
334 (dccl.field).units = { base_dimensions: "LT^-1" }
337 optional int32 slip_radius = 5;
340 message StationkeepUpdate
342 // unit dimensions must match those used by MOOS-IvP
343 option (dccl.msg) = {
347 required bool active = 1;
349 optional double x = 2
350 [(dccl.field).units = { base_dimensions: "L" }]; // meters
351 optional double y = 3
352 [(dccl.field).units = { base_dimensions: "L" }]; // meters
353 optional double outer_speed = 4 [
354 (dccl.field).units = { base_dimensions: "LT^-1" }
356 optional double transit_speed = 5 [
357 (dccl.field).units = { base_dimensions: "LT^-1" }
359 optional bool center_activate = 6 [default = false];
362 message ConstantHeadingUpdate
364 // unit dimensions must match those used by MOOS-IvP
365 option (dccl.msg) = {
369 required bool active = 1;
371 optional double heading = 2 [(dccl.field) = {
375 units { derived_dimensions: "plane_angle" system: "angle::degree" }
379 message ConstantSpeedUpdate
381 // unit dimensions must match those used by MOOS-IvP
382 option (dccl.msg) = {
386 required bool active = 1;
388 optional double speed = 2 [
389 (dccl.field).units = { base_dimensions: "LT^-1" }
395 TransitUpdate transit = 1;
396 StationkeepUpdate stationkeep = 2;
397 ConstantHeadingUpdate constantHeading = 3;
398 ConstantSpeedUpdate constantSpeed = 4;
402 message IvPBehaviorReport
404 message TransitReport
406 optional bool waypoint_reached = 1 [default = false];
411 TransitReport transit = 1;
415 message MissionTpvMeetsGpsReq
417 option (dccl.msg) = {
421 optional goby.middleware.protobuf.gpsd.TimePositionVelocity tpv = 1;