JaiaBot  1.19.0
JaiaBot micro-AUV software
config.proto
Go to the documentation of this file.
1 syntax = "proto2";
2 
3 import "goby/middleware/protobuf/app_config.proto";
4 import "goby/zeromq/protobuf/interprocess_config.proto";
5 import "goby/middleware/protobuf/serial_config.proto";
6 import "goby/middleware/protobuf/transporter_config.proto";
7 import "dccl/option_extensions.proto";
8 import "jaiabot/messages/health.proto";
9 import "jaiabot/messages/mission.proto";
10 import "jaiabot/messages/modem_message_extensions.proto";
11 
12 package jaiabot.config;
13 
14 message MissionManager
15 {
16  option (dccl.msg) = {
17  unit_system: "si"
18  };
19  optional goby.middleware.protobuf.AppConfig app = 1;
20  optional goby.zeromq.protobuf.InterProcessPortalConfig interprocess = 2;
21 
22  required int32 fleet_id = 9;
23  required int32 bot_id = 10;
24  required goby.middleware.protobuf.TransporterConfig command_sub_cfg = 11;
25  optional goby.middleware.protobuf.TransporterConfig contact_update_sub_cfg =
26  13;
27 
28  // timeout to allow all applications to report HEALTH__OK
29  optional double startup_timeout = 12
30  [default = 120, (dccl.field).units = { base_dimensions: "T" }];
31 
32  // powered ascent motor on timeout
33  optional int32 powered_ascent_motor_on_timeout = 25
34  [default = 5, (dccl.field).units = { base_dimensions: "T" }];
35 
36  // powered ascent motor off timeout
37  optional int32 powered_ascent_motor_off_timeout = 26
38  [default = 2, (dccl.field).units = { base_dimensions: "T" }];
39 
40  // timeout on dive prep to then transition to powered descent
41  optional int32 dive_prep_timeout = 27
42  [default = 10, (dccl.field).units = { base_dimensions: "T" }];
43 
44  // safety timeout on powered descent to then transition to unpowered descent
45  optional int32 powered_descent_timeout = 28
46  [default = 100, (dccl.field).units = { base_dimensions: "T" }];
47 
48  // detect bottom logic initial timeout in seconds. Used to determine
49  // when we should start determining we reached bottom in powered descent
50  // logic. (this gives the vehicle time to begin diving)
51  optional double detect_bottom_logic_init_timeout = 29
52  [default = 15, (dccl.field).units = { base_dimensions: "T" }];
53 
54  // detect bottom logic timeout in seconds. Used to determine
55  // when we should start determining we reached bottom in powered descent
56  // logic. (this gives the vehicle time to begin diving after a hold)
57  optional double detect_bottom_logic_after_hold_timeout = 30
58  [default = 5, (dccl.field).units = { base_dimensions: "T" }];
59 
60  // acceptable eps when dive depth is considered reached (in meters)
61  optional double dive_depth_eps = 31
62  [default = 0.1, (dccl.field).units = { base_dimensions: "L" }];
63 
64  // bottoming timeout in seconds without depth change greater than
65  // dive_depth_eps before assuming the bottom has been hit
66  optional double bottoming_timeout = 32
67  [default = 3, (dccl.field).units = { base_dimensions: "T" }];
68 
69  // acceptable eps when dive surface is considered reached (in meters)
70  optional double dive_surface_eps = 33
71  [default = 0.75, (dccl.field).units = { base_dimensions: "L" }];
72 
73  // number of times to check the gps hdop and pdop
74  // when in reacquiring gps state
75  optional uint32 total_gps_fix_checks = 34 [default = 10];
76 
77  // number of times to check the gps hdop and pdop
78  // while in transit to go into reacquiring gps state
79  optional uint32 total_gps_degraded_fix_checks = 35 [default = 2];
80 
81  // The hdop value to check against to determine gps fix
82  optional double gps_hdop_fix = 36 [default = 1.3];
83 
84  // The pdop value to check against to determine gps fix
85  optional double gps_pdop_fix = 37 [default = 2.2];
86 
87  // number of times to check the gps hdop and pdop
88  // when in reacquiring gps state after a dive
89  optional uint32 total_after_dive_gps_fix_checks = 38 [default = 15];
90 
91  // The hdop value to check against to determine gps fix after a dive
92  optional double gps_after_dive_hdop_fix = 39 [default = 1.3];
93 
94  // The pdop value to check against to determine gps fix after a dive
95  optional double gps_after_dive_pdop_fix = 40 [default = 2.2];
96 
97  // Min depth safety behavior
98  optional double min_depth_safety = 41 [default = -1];
99 
100  // Time factor used to increase/decrease time to travel to goal
101  optional double goal_timeout_buffer_factor = 44 [default = 1];
102 
103  // The number of reacquire attempts used to calculate goal timeout
104  optional uint32 goal_timeout_reacquire_gps_attempts = 45 [default = 2];
105 
106  // Number of good gps locations to keep
107  optional uint32 tpv_history_max = 46 [default = 15];
108 
109  // Used to indicate to use goal timeout
110  optional bool use_goal_timeout = 47 [default = false];
111 
112  // Skip goal task if the bot timeouts trying to get to the goal
113  optional bool skip_goal_task = 48 [default = false];
114 
115  // States to detect goal timeout
116  repeated jaiabot.protobuf.MissionState include_goal_timeout_states = 49;
117 
118  enum RemoteControlSetpointEnd
119  {
120  RC_SETPOINT_ENDS_IN_STATIONKEEP = 1;
121  RC_SETPOINT_ENDS_IN_SURFACE_DRIFT = 2;
122  }
123  optional RemoteControlSetpointEnd rc_setpoint_end = 50
124  [default = RC_SETPOINT_ENDS_IN_STATIONKEEP];
125 
126  optional uint32 imu_restart_seconds = 51 [default = 15];
127 
128  // Bot not rising timeout in seconds without depth change greater than
129  // dive_depth_eps before assuming the bot is stuck and is not rising
130  optional double bot_not_rising_timeout = 52
131  [default = 6, (dccl.field).units = { base_dimensions: "T" }];
132 
133  // If the bot is not rising then increment the motor on time
134  optional int32 motor_on_time_increment = 53
135  [default = 1, (dccl.field).units = { base_dimensions: "T" }];
136 
137  // The max the motor should be on for powered ascent
138  optional int32 motor_on_time_max = 54
139  [default = 10, (dccl.field).units = { base_dimensions: "T" }];
140 
141  // The power ascent throttle
142  optional double powered_ascent_throttle = 55 [default = 25];
143 
144  // The power ascent throttle increment
145  optional double powered_ascent_throttle_increment = 56 [default = 5];
146 
147  // The power ascent max thottle
148  optional double powered_ascent_throttle_max = 57 [default = 60];
149 
150  optional double pitch_to_determine_powered_ascent_vertical = 58
151  [default = 30];
152 
153  optional double pitch_to_determine_dive_prep_vertical = 59 [default = 70];
154 
155  optional int32 pitch_angle_checks = 60 [default = 3];
156 
157  // The min amount of time to trigger a EvBotNotVertical event
158  optional double pitch_angle_min_check_time = 61
159  [default = 1, (dccl.field).units = { base_dimensions: "T" }];
160 
161  // acceptable eps when we consider the bot diving (in meters)
162  optional double dive_eps_to_determine_diving = 62
163  [default = 0.3, (dccl.field).units = { base_dimensions: "L" }];
164 
165  required string data_preoffload_script = 70;
166  required string data_postoffload_script = 71;
167 
168  // e.g. /var/log/jaiabot/bot/*/
169  required string log_dir = 72;
170 
171  optional string log_staging_dir = 73 [
172  default = "/var/log/jaiabot/staging"
173  ]; // dir on bot with data to be offloaded
174 
175  optional string log_archive_dir = 74
176  [default = "/var/log/jaiabot/archive"]; // archived bot data
177 
178  enum DownloadFileTypes
179  {
180  NONE = 1;
181  GOBY = 2;
182  TASKPACKET = 3;
183  }
184  optional DownloadFileTypes data_offload_exclude = 75;
185 
186  enum EngineeringTestMode
187  {
188  ENGINEERING_TEST__ALWAYS_LOG_EVEN_WHEN_IDLE = 1;
189  ENGINEERING_TEST__IGNORE_SOME_ERRORS = 2;
190  ENGINEERING_TEST__INDOOR_MODE__NO_GPS = 3;
191  }
192  repeated EngineeringTestMode test_mode = 80;
193 
194  // errors to ignore,
195  // only when test_mode: ENGINEERING_TEST__IGNORE_SOME_ERRORS
196  repeated jaiabot.protobuf.Error ignore_error = 81;
197 
198  optional bool is_sim = 82 [default = false];
199 
200  optional jaiabot.protobuf.HubInfo subscribe_to_hub_on_start = 83;
201 
202  // Determines if the acceleration is hard or soft
203  optional double hard_bottom_type_acceleration = 84 [default = 100];
204 
205  // timeout for when to stop logging if in failed state
206  optional int32 failed_startup_log_timeout = 85
207  [default = 300, (dccl.field).units = { base_dimensions: "T" }];
208 
209  // used to update transitting to waypoint to allow more overshoot
210  optional int32 waypoint_with_no_task_slip_radius = 86 [default = 15];
211 
212  // used to update transitting to waypoint to allow less overshoot
213  optional int32 waypoint_with_task_slip_radius = 87 [default = 5];
214 
215  message ResolveNoForwardProgress
216  {
217  // time after going into ResolveNoForwardProgress to resume attempting
218  // to move
219  optional int32 resume_timeout = 1
220  [default = 10, (dccl.field).units = { base_dimensions: "T" }];
221 
222  // angle above which the vehicle is assumed to not be making forward
223  // progress, below which it is
224  optional int32 pitch_threshold = 2 [
225  default = 30,
226  (dccl.field).units = {
227  derived_dimensions: "plane_angle"
228  system: "angle::degree"
229  }
230  ];
231 
232  // desired speed above which the vehicle is expected to be making
233  // forward progress
234  optional int32 desired_speed_threshold = 3
235  [default = 0, (dccl.field).units = { base_dimensions: "LT^-1" }];
236 
237  // time after desired speed > desired_speed_threshold but pitch
238  // > pitch_threshold that triggers EvNoForwardProgress
239  optional int32 trigger_timeout = 4
240  [default = 15, (dccl.field).units = { base_dimensions: "T" }];
241  }
242 
243  optional ResolveNoForwardProgress resolve_no_forward_progress = 88;
244 
245  required uint32 subnet_mask = 89;
246 }