3 import "dccl/option_extensions.proto";
4 import "jaiabot/messages/bounds.proto";
5 import "jaiabot/messages/echo.proto";
6 import "jaiabot/messages/mission.proto";
8 package jaiabot.protobuf;
17 optional double target = 1 [(dccl.field) = {
21 units { derived_dimensions: "plane_angle" system: "angle::degree" }
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 }];
31 optional uint32 timeout = 3 [(dccl.field) = {
35 units { derived_dimensions: "time" }
38 optional double throttle = 4
39 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
41 optional PIDSettings speed = 5;
43 optional double rudder = 6
44 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
46 optional PIDSettings heading = 7;
48 optional double port_elevator = 8
49 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
51 optional double stbd_elevator = 9
52 [(dccl.field) = { min: -100 max: 100 precision: 0 }];
54 optional PIDSettings roll = 10;
56 optional PIDSettings pitch = 11;
58 optional PIDSettings depth = 12;
60 optional bool led_switch_on = 13;
62 optional PIDSettings heading_constant = 14;
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;
78 message GPSRequirements
84 optional double transit_hdop_req = 1 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
86 optional double transit_pdop_req = 2 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
88 optional double after_dive_hdop_req = 3 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
90 optional double after_dive_pdop_req = 4 [(dccl.field) = { min: 1 max: 100 precision: 2 }];
92 optional uint32 transit_gps_fix_checks = 5 [(dccl.field) = { min: 1 max: 100 }];
94 optional uint32 transit_gps_degraded_fix_checks = 6 [(dccl.field) = { min: 1 max: 100 }];
96 optional uint32 after_dive_gps_fix_checks = 7 [(dccl.field) = { min: 1 max: 100 }];
99 message RFDisableOptions
101 optional bool rf_disable = 1 [default = false];
102 optional int32 rf_disable_timeout_mins = 2 [default = 10, (dccl.field) = { min: 1 max: 255 }];
105 message IMUCalibration
107 option (dccl.msg) = {
111 optional bool run_cal = 1 [default = false];
116 option (dccl.msg) = {
120 optional bool start_echo = 1 [default = false];
121 optional bool stop_echo = 2 [default = false];
122 optional EchoState echo_state = 3 [default = BOOTING];
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
135 option (dccl.msg) = {
142 required uint32 bot_id = 1 [(dccl.field) = { min: 0 max: 255 }];
143 optional uint64 time = 2 [(dccl.field) = {
145 units { prefix: "micro" derived_dimensions: "time" }
148 optional PIDControl pid_control = 3;
150 optional bool query_engineering_status = 4 [default = false];
152 optional bool query_bot_status = 5 [default = false];
154 optional bool engineering_messages_enabled = 13;
156 optional BotStatusRate bot_status_rate = 14 [default = BotStatusRate_1_Hz];
158 optional GPSRequirements gps_requirements = 15;
160 optional RFDisableOptions rf_disable_options = 16;
162 optional BottomDepthSafetyParams bottom_depth_safety_params = 17;
164 optional IMUCalibration imu_cal = 18;
166 optional Echo echo = 19;
168 // For User flagging of events
169 optional uint32 flag = 100 [(dccl.field) = { min: 0 max: 1024 }];
171 // For calibration/configuration of Arduino motor/rudder bounds
172 optional Bounds bounds = 101;