JaiaBot  1.12.0+18+g85da5f82
JaiaBot micro-AUV software
imu.proto
Go to the documentation of this file.
1 syntax = "proto2";
2 
3 import "dccl/option_extensions.proto";
4 import "jaiabot/messages/mission.proto";
5 
6 package jaiabot.protobuf;
7 
8 message 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 
23 enum IMUCalibrationState
24 {
25  IN_PROGRESS = 1;
26  COMPLETE = 2;
27 }
28 
29 message 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  optional int32 calibration_status = 4 [(dccl.field) = { min: 0 max: 3 }];
66 
67  optional IMUCalibrationState calibration_state = 5;
68 
69  optional bool bot_rolled_over = 6 [default = false];
70 
71  optional double significant_wave_height = 7 [(dccl.field) = {units {
72  derived_dimensions: "length"
73  system: "si"
74  }}
75  ];
76 
77  // For bottom characterization
78  optional double max_acceleration = 8
79  [(dccl.field) = {units {
80  derived_dimensions: "acceleration"
81  system: "si"
82  }}
83  ];
84 
85  message AngularVelocity {
86  optional double x = 1
87  [(dccl.field) = {
88  units {
89  derived_dimensions: "angular_velocity"
90  system: "si"
91  }
92  }];
93  optional double y = 2
94  [(dccl.field) = {
95  units {
96  derived_dimensions: "angular_velocity"
97  system: "si"
98  }
99  }];
100  optional double z = 3
101  [(dccl.field) = {
102  units {
103  derived_dimensions: "angular_velocity"
104  system: "si"
105  }
106  }];
107  }
108 
109  optional AngularVelocity angular_velocity = 9;
110 
111  message Quaternion {
112  optional double w = 1;
113  optional double x = 2;
114  optional double y = 3;
115  optional double z = 4;
116  }
117 
118  optional Quaternion quaternion = 10;
119 
120  optional string imu_type = 11;
121 
122 }
123 
124 message IMUIssue
125 {
126  enum SolutionType
127  {
128  STOP_BOT = 0;
129  USE_COG = 1;
130  USE_CORRECTION = 2;
131  RESTART_BOT = 3;
132  REBOOT_BOT = 4;
133  REPORT_IMU = 5;
134  RESTART_IMU_PY = 6;
135  REBOOT_BNO085_IMU = 7;
136  REBOOT_BNO085_IMU_AND_RESTART_IMU_PY = 8;
137  }
138 
139  required SolutionType solution = 1;
140 
141  enum IssueType {
142  HEADING_COURSE_DIFFERENCE_TOO_LARGE = 0;
143  }
144 
145  optional IssueType type = 2;
146 
147  optional MissionState mission_state = 3;
148 
149  optional double imu_heading_course_max_diff = 30 [default = 45];
150 
151  optional double heading = 31 [(dccl.field) = {
152  min: 0
153  max: 360
154  precision: 0
155  units { derived_dimensions: "plane_angle" system: "angle::degree" }
156  }];
157 
158  optional double desired_heading = 32 [(dccl.field) = {
159  min: 0
160  max: 360
161  precision: 0
162  units { derived_dimensions: "plane_angle" system: "angle::degree" }
163  }];
164 
165  optional double course_over_ground = 33 [(dccl.field) = {
166  min: 0
167  max: 360
168  precision: 0
169  units { derived_dimensions: "plane_angle" system: "angle::degree" }
170  }];
171 
172  optional double heading_course_difference = 34 [(dccl.field) = {
173  min: 0
174  max: 360
175  precision: 0
176  units { derived_dimensions: "plane_angle" system: "angle::degree" }
177  }];
178 
179  optional double pitch = 35 [(dccl.field) = {
180  min: -180
181  max: 180
182  precision: 0
183  units { derived_dimensions: "plane_angle" system: "angle::degree" }
184  }];
185 
186  optional double speed_over_ground = 36 [(dccl.field) = {
187  min: -5
188  max: 10
189  precision: 1
190  units { derived_dimensions: "velocity" system: "si" }
191  }];
192 
193  optional double desired_speed = 37 [(dccl.field) = {
194  min: -5
195  max: 10
196  precision: 1
197  units { derived_dimensions: "velocity" system: "si" }
198  }];
199 }