Class: Tinkerforge::BrickletIMUV3

Inherits:
Device
  • Object
show all
Defined in:
lib/tinkerforge/bricklet_imu_v3.rb

Overview

Full fledged AHRS with 9 degrees of freedom

Constant Summary collapse

DEVICE_IDENTIFIER =

:nodoc:

2161
DEVICE_DISPLAY_NAME =

:nodoc:

'IMU Bricklet 3.0'
CALLBACK_ACCELERATION =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_acceleration_callback_configuration. The parameters are the acceleration for the x, y and z axis.

33
CALLBACK_MAGNETIC_FIELD =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_magnetic_field_callback_configuration. The parameters are the magnetic field for the x, y and z axis.

34
CALLBACK_ANGULAR_VELOCITY =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_angular_velocity_callback_configuration. The parameters are the angular velocity for the x, y and z axis.

35
CALLBACK_TEMPERATURE =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_temperature_callback_configuration. The parameter is the temperature.

36
CALLBACK_LINEAR_ACCELERATION =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_linear_acceleration_callback_configuration. The parameters are the linear acceleration for the x, y and z axis.

37
CALLBACK_GRAVITY_VECTOR =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_gravity_vector_callback_configuration. The parameters gravity vector for the x, y and z axis.

38
CALLBACK_ORIENTATION =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_orientation_callback_configuration. The parameters are the orientation (heading (yaw), roll, pitch) of the IMU Brick in Euler angles. See BrickletIMUV3#get_orientation for details.

39
CALLBACK_QUATERNION =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_quaternion_callback_configuration. The parameters are the orientation (w, x, y, z) of the IMU Brick in quaternions. See BrickletIMUV3#get_quaternion for details.

40
CALLBACK_ALL_DATA =

This callback is triggered periodically with the period that is set by BrickletIMUV3#set_all_data_callback_configuration. The parameters are as for BrickletIMUV3#get_all_data.

41
FUNCTION_GET_ACCELERATION =

:nodoc:

1
FUNCTION_GET_MAGNETIC_FIELD =

:nodoc:

2
FUNCTION_GET_ANGULAR_VELOCITY =

:nodoc:

3
FUNCTION_GET_TEMPERATURE =

:nodoc:

4
FUNCTION_GET_ORIENTATION =

:nodoc:

5
FUNCTION_GET_LINEAR_ACCELERATION =

:nodoc:

6
FUNCTION_GET_GRAVITY_VECTOR =

:nodoc:

7
FUNCTION_GET_QUATERNION =

:nodoc:

8
FUNCTION_GET_ALL_DATA =

:nodoc:

9
FUNCTION_SAVE_CALIBRATION =

:nodoc:

10
FUNCTION_SET_SENSOR_CONFIGURATION =

:nodoc:

11
FUNCTION_GET_SENSOR_CONFIGURATION =

:nodoc:

12
FUNCTION_SET_SENSOR_FUSION_MODE =

:nodoc:

13
FUNCTION_GET_SENSOR_FUSION_MODE =

:nodoc:

14
FUNCTION_SET_ACCELERATION_CALLBACK_CONFIGURATION =

:nodoc:

15
FUNCTION_GET_ACCELERATION_CALLBACK_CONFIGURATION =

:nodoc:

16
FUNCTION_SET_MAGNETIC_FIELD_CALLBACK_CONFIGURATION =

:nodoc:

17
FUNCTION_GET_MAGNETIC_FIELD_CALLBACK_CONFIGURATION =

:nodoc:

18
FUNCTION_SET_ANGULAR_VELOCITY_CALLBACK_CONFIGURATION =

:nodoc:

19
FUNCTION_GET_ANGULAR_VELOCITY_CALLBACK_CONFIGURATION =

:nodoc:

20
FUNCTION_SET_TEMPERATURE_CALLBACK_CONFIGURATION =

:nodoc:

21
FUNCTION_GET_TEMPERATURE_CALLBACK_CONFIGURATION =

:nodoc:

22
FUNCTION_SET_ORIENTATION_CALLBACK_CONFIGURATION =

:nodoc:

23
FUNCTION_GET_ORIENTATION_CALLBACK_CONFIGURATION =

