3import "dccl/option_extensions.proto";
4import "jaiabot/messages/mission.proto";
6package jaiabot.protobuf;
13 START_WAVE_HEIGHT_SAMPLING = 1;
14 STOP_WAVE_HEIGHT_SAMPLING = 2;
15 START_BOTTOM_TYPE_SAMPLING = 3;
16 STOP_BOTTOM_TYPE_SAMPLING = 4;
17 START_CALIBRATION = 5;
20 required IMUCommandType type = 1;
22 /// Sample rate for data collection in Hz
23 optional double sample_rate = 2
24 [(dccl.field) = {units {
25 derived_dimensions: "frequency"
27 }, min: 0.1 max: 60 precision: 1},
32enum IMUCalibrationState
41 optional double heading = 1
42 [(dccl.field) = {units {
43 derived_dimensions: "plane_angle"
44 system: "angle::degree"
48 optional double pitch = 2
49 [(dccl.field) = {units {
50 derived_dimensions: "plane_angle"
51 system: "angle::degree"
55 optional double roll = 3
56 [(dccl.field) = {units {
57 derived_dimensions: "plane_angle"
58 system: "angle::degree"
63 optional EulerAngles euler_angles = 1;
65 message Acceleration {
66 optional double x = 1;
67 optional double y = 2;
68 optional double z = 3;
71 optional Acceleration linear_acceleration = 2;
72 optional Acceleration gravity = 3;
75 optional int32 accelerometer = 1 [(dccl.field) = { min: 0 max: 3 }];
76 optional int32 gyroscope = 2 [(dccl.field) = { min: 0 max: 3 }];
77 optional int32 magnetometer = 3 [(dccl.field) = { min: 0 max: 3 }];
80 optional Accuracies accuracies = 4;
82 optional IMUCalibrationState calibration_state = 5;
84 optional bool bot_rolled_over = 6 [default = false];
86 optional double significant_wave_height = 7 [(dccl.field) = {units {
87 derived_dimensions: "length"
92 // For bottom characterization
93 optional double max_acceleration = 8
94 [(dccl.field) = {units {
95 derived_dimensions: "acceleration"
100 message AngularVelocity {
101 optional double x = 1
104 derived_dimensions: "angular_velocity"
108 optional double y = 2
111 derived_dimensions: "angular_velocity"
115 optional double z = 3
118 derived_dimensions: "angular_velocity"
124 optional AngularVelocity angular_velocity = 9;
127 optional double w = 1;
128 optional double x = 2;
129 optional double y = 3;
130 optional double z = 4;
133 optional Quaternion quaternion = 10;
135 optional string imu_type = 11;
137 optional Acceleration acceleration = 12;
139 message MagneticField {
140 optional double x = 1
147 optional double y = 2
154 optional double z = 3
163 optional MagneticField magnetic_field = 13;
165 message AccelerationWorld {
166 optional double north = 1
167 [(dccl.field) = {units {
168 derived_dimensions: "acceleration"
172 optional double east = 2
173 [(dccl.field) = {units {
174 derived_dimensions: "acceleration"
178 optional double down = 3
179 [(dccl.field) = {units {
180 derived_dimensions: "acceleration"
185 optional AccelerationWorld linear_acceleration_world = 14;
200 REBOOT_BNO085_IMU = 7;
201 REBOOT_BNO085_IMU_AND_RESTART_IMU_PY = 8;
204 required SolutionType solution = 1;
207 HEADING_COURSE_DIFFERENCE_TOO_LARGE = 0;
210 optional IssueType type = 2;
212 optional MissionState mission_state = 3;
214 optional double imu_heading_course_max_diff = 30 [default = 45];
216 optional double heading = 31 [(dccl.field) = {
220 units { derived_dimensions: "plane_angle" system: "angle::degree" }
223 optional double desired_heading = 32 [(dccl.field) = {
227 units { derived_dimensions: "plane_angle" system: "angle::degree" }
230 optional double course_over_ground = 33 [(dccl.field) = {
234 units { derived_dimensions: "plane_angle" system: "angle::degree" }
237 optional double heading_course_difference = 34 [(dccl.field) = {
241 units { derived_dimensions: "plane_angle" system: "angle::degree" }
244 optional double pitch = 35 [(dccl.field) = {
248 units { derived_dimensions: "plane_angle" system: "angle::degree" }
251 optional double speed_over_ground = 36 [(dccl.field) = {
255 units { derived_dimensions: "velocity" system: "si" }
258 optional double desired_speed = 37 [(dccl.field) = {
262 units { derived_dimensions: "velocity" system: "si" }