JaiaBot 2.4.0
JaiaBot micro-AUV software
 
Loading...
Searching...
No Matches
imu.proto
Go to the documentation of this file.
1syntax = "proto2";
2
3import "dccl/option_extensions.proto";
4import "jaiabot/messages/mission.proto";
5
6package jaiabot.protobuf;
7
8message IMUCommand
9{
10 enum IMUCommandType
11 {
12 CONFIGURE = 0;
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;
18 }
19
20 required IMUCommandType type = 1;
21
22 /// Sample rate for data collection in Hz
23 optional double sample_rate = 2
24 [(dccl.field) = {units {
25 derived_dimensions: "frequency"
26 system: "si"
27 }, min: 0.1 max: 60 precision: 1},
28 default = 10
29 ];
30}
31
32enum IMUCalibrationState
33{
34 IN_PROGRESS = 1;
35 COMPLETE = 2;
36}
37
38message IMUData
39{
40 message EulerAngles {
41 optional double heading = 1
42 [(dccl.field) = {units {
43 derived_dimensions: "plane_angle"
44 system: "angle::degree"
45 }}
46 ];
47
48 optional double pitch = 2
49 [(dccl.field) = {units {
50 derived_dimensions: "plane_angle"
51 system: "angle::degree"
52 }}
53 ];
54
55 optional double roll = 3
56 [(dccl.field) = {units {
57 derived_dimensions: "plane_angle"
58 system: "angle::degree"
59 }}
60 ];
61
62 }
63 optional EulerAngles euler_angles = 1;
64
65 message Acceleration {
66 optional double x = 1;
67 optional double y = 2;
68 optional double z = 3;
69 }
70
71 optional Acceleration linear_acceleration = 2;
72 optional Acceleration gravity = 3;
73
74 message Accuracies {
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 }];
78 }
79
80 optional Accuracies accuracies = 4;
81
82 optional IMUCalibrationState calibration_state = 5;
83
84 optional bool bot_rolled_over = 6 [default = false];
85
86 optional double significant_wave_height = 7 [(dccl.field) = {units {
87 derived_dimensions: "length"
88 system: "si"
89 }}
90 ];
91
92 // For bottom characterization
93 optional double max_acceleration = 8
94 [(dccl.field) = {units {
95 derived_dimensions: "acceleration"
96 system: "si"
97 }}
98 ];
99
100 message AngularVelocity {
101 optional double x = 1
102 [(dccl.field) = {
103 units {
104 derived_dimensions: "angular_velocity"
105 system: "si"
106 }
107 }];
108 optional double y = 2
109 [(dccl.field) = {
110 units {
111 derived_dimensions: "angular_velocity"
112 system: "si"
113 }
114 }];
115 optional double z = 3
116 [(dccl.field) = {
117 units {
118 derived_dimensions: "angular_velocity"
119 system: "si"
120 }
121 }];
122 }
123
124 optional AngularVelocity angular_velocity = 9;
125
126 message Quaternion {
127 optional double w = 1;
128 optional double x = 2;
129 optional double y = 3;
130 optional double z = 4;
131 }
132
133 optional Quaternion quaternion = 10;
134
135 optional string imu_type = 11;
136
137 optional Acceleration acceleration = 12;
138
139 message MagneticField {
140 optional double x = 1
141 [(dccl.field) = {
142 units {
143 prefix: "micro"
144 system: "si::tesla"
145 }
146 }];
147 optional double y = 2
148 [(dccl.field) = {
149 units {
150 prefix: "micro"
151 system: "si::tesla"
152 }
153 }];
154 optional double z = 3
155 [(dccl.field) = {
156 units {
157 prefix: "micro"
158 system: "si::tesla"
159 }
160 }];
161 }
162
163 optional MagneticField magnetic_field = 13;
164
165 message AccelerationWorld {
166 optional double north = 1
167 [(dccl.field) = {units {
168 derived_dimensions: "acceleration"
169 system: "si"
170 }}
171 ];
172 optional double east = 2
173 [(dccl.field) = {units {
174 derived_dimensions: "acceleration"
175 system: "si"
176 }}
177 ];
178 optional double down = 3
179 [(dccl.field) = {units {
180 derived_dimensions: "acceleration"
181 system: "si"
182 }}
183 ];
184 }
185 optional AccelerationWorld linear_acceleration_world = 14;
186
187}
188
189message IMUIssue
190{
191 enum SolutionType
192 {
193 STOP_BOT = 0;
194 USE_COG = 1;
195 USE_CORRECTION = 2;
196 RESTART_BOT = 3;
197 REBOOT_BOT = 4;
198 REPORT_IMU = 5;
199 RESTART_IMU_PY = 6;
200 REBOOT_BNO085_IMU = 7;
201 REBOOT_BNO085_IMU_AND_RESTART_IMU_PY = 8;
202 }
203
204 required SolutionType solution = 1;
205
206 enum IssueType {
207 HEADING_COURSE_DIFFERENCE_TOO_LARGE = 0;
208 }
209
210 optional IssueType type = 2;
211
212 optional MissionState mission_state = 3;
213
214 optional double imu_heading_course_max_diff = 30 [default = 45];
215
216 optional double heading = 31 [(dccl.field) = {
217 min: 0
218 max: 360
219 precision: 0
220 units { derived_dimensions: "plane_angle" system: "angle::degree" }
221 }];
222
223 optional double desired_heading = 32 [(dccl.field) = {
224 min: 0
225 max: 360
226 precision: 0
227 units { derived_dimensions: "plane_angle" system: "angle::degree" }
228 }];
229
230 optional double course_over_ground = 33 [(dccl.field) = {
231 min: 0
232 max: 360
233 precision: 0
234 units { derived_dimensions: "plane_angle" system: "angle::degree" }
235 }];
236
237 optional double heading_course_difference = 34 [(dccl.field) = {
238 min: 0
239 max: 360
240 precision: 0
241 units { derived_dimensions: "plane_angle" system: "angle::degree" }
242 }];
243
244 optional double pitch = 35 [(dccl.field) = {
245 min: -180
246 max: 180
247 precision: 0
248 units { derived_dimensions: "plane_angle" system: "angle::degree" }
249 }];
250
251 optional double speed_over_ground = 36 [(dccl.field) = {
252 min: -5
253 max: 10
254 precision: 1
255 units { derived_dimensions: "velocity" system: "si" }
256 }];
257
258 optional double desired_speed = 37 [(dccl.field) = {
259 min: -5
260 max: 10
261 precision: 1
262 units { derived_dimensions: "velocity" system: "si" }
263 }];
264}