:nodoc:

24
FUNCTION_SET_LINEAR_ACCELERATION_CALLBACK_CONFIGURATION =

:nodoc:

25
FUNCTION_GET_LINEAR_ACCELERATION_CALLBACK_CONFIGURATION =

:nodoc:

26
FUNCTION_SET_GRAVITY_VECTOR_CALLBACK_CONFIGURATION =

:nodoc:

27
FUNCTION_GET_GRAVITY_VECTOR_CALLBACK_CONFIGURATION =

:nodoc:

28
FUNCTION_SET_QUATERNION_CALLBACK_CONFIGURATION =

:nodoc:

29
FUNCTION_GET_QUATERNION_CALLBACK_CONFIGURATION =

:nodoc:

30
FUNCTION_SET_ALL_DATA_CALLBACK_CONFIGURATION =

:nodoc:

31
FUNCTION_GET_ALL_DATA_CALLBACK_CONFIGURATION =

:nodoc:

32
FUNCTION_GET_SPITFP_ERROR_COUNT =

:nodoc:

234
FUNCTION_SET_BOOTLOADER_MODE =

:nodoc:

235
FUNCTION_GET_BOOTLOADER_MODE =

:nodoc:

236
FUNCTION_SET_WRITE_FIRMWARE_POINTER =

:nodoc:

237
FUNCTION_WRITE_FIRMWARE =

:nodoc:

238
FUNCTION_SET_STATUS_LED_CONFIG =

:nodoc:

239
FUNCTION_GET_STATUS_LED_CONFIG =

:nodoc:

240
FUNCTION_GET_CHIP_TEMPERATURE =

:nodoc:

242
FUNCTION_RESET =

:nodoc:

243
FUNCTION_WRITE_UID =

:nodoc:

248
FUNCTION_READ_UID =

:nodoc:

249
FUNCTION_GET_IDENTITY =

:nodoc:

255
MAGNETOMETER_RATE_2HZ =

:nodoc:

0
MAGNETOMETER_RATE_6HZ =

:nodoc:

1
MAGNETOMETER_RATE_8HZ =

:nodoc:

2
MAGNETOMETER_RATE_10HZ =

:nodoc:

3
MAGNETOMETER_RATE_15HZ =

:nodoc:

4
MAGNETOMETER_RATE_20HZ =

:nodoc:

5
MAGNETOMETER_RATE_25HZ =

:nodoc:

6
MAGNETOMETER_RATE_30HZ =

:nodoc:

7
GYROSCOPE_RANGE_2000DPS =

:nodoc:

0
GYROSCOPE_RANGE_1000DPS =

:nodoc:

1
GYROSCOPE_RANGE_500DPS =

:nodoc:

2
GYROSCOPE_RANGE_250DPS =

:nodoc:

3
GYROSCOPE_RANGE_125DPS =

:nodoc:

4
GYROSCOPE_BANDWIDTH_523HZ =

:nodoc:

0
GYROSCOPE_BANDWIDTH_230HZ =

:nodoc:

1
GYROSCOPE_BANDWIDTH_116HZ =

:nodoc:

2
GYROSCOPE_BANDWIDTH_47HZ =

:nodoc:

3
GYROSCOPE_BANDWIDTH_23HZ =

:nodoc:

4
GYROSCOPE_BANDWIDTH_12HZ =

:nodoc:

5
GYROSCOPE_BANDWIDTH_64HZ =

:nodoc:

6
GYROSCOPE_BANDWIDTH_32HZ =

:nodoc:

7
ACCELEROMETER_RANGE_2G =

:nodoc:

0
ACCELEROMETER_RANGE_4G =

:nodoc:

1
ACCELEROMETER_RANGE_8G =

:nodoc:

2
ACCELEROMETER_RANGE_16G =

:nodoc:

3
ACCELEROMETER_BANDWIDTH_7_81HZ =

:nodoc:

0
ACCELEROMETER_BANDWIDTH_15_63HZ =

:nodoc:

1
ACCELEROMETER_BANDWIDTH_31_25HZ =

:nodoc:

2
ACCELEROMETER_BANDWIDTH_62_5HZ =

