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