CTRE Phoenix C++ 5.36.0-beta-1
Loading...
Searching...
No Matches
PigeonIMU.h
Go to the documentation of this file.
1/* Copyright (C) Cross The Road Electronics 2024 */
2/*
3 * Software License Agreement
4 *
5 * Copyright (C) Cross The Road Electronics. All rights
6 * reserved.
7 *
8 * Cross The Road Electronics (CTRE) licenses to you the right to
9 * use, publish, and distribute copies of CRF (Cross The Road) firmware files (*.crf) and Software
10 * API Libraries ONLY when in use with Cross The Road Electronics hardware products.
11 *
12 * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT
13 * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT
14 * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A
15 * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL
16 * CROSS THE ROAD ELECTRONICS BE LIABLE FOR ANY INCIDENTAL, SPECIAL,
17 * INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF
18 * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS
19 * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE
20 * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER
21 * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT
22 * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE
23 */
24
25#pragma once
26
27#include <string>
29
30/* forward prototype */
31namespace ctre {
32namespace phoenix {
33namespace motorcontrol {
34namespace can {
35class TalonSRX;
36}
37}
38}
39}
40
41namespace ctre {
42namespace phoenix {
43/** sensors namespace */
44namespace sensors {
45
46/**
47 * Configurables available to Pigeon
48 */
51
52 /**
53 * @return String representation of configs
54 */
55 std::string toString() {
56 return toString("");
57 }
58
59 /**
60 * @param prependString
61 * String to prepend to configs
62 * @return String representation of configs
63 */
64 std::string toString(std::string prependString) {
65 std::string retstr = BasePigeonConfiguration::toString(prependString);
66
67 return retstr;
68 }
69};// struct PigeonIMU
70
71/**
72 * Util class to help with Pigeon configurations
73 */
75private:
76 static const PigeonIMUConfiguration &_default();
77public:
78 /** @} */
79};
80
81/**
82 * Pigeon IMU Class.
83 * Class supports communicating over CANbus and over ribbon-cable (CAN Talon SRX).
84 */
85class PigeonIMU: public BasePigeon {
86public:
87 /** Data object for holding fusion information. */
88 struct FusionStatus {
89 /**
90 * Fused Heading
91 */
92 double heading;
93 /**
94 * Whether the fusion is valid
95 */
97 /**
98 * Whether the pigeon is fusing
99 */
101 /**
102 * Description of fusion status
103 */
104 std::string description;
105 /**
106 * Same as GetLastError()
107 */
109 };
110 /**
111 * Various calibration modes supported by Pigeon.
112 *
113 * Note that you can instead use Phoenix Tuner to accomplish certain calibrations.
114 *
115 */
117 /**
118 * Boot-Calibrate the pigeon
119 */
121 /**
122 * Temperature-Calibrate the pigeon
123 */
125 /**
126 * Magnetometer-Calibrate the pigeon using the 12pt process
127 */
129 /**
130 * Magnetometer-Calibrate the pigeon using 360 turns
131 */
133 /**
134 * Calibrate the pigeon accelerometer
135 */
137 };
138 /** Overall state of the Pigeon. */
140 /**
141 * No communications with Pigeon
142 */
144 /**
145 * Pigeon is initializing
146 */
148 /**
149 * Pigeon is ready
150 */
152 /**
153 * Pigeon is calibrating due to user
154 */
156 };
157 /**
158 * Data object for status on current calibration and general status.
159 *
160 * Pigeon has many calibration modes supported for a variety of uses.
161 * The modes generally collects and saves persistently information that makes
162 * the Pigeon signals more accurate. This includes collecting temperature, gyro, accelerometer,
163 * and compass information.
164 *
165 * For FRC use-cases, typically compass and temperature calibration is not required.
166 *
167 * Additionally when motion driver software in the Pigeon boots, it will perform a fast boot calibration
168 * to initially bias gyro and setup accelerometer.
169 *
170 * These modes can be enabled with the EnterCalibration mode.
171 *
172 * When a calibration mode is entered, caller can expect...
173 *
174 * - PigeonState to reset to Initializing and bCalIsBooting is set to true. Pigeon LEDs will blink the boot pattern.
175 * This is similar to the normal boot cal, however it can an additional ~30 seconds since calibration generally
176 * requires more information.
177 * currentMode will reflect the user's selected calibration mode.
178 *
179 * - PigeonState will eventually settle to UserCalibration and Pigeon LEDs will show cal specific blink patterns.
180 * bCalIsBooting is now false.
181 *
182 * - Follow the instructions in the Pigeon User Manual to meet the calibration specific requirements.
183 * When finished calibrationError will update with the result.
184 * Pigeon will solid-fill LEDs with red (for failure) or green (for success) for ~5 seconds.
185 * Pigeon then perform boot-cal to cleanly apply the newly saved calibration data.
186 */
188 /**
189 * The current state of the motion driver. This reflects if the sensor signals are accurate.
190 * Most calibration modes will force Pigeon to reinit the motion driver.
191 */
193 /**
194 * The currently applied calibration mode if state is in UserCalibration or if bCalIsBooting is true.
195 * Otherwise it holds the last selected calibration mode (when calibrationError was updated).
196 */
198 /**
199 * The error code for the last calibration mode.
200 * Zero represents a successful cal (with solid green LEDs at end of cal)
201 * and nonzero is a failed calibration (with solid red LEDs at end of cal).
202 * Different calibration
203 */
205 /**
206 * After caller requests a calibration mode, pigeon will perform a boot-cal before
207 * entering the requested mode. During this period, this flag is set to true.
208 */
210 /**
211 * general string description of current status
212 */
213 std::string description;
214 /**
215 * Temperature in Celsius
216 */
217 double tempC;
218 /**
219 * Number of seconds Pigeon has been up (since boot).
220 * This register is reset on power boot or processor reset.
221 * Register is capped at 255 seconds with no wrap around.
222 */
224 /**
225 * Number of times the Pigeon has automatically rebiased the gyro.
226 * This counter overflows from 15 -> 0 with no cap.
227 */
229 /**
230 * Number of times the Pigeon has temperature compensated the various signals.
231 * This counter overflows from 15 -> 0 with no cap.
232 */
234 /**
235 * Same as GetLastError()
236 */
238 };
239
240 /**
241 * Create a Pigeon object that communicates with Pigeon on CAN Bus.
242 *
243 * @param deviceNumber
244 * CAN Device Id of Pigeon [0,62]
245 */
246 PigeonIMU(int deviceNumber);
247 /**
248 * Create a Pigeon object that communciates with Pigeon through the
249 * Gadgeteer ribbon cable connected to a Talon on CAN Bus.
250 *
251 * @param talonSrx
252 * Object for the TalonSRX connected via ribbon cable.
253 */
255
256 /**
257 * Sets the Fused Heading to the specified value.
258 *
259 * @param angleDeg New fused-heading in degrees [+/- 23,040 degrees]
260 * @param timeoutMs
261 * Timeout value in ms. If nonzero, function will wait for
262 * config success and report an error if it times out.
263 * If zero, no blocking or checking is performed.
264 * @return Error Code generated by function. 0 indicates no error.
265 */
266 int SetFusedHeading(double angleDeg, int timeoutMs = 0);
267 /**
268 * Atomically add to the Fused Heading register.
269 *
270 * @param angleDeg Degrees to add to the Fused Heading register.
271 * @param timeoutMs
272 * Timeout value in ms. If nonzero, function will wait for
273 * config success and report an error if it times out.
274 * If zero, no blocking or checking is performed.
275 * @return Error Code generated by function. 0 indicates no error.
276 */
277 int AddFusedHeading(double angleDeg, int timeoutMs = 0);
278 /**
279 * Sets the Fused Heading register to match the current compass value.
280 *
281 * @param timeoutMs
282 * Timeout value in ms. If nonzero, function will wait for
283 * config success and report an error if it times out.
284 * If zero, no blocking or checking is performed.
285 * @return Error Code generated by function. 0 indicates no error.
286 */
287 int SetFusedHeadingToCompass(int timeoutMs = 0);
288
289 /**
290 * Disable/Enable Temp compensation. Pigeon has this on/False at boot.
291 *
292 * @param bTempCompDisable Set to "False" to enable temperature compensation.
293 * @param timeoutMs
294 * Timeout value in ms. If nonzero, function will wait for
295 * config success and report an error if it times out.
296 * If zero, no blocking or checking is performed.
297 * @return Error Code generated by function. 0 indicates no error.
298 */
299 int SetTemperatureCompensationDisable(bool bTempCompDisable,
300 int timeoutMs = 0);
301 /**
302 * Set the declination for compass. Declination is the difference between
303 * Earth Magnetic north, and the geographic "True North".
304 *
305 * @param angleDegOffset Degrees to set Compass Declination to.
306 * @param timeoutMs
307 * Timeout value in ms. If nonzero, function will wait for
308 * config success and report an error if it times out.
309 * If zero, no blocking or checking is performed.
310 * @return Error Code generated by function. 0 indicates no error.
311 */
312 int SetCompassDeclination(double angleDegOffset, int timeoutMs = 0);
313 /**
314 * Sets the compass angle. Although compass is absolute [0,360) degrees, the
315 * continuous compass register holds the wrap-arounds.
316 *
317 * @param angleDeg Degrees to set continuous compass angle to.
318 * @param timeoutMs
319 * Timeout value in ms. If nonzero, function will wait for
320 * config success and report an error if it times out.
321 * If zero, no blocking or checking is performed.
322 * @return Error Code generated by function. 0 indicates no error.
323 */
324 int SetCompassAngle(double angleDeg, int timeoutMs = 0);
325
326 /**
327 * Enters the Calbration mode. See the Pigeon IMU documentation for More
328 * information on Calibration.
329 *
330 * Note that you can instead use Phoenix Tuner to accomplish this.
331 * Note you should NOT be calling this during normal robot operation.
332 *
333 * @param calMode Calibration to execute
334 * @param timeoutMs
335 * Timeout value in ms. If nonzero, function will wait for
336 * config success and report an error if it times out.
337 * If zero, no blocking or checking is performed.
338 * @return Error Code generated by function. 0 indicates no error.
339 */
340 int EnterCalibrationMode(CalibrationMode calMode, int timeoutMs = 0);
341 /**
342 * Get the status of the current (or previousley complete) calibration.
343 *
344 * @param [out] statusToFill Container for the status information.
345 * @return Error Code generated by function. 0 indicates no error.
346 */
348 /**
349 * Gets the current Pigeon state
350 *
351 * @return PigeonState enum
352 */
354 /**
355 * Get Accelerometer tilt angles.
356 *
357 * @param tiltAngles Array to fill with x[0], y[1], and z[2] angles in degrees.
358 * @return The last ErrorCode generated.
359 */
360 int GetAccelerometerAngles(double tiltAngles[3]);
361 /**
362 * Get the current Fusion Status (including fused heading)
363 *
364 * @param status object reference to fill with fusion status flags.
365 * Caller may pass null if flags are not needed.
366 * @return The fused heading in degrees.
367 */
369 /**
370 * Gets the Fused Heading
371 *
372 * @return The fused heading in degrees.
373 */
374 double GetFusedHeading() const;
375 /**
376 * @return number of times Pigeon Reset
377 */
378 uint32_t GetResetCount();
379 /**
380 * @return Reset flags for Pigeon
381 */
382 uint32_t GetResetFlags();
383
384 /**
385 * Gets the string representation of a PigeonState
386 * @param state PigeonState to get the string representation of
387 * @return string representation of specified PigeonState
388 */
389 static std::string ToString(PigeonIMU::PigeonState state);
390 /**
391 * Gets the string representation of a CalibrationMode
392 * @param cm CalibrationMode to get the string representation of
393 * @return string representation of specified CalibrationMode
394 */
395 static std::string ToString(CalibrationMode cm);
396
397 /**
398 * Sets the value of a custom parameter. This is for arbitrary use.
399 *
400 * Sometimes it is necessary to save calibration/declination/offset
401 * information in the device. Particularly if the
402 * device is part of a subsystem that can be replaced.
403 *
404 * @param newValue
405 * Value for custom parameter.
406 * @param paramIndex
407 * Index of custom parameter. [0-1]
408 * @param timeoutMs
409 * Timeout value in ms. If nonzero, function will wait for
410 * config success and report an error if it times out.
411 * If zero, no blocking or checking is performed.
412 * @return Error Code generated by function. 0 indicates no error.
413 */
414 ErrorCode ConfigSetCustomParam(int newValue, int paramIndex, int timeoutMs = 0);
415 /**
416 * Gets the value of a custom parameter. This is for arbitrary use.
417 *
418 * Sometimes it is necessary to save calibration/declination/offset
419 * information in the device. Particularly if the
420 * device is part of a subsystem that can be replaced.
421 *
422 * @param paramIndex
423 * Index of custom parameter. [0-1]
424 * @param timeoutMs
425 * Timeout value in ms. If nonzero, function will wait for
426 * config success and report an error if it times out.
427 * If zero, no blocking or checking is performed.
428 * @return Value of the custom param.
429 */
430 int ConfigGetCustomParam(int paramIndex, int timeoutMs = 0);
431
432 /**
433 * Sets the period of the given status frame.
434 *
435 * @param statusFrame
436 * Frame whose period is to be changed.
437 * @param periodMs
438 * Period in ms for the given frame.
439 * @param timeoutMs
440 * Timeout value in ms. If nonzero, function will wait for
441 * config success and report an error if it times out.
442 * If zero, no blocking or checking is performed.
443 * @return Error Code generated by function. 0 indicates no error.
444 */
446 int timeoutMs = 0);
447
448 /**
449 * Gets the period of the given status frame.
450 *
451 * @param frame
452 * Frame to get the period of.
453 * @param timeoutMs
454 * Timeout value in ms. If nonzero, function will wait for
455 * config success and report an error if it times out.
456 * If zero, no blocking or checking is performed.
457 * @return Period of the given status frame.
458 */
460 int timeoutMs = 0) ;
461 /**
462 * Sets the period of the given control frame.
463 *
464 * @param frame
465 * Frame whose period is to be changed.
466 * @param periodMs
467 * Period in ms for the given frame.
468 * @return Error Code generated by function. 0 indicates no error.
469 */
471 int periodMs);
472 /**
473 * Gets the firmware version of the device.
474 *
475 * @return param holds the firmware version of the device. Device must be powered
476 * cycled at least once.
477 */
479 /**
480 * Gets the fault status
481 *
482 * @param toFill
483 * Container for fault statuses.
484 * @return Error Code generated by function. 0 indicates no error.
485 */
487 /**
488 * Gets the sticky fault status
489 *
490 * @param toFill
491 * Container for sticky fault statuses.
492 * @return Error Code generated by function. 0 indicates no error.
493 */
495 /**
496 * Clears the Sticky Faults
497 *
498 * @return Error Code generated by function. 0 indicates no error.
499 */
500 ErrorCode ClearStickyFaults(int timeoutMs = 0);
501
502 //------ All Configs ----------//
503 /**
504 * Configures all persistent settings.
505 *
506 * @param allConfigs Object with all of the persistant settings
507 * @param timeoutMs
508 * Timeout value in ms. If nonzero, function will wait for
509 * config success and report an error if it times out.
510 * If zero, no blocking or checking is performed.
511 *
512 * @return Error Code generated by function. 0 indicates no error.
513 */
514 virtual ctre::phoenix::ErrorCode ConfigAllSettings(const PigeonIMUConfiguration &allConfigs, int timeoutMs = 50);
515 /**
516 * Gets all persistant settings.
517 *
518 * @param allConfigs Object with all of the persistant settings
519 * @param timeoutMs
520 * Timeout value in ms. If nonzero, function will wait for
521 * config success and report an error if it times out.
522 * If zero, no blocking or checking is performed.
523 */
524 virtual void GetAllConfigs(PigeonIMUConfiguration &allConfigs, int timeoutMs = 50);
525 /**
526 * Configures all persistent settings to defaults.
527 *
528 * @param timeoutMs
529 * Timeout value in ms. If nonzero, function will wait for
530 * config success and report an error if it times out.
531 * If zero, no blocking or checking is performed.
532 *
533 * @return Error Code generated by function. 0 indicates no error.
534 */
535 virtual ErrorCode ConfigFactoryDefault(int timeoutMs = 50);
536private:
537 /** firmware state reported over CAN */
538 enum MotionDriverState {
539 Init0 = 0,
540 WaitForPowerOff = 1,
541 ConfigAg = 2,
542 SelfTestAg = 3,
543 StartDMP = 4,
544 ConfigCompass_0 = 5,
545 ConfigCompass_1 = 6,
546 ConfigCompass_2 = 7,
547 ConfigCompass_3 = 8,
548 ConfigCompass_4 = 9,
549 ConfigCompass_5 = 10,
550 SelfTestCompass = 11,
551 WaitForGyroStable = 12,
552 AdditionalAccelAdjust = 13,
553 Idle = 14,
554 Calibration = 15,
555 LedInstrum = 16,
556 Error = 31,
557 };
558 /** sub command for the various Set param enums */
559 enum TareType {
560 SetValue = 0x00, AddOffset = 0x01, MatchCompass = 0x02, SetOffset = 0xFF,
561 };
562 /** data storage for reset signals */
563 struct ResetStats {
564 int32_t resetCount;
565 int32_t resetFlags;
566 int32_t firmVers;
567 bool hasReset;
568 };
569 ResetStats _resetStats = { 0, 0, 0, false };
570
571 /** Portion of the arbID for all status and control frames. */
572 uint32_t _usageHist = 0;
573 uint64_t _cache;
574 uint32_t _len;
575
576 /** overall threshold for when frame data is too old */
577 const uint32_t EXPECTED_RESPONSE_TIMEOUT_MS = (200);
578
579 int PrivateSetParameter(ParamEnum paramEnum, TareType tareType,
580 double angleDeg, int timeoutMs = 0);
581
582 PigeonIMU::PigeonState GetState(int errCode, const uint64_t & statusFrame);
583 double GetTemp(const uint64_t & statusFrame);
584
585
586
587
588};// class PigeonIMU
589} // namespace signals
590} // namespace phoenix
591} // namespace ctre
CTRE Talon SRX Motor Controller when used on CAN Bus.
Definition TalonSRX.h:145
Pigeon IMU Class.
Definition BasePigeon.h:101
double GetTemp() const
Gets the temperature of the pigeon.
Pigeon IMU Class.
Definition PigeonIMU.h:85
virtual ErrorCode ConfigFactoryDefault(int timeoutMs=50)
Configures all persistent settings to defaults.
int EnterCalibrationMode(CalibrationMode calMode, int timeoutMs=0)
Enters the Calbration mode.
ErrorCode GetFaults(PigeonIMU_Faults &toFill)
Gets the fault status.
int SetFusedHeading(double angleDeg, int timeoutMs=0)
Sets the Fused Heading to the specified value.
ErrorCode ClearStickyFaults(int timeoutMs=0)
Clears the Sticky Faults.
int SetCompassAngle(double angleDeg, int timeoutMs=0)
Sets the compass angle.
int SetFusedHeadingToCompass(int timeoutMs=0)
Sets the Fused Heading register to match the current compass value.
PigeonIMU(int deviceNumber)
Create a Pigeon object that communicates with Pigeon on CAN Bus.
ErrorCode SetControlFramePeriod(PigeonIMU_ControlFrame frame, int periodMs)
Sets the period of the given control frame.
ErrorCode GetStickyFaults(PigeonIMU_StickyFaults &toFill)
Gets the sticky fault status.
double GetFusedHeading() const
Gets the Fused Heading.
int GetAccelerometerAngles(double tiltAngles[3])
Get Accelerometer tilt angles.
PigeonIMU(ctre::phoenix::motorcontrol::can::TalonSRX &talonSrx)
Create a Pigeon object that communciates with Pigeon through the Gadgeteer ribbon cable connected to ...
int SetCompassDeclination(double angleDegOffset, int timeoutMs=0)
Set the declination for compass.
static std::string ToString(CalibrationMode cm)
Gets the string representation of a CalibrationMode.
ErrorCode SetStatusFramePeriod(PigeonIMU_StatusFrame statusFrame, uint8_t periodMs, int timeoutMs=0)
Sets the period of the given status frame.
int ConfigGetCustomParam(int paramIndex, int timeoutMs=0)
Gets the value of a custom parameter.
double GetFusedHeading(FusionStatus &status)
Get the current Fusion Status (including fused heading)
CalibrationMode
Various calibration modes supported by Pigeon.
Definition PigeonIMU.h:116
@ BootTareGyroAccel
Boot-Calibrate the pigeon.
Definition PigeonIMU.h:120
@ Magnetometer360
Magnetometer-Calibrate the pigeon using 360 turns.
Definition PigeonIMU.h:132
@ Magnetometer12Pt
Magnetometer-Calibrate the pigeon using the 12pt process.
Definition PigeonIMU.h:128
@ Accelerometer
Calibrate the pigeon accelerometer.
Definition PigeonIMU.h:136
@ Temperature
Temperature-Calibrate the pigeon.
Definition PigeonIMU.h:124
PigeonState
Overall state of the Pigeon.
Definition PigeonIMU.h:139
@ NoComm
No communications with Pigeon.
Definition PigeonIMU.h:143
@ Initializing
Pigeon is initializing.
Definition PigeonIMU.h:147
@ UserCalibration
Pigeon is calibrating due to user.
Definition PigeonIMU.h:155
@ Ready
Pigeon is ready.
Definition PigeonIMU.h:151
int SetTemperatureCompensationDisable(bool bTempCompDisable, int timeoutMs=0)
Disable/Enable Temp compensation.
int GetGeneralStatus(PigeonIMU::GeneralStatus &statusToFill)
Get the status of the current (or previousley complete) calibration.
ErrorCode ConfigSetCustomParam(int newValue, int paramIndex, int timeoutMs=0)
Sets the value of a custom parameter.
int GetStatusFramePeriod(PigeonIMU_StatusFrame frame, int timeoutMs=0)
Gets the period of the given status frame.
virtual ctre::phoenix::ErrorCode ConfigAllSettings(const PigeonIMUConfiguration &allConfigs, int timeoutMs=50)
Configures all persistent settings.
virtual void GetAllConfigs(PigeonIMUConfiguration &allConfigs, int timeoutMs=50)
Gets all persistant settings.
int GetFirmwareVersion()
Gets the firmware version of the device.
PigeonState GetState()
Gets the current Pigeon state.
int AddFusedHeading(double angleDeg, int timeoutMs=0)
Atomically add to the Fused Heading register.
static std::string ToString(PigeonIMU::PigeonState state)
Gets the string representation of a PigeonState.
PigeonIMU_StatusFrame
Enumerated type for status frame types.
Definition PigeonIMU_StatusFrame.h:9
PigeonIMU_ControlFrame
Enumerated type for status frame types.
Definition PigeonIMU_ControlFrame.h:9
ParamEnum
Signal enumeration for generic signal access.
Definition paramEnum.h:13
ErrorCode
Definition ErrorCode.h:13
WPI Compliant Pigeon class.
Definition PigeonIMU_StickyFaults.h:6
Util class to help with Pigeon configurations.
Definition BasePigeon.h:82
Configurables available to Pigeon.
Definition BasePigeon.h:57
std::string toString()
Definition BasePigeon.h:63
Data object for holding fusion information.
Definition PigeonIMU.h:88
bool bIsValid
Whether the fusion is valid.
Definition PigeonIMU.h:96
bool bIsFusing
Whether the pigeon is fusing.
Definition PigeonIMU.h:100
int lastError
Same as GetLastError()
Definition PigeonIMU.h:108
double heading
Fused Heading.
Definition PigeonIMU.h:92
std::string description
Description of fusion status.
Definition PigeonIMU.h:104
Data object for status on current calibration and general status.
Definition PigeonIMU.h:187
bool bCalIsBooting
After caller requests a calibration mode, pigeon will perform a boot-cal before entering the requeste...
Definition PigeonIMU.h:209
int noMotionBiasCount
Number of times the Pigeon has automatically rebiased the gyro.
Definition PigeonIMU.h:228
int tempCompensationCount
Number of times the Pigeon has temperature compensated the various signals.
Definition PigeonIMU.h:233
std::string description
general string description of current status
Definition PigeonIMU.h:213
int lastError
Same as GetLastError()
Definition PigeonIMU.h:237
PigeonIMU::CalibrationMode currentMode
The currently applied calibration mode if state is in UserCalibration or if bCalIsBooting is true.
Definition PigeonIMU.h:197
int calibrationError
The error code for the last calibration mode.
Definition PigeonIMU.h:204
PigeonIMU::PigeonState state
The current state of the motion driver.
Definition PigeonIMU.h:192
double tempC
Temperature in Celsius.
Definition PigeonIMU.h:217
int upTimeSec
Number of seconds Pigeon has been up (since boot).
Definition PigeonIMU.h:223
Sticky faults available to Pigeon.
Definition PigeonIMU_Faults.h:13
Sticky faults available to Pigeon.
Definition PigeonIMU_StickyFaults.h:13
Util class to help with Pigeon configurations.
Definition PigeonIMU.h:74
Configurables available to Pigeon.
Definition PigeonIMU.h:49
PigeonIMUConfiguration()
Definition PigeonIMU.h:50
std::string toString(std::string prependString)
Definition PigeonIMU.h:64
std::string toString()
Definition PigeonIMU.h:55