:nodoc:

3
ACCELEROMETER_BANDWIDTH_125HZ =

:nodoc:

4
ACCELEROMETER_BANDWIDTH_250HZ =

:nodoc:

5
ACCELEROMETER_BANDWIDTH_500HZ =

:nodoc:

6
ACCELEROMETER_BANDWIDTH_1000HZ =

:nodoc:

7
SENSOR_FUSION_OFF =

:nodoc:

0
SENSOR_FUSION_ON =

:nodoc:

1
SENSOR_FUSION_ON_WITHOUT_MAGNETOMETER =

:nodoc:

2
SENSOR_FUSION_ON_WITHOUT_FAST_MAGNETOMETER_CALIBRATION =

:nodoc:

3
BOOTLOADER_MODE_BOOTLOADER =

:nodoc:

0
BOOTLOADER_MODE_FIRMWARE =

:nodoc:

1
BOOTLOADER_MODE_BOOTLOADER_WAIT_FOR_REBOOT =

:nodoc:

2
BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_REBOOT =

:nodoc:

3
BOOTLOADER_MODE_FIRMWARE_WAIT_FOR_ERASE_AND_REBOOT =

:nodoc:

4
BOOTLOADER_STATUS_OK =

:nodoc:

0
BOOTLOADER_STATUS_INVALID_MODE =

:nodoc:

1
BOOTLOADER_STATUS_NO_CHANGE =

:nodoc:

2
BOOTLOADER_STATUS_ENTRY_FUNCTION_NOT_PRESENT =

:nodoc:

3
BOOTLOADER_STATUS_DEVICE_IDENTIFIER_INCORRECT =

:nodoc:

4
BOOTLOADER_STATUS_CRC_MISMATCH =

:nodoc:

5
STATUS_LED_CONFIG_OFF =

:nodoc:

0
STATUS_LED_CONFIG_ON =

:nodoc:

1
STATUS_LED_CONFIG_SHOW_HEARTBEAT =

:nodoc:

2
STATUS_LED_CONFIG_SHOW_STATUS =

:nodoc:

3

Constants inherited from Device

Device::DEVICE_IDENTIFIER_CHECK_MATCH, Device::DEVICE_IDENTIFIER_CHECK_MISMATCH, Device::DEVICE_IDENTIFIER_CHECK_PENDING, Device::RESPONSE_EXPECTED_ALWAYS_TRUE, Device::RESPONSE_EXPECTED_FALSE, Device::RESPONSE_EXPECTED_INVALID_FUNCTION_ID, Device::RESPONSE_EXPECTED_TRUE

Instance Attribute Summary

Attributes inherited from Device

#callback_formats, #expected_response_function_id, #expected_response_sequence_number, #high_level_callbacks, #registered_callbacks, #replaced, #uid

Instance Method Summary collapse

Methods inherited from Device

#check_validity, #dequeue_response, #enqueue_response, #get_api_version, #get_response_expected, #send_request, #set_response_expected, #set_response_expected_all

Constructor Details

#initialize(uid, ipcon) ⇒ BrickletIMUV3

Creates an object with the unique device ID uid and adds it to the IP Connection ipcon.



166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 166

