|
esp32_BNO08x 1.00
C++ BNO08x IMU driver component for esp-idf.
|
Public Member Functions | |
| BNO08x (bno08x_config_t imu_config=default_imu_config) | |
| BNO08x imu constructor. | |
| bool | initialize () |
| Initializes BNO08x sensor. | |
| bool | hard_reset () |
| Hard resets BNO08x sensor. | |
| bool | soft_reset () |
| Soft resets BNO08x sensor using executable channel. | |
| uint8_t | get_reset_reason () |
| Get the reason for the most recent reset. | |
| bool | mode_sleep () |
| Puts BNO08x sensor into sleep/low power mode using executable channel. | |
| bool | mode_on () |
| Turns on/ brings BNO08x sensor out of sleep mode using executable channel. | |
| float | q_to_float (int16_t fixed_point_value, uint8_t q_point) |
| Converts a register value to a float using its associated Q point. (See https://en.wikipedia.org/wiki/Q_(number_format)) | |
| bool | run_full_calibration_routine () |
| Runs full calibration routine. | |
| void | calibrate_all () |
| Sends command to calibrate accelerometer, gyro, and magnetometer. | |
| void | calibrate_accelerometer () |
| Sends command to calibrate accelerometer. | |
| void | calibrate_gyro () |
| Sends command to calibrate gyro. | |
| void | calibrate_magnetometer () |
| Sends command to calibrate magnetometer. | |
| void | calibrate_planar_accelerometer () |
| Sends command to calibrate planar accelerometer. | |
| void | request_calibration_status () |
| Requests ME calibration status from BNO08x (see Ref. Manual 6.4.7.2) | |
| bool | calibration_complete () |
| Returns true if calibration has completed. | |
| void | end_calibration () |
| Sends command to end calibration procedure. | |
| void | save_calibration () |
| Sends command to save internal calibration data (See Ref. Manual 6.4.7). | |
| void | enable_rotation_vector (uint16_t time_between_reports) |
| Sends command to enable rotation vector reports (See Ref. Manual 6.5.18) | |
| void | enable_game_rotation_vector (uint16_t time_between_reports) |
| Sends command to enable game rotation vector reports (See Ref. Manual 6.5.19) | |
| void | enable_ARVR_stabilized_rotation_vector (uint16_t time_between_reports) |
| Sends command to enable ARVR stabilized rotation vector reports (See Ref. Manual 6.5.42) | |
| void | enable_ARVR_stabilized_game_rotation_vector (uint16_t time_between_reports) |
| Sends command to enable ARVR stabilized game rotation vector reports (See Ref. Manual 6.5.43) | |
| void | enable_gyro_integrated_rotation_vector (uint16_t timeBetweenReports) |
| Sends command to enable gyro integrated rotation vector reports (See Ref. Manual 6.5.44) | |
| void | enable_accelerometer (uint16_t time_between_reports) |
| Sends command to enable accelerometer reports (See Ref. Manual 6.5.9) | |
| void | enable_linear_accelerometer (uint16_t time_between_reports) |
| Sends command to enable linear accelerometer reports (See Ref. Manual 6.5.10) | |
| void | enable_gravity (uint16_t time_between_reports) |
| Sends command to enable gravity reading reports (See Ref. Manual 6.5.11) | |
| void | enable_gyro (uint16_t time_between_reports) |
| Sends command to enable gyro reports (See Ref. Manual 6.5.13) | |
| void | enable_uncalibrated_gyro (uint16_t time_between_reports) |
| Sends command to enable uncalibrated gyro reports (See Ref. Manual 6.5.14) | |
| void | enable_magnetometer (uint16_t time_between_reports) |
| Sends command to enable magnetometer reports (See Ref. Manual 6.5.16) | |
| void | enable_tap_detector (uint16_t time_between_reports) |
| Sends command to enable tap detector reports (See Ref. Manual 6.5.27) | |
| void | enable_step_counter (uint16_t time_between_reports) |
| Sends command to enable step counter reports (See Ref. Manual 6.5.29) | |
| void | enable_stability_classifier (uint16_t time_between_reports) |
| Sends command to enable activity stability classifier reports (See Ref. Manual 6.5.31) | |
| void | enable_activity_classifier (uint16_t time_between_reports, uint32_t activities_to_enable, uint8_t(&activity_confidence_vals)[9]) |
| Sends command to enable activity classifier reports (See Ref. Manual 6.5.36) | |
| void | enable_raw_accelerometer (uint16_t time_between_reports) |
| Sends command to enable raw accelerometer reports (See Ref. Manual 6.5.8) | |
| void | enable_raw_gyro (uint16_t time_between_reports) |
| Sends command to enable raw gyro reports (See Ref. Manual 6.5.12) | |
| void | enable_raw_magnetometer (uint16_t time_between_reports) |
| Sends command to enable raw magnetometer reports (See Ref. Manual 6.5.15) | |
| void | tare_now (uint8_t axis_sel=TARE_AXIS_ALL, uint8_t rotation_vector_basis=TARE_ROTATION_VECTOR) |
| Sends command to tare an axis (See Ref. Manual 6.4.4.1) | |
| void | save_tare () |
| Sends command to save tare into non-volatile memory of BNO08x (See Ref. Manual 6.4.4.2) | |
| void | clear_tare () |
| Sends command to clear persistent tare settings in non-volatile memory of BNO08x (See Ref. Manual 6.4.4.3) | |
| bool | data_available () |
| Checks if BNO08x has asserted interrupt and sent data. | |
| uint16_t | parse_input_report () |
| Parses received input report sent by BNO08x. | |
| uint16_t | parse_command_report () |
| Parses received command report sent by BNO08x (See Ref. Manual 6.3.9) | |
| uint16_t | get_readings () |
| Waits for BNO08x HINT pin to assert, and parses the received data. | |
| uint32_t | get_time_stamp () |
| Return timestamp of most recent report. | |
| void | get_magf (float &x, float &y, float &z, uint8_t &accuracy) |
| Get the full magnetic field vector. | |
| float | get_magf_X () |
| Get X component of magnetic field vector. | |
| float | get_magf_Y () |
| Get Y component of magnetic field vector. | |
| float | get_magf_Z () |
| Get Z component of magnetic field vector. | |
| uint8_t | get_magf_accuracy () |
| Get accuracy of reported magnetic field vector. | |
| void | get_gravity (float &x, float &y, float &z, uint8_t &accuracy) |
| Get full reported gravity vector, units in m/s^2. | |
| float | get_gravity_X () |
| Get the reported x axis gravity. | |
| float | get_gravity_Y () |
| Get the reported y axis gravity. | |
| float | get_gravity_Z () |
| Get the reported z axis gravity. | |
| uint8_t | get_gravity_accuracy () |
| Get the reported gravity accuracy. | |
| float | get_roll () |
| Get the reported rotation about x axis. | |
| float | get_pitch () |
| Get the reported rotation about y axis. | |
| float | get_yaw () |
| Get the reported rotation about z axis. | |
| float | get_roll_deg () |
| Get the reported rotation about x axis. | |
| float | get_pitch_deg () |
| Get the reported rotation about y axis. | |
| float | get_yaw_deg () |
| Get the reported rotation about z axis. | |
| void | get_quat (float &i, float &j, float &k, float &real, float &rad_accuracy, uint8_t &accuracy) |
| Get the full quaternion reading. | |
| float | get_quat_I () |
| Get I component of reported quaternion. | |
| float | get_quat_J () |
| Get J component of reported quaternion. | |
| float | get_quat_K () |
| Get K component of reported quaternion. | |
| float | get_quat_real () |
| Get real component of reported quaternion. | |
| float | get_quat_radian_accuracy () |
| Get radian accuracy of reported quaternion. | |
| uint8_t | get_quat_accuracy () |
| Get accuracy of reported quaternion. | |
| void | get_accel (float &x, float &y, float &z, uint8_t &accuracy) |
| Get full acceleration (total acceleration of device, units in m/s^2). | |
| float | get_accel_X () |
| Get x axis acceleration (total acceleration of device, units in m/s^2). | |
| float | get_accel_Y () |
| Get y axis acceleration (total acceleration of device, units in m/s^2). | |
| float | get_accel_Z () |
| Get z axis acceleration (total acceleration of device, units in m/s^2). | |
| uint8_t | get_accel_accuracy () |
| Get accuracy of linear acceleration. | |
| void | get_linear_accel (float &x, float &y, float &z, uint8_t &accuracy) |
| Get full linear acceleration (acceleration of the device minus gravity, units in m/s^2). | |
| float | get_linear_accel_X () |
| Get x axis linear acceleration (acceleration of device minus gravity, units in m/s^2) | |
| float | get_linear_accel_Y () |
| Get y axis linear acceleration (acceleration of device minus gravity, units in m/s^2) | |
| float | get_linear_accel_Z () |
| Get z axis linear acceleration (acceleration of device minus gravity, units in m/s^2) | |
| uint8_t | get_linear_accel_accuracy () |
| Get accuracy of linear acceleration. | |
| int16_t | get_raw_accel_X () |
| Get raw accelerometer x axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8) | |
| int16_t | get_raw_accel_Y () |
| Get raw accelerometer y axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8) | |
| int16_t | get_raw_accel_Z () |
| Get raw accelerometer z axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8) | |
| int16_t | get_raw_gyro_X () |
| Get raw gyroscope x axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12) | |
| int16_t | get_raw_gyro_Y () |
| Get raw gyroscope y axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12) | |
| int16_t | get_raw_gyro_Z () |
| Get raw gyroscope z axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12) | |
| int16_t | get_raw_magf_X () |
| Get raw magnetometer x axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15) | |
| int16_t | get_raw_magf_Y () |
| Get raw magnetometer y axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15) | |
| int16_t | get_raw_magf_Z () |
| Get raw magnetometer z axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15) | |
| void | get_gyro_calibrated_velocity (float &x, float &y, float &z, uint8_t &accuracy) |
| Get full rotational velocity with drift compensation (units in Rad/s). | |
| float | get_gyro_calibrated_velocity_X () |
| Get calibrated gyro x axis angular velocity measurement. | |
| float | get_gyro_calibrated_velocity_Y () |
| Get calibrated gyro y axis angular velocity measurement. | |
| float | get_gyro_calibrated_velocity_Z () |
| Get calibrated gyro z axis angular velocity measurement. | |
| uint8_t | get_gyro_accuracy () |
| Get calibrated gyro accuracy. | |
| void | get_uncalibrated_gyro (float &x, float &y, float &z, float &bx, float &by, float &bz, uint8_t &accuracy) |
| Get full rotational velocity without drift compensation (units in Rad/s). An estimate of drift is given but not applied. | |
| float | get_uncalibrated_gyro_X () |
| Get uncalibrated gyro x axis angular velocity measurement. | |
| float | get_uncalibrated_gyro_Y () |
| Get uncalibrated gyro Y axis angular velocity measurement. | |
| float | get_uncalibrated_gyro_Z () |
| Get uncalibrated gyro Z axis angular velocity measurement. | |
| float | get_uncalibrated_gyro_bias_X () |
| Get uncalibrated gyro x axis drift estimate. | |
| float | get_uncalibrated_gyro_bias_Y () |
| Get uncalibrated gyro Y axis drift estimate. | |
| float | get_uncalibrated_gyro_bias_Z () |
| Get uncalibrated gyro Z axis drift estimate. | |
| uint8_t | get_uncalibrated_gyro_accuracy () |
| Get uncalibrated gyro accuracy. | |
| void | get_gyro_velocity (float &x, float &y, float &z) |
| Full rotational velocity from gyro-integrated rotation vector (See Ref. Manual 6.5.44) | |
| float | get_gyro_velocity_X () |
| Get x axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44) | |
| float | get_gyro_velocity_Y () |
| Get y axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44) | |
| float | get_gyro_velocity_Z () |
| Get z axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44) | |
| uint8_t | get_tap_detector () |
| Get if tap has occured. | |
| uint16_t | get_step_count () |
| Get the counted amount of steps. | |
| int8_t | get_stability_classifier () |
| Get the current stability classifier (Seee Ref. Manual 6.5.31) | |
| uint8_t | get_activity_classifier () |
| Get the current activity classifier (Seee Ref. Manual 6.5.36) | |
| void | print_header () |
| Prints the most recently received SHTP header to serial console with ESP_LOG statement. | |
| void | print_packet () |
| int16_t | get_Q1 (uint16_t record_ID) |
| Gets Q1 point from BNO08x FRS (flash record system). | |
| int16_t | get_Q2 (uint16_t record_ID) |
| Gets Q2 point from BNO08x FRS (flash record system). | |
| int16_t | get_Q3 (uint16_t record_ID) |
| Gets Q3 point from BNO08x FRS (flash record system). | |
| float | get_resolution (uint16_t record_ID) |
| Gets resolution from BNO08x FRS (flash record system). | |
| float | get_range (uint16_t record_ID) |
| Gets range from BNO08x FRS (flash record system). | |
| uint32_t | FRS_read_word (uint16_t record_ID, uint8_t word_number) |
| Reads meta data word from BNO08x FRS (flash record system) given the record ID and word number. (See Ref. Manual 5.1 & 6.3.7) | |
| bool | FRS_read_request (uint16_t record_ID, uint16_t read_offset, uint16_t block_size) |
| Requests meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.6) | |
| bool | FRS_read_data (uint16_t record_ID, uint8_t start_location, uint8_t words_to_read) |
| Read meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.7) | |
Private Member Functions | |
| bool | wait_for_device_int () |
| Re-enables interrupts and waits for BNO08x to assert HINT pin. | |
| bool | receive_packet () |
| Receives a SHTP packet via SPI. | |
| void | send_packet () |
| Sends a queued SHTP packet via SPI. | |
| void | queue_packet (uint8_t channel_number, uint8_t data_length) |
| Queues an SHTP packet to be sent via SPI. | |
| void | queue_command (uint8_t command) |
| Queues a packet containing a command. | |
| void | queue_feature_command (uint8_t report_ID, uint16_t time_between_reports) |
| Queues a packet containing a command with a request for sensor reports, reported periodically. (See Ref. Manual 6.5.4) | |
| void | queue_feature_command (uint8_t report_ID, uint16_t time_between_reports, uint32_t specific_config) |
| Queues a packet containing a command with a request for sensor reports, reported periodically. (See Ref. Manual 6.5.4) | |
| void | queue_calibrate_command (uint8_t _to_calibrate) |
| Queues a packet containing a command to calibrate the specified sensor. | |
| void | queue_tare_command (uint8_t command, uint8_t axis=TARE_AXIS_ALL, uint8_t rotation_vector_basis=TARE_ROTATION_VECTOR) |
| Queues a packet containing a command related to zeroing sensor's axes. (See Ref. Manual 6.4.4.1) | |
| void | queue_request_product_id_command () |
| Queues a packet containing the request product ID command. | |
| void | spi_task () |
| Task responsible for SPI transactions. Executed when HINT in is asserted by BNO08x. | |
Static Private Member Functions | |
| static void | spi_task_trampoline (void *arg) |
| Static function used to launch spi task. | |
| static void IRAM_ATTR | hint_handler (void *arg) |
| HINT interrupt service routine, handles falling edge of BNO08x HINT pin. | |
Private Attributes | |
| volatile uint8_t | tx_packet_queued |
| Whether or not a packet is currently waiting to be sent, a queued packet is sent on assertion of BNO08x HINT pin) | |
| SemaphoreHandle_t | tx_semaphore |
| Mutex semaphore used to prevent sending or receiving of packets if packet is currently being queued. | |
| uint8_t | rx_buffer [300] |
| buffer used to receive packet with receive_packet() | |
| uint8_t | tx_buffer [50] |
| buffer used for sending packet with send_packet() | |
| uint8_t | packet_header_rx [4] |
| SHTP header received with receive_packet() | |
| uint8_t | commands [20] |
| Command to be sent with send_packet() | |
| uint8_t | sequence_number [6] |
| Sequence num of each com channel, 6 in total. | |
| uint32_t | meta_data [9] |
| First 9 bytes of meta data returned from FRS read operation (we don't really need the rest) (See Ref. Manual 5.1) | |
| uint8_t | command_sequence_number = 0 |
| Sequence num of command, sent within command packet. | |
| uint16_t | packet_length_tx = 0 |
| Packet length to be sent with send_packet() | |
| uint16_t | packet_length_rx = 0 |
| Packet length received (calculated from packet_header_rx) | |
| bno08x_config_t | imu_config {} |
| IMU configuration settings. | |
| spi_bus_config_t | bus_config {} |
| SPI bus GPIO configuration settings. | |
| spi_device_interface_config_t | imu_spi_config {} |
| SPI slave device settings. | |
| spi_device_handle_t | spi_hdl {} |
| SPI device handle. | |
| spi_transaction_t | spi_transaction {} |
| SPI transaction handle. | |
| uint32_t | time_stamp |
| Report timestamp (see datasheet 1.3.5.3) | |
| uint16_t | raw_accel_X |
| uint16_t | raw_accel_Y |
| uint16_t | raw_accel_Z |
| uint16_t | accel_accuracy |
| Raw acceleration readings (See SH-2 Ref. Manual 6.5.8) | |
| uint16_t | raw_lin_accel_X |
| uint16_t | raw_lin_accel_Y |
| uint16_t | raw_lin_accel_Z |
| uint16_t | accel_lin_accuracy |
| Raw linear acceleration (See SH-2 Ref. Manual 6.5.10) | |
| uint16_t | raw_gyro_X |
| uint16_t | raw_gyro_Y |
| uint16_t | raw_gyro_Z |
| uint16_t | gyro_accuracy |
| Raw gyro reading (See SH-2 Ref. Manual 6.5.13) | |
| uint16_t | raw_quat_I |
| uint16_t | raw_quat_J |
| uint16_t | raw_quat_K |
| uint16_t | raw_quat_real |
| uint16_t | raw_quat_radian_accuracy |
| uint16_t | quat_accuracy |
| Raw quaternion reading (See SH-2 Ref. Manual 6.5.44) | |
| uint16_t | raw_velocity_gyro_X |
| uint16_t | raw_velocity_gyro_Y |
| uint16_t | raw_velocity_gyro_Z |
| Raw gyro angular velocity reading (See SH-2 Ref. Manual 6.5.44) | |
| uint16_t | gravity_X |
| uint16_t | gravity_Y |
| uint16_t | gravity_Z |
| uint16_t | gravity_accuracy |
| Gravity reading in m/s^2 (See SH-2 Ref. Manual 6.5.11) | |
| uint16_t | raw_uncalib_gyro_X |
| uint16_t | raw_uncalib_gyro_Y |
| uint16_t | raw_uncalib_gyro_Z |
| uint16_t | raw_bias_X |
| uint16_t | raw_bias_Y |
| uint16_t | raw_bias_Z |
| uint16_t | uncalib_gyro_accuracy |
| Uncalibrated gyro reading (See SH-2 Ref. Manual 6.5.14) | |
| uint16_t | raw_magf_X |
| uint16_t | raw_magf_Y |
| uint16_t | raw_magf_Z |
| uint16_t | magf_accuracy |
| Calibrated magnetic field reading in uTesla (See SH-2 Ref. Manual 6.5.16) | |
| uint8_t | tap_detector |
| Tap detector reading (See SH-2 Ref. Manual 6.5.27) | |
| uint16_t | step_count |
| Step counter reading (See SH-2 Ref. Manual 6.5.29) | |
| uint8_t | stability_classifier |
| Stability status reading (See SH-2 Ref. Manual 6.5.31) | |
| uint8_t | activity_classifier |
| Activity status reading (See SH-2 Ref. Manual 6.5.36) | |
| uint8_t * | activity_confidences |
| Confidence of read activities (See SH-2 Ref. Manual 6.5.36) | |
| uint8_t | calibration_status |
| Calibration status of device (See SH-2 Ref. Manual 6.4.7.1 & 6.4.7.2) | |
| uint16_t | mems_raw_accel_X |
| uint16_t | mems_raw_accel_Y |
| uint16_t | mems_raw_accel_Z |
| Raw accelerometer readings from MEMS sensor (See SH2 Ref. Manual 6.5.8) | |
| uint16_t | mems_raw_gyro_X |
| uint16_t | mems_raw_gyro_Y |
| uint16_t | mems_raw_gyro_Z |
| Raw gyro readings from MEMS sensor (See SH-2 Ref. Manual 6.5.12) | |
| uint16_t | mems_raw_magf_X |
| uint16_t | mems_raw_magf_Y |
| uint16_t | mems_raw_magf_Z |
| Raw magnetometer (compass) readings from MEMS sensor (See SH-2 Ref. Manual 6.5.15) | |
| TaskHandle_t | spi_task_hdl |
| SPI task handle. | |
| volatile bool | int_asserted |
| Interrupt asserted flag, sets true after hint_handler ISR launches SPI task and it has run to completion. | |
Static Private Attributes | |
| static bno08x_config_t | default_imu_config |
| default imu config settings | |
| static bool | isr_service_installed = {false} |
| true of the isr service has been installed, only has to be done once regardless of how many devices are used | |
| static const constexpr int16_t | ROTATION_VECTOR_Q1 = 14 |
| Rotation vector Q point (See SH-2 Ref. Manual 6.5.18) | |
| static const constexpr int16_t | ROTATION_VECTOR_ACCURACY_Q1 = 12 |
| Rotation vector accuracy estimate Q point (See SH-2 Ref. Manual 6.5.18) | |
| static const constexpr int16_t | ACCELEROMETER_Q1 = 8 |
| Acceleration Q point (See SH-2 Ref. Manual 6.5.9) | |
| static const constexpr int16_t | LINEAR_ACCELEROMETER_Q1 = 8 |
| Linear acceleration Q point (See SH-2 Ref. Manual 6.5.10) | |
| static const constexpr int16_t | GYRO_Q1 = 9 |
| Gyro Q point (See SH-2 Ref. Manual 6.5.13) | |
| static const constexpr int16_t | MAGNETOMETER_Q1 = 4 |
| Magnetometer Q point (See SH-2 Ref. Manual 6.5.16) | |
| static const constexpr int16_t | ANGULAR_VELOCITY_Q1 = 10 |
| Angular velocity Q point (See SH-2 Ref. Manual 6.5.44) | |
| static const constexpr int16_t | GRAVITY_Q1 = 8 |
| Gravity Q point (See SH-2 Ref. Manual 6.5.11) | |
| static const constexpr uint64_t | HOST_INT_TIMEOUT_US = 150000ULL |
| Max wait between HINT being asserted by BNO08x before transaction is considered failed. | |
| static const constexpr uint8_t | CALIBRATE_ACCEL = 0 |
| Calibrate accelerometer command used by queue_calibrate_command. | |
| static const constexpr uint8_t | CALIBRATE_GYRO = 1 |
| Calibrate gyro command used by queue_calibrate_command. | |
| static const constexpr uint8_t | CALIBRATE_MAG = 2 |
| Calibrate magnetometer command used by queue_calibrate_command. | |
| static const constexpr uint8_t | CALIBRATE_PLANAR_ACCEL = 3 |
| Calibrate planar acceleration command used by queue_calibrate_command. | |
| static const constexpr uint8_t | CALIBRATE_ACCEL_GYRO_MAG = 4 |
| Calibrate accelerometer, gyro, & magnetometer command used by queue_calibrate_command. | |
| static const constexpr uint8_t | CALIBRATE_STOP = 5 |
| Stop calibration command used by queue_calibrate_command. | |
| static const constexpr uint8_t | COMMAND_ERRORS = 1 |
| static const constexpr uint8_t | COMMAND_COUNTER = 2 |
| static const constexpr uint8_t | COMMAND_TARE = 3 |
| Command and response to tare command (See Sh2 Ref. Manual 6.4.4) | |
| static const constexpr uint8_t | COMMAND_INITIALIZE = 4 |
| Reinitialize sensor hub components See (SH2 Ref. Manual 6.4.5) | |
| static const constexpr uint8_t | COMMAND_DCD = 6 |
| Save DCD command (See SH2 Ref. Manual 6.4.7) | |
| static const constexpr uint8_t | COMMAND_ME_CALIBRATE = 7 |
| Command and response to configure ME calibration (See SH2 Ref. Manual 6.4.7) | |
| static const constexpr uint8_t | COMMAND_DCD_PERIOD_SAVE = 9 |
| Configure DCD periodic saving (See SH2 Ref. Manual 6.4) | |
| static const constexpr uint8_t | COMMAND_OSCILLATOR = 10 |
| Retrieve oscillator type command (See SH2 Ref. Manual 6.4) | |
| static const constexpr uint8_t | COMMAND_CLEAR_DCD = 11 |
| Clear DCD & Reset command (See SH2 Ref. Manual 6.4) | |
| static const constexpr uint8_t | SHTP_REPORT_COMMAND_RESPONSE = 0xF1 |
| See SH2 Ref. Manual 6.3.9. | |
| static const constexpr uint8_t | SHTP_REPORT_COMMAND_REQUEST = 0xF2 |
| See SH2 Ref. Manual 6.3.8. | |
| static const constexpr uint8_t | SHTP_REPORT_FRS_READ_RESPONSE = 0xF3 |
| See SH2 Ref. Manual 6.3.7. | |
| static const constexpr uint8_t | SHTP_REPORT_FRS_READ_REQUEST = 0xF4 |
| See SH2 Ref. Manual 6.3.6. | |
| static const constexpr uint8_t | SHTP_REPORT_PRODUCT_ID_RESPONSE = 0xF8 |
| See SH2 Ref. Manual 6.3.2. | |
| static const constexpr uint8_t | SHTP_REPORT_PRODUCT_ID_REQUEST = 0xF9 |
| See SH2 Ref. Manual 6.3.1. | |
| static const constexpr uint8_t | SHTP_REPORT_BASE_TIMESTAMP = 0xFB |
| See SH2 Ref. Manual 7.2.1. | |
| static const constexpr uint8_t | SHTP_REPORT_SET_FEATURE_COMMAND = 0xFD |
| See SH2 Ref. Manual 6.5.4. | |
| static const constexpr uint8_t | SENSOR_REPORTID_ACCELEROMETER = 0x01 |
| See SH2 Ref. Manual 6.5.9. | |
| static const constexpr uint8_t | SENSOR_REPORTID_GYROSCOPE = 0x02 |
| See SH2 Ref. Manual 6.5.13. | |
| static const constexpr uint8_t | SENSOR_REPORTID_MAGNETIC_FIELD = 0x03 |
| See SH2 Ref. Manual 6.5.16. | |
| static const constexpr uint8_t | SENSOR_REPORTID_LINEAR_ACCELERATION = 0x04 |
| See SH2 Ref. Manual 6.5.10. | |
| static const constexpr uint8_t | SENSOR_REPORTID_ROTATION_VECTOR = 0x05 |
| See SH2 Ref. Manual 6.5.18. | |
| static const constexpr uint8_t | SENSOR_REPORTID_GRAVITY = 0x06 |
| See SH2 Ref. Manual 6.5.11. | |
| static const constexpr uint8_t | SENSOR_REPORTID_UNCALIBRATED_GYRO = 0x07 |
| See SH2 Ref. Manual 6.5.14. | |
| static const constexpr uint8_t | SENSOR_REPORTID_GAME_ROTATION_VECTOR = 0x08 |
| See SH2 Ref. Manual 6.5.19. | |
| static const constexpr uint8_t | SENSOR_REPORTID_GEOMAGNETIC_ROTATION_VECTOR = 0x09 |
| See SH2 Ref. Manual 6.5.20. | |
| static const constexpr uint8_t | SENSOR_REPORTID_GYRO_INTEGRATED_ROTATION_VECTOR = 0x2A |
| See SH2 Ref. Manual 6.5.44. | |
| static const constexpr uint8_t | SENSOR_REPORTID_TAP_DETECTOR = 0x10 |
| See SH2 Ref. Manual 6.5.27. | |
| static const constexpr uint8_t | SENSOR_REPORTID_STEP_COUNTER = 0x11 |
| See SH2 Ref. Manual 6.5.29. | |
| static const constexpr uint8_t | SENSOR_REPORTID_STABILITY_CLASSIFIER = 0x13 |
| See SH2 Ref. Manual 6.5.31. | |
| static const constexpr uint8_t | SENSOR_REPORTID_RAW_ACCELEROMETER = 0x14 |
| See SH2 Ref. Manual 6.5.8. | |
| static const constexpr uint8_t | SENSOR_REPORTID_RAW_GYROSCOPE = 0x15 |
| See SH2 Ref. Manual 6.5.12. | |
| static const constexpr uint8_t | SENSOR_REPORTID_RAW_MAGNETOMETER = 0x16 |
| See SH2 Ref. Manual 6.5.15. | |
| static const constexpr uint8_t | SENSOR_REPORTID_PERSONAL_ACTIVITY_CLASSIFIER = 0x1E |
| See SH2 Ref. Manual 6.5.36. | |
| static const constexpr uint8_t | SENSOR_REPORTID_AR_VR_STABILIZED_ROTATION_VECTOR = 0x28 |
| See SH2 Ref. Manual 6.5.42. | |
| static const constexpr uint8_t | SENSOR_REPORTID_AR_VR_STABILIZED_GAME_ROTATION_VECTOR = 0x29 |
| See SH2 Ref. Manual 6.5.43. | |
| static const constexpr uint8_t | TARE_NOW = 0 |
| See SH2 Ref. Manual 6.4.4.1. | |
| static const constexpr uint8_t | TARE_PERSIST = 1 |
| See SH2 Ref. Manual 6.4.4.2. | |
| static const constexpr uint8_t | TARE_SET_REORIENTATION = 2 |
| See SH2 Ref. Manual 6.4.4.3. | |
| static const constexpr uint8_t | TARE_AXIS_ALL = 0x07 |
| Tare all axes (used with tare now command) | |
| static const constexpr uint8_t | TARE_AXIS_Z = 0x04 |
| Tar yaw axis only (used with tare now command) | |
| static const constexpr uint8_t | TARE_ROTATION_VECTOR = 0 |
| Tare rotation vector. | |
| static const constexpr uint8_t | TARE_GAME_ROTATION_VECTOR = 1 |
| Tare game rotation vector. | |
| static const constexpr uint8_t | TARE_GEOMAGNETIC_ROTATION_VECTOR = 2 |
| tare geomagnetic rotation vector | |
| static const constexpr uint8_t | TARE_GYRO_INTEGRATED_ROTATION_VECTOR = 3 |
| Tare gyro integrated rotation vector. | |
| static const constexpr uint8_t | TARE_AR_VR_STABILIZED_ROTATION_VECTOR = 4 |
| Tare ARVR stabilized rotation vector. | |
| static const constexpr uint8_t | TARE_AR_VR_STABILIZED_GAME_ROTATION_VECTOR = 5 |
| Tare ARVR stabilized game rotation vector. | |
| static const constexpr char * | TAG = "BNO08x" |
| Class tag used for serial print statements. | |
| BNO08x::BNO08x | ( | bno08x_config_t | imu_config = default_imu_config | ) |
BNO08x imu constructor.
Construct a BNO08x object for managing a BNO08x sensor. Initializes required GPIO pins, interrupts, SPI peripheral, and local task for SPI transactions.
| imu_config | Configuration settings (optional), default settings can be seen in bno08x_config_t |
| void BNO08x::calibrate_accelerometer | ( | ) |
Sends command to calibrate accelerometer.
| void BNO08x::calibrate_all | ( | ) |
Sends command to calibrate accelerometer, gyro, and magnetometer.
| void BNO08x::calibrate_gyro | ( | ) |
Sends command to calibrate gyro.
| void BNO08x::calibrate_magnetometer | ( | ) |
Sends command to calibrate magnetometer.
| void BNO08x::calibrate_planar_accelerometer | ( | ) |
Sends command to calibrate planar accelerometer.
| bool BNO08x::calibration_complete | ( | ) |
Returns true if calibration has completed.
| void BNO08x::clear_tare | ( | ) |
Sends command to clear persistent tare settings in non-volatile memory of BNO08x (See Ref. Manual 6.4.4.3)
| bool BNO08x::data_available | ( | ) |
Checks if BNO08x has asserted interrupt and sent data.
| void BNO08x::enable_accelerometer | ( | uint16_t | time_between_reports | ) |
Sends command to enable accelerometer reports (See Ref. Manual 6.5.9)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_activity_classifier | ( | uint16_t | time_between_reports, |
| uint32_t | activities_to_enable, | ||
| uint8_t(&) | activity_confidence_vals[9] | ||
| ) |
Sends command to enable activity classifier reports (See Ref. Manual 6.5.36)
| time_between_reports | Desired time between reports in miliseconds. |
| activities_to_enable | Desired activities to enable (0x1F enables all). |
| activity_confidence_vals | Returned activity level confidences. |
| void BNO08x::enable_ARVR_stabilized_game_rotation_vector | ( | uint16_t | time_between_reports | ) |
Sends command to enable ARVR stabilized game rotation vector reports (See Ref. Manual 6.5.43)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_ARVR_stabilized_rotation_vector | ( | uint16_t | time_between_reports | ) |
Sends command to enable ARVR stabilized rotation vector reports (See Ref. Manual 6.5.42)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_game_rotation_vector | ( | uint16_t | time_between_reports | ) |
Sends command to enable game rotation vector reports (See Ref. Manual 6.5.19)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_gravity | ( | uint16_t | time_between_reports | ) |
Sends command to enable gravity reading reports (See Ref. Manual 6.5.11)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_gyro | ( | uint16_t | time_between_reports | ) |
Sends command to enable gyro reports (See Ref. Manual 6.5.13)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_gyro_integrated_rotation_vector | ( | uint16_t | time_between_reports | ) |
Sends command to enable gyro integrated rotation vector reports (See Ref. Manual 6.5.44)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_linear_accelerometer | ( | uint16_t | time_between_reports | ) |
Sends command to enable linear accelerometer reports (See Ref. Manual 6.5.10)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_magnetometer | ( | uint16_t | time_between_reports | ) |
Sends command to enable magnetometer reports (See Ref. Manual 6.5.16)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_raw_accelerometer | ( | uint16_t | time_between_reports | ) |
Sends command to enable raw accelerometer reports (See Ref. Manual 6.5.8)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_raw_gyro | ( | uint16_t | time_between_reports | ) |
Sends command to enable raw gyro reports (See Ref. Manual 6.5.12)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_raw_magnetometer | ( | uint16_t | time_between_reports | ) |
Sends command to enable raw magnetometer reports (See Ref. Manual 6.5.15)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_rotation_vector | ( | uint16_t | time_between_reports | ) |
Sends command to enable rotation vector reports (See Ref. Manual 6.5.18)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_stability_classifier | ( | uint16_t | time_between_reports | ) |
Sends command to enable activity stability classifier reports (See Ref. Manual 6.5.31)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_step_counter | ( | uint16_t | time_between_reports | ) |
Sends command to enable step counter reports (See Ref. Manual 6.5.29)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_tap_detector | ( | uint16_t | time_between_reports | ) |
Sends command to enable tap detector reports (See Ref. Manual 6.5.27)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::enable_uncalibrated_gyro | ( | uint16_t | time_between_reports | ) |
Sends command to enable uncalibrated gyro reports (See Ref. Manual 6.5.14)
| time_between_reports | Desired time between reports in miliseconds. |
| void BNO08x::end_calibration | ( | ) |
Sends command to end calibration procedure.
| bool BNO08x::FRS_read_data | ( | uint16_t | record_ID, |
| uint8_t | start_location, | ||
| uint8_t | words_to_read | ||
| ) |
Read meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.7)
Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.
| record_ID | Which record ID/ sensor to request meta data from. |
| start_location | Start byte location. |
| words_to_read | Length of words to read. |
| bool BNO08x::FRS_read_request | ( | uint16_t | record_ID, |
| uint16_t | read_offset, | ||
| uint16_t | block_size | ||
| ) |
Requests meta data from BNO08x FRS (flash record system) given the record ID. Contains Q points and other info. (See Ref. Manual 5.1 & 6.3.6)
Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.
| record_ID | Which record ID/ sensor to request meta data from. |
| start_location | Start byte location. |
| words_to_read | Length of words to read. |
| uint32_t BNO08x::FRS_read_word | ( | uint16_t | record_ID, |
| uint8_t | word_number | ||
| ) |
Reads meta data word from BNO08x FRS (flash record system) given the record ID and word number. (See Ref. Manual 5.1 & 6.3.7)
Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.
| record_ID | Which record ID/ sensor to request meta data from. |
| word_number | Desired word to read. |
| void BNO08x::get_accel | ( | float & | x, |
| float & | y, | ||
| float & | z, | ||
| uint8_t & | accuracy | ||
| ) |
Get full acceleration (total acceleration of device, units in m/s^2).
| x | Reference variable to save X axis acceleration. |
| y | Reference variable to save Y axis acceleration. |
| z | Reference variable to save Z axis acceleration. |
| accuracy | Reference variable to save reported acceleration accuracy. |
| uint8_t BNO08x::get_accel_accuracy | ( | ) |
Get accuracy of linear acceleration.
| float BNO08x::get_accel_X | ( | ) |
Get x axis acceleration (total acceleration of device, units in m/s^2).
| float BNO08x::get_accel_Y | ( | ) |
Get y axis acceleration (total acceleration of device, units in m/s^2).
| float BNO08x::get_accel_Z | ( | ) |
Get z axis acceleration (total acceleration of device, units in m/s^2).
| uint8_t BNO08x::get_activity_classifier | ( | ) |
Get the current activity classifier (Seee Ref. Manual 6.5.36)
| void BNO08x::get_gravity | ( | float & | x, |
| float & | y, | ||
| float & | z, | ||
| uint8_t & | accuracy | ||
| ) |
Get full reported gravity vector, units in m/s^2.
| x | Reference variable to save X axis gravity. |
| y | Reference variable to save Y axis axis gravity. |
| z | Reference variable to save Z axis axis gravity. |
| accuracy | Reference variable to save reported gravity accuracy. |
| uint8_t BNO08x::get_gravity_accuracy | ( | ) |
Get the reported gravity accuracy.
| float BNO08x::get_gravity_X | ( | ) |
Get the reported x axis gravity.
| float BNO08x::get_gravity_Y | ( | ) |
Get the reported y axis gravity.
| float BNO08x::get_gravity_Z | ( | ) |
Get the reported z axis gravity.
| uint8_t BNO08x::get_gyro_accuracy | ( | ) |
Get calibrated gyro accuracy.
| void BNO08x::get_gyro_calibrated_velocity | ( | float & | x, |
| float & | y, | ||
| float & | z, | ||
| uint8_t & | accuracy | ||
| ) |
Get full rotational velocity with drift compensation (units in Rad/s).
| x | Reference variable to save X axis angular velocity |
| y | Reference variable to save Y axis angular velocity |
| z | Reference variable to save Z axis angular velocity |
| accuracy | Reference variable to save reported gyro accuracy. |
| float BNO08x::get_gyro_calibrated_velocity_X | ( | ) |
Get calibrated gyro x axis angular velocity measurement.
| float BNO08x::get_gyro_calibrated_velocity_Y | ( | ) |
Get calibrated gyro y axis angular velocity measurement.
| float BNO08x::get_gyro_calibrated_velocity_Z | ( | ) |
Get calibrated gyro z axis angular velocity measurement.
| void BNO08x::get_gyro_velocity | ( | float & | x, |
| float & | y, | ||
| float & | z | ||
| ) |
Full rotational velocity from gyro-integrated rotation vector (See Ref. Manual 6.5.44)
| x | Reference variable to save X axis angular velocity |
| y | Reference variable to save Y axis angular velocity |
| z | Reference variable to save Z axis angular velocity |
| float BNO08x::get_gyro_velocity_X | ( | ) |
Get x axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)
| float BNO08x::get_gyro_velocity_Y | ( | ) |
Get y axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)
| float BNO08x::get_gyro_velocity_Z | ( | ) |
Get z axis angular velocity from gyro-integrated rotation vector. (See Ref. Manual 6.5.44)
| void BNO08x::get_linear_accel | ( | float & | x, |
| float & | y, | ||
| float & | z, | ||
| uint8_t & | accuracy | ||
| ) |
Get full linear acceleration (acceleration of the device minus gravity, units in m/s^2).
| x | Reference variable to save X axis acceleration. |
| y | Reference variable to save Y axis acceleration. |
| z | Reference variable to save Z axis acceleration. |
| accuracy | Reference variable to save reported linear acceleration accuracy. |
| uint8_t BNO08x::get_linear_accel_accuracy | ( | ) |
Get accuracy of linear acceleration.
| float BNO08x::get_linear_accel_X | ( | ) |
Get x axis linear acceleration (acceleration of device minus gravity, units in m/s^2)
| float BNO08x::get_linear_accel_Y | ( | ) |
Get y axis linear acceleration (acceleration of device minus gravity, units in m/s^2)
| float BNO08x::get_linear_accel_Z | ( | ) |
Get z axis linear acceleration (acceleration of device minus gravity, units in m/s^2)
| void BNO08x::get_magf | ( | float & | x, |
| float & | y, | ||
| float & | z, | ||
| uint8_t & | accuracy | ||
| ) |
Get the full magnetic field vector.
| x | Reference variable to save reported x magnitude. |
| y | Reference variable to save reported y magnitude. |
| x | Reference variable to save reported z magnitude. |
| accuracy | Reference variable save reported accuracy. |
| uint8_t BNO08x::get_magf_accuracy | ( | ) |
Get accuracy of reported magnetic field vector.
| float BNO08x::get_magf_X | ( | ) |
Get X component of magnetic field vector.
| float BNO08x::get_magf_Y | ( | ) |
Get Y component of magnetic field vector.
| float BNO08x::get_magf_Z | ( | ) |
Get Z component of magnetic field vector.
| float BNO08x::get_pitch | ( | ) |
Get the reported rotation about y axis.
| float BNO08x::get_pitch_deg | ( | ) |
Get the reported rotation about y axis.
| int16_t BNO08x::get_Q1 | ( | uint16_t | record_ID | ) |
Gets Q1 point from BNO08x FRS (flash record system).
Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.
| record_ID | Which record ID/ sensor to get Q1 value for. |
| int16_t BNO08x::get_Q2 | ( | uint16_t | record_ID | ) |
Gets Q2 point from BNO08x FRS (flash record system).
Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.
| record_ID | Which record ID/ sensor to get Q2 value for. |
| int16_t BNO08x::get_Q3 | ( | uint16_t | record_ID | ) |
Gets Q3 point from BNO08x FRS (flash record system).
Note that Q points from the data sheet can be used as well, using the ones stored in flash is optional.
| record_ID | Which record ID/ sensor to get Q3 value for. |
| void BNO08x::get_quat | ( | float & | i, |
| float & | j, | ||
| float & | k, | ||
| float & | real, | ||
| float & | rad_accuracy, | ||
| uint8_t & | accuracy | ||
| ) |
Get the full quaternion reading.
| i | Reference variable to save reported i component of quaternion. |
| j | Reference variable to save reported j component of quaternion. |
| k | Reference variable to save reported k component of quaternion. |
| real | Reference variable to save reported real component of quaternion. |
| rad_accuracy | Reference variable to save reported raw quaternion radian accuracy. |
| accuracy | Reference variable to save reported quaternion accuracy. |
| uint8_t BNO08x::get_quat_accuracy | ( | ) |
Get accuracy of reported quaternion.
| float BNO08x::get_quat_I | ( | ) |
Get I component of reported quaternion.
| float BNO08x::get_quat_J | ( | ) |
Get J component of reported quaternion.
| float BNO08x::get_quat_K | ( | ) |
Get K component of reported quaternion.
| float BNO08x::get_quat_radian_accuracy | ( | ) |
Get radian accuracy of reported quaternion.
| float BNO08x::get_quat_real | ( | ) |
Get real component of reported quaternion.
| float BNO08x::get_range | ( | uint16_t | record_ID | ) |
Gets range from BNO08x FRS (flash record system).
| record_ID | Which record ID/ sensor to get range value for. |
| int16_t BNO08x::get_raw_accel_X | ( | ) |
Get raw accelerometer x axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)
| int16_t BNO08x::get_raw_accel_Y | ( | ) |
Get raw accelerometer y axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)
| int16_t BNO08x::get_raw_accel_Z | ( | ) |
Get raw accelerometer z axis reading from physical accelerometer MEMs sensor (See Ref. Manual 6.5.8)
| int16_t BNO08x::get_raw_gyro_X | ( | ) |
Get raw gyroscope x axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)
| int16_t BNO08x::get_raw_gyro_Y | ( | ) |
Get raw gyroscope y axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)
| int16_t BNO08x::get_raw_gyro_Z | ( | ) |
Get raw gyroscope z axis reading from physical gyroscope MEMs sensor (See Ref. Manual 6.5.12)
| int16_t BNO08x::get_raw_magf_X | ( | ) |
Get raw magnetometer x axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)
| int16_t BNO08x::get_raw_magf_Y | ( | ) |
Get raw magnetometer y axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)
| int16_t BNO08x::get_raw_magf_Z | ( | ) |
Get raw magnetometer z axis reading from physical magnetometer sensor (See Ref. Manual 6.5.15)
| uint16_t BNO08x::get_readings | ( | ) |
Waits for BNO08x HINT pin to assert, and parses the received data.
| uint8_t BNO08x::get_reset_reason | ( | ) |
Get the reason for the most recent reset.
| float BNO08x::get_resolution | ( | uint16_t | record_ID | ) |
Gets resolution from BNO08x FRS (flash record system).
| record_ID | Which record ID/ sensor to get resolution value for. |
| float BNO08x::get_roll | ( | ) |
Get the reported rotation about x axis.
| float BNO08x::get_roll_deg | ( | ) |
Get the reported rotation about x axis.
| int8_t BNO08x::get_stability_classifier | ( | ) |
Get the current stability classifier (Seee Ref. Manual 6.5.31)
| uint16_t BNO08x::get_step_count | ( | ) |
Get the counted amount of steps.
| uint8_t BNO08x::get_tap_detector | ( | ) |
Get if tap has occured.
| uint32_t BNO08x::get_time_stamp | ( | ) |
Return timestamp of most recent report.
| void BNO08x::get_uncalibrated_gyro | ( | float & | x, |
| float & | y, | ||
| float & | z, | ||
| float & | b_x, | ||
| float & | b_y, | ||
| float & | b_z, | ||
| uint8_t & | accuracy | ||
| ) |
Get full rotational velocity without drift compensation (units in Rad/s). An estimate of drift is given but not applied.
| x | Reference variable to save X axis angular velocity |
| y | Reference variable to save Y axis angular velocity |
| z | Reference variable to save Z axis angular velocity |
| b_x | Reference variable to save X axis drift estimate |
| b_y | Reference variable to save Y axis drift estimate |
| b_z | Reference variable to save Z axis drift estimate |
| accuracy | Reference variable to save reported gyro accuracy. |
| uint8_t BNO08x::get_uncalibrated_gyro_accuracy | ( | ) |
Get uncalibrated gyro accuracy.
| float BNO08x::get_uncalibrated_gyro_bias_X | ( | ) |
Get uncalibrated gyro x axis drift estimate.
| float BNO08x::get_uncalibrated_gyro_bias_Y | ( | ) |
Get uncalibrated gyro Y axis drift estimate.
| float BNO08x::get_uncalibrated_gyro_bias_Z | ( | ) |
Get uncalibrated gyro Z axis drift estimate.
| float BNO08x::get_uncalibrated_gyro_X | ( | ) |
Get uncalibrated gyro x axis angular velocity measurement.
| float BNO08x::get_uncalibrated_gyro_Y | ( | ) |
Get uncalibrated gyro Y axis angular velocity measurement.
| float BNO08x::get_uncalibrated_gyro_Z | ( | ) |
Get uncalibrated gyro Z axis angular velocity measurement.
| float BNO08x::get_yaw | ( | ) |
Get the reported rotation about z axis.
| float BNO08x::get_yaw_deg | ( | ) |
Get the reported rotation about z axis.
| bool BNO08x::hard_reset | ( | ) |
Hard resets BNO08x sensor.
|
staticprivate |
| bool BNO08x::initialize | ( | ) |
| bool BNO08x::mode_on | ( | ) |
Turns on/ brings BNO08x sensor out of sleep mode using executable channel.
| bool BNO08x::mode_sleep | ( | ) |
Puts BNO08x sensor into sleep/low power mode using executable channel.
| uint16_t BNO08x::parse_command_report | ( | ) |
Parses received command report sent by BNO08x (See Ref. Manual 6.3.9)
| uint16_t BNO08x::parse_input_report | ( | ) |
Parses received input report sent by BNO08x.
Unit responds with packet that contains the following:
packet_header_rx[0:3]: First, a 4 byte header rx_buffer[0:4]: Then a 5 byte timestamp of microsecond ticks since reading was taken rx_buffer[5 + 0]: Then a feature report ID (0x01 for Accel, 0x05 for Rotation Vector, etc...) rx_buffer[5 + 1]: Sequence number (See Ref.Manual 6.5.8.2) rx_buffer[5 + 2]: Status rx_buffer[3]: Delay rx_buffer[4:5]: i/accel x/gyro x/etc rx_buffer[6:7]: j/accel y/gyro y/etc rx_buffer[8:9]: k/accel z/gyro z/etc rx_buffer[10:11]: real/gyro temp/etc rx_buffer[12:13]: Accuracy estimate
| void BNO08x::print_header | ( | ) |
Prints the most recently received SHTP header to serial console with ESP_LOG statement.
| float BNO08x::q_to_float | ( | int16_t | fixed_point_value, |
| uint8_t | q_point | ||
| ) |
Converts a register value to a float using its associated Q point. (See https://en.wikipedia.org/wiki/Q_(number_format))
| q_point | Q point value associated with register. |
| fixed_point_value | The fixed point value to convert. |
|
private |
Queues a packet containing a command to calibrate the specified sensor.
| sensor_to_calibrate | The sensor to calibrate. |
|
private |
Queues a packet containing a command.
| command | The command to be sent. |
|
private |
Queues a packet containing a command with a request for sensor reports, reported periodically. (See Ref. Manual 6.5.4)
| report_ID | ID of sensor report being requested. |
| time_between_reports | Desired time between reports. |
|
private |
Queues a packet containing a command with a request for sensor reports, reported periodically. (See Ref. Manual 6.5.4)
| report_ID | ID of sensor report to be enabled. |
| time_between_reports | Desired time between reports in miliseconds. |
| specific_config | Specific config word (used with personal activity classifier) |
|
private |
Queues an SHTP packet to be sent via SPI.
|
private |
Queues a packet containing the request product ID command.
|
private |
Queues a packet containing a command related to zeroing sensor's axes. (See Ref. Manual 6.4.4.1)
| command | Tare command to be sent. |
| axis | Specified axis (can be z or all at once) |
| rotation_vector_basis | Which rotation vector type to zero axes of, BNO08x saves seperate data for Rotation Vector, Gaming Rotation Vector, etc..) |
|
private |
Receives a SHTP packet via SPI.
| void BNO08x::request_calibration_status | ( | ) |
Requests ME calibration status from BNO08x (see Ref. Manual 6.4.7.2)
| bool BNO08x::run_full_calibration_routine | ( | ) |
Runs full calibration routine.
Enables game rotation vector and magnetometer, starts ME calibration process. Waits for accuracy of returned quaternions and magnetic field vectors to be high, then saves calibration data and returns.
| void BNO08x::save_calibration | ( | ) |
Sends command to save internal calibration data (See Ref. Manual 6.4.7).
| void BNO08x::save_tare | ( | ) |
Sends command to save tare into non-volatile memory of BNO08x (See Ref. Manual 6.4.4.2)
|
private |
Sends a queued SHTP packet via SPI.
| bool BNO08x::soft_reset | ( | ) |
Soft resets BNO08x sensor using executable channel.
|
private |
Task responsible for SPI transactions. Executed when HINT in is asserted by BNO08x.
|
staticprivate |
Static function used to launch spi task.
Used such that spi_task() can be non-static class member.
| void BNO08x::tare_now | ( | uint8_t | axis_sel = TARE_AXIS_ALL, |
| uint8_t | rotation_vector_basis = TARE_ROTATION_VECTOR |
||
| ) |
Sends command to tare an axis (See Ref. Manual 6.4.4.1)
| axis_sel | Which axes to zero, can be TARE_AXIS_ALL (all axes) or TARE_AXIS_Z (only yaw) |
| rotation_vector_basis | Which rotation vector type to zero axes can be TARE_ROTATION_VECTOR, TARE_GAME_ROTATION_VECTOR, TARE_GEOMAGNETIC_ROTATION_VECTOR, etc.. |
|
private |
Re-enables interrupts and waits for BNO08x to assert HINT pin.