JaiaBot  1.12.0+18+g85da5f82
JaiaBot micro-AUV software
engineering.proto
Go to the documentation of this file.
1 syntax = "proto2";
2 
3 import "dccl/option_extensions.proto";
4 import "jaiabot/messages/bounds.proto";
5 import "jaiabot/messages/echo.proto";
6 import "jaiabot/messages/mission.proto";
7 
8 package jaiabot.protobuf;
9 
10 message PIDControl {
11  option (dccl.msg) = {
12  unit_system: "si"
13  };
14 
15  message PIDSettings
16  {
17  optional double target = 1 [(dccl.field) = {
18  min: -360
19  max: 360
20  precision: 0
21  units { derived_dimensions: "plane_angle" system: "angle::degree" }
22  }];
23  optional double Kp = 2
24  [(dccl.field) = { min: 0 max: 100 precision: 8 }];
25  optional double Ki = 3
26  [(dccl.field) = { min: 0 max: 100 precision: 8 }];
27  optional double Kd = 4
28  [(dccl.field) = { min: 0 max: 100 precision: 8 }];
29  }
30 
31  optional uint32 timeout = 3 [(dccl.field) = {
32  min: 0
33  max: 100
34  precision: 0
35  units { derived_dimensions: "time" }
36  }];
37 
38  optional double throttle = 4
39  [(dccl.field) = { min: -100 max: 100 precision: 0 }];
40 
41  optional PIDSettings speed = 5;
42 
43  optional double rudder = 6
44  [(dccl.field) = { min: -100 max: 100 precision: 0 }];
45 
46  optional PIDSettings heading = 7;
47 
48  optional double port_elevator = 8
49  [(dccl.field) = { min: -100 max: 100 precision: 0 }];
50 
51  optional double stbd_elevator = 9
52  [(dccl.field) = { min: -100 max: 100 precision: 0 }];
53 
54  optional PIDSettings roll = 10;
55 
56  optional PIDSettings pitch = 11;
57 
58  optional PIDSettings depth = 12;
59 
60  optional bool led_switch_on = 13;
61 
62  optional PIDSettings heading_constant = 14;
63 }
64 
65 enum BotStatusRate
66 {
67  BotStatusRate_2_Hz = 0;
68  BotStatusRate_1_Hz = 1;
69  BotStatusRate_2_SECONDS = 2;
70  BotStatusRate_5_SECONDS = 3;
71  BotStatusRate_10_SECONDS = 4;
72  BotStatusRate_20_SECONDS = 5;
73  BotStatusRate_40_SECONDS = 6;
74  BotStatusRate_60_SECONDS = 7;
75  BotStatusRate_NO_RF = 8;
76 }
77 
78 message GPSRequirements
79 {
80  option (dccl.msg) = {
81  unit_system: "si"
82  };
83 
84  optional double transit_hdop_req = 1 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
85 
86  optional double transit_pdop_req = 2 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
87 
88  optional double after_dive_hdop_req = 3 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
89 
90  optional double after_dive_pdop_req = 4 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
91 
92  optional uint32 transit_gps_fix_checks = 5 [(dccl.field) = { min: 1 max: 100 }];
93 
94  optional uint32 transit_gps_degraded_fix_checks = 6 [(dccl.field) = { min: 1 max: 100 }];
95 
96  optional uint32 after_dive_gps_fix_checks = 7 [(dccl.field) = { min: 1 max: 100 }];
97 }
98 
99 message RFDisableOptions
100 {
101  optional bool rf_disable = 1 [default = false];
102  optional int32 rf_disable_timeout_mins = 2 [default = 10, (dccl.field) = { min: 1 max: 255 }];
103 }
104 
105 message IMUCalibration
106 {
107  option (dccl.msg) = {
108  unit_system: "si"
109  };
110 
111  optional bool run_cal = 1 [default = false];
112 }
113 
114 message Echo
115 {
116  option (dccl.msg) = {
117  unit_system: "si"
118  };
119 
120  optional bool start_echo = 1 [default = false];
121  optional bool stop_echo = 2 [default = false];
122  optional EchoState echo_state = 3 [default = BOOTING];
123 }
124 
125 message Engineering
126 {
127  /*
128  Actual maximum size of message: 113 bytes / 904 bits
129  dccl.id head...........................8
130  user head..............................0
131  body.................................889
132  padding to full byte...................7
133  Allowed maximum size of message: 250 bytes / 2000 bits
134  */
135  option (dccl.msg) = {
136  id: 127
137  max_bytes: 250
138  codec_version: 4
139  unit_system: "si"
140  };
141 
142  required uint32 bot_id = 1 [(dccl.field) = { min: 0 max: 255 }];
143  optional uint64 time = 2 [(dccl.field) = {
144  codec: "dccl.time2"
145  units { prefix: "micro" derived_dimensions: "time" }
146  }];
147 
148  optional PIDControl pid_control = 3;
149 
150  optional bool query_engineering_status = 4 [default = false];
151 
152  optional bool query_bot_status = 5 [default = false];
153 
154  optional bool engineering_messages_enabled = 13;
155 
156  optional BotStatusRate bot_status_rate = 14 [default = BotStatusRate_1_Hz];
157 
158  optional GPSRequirements gps_requirements = 15;
159 
160  optional RFDisableOptions rf_disable_options = 16;
161 
162  optional BottomDepthSafetyParams bottom_depth_safety_params = 17;
163 
164  optional IMUCalibration imu_cal = 18;
165 
166  optional Echo echo = 19;
167 
168  // For User flagging of events
169  optional uint32 flag = 100 [(dccl.field) = { min: 0 max: 1024 }];
170 
171  // For calibration/configuration of Arduino motor/rudder bounds
172  optional Bounds bounds = 101;
173 
174 }