def initialize(uid, ipcon)
  super uid, ipcon, DEVICE_IDENTIFIER, DEVICE_DISPLAY_NAME

  @api_version = [2, 0, 0]

  @response_expected[FUNCTION_GET_ACCELERATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_MAGNETIC_FIELD] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_ANGULAR_VELOCITY] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_TEMPERATURE] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_ORIENTATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_LINEAR_ACCELERATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_GRAVITY_VECTOR] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_QUATERNION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_ALL_DATA] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SAVE_CALIBRATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_SENSOR_CONFIGURATION] = RESPONSE_EXPECTED_FALSE
  @response_expected[FUNCTION_GET_SENSOR_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_SENSOR_FUSION_MODE] = RESPONSE_EXPECTED_FALSE
  @response_expected[FUNCTION_GET_SENSOR_FUSION_MODE] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_ACCELERATION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_ACCELERATION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_MAGNETIC_FIELD_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_MAGNETIC_FIELD_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_ANGULAR_VELOCITY_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_ANGULAR_VELOCITY_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_TEMPERATURE_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_TEMPERATURE_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_ORIENTATION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_ORIENTATION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_LINEAR_ACCELERATION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_LINEAR_ACCELERATION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_GRAVITY_VECTOR_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_GRAVITY_VECTOR_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_QUATERNION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_QUATERNION_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_ALL_DATA_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_TRUE
  @response_expected[FUNCTION_GET_ALL_DATA_CALLBACK_CONFIGURATION] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_SPITFP_ERROR_COUNT] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_BOOTLOADER_MODE] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_BOOTLOADER_MODE] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_WRITE_FIRMWARE_POINTER] = RESPONSE_EXPECTED_FALSE
  @response_expected[FUNCTION_WRITE_FIRMWARE] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_SET_STATUS_LED_CONFIG] = RESPONSE_EXPECTED_FALSE
  @response_expected[FUNCTION_GET_STATUS_LED_CONFIG] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_CHIP_TEMPERATURE] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_RESET] = RESPONSE_EXPECTED_FALSE
  @response_expected[FUNCTION_WRITE_UID] = RESPONSE_EXPECTED_FALSE
  @response_expected[FUNCTION_READ_UID] = RESPONSE_EXPECTED_ALWAYS_TRUE
  @response_expected[FUNCTION_GET_IDENTITY] = RESPONSE_EXPECTED_ALWAYS_TRUE

  @callback_formats[CALLBACK_ACCELERATION] = [14, 's s s']
  @callback_formats[CALLBACK_MAGNETIC_FIELD] = [14, 's s s']
  @callback_formats[CALLBACK_ANGULAR_VELOCITY] = [14, 's s s']
  @callback_formats[CALLBACK_TEMPERATURE] = [9, 'c']
  @callback_formats[CALLBACK_LINEAR_ACCELERATION] = [14, 's s s']
  @callback_formats[CALLBACK_GRAVITY_VECTOR] = [14, 's s s']
  @callback_formats[CALLBACK_ORIENTATION] = [14, 's s s']
  @callback_formats[CALLBACK_QUATERNION] = [16, 's s s s']
  @callback_formats[CALLBACK_ALL_DATA] = [54, 's3 s3 s3 s3 s4 s3 s3 c C']

  @ipcon.add_device self
end

Instance Method Details

#get_accelerationObject

Returns the calibrated acceleration from the accelerometer for the x, y and z axis. The acceleration is in the range configured with BrickletIMUV3#set_sensor_configuration.

If you want to get the acceleration periodically, it is recommended to use the CALLBACK_ACCELERATION callback and set the period with BrickletIMUV3#set_acceleration_callback_configuration.



236
237
238
239
240
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 236

def get_acceleration
  check_validity

  send_request FUNCTION_GET_ACCELERATION, [], '', 14, 's s s'
end

#get_acceleration_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_acceleration_callback_configuration.



454
455
456
457
458
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 454

def get_acceleration_callback_configuration
  check_validity

  send_request FUNCTION_GET_ACCELERATION_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_all_dataObject

Return all of the available data of the IMU Brick.

  • acceleration (see BrickletIMUV3#get_acceleration)

  • magnetic field (see BrickletIMUV3#get_magnetic_field)

  • angular velocity (see BrickletIMUV3#get_angular_velocity)

  • Euler angles (see BrickletIMUV3#get_orientation)

  • quaternion (see BrickletIMUV3#get_quaternion)

  • linear acceleration (see BrickletIMUV3#get_linear_acceleration)

  • gravity vector (see BrickletIMUV3#get_gravity_vector)

  • temperature (see BrickletIMUV3#get_temperature)

  • calibration status (see below)

The calibration status consists of four pairs of two bits. Each pair of bits represents the status of the current calibration.

  • bit 0-1: Magnetometer

  • bit 2-3: Accelerometer

  • bit 4-5: Gyroscope

  • bit 6-7: System

A value of 0 means for “not calibrated” and a value of 3 means “fully calibrated”. In your program you should always be able to ignore the calibration status, it is used by the calibration window of the Brick Viewer and it can be ignored after the first calibration. See the documentation in the calibration window for more information regarding the calibration of the IMU Brick.

If you want to get the data periodically, it is recommended to use the CALLBACK_ALL_DATA callback and set the period with BrickletIMUV3#set_all_data_callback_configuration.



373
374
375
376
377
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 373

def get_all_data
  check_validity

  send_request FUNCTION_GET_ALL_DATA, [], '', 54, 's3 s3 s3 s3 s4 s3 s3 c C'
end

#get_all_data_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_all_data_callback_configuration.



630
631
632
633
634
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 630

def get_all_data_callback_configuration
  check_validity

  send_request FUNCTION_GET_ALL_DATA_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_angular_velocityObject

Returns the calibrated angular velocity from the gyroscope for the x, y and z axis. The angular velocity is in the range configured with BrickletIMUV3#set_sensor_configuration.

If you want to get the angular velocity periodically, it is recommended to use the CALLBACK_ANGULAR_VELOCITY acallback nd set the period with BrickletIMUV3#set_angular_velocity_callback_configuration.



261
262
263
264
265
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 261

def get_angular_velocity
  check_validity

  send_request FUNCTION_GET_ANGULAR_VELOCITY, [], '', 14, 's s s'
end

#get_angular_velocity_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_angular_velocity_callback_configuration.



498
499
500
501
502
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 498

def get_angular_velocity_callback_configuration
  check_validity

  send_request FUNCTION_GET_ANGULAR_VELOCITY_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_bootloader_modeObject

Returns the current bootloader mode, see BrickletIMUV3#set_bootloader_mode.



669
670
671
672
673
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 669

def get_bootloader_mode
  check_validity

  send_request FUNCTION_GET_BOOTLOADER_MODE, [], '', 9, 'C'
end

#get_chip_temperatureObject

Returns the temperature as measured inside the microcontroller. The value returned is not the ambient temperature!

The temperature is only proportional to the real temperature and it has bad accuracy. Practically it is only useful as an indicator for temperature changes.



727
728
729
730
731
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 727

def get_chip_temperature
  check_validity

  send_request FUNCTION_GET_CHIP_TEMPERATURE, [], '', 10, 's'
end

#get_gravity_vectorObject

Returns the current gravity vector of the IMU Brick for the x, y and z axis.

The gravity vector is the acceleration that occurs due to gravity. Influences of additional linear acceleration are removed.

It is also possible to get the linear acceleration with the influence of gravity removed, see BrickletIMUV3#get_linear_acceleration.

If you want to get the gravity vector periodically, it is recommended to use the CALLBACK_GRAVITY_VECTOR callback and set the period with BrickletIMUV3#set_gravity_vector_callback_configuration.



322
323
324
325
326
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 322

def get_gravity_vector
  check_validity

  send_request FUNCTION_GET_GRAVITY_VECTOR, [], '', 14, 's s s'
end

#get_gravity_vector_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_gravity_vector_callback_configuration.



586
587
588
589
590
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 586

def get_gravity_vector_callback_configuration
  check_validity

  send_request FUNCTION_GET_GRAVITY_VECTOR_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_identityObject

Returns the UID, the UID where the Bricklet is connected to, the position, the hardware and firmware version as well as the device identifier.

The position can be ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’ or ‘h’ (Bricklet Port). A Bricklet connected to an :ref:‘Isolator Bricklet <isolator_bricklet>` is always at position ’z’.

The device identifier numbers can be found :ref:‘here <device_identifier>`. |device_identifier_constant|



774
775
776
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 774

def get_identity
  send_request FUNCTION_GET_IDENTITY, [], '', 33, 'Z8 Z8 k C3 C3 S'
end

#get_linear_accelerationObject

Returns the linear acceleration of the IMU Brick for the x, y and z axis. The acceleration is in the range configured with BrickletIMUV3#set_sensor_configuration.

The linear acceleration is the acceleration in each of the three axis of the IMU Brick with the influences of gravity removed.

It is also possible to get the gravity vector with the influence of linear acceleration removed, see BrickletIMUV3#get_gravity_vector.

If you want to get the linear acceleration periodically, it is recommended to use the CALLBACK_LINEAR_ACCELERATION callback and set the period with BrickletIMUV3#set_linear_acceleration_callback_configuration.



304
305
306
307
308
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 304

def get_linear_acceleration
  check_validity

  send_request FUNCTION_GET_LINEAR_ACCELERATION, [], '', 14, 's s s'
end

#get_linear_acceleration_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_linear_acceleration_callback_configuration.



564
565
566
567
568
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 564

def get_linear_acceleration_callback_configuration
  check_validity

  send_request FUNCTION_GET_LINEAR_ACCELERATION_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_magnetic_fieldObject

Returns the calibrated magnetic field from the magnetometer for the x, y and z axis.

If you want to get the magnetic field periodically, it is recommended to use the CALLBACK_MAGNETIC_FIELD callback and set the period with BrickletIMUV3#set_magnetic_field_callback_configuration.



248
249
250
251
252
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 248

def get_magnetic_field
  check_validity

  send_request FUNCTION_GET_MAGNETIC_FIELD, [], '', 14, 's s s'
end

#get_magnetic_field_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_magnetic_field_callback_configuration.



476
477
478
479
480
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 476

def get_magnetic_field_callback_configuration
  check_validity

  send_request FUNCTION_GET_MAGNETIC_FIELD_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_orientationObject

Returns the current orientation (heading, roll, pitch) of the IMU Brick as independent Euler angles. Note that Euler angles always experience a ‘gimbal lock <en.wikipedia.org/wiki/Gimbal_lock>`__. We recommend that you use quaternions instead, if you need the absolute orientation.

If you want to get the orientation periodically, it is recommended to use the CALLBACK_ORIENTATION callback and set the period with BrickletIMUV3#set_orientation_callback_configuration.



285
286
287
288
289
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 285

def get_orientation
  check_validity

  send_request FUNCTION_GET_ORIENTATION, [], '', 14, 's s s'
end

#get_orientation_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_orientation_callback_configuration.



542
543
544
545
546
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 542

def get_orientation_callback_configuration
  check_validity

  send_request FUNCTION_GET_ORIENTATION_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_quaternionObject

Returns the current orientation (w, x, y, z) of the IMU Brick as ‘quaternions <en.wikipedia.org/wiki/Quaternions_and_spatial_rotation>`__.

You have to divide the return values by 16383 (14 bit) to get the usual range of -1.0 to +1.0 for quaternions.

If you want to get the quaternions periodically, it is recommended to use the CALLBACK_QUATERNION callback and set the period with BrickletIMUV3#set_quaternion_callback_configuration.



337
338
339
340
341
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 337

def get_quaternion
  check_validity

  send_request FUNCTION_GET_QUATERNION, [], '', 16, 's s s s'
end

#get_quaternion_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_quaternion_callback_configuration.



608
609
610
611
612
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 608

def get_quaternion_callback_configuration
  check_validity

  send_request FUNCTION_GET_QUATERNION_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#get_sensor_configurationObject

Returns the sensor configuration as set by BrickletIMUV3#set_sensor_configuration.



405
406
407
408
409
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 405

def get_sensor_configuration
  check_validity

  send_request FUNCTION_GET_SENSOR_CONFIGURATION, [], '', 13, 'C C C C C'
end

#get_sensor_fusion_modeObject

Returns the sensor fusion mode as set by BrickletIMUV3#set_sensor_fusion_mode.



432
433
434
435
436
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 432

def get_sensor_fusion_mode
  check_validity

  send_request FUNCTION_GET_SENSOR_FUSION_MODE, [], '', 9, 'C'
end

#get_spitfp_error_countObject

Returns the error count for the communication between Brick and Bricklet.

The errors are divided into

  • ACK checksum errors,

  • message checksum errors,

  • framing errors and

  • overflow errors.

The errors counts are for errors that occur on the Bricklet side. All Bricks have a similar function that returns the errors on the Brick side.



647
648
649
650
651
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 647

def get_spitfp_error_count
  check_validity

  send_request FUNCTION_GET_SPITFP_ERROR_COUNT, [], '', 24, 'L L L L'
end

#get_status_led_configObject

Returns the configuration as set by BrickletIMUV3#set_status_led_config



715
716
717
718
719
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 715

def get_status_led_config
  check_validity

  send_request FUNCTION_GET_STATUS_LED_CONFIG, [], '', 9, 'C'
end

#get_temperatureObject

Returns the temperature of the IMU Brick. The temperature is measured in the core of the BNO055 IC, it is not the ambient temperature



270
271
272
273
274
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 270

def get_temperature
  check_validity

  send_request FUNCTION_GET_TEMPERATURE, [], '', 9, 'c'
end

#get_temperature_callback_configurationObject

Returns the callback configuration as set by BrickletIMUV3#set_temperature_callback_configuration.



520
521
522
523
524
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 520

def get_temperature_callback_configuration
  check_validity

  send_request FUNCTION_GET_TEMPERATURE_CALLBACK_CONFIGURATION, [], '', 13, 'L ?'
end

#read_uidObject

Returns the current UID as an integer. Encode as Base58 to get the usual string version.



758
759
760
761
762
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 758

def read_uid
  check_validity

  send_request FUNCTION_READ_UID, [], '', 12, 'L'
end

#register_callback(id, &block) ⇒ Object

Registers a callback with ID id to the block block.



779
780
781
782
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 779

def register_callback(id, &block)
  callback = block
  @registered_callbacks[id] = callback
end

#resetObject

Calling this function will reset the Bricklet. All configurations will be lost.

After a reset you have to create new device objects, calling functions on the existing ones will result in undefined behavior!



739
740
741
742
743
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 739

def reset
  check_validity

  send_request FUNCTION_RESET, [], '', 8, ''
end

#save_calibrationObject

A call of this function saves the current calibration to be used as a starting point for the next restart of continuous calibration of the IMU Brick.

A return value of true means that the calibration could be used and false means that it could not be used (this happens if the calibration status is not “fully calibrated”).

This function is used by the calibration window of the Brick Viewer, you should not need to call it in your program.



389
390
391
392
393
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 389

def save_calibration
  check_validity

  send_request FUNCTION_SAVE_CALIBRATION, [], '', 9, '?'
end

#set_acceleration_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_ACCELERATION callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



447
448
449
450
451
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 447

def set_acceleration_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_ACCELERATION_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_all_data_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_ALL_DATA callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



623
624
625
626
627
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 623

def set_all_data_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_ALL_DATA_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_angular_velocity_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_ANGULAR_VELOCITY callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



491
492
493
494
495
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 491

def set_angular_velocity_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_ANGULAR_VELOCITY_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_bootloader_mode(mode) ⇒ Object

Sets the bootloader mode and returns the status after the requested mode change was instigated.

You can change from bootloader mode to firmware mode and vice versa. A change from bootloader mode to firmware mode will only take place if the entry function, device identifier and CRC are present and correct.

This function is used by Brick Viewer during flashing. It should not be necessary to call it in a normal user program.



662
663
664
665
666
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 662

def set_bootloader_mode(mode)
  check_validity

  send_request FUNCTION_SET_BOOTLOADER_MODE, [mode], 'C', 9, 'C'
end

#set_gravity_vector_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_GRAVITY_VECTOR callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



579
580
581
582
583
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 579

def set_gravity_vector_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_GRAVITY_VECTOR_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_linear_acceleration_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_LINEAR_ACCELERATION callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



557
558
559
560
561
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 557

def set_linear_acceleration_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_LINEAR_ACCELERATION_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_magnetic_field_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_MAGNETIC_FIELD callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



469
470
471
472
473
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 469

def set_magnetic_field_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_MAGNETIC_FIELD_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_orientation_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_ORIENTATION callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



535
536
537
538
539
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 535

def set_orientation_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_ORIENTATION_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_quaternion_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_QUATERNION callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



601
602
603
604
605
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 601

def set_quaternion_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_QUATERNION_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_sensor_configuration(magnetometer_rate, gyroscope_range, gyroscope_bandwidth, accelerometer_range, accelerometer_bandwidth) ⇒ Object

Sets the available sensor configuration for the Magnetometer, Gyroscope and Accelerometer. The Accelerometer Range is user selectable in all fusion modes, all other configurations are auto-controlled in fusion mode.



398
399
400
401
402
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 398

def set_sensor_configuration(magnetometer_rate, gyroscope_range, gyroscope_bandwidth, accelerometer_range, accelerometer_bandwidth)
  check_validity

  send_request FUNCTION_SET_SENSOR_CONFIGURATION, [magnetometer_rate, gyroscope_range, gyroscope_bandwidth, accelerometer_range, accelerometer_bandwidth], 'C C C C C', 8, ''
end

#set_sensor_fusion_mode(mode) ⇒ Object

If the fusion mode is turned off, the functions BrickletIMUV3#get_acceleration, BrickletIMUV3#get_magnetic_field and BrickletIMUV3#get_angular_velocity return uncalibrated and uncompensated sensor data. All other sensor data getters return no data.

Since firmware version 2.0.6 you can also use a fusion mode without magnetometer. In this mode the calculated orientation is relative (with magnetometer it is absolute with respect to the earth). However, the calculation can’t be influenced by spurious magnetic fields.

Since firmware version 2.0.13 you can also use a fusion mode without fast magnetometer calibration. This mode is the same as the normal fusion mode, but the fast magnetometer calibration is turned off. So to find the orientation the first time will likely take longer, but small magnetic influences might not affect the automatic calibration as much.



425
426
427
428
429
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 425

def set_sensor_fusion_mode(mode)
  check_validity

  send_request FUNCTION_SET_SENSOR_FUSION_MODE, [mode], 'C', 8, ''
end

#set_status_led_config(config) ⇒ Object

Sets the status LED configuration. By default the LED shows communication traffic between Brick and Bricklet, it flickers once for every 10 received data packets.

You can also turn the LED permanently on/off or show a heartbeat.

If the Bricklet is in bootloader mode, the LED is will show heartbeat by default.



708
709
710
711
712
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 708

def set_status_led_config(config)
  check_validity

  send_request FUNCTION_SET_STATUS_LED_CONFIG, [config], 'C', 8, ''
end

#set_temperature_callback_configuration(period, value_has_to_change) ⇒ Object

The period is the period with which the CALLBACK_TEMPERATURE callback is triggered periodically. A value of 0 turns the callback off.

If the ‘value has to change`-parameter is set to true, the callback is only triggered after the value has changed. If the value didn’t change within the period, the callback is triggered immediately on change.

If it is set to false, the callback is continuously triggered with the period, independent of the value.



513
514
515
516
517
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 513

def set_temperature_callback_configuration(period, value_has_to_change)
  check_validity

  send_request FUNCTION_SET_TEMPERATURE_CALLBACK_CONFIGURATION, [period, value_has_to_change], 'L ?', 8, ''
end

#set_write_firmware_pointer(pointer) ⇒ Object

Sets the firmware pointer for BrickletIMUV3#write_firmware. The pointer has to be increased by chunks of size 64. The data is written to flash every 4 chunks (which equals to one page of size 256).

This function is used by Brick Viewer during flashing. It should not be necessary to call it in a normal user program.



681
682
683
684
685
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 681

def set_write_firmware_pointer(pointer)
  check_validity

  send_request FUNCTION_SET_WRITE_FIRMWARE_POINTER, [pointer], 'L', 8, ''
end

#write_firmware(data) ⇒ Object

Writes 64 Bytes of firmware at the position as written by BrickletIMUV3#set_write_firmware_pointer before. The firmware is written to flash every 4 chunks.

You can only write firmware in bootloader mode.

This function is used by Brick Viewer during flashing. It should not be necessary to call it in a normal user program.



695
696
697
698
699
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 695

def write_firmware(data)
  check_validity

  send_request FUNCTION_WRITE_FIRMWARE, [data], 'C64', 9, 'C'
end

#write_uid(uid) ⇒ Object

Writes a new UID into flash. If you want to set a new UID you have to decode the Base58 encoded UID string into an integer first.

We recommend that you use Brick Viewer to change the UID.



750
751
752
753
754
# File 'lib/tinkerforge/bricklet_imu_v3.rb', line 750

def write_uid(uid)
  check_validity

  send_request FUNCTION_WRITE_UID, [uid], 'L', 8, ''
end