JaiaBot  1.12.0+18+g85da5f82
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 
26  // timeout to allow all applications to report HEALTH__OK
27  optional double startup_timeout = 12
28  [default = 120, (dccl.field).units = { base_dimensions: "T" }];
29 
30  // powered ascent motor on timeout
31  optional int32 powered_ascent_motor_on_timeout = 25
32  [default = 5, (dccl.field).units = { base_dimensions: "T" }];
33 
34  // powered ascent motor off timeout
35  optional int32 powered_ascent_motor_off_timeout = 26
36  [default = 2, (dccl.field).units = { base_dimensions: "T" }];
37 
38  // timeout on dive prep to then transition to powered descent
39  optional int32 dive_prep_timeout = 27
40  [default = 10, (dccl.field).units = { base_dimensions: "T" }];
41 
42  // safety timeout on powered descent to then transition to unpowered descent
43  optional int32 powered_descent_timeout = 28
44  [default = 60, (dccl.field).units = { base_dimensions: "T" }];
45 
46  // detect bottom logic initial timeout in seconds. Used to determine
47  // when we should start determining we reached bottom in powered descent
48  // logic. (this gives the vehicle time to begin diving)
49  optional double detect_bottom_logic_init_timeout = 29
50  [default = 15, (dccl.field).units = { base_dimensions: "T" }];
51 
52  // detect bottom logic timeout in seconds. Used to determine
53  // when we should start determining we reached bottom in powered descent
54  // logic. (this gives the vehicle time to begin diving after a hold)
55  optional double detect_bottom_logic_after_hold_timeout = 30
56  [default = 5, (dccl.field).units = { base_dimensions: "T" }];
57 
58  // acceptable eps when dive depth is considered reached (in meters)
59  optional double dive_depth_eps = 31
60  [default = 0.1, (dccl.field).units = { base_dimensions: "L" }];
61 
62  // bottoming timeout in seconds without depth change greater than
63  // dive_depth_eps before assuming the bottom has been hit
64  optional double bottoming_timeout = 32
65  [default = 3, (dccl.field).units = { base_dimensions: "T" }];
66 
67  // acceptable eps when dive surface is considered reached (in meters)
68  optional double dive_surface_eps = 33
69  [default = 0.75, (dccl.field).units = { base_dimensions: "L" }];
70 
71  // number of times to check the gps hdop and pdop
72  // when in reacquiring gps state
73  optional uint32 total_gps_fix_checks = 34 [default = 10];
74 
75  // number of times to check the gps hdop and pdop
76  // while in transit to go into reacquiring gps state
77  optional uint32 total_gps_degraded_fix_checks = 35 [default = 2];
78 
79  // The hdop value to check against to determine gps fix
80  optional double gps_hdop_fix = 36 [default = 1.3];
81 
82  // The pdop value to check against to determine gps fix
83  optional double gps_pdop_fix = 37 [default = 2.2];
84 
85  // number of times to check the gps hdop and pdop
86  // when in reacquiring gps state after a dive
87  optional uint32 total_after_dive_gps_fix_checks = 38 [default = 15];
88 
89  // The hdop value to check against to determine gps fix after a dive
90  optional double gps_after_dive_hdop_fix = 39 [default = 1.3];
91 
92  // The pdop value to check against to determine gps fix after a dive
93  optional double gps_after_dive_pdop_fix = 40 [default = 2.2];
94 
95  // Min depth safety behavior
96  optional double min_depth_safety = 41 [default = -1];
97 
98  // Time factor used to increase/decrease time to travel to goal
99  optional double goal_timeout_buffer_factor = 44 [default = 1];
100 
101  // The number of reacquire attempts used to calculate goal timeout
102  optional uint32 goal_timeout_reacquire_gps_attempts = 45 [default = 2];
103 
104  // Number of good gps locations to keep
105  optional uint32 tpv_history_max = 46 [default = 15];
106 
107  // Used to indicate to use goal timeout
108  optional bool use_goal_timeout = 47 [default = false];
109 
110  // Skip goal task if the bot timeouts trying to get to the goal
111  optional bool skip_goal_task = 48 [default = false];
112 
113  // States to detect goal timeout
114  repeated jaiabot.protobuf.MissionState include_goal_timeout_states = 49;
115 
116  enum RemoteControlSetpointEnd
117  {
118  RC_SETPOINT_ENDS_IN_STATIONKEEP = 1;
119  RC_SETPOINT_ENDS_IN_SURFACE_DRIFT = 2;
120  }
121  optional RemoteControlSetpointEnd rc_setpoint_end = 50
122  [default = RC_SETPOINT_ENDS_IN_STATIONKEEP];
123 
124  optional uint32 imu_restart_seconds = 51 [default = 15];
125 
126  // Bot not rising timeout in seconds without depth change greater than
127  // dive_depth_eps before assuming the bot is stuck and is not rising
128  optional double bot_not_rising_timeout = 52
129  [default = 6, (dccl.field).units = { base_dimensions: "T" }];
130 
131  // If the bot is not rising then increment the motor on time
132  optional int32 motor_on_time_increment = 53
133  [default = 1, (dccl.field).units = { base_dimensions: "T" }];
134 
135  // The max the motor should be on for powered ascent
136  optional int32 motor_on_time_max = 54
137  [default = 10, (dccl.field).units = { base_dimensions: "T" }];
138 
139  // The power ascent throttle
140  optional double powered_ascent_throttle = 55 [default = 25];
141 
142  // The power ascent throttle increment
143  optional double powered_ascent_throttle_increment = 56 [default = 5];
144 
145  // The power ascent max thottle
146  optional double powered_ascent_throttle_max = 57 [default = 60];
147 
148  optional double pitch_to_determine_powered_ascent_vertical = 58
149  [default = 30];
150 
151  optional double pitch_to_determine_dive_prep_vertical = 59 [default = 70];
152 
153  optional int32 pitch_angle_checks = 60 [default = 3];
154 
155  // The min amount of time to trigger a EvBotNotVertical event
156  optional double pitch_angle_min_check_time = 61
157  [default = 1, (dccl.field).units = { base_dimensions: "T" }];
158 
159  // acceptable eps when we consider the bot diving (in meters)
160  optional double dive_eps_to_determine_diving = 62
161  [default = 0.3, (dccl.field).units = { base_dimensions: "L" }];
162 
163  required string data_preoffload_script = 70;
164  required string data_postoffload_script = 71;
165 
166  // e.g. /var/log/jaiabot/bot/*/
167  required string log_dir = 72;
168 
169  optional string log_staging_dir = 73 [
170  default = "/var/log/jaiabot/staging"
171  ]; // dir on bot with data to be offloaded
172 
173  optional string log_archive_dir = 74 [
174  default = "/var/log/jaiabot/archive"
175  ]; // archived bot data
176 
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 }