3import "jaiabot/messages/geographic_coordinate.proto";
4import "dccl/option_extensions.proto";
5import "goby/middleware/protobuf/gpsd.proto";
7package 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" }
81message 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" }
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 optional ConstantHeadingParameters constant_heading = 4;
253 optional bool start_echo = 5 [default = false];
258 option (dccl.msg) = {
264 START_IMMEDIATELY = 1;
265 START_ON_COMMAND = 2;
266 // START_IN_WATER_DETECT = 3;
267 // START_AFTER_DELAY = 4;
269 optional MissionStart start = 1 [default = START_ON_COMMAND];
276 optional MovementType movement = 2 [default = TRANSIT];
280 optional string name = 1 [(dccl.field).omit = true];
281 required GeographicCoordinate location = 2;
282 optional MissionTask task = 3;
283 optional bool moveWptMode = 4;
286 repeated Goal goal = 3 [(dccl.field).max_repeat = 10];
290 optional bool recover_at_final_goal = 1 [default = true];
291 optional GeographicCoordinate location = 2;
293 optional Recovery recovery = 4;
295 optional Speeds speeds = 5;
296 optional BottomDepthSafetyParams bottom_depth_safety_params = 6;
297 optional uint32 fragment_index = 7 [(dccl.field) = { min: 0 max: 2 }];
298 optional uint32 expected_fragments = 8 [(dccl.field) = { min: 1 max: 3 }];
299 optional uint32 repeats = 9 [default = 1, (dccl.field) = {min: 1 max: 100 }];
302message IvPBehaviorUpdate
304 message TransitUpdate
306 // unit dimensions must match those used by MOOS-IvP
307 option (dccl.msg) = {
310 required bool active = 1;
312 optional double x = 2
313 [(dccl.field).units = { base_dimensions: "L" }]; // meters
314 optional double y = 3
315 [(dccl.field).units = { base_dimensions: "L" }]; // meters
316 optional double speed = 4 [
317 (dccl.field).units = { base_dimensions: "LT^-1" }
320 optional int32 slip_radius = 5;
323 message StationkeepUpdate
325 // unit dimensions must match those used by MOOS-IvP
326 option (dccl.msg) = {
330 required bool active = 1;
332 optional double x = 2
333 [(dccl.field).units = { base_dimensions: "L" }]; // meters
334 optional double y = 3
335 [(dccl.field).units = { base_dimensions: "L" }]; // meters
336 optional double outer_speed = 4 [
337 (dccl.field).units = { base_dimensions: "LT^-1" }
339 optional double transit_speed = 5 [
340 (dccl.field).units = { base_dimensions: "LT^-1" }
342 optional bool center_activate = 6 [default = false];
345 message ConstantHeadingUpdate
347 // unit dimensions must match those used by MOOS-IvP
348 option (dccl.msg) = {
352 required bool active = 1;
354 optional double heading = 2 [(dccl.field) = {
358 units { derived_dimensions: "plane_angle" system: "angle::degree" }
362 message ConstantSpeedUpdate
364 // unit dimensions must match those used by MOOS-IvP
365 option (dccl.msg) = {
369 required bool active = 1;
371 optional double speed = 2 [
372 (dccl.field).units = { base_dimensions: "LT^-1" }
378 TransitUpdate transit = 1;
379 StationkeepUpdate stationkeep = 2;
380 ConstantHeadingUpdate constantHeading = 3;
381 ConstantSpeedUpdate constantSpeed = 4;
385message IvPBehaviorReport
387 message TransitReport
389 optional bool waypoint_reached = 1 [default = false];
394 TransitReport transit = 1;
398message MissionTpvMeetsGpsReq
400 option (dccl.msg) = {
404 optional goby.middleware.protobuf.gpsd.TimePositionVelocity tpv = 1;