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