Package com.tinkerforge
Class BrickIMU
- java.lang.Object
-
- com.tinkerforge.DeviceBase
-
- com.tinkerforge.Device
-
- com.tinkerforge.BrickIMU
-
public class BrickIMU extends Device
Full fledged AHRS with 9 degrees of freedom
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
BrickIMU.Acceleration
static interface
BrickIMU.AccelerationListener
This listener is triggered periodically with the period that is set bysetAccelerationPeriod(long)
.class
BrickIMU.AllData
static interface
BrickIMU.AllDataListener
This listener is triggered periodically with the period that is set bysetAllDataPeriod(long)
.class
BrickIMU.AngularVelocity
static interface
BrickIMU.AngularVelocityListener
This listener is triggered periodically with the period that is set bysetAngularVelocityPeriod(long)
.class
BrickIMU.MagneticField
static interface
BrickIMU.MagneticFieldListener
This listener is triggered periodically with the period that is set bysetMagneticFieldPeriod(long)
.class
BrickIMU.Orientation
static interface
BrickIMU.OrientationListener
This listener is triggered periodically with the period that is set bysetOrientationPeriod(long)
.class
BrickIMU.Protocol1BrickletName
class
BrickIMU.Quaternion
static interface
BrickIMU.QuaternionListener
This listener is triggered periodically with the period that is set bysetQuaternionPeriod(long)
.class
BrickIMU.SPITFPBaudrateConfig
class
BrickIMU.SPITFPErrorCount
-
Nested classes/interfaces inherited from class com.tinkerforge.Device
Device.Identity
-
-
Field Summary
-
Constructor Summary
Constructors Constructor Description BrickIMU(java.lang.String uid, IPConnection ipcon)
Creates an object with the unique device ID \c uid.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addAccelerationListener(BrickIMU.AccelerationListener listener)
Adds a Acceleration listener.void
addAllDataListener(BrickIMU.AllDataListener listener)
Adds a AllData listener.void
addAngularVelocityListener(BrickIMU.AngularVelocityListener listener)
Adds a AngularVelocity listener.void
addMagneticFieldListener(BrickIMU.MagneticFieldListener listener)
Adds a MagneticField listener.void
addOrientationListener(BrickIMU.OrientationListener listener)
Adds a Orientation listener.void
addQuaternionListener(BrickIMU.QuaternionListener listener)
Adds a Quaternion listener.boolean
areLedsOn()
Returns *true* if the orientation and direction LEDs of the IMU Brick are on, *false* otherwise.void
disableStatusLED()
Disables the status LED.void
enableStatusLED()
Enables the status LED.BrickIMU.Acceleration
getAcceleration()
Returns the calibrated acceleration from the accelerometer for the x, y and z axis.long
getAccelerationPeriod()
Returns the period as set bysetAccelerationPeriod(long)
.short
getAccelerationRange()
Not implemented yet.BrickIMU.AllData
getAllData()
Returns the data fromgetAcceleration()
,getMagneticField()
andgetAngularVelocity()
as well as the temperature of the IMU Brick.long
getAllDataPeriod()
Returns the period as set bysetAllDataPeriod(long)
.BrickIMU.AngularVelocity
getAngularVelocity()
Returns the calibrated angular velocity from the gyroscope for the x, y and z axis in °/14.375s (you have to divide by 14.375 to get the value in °/s).long
getAngularVelocityPeriod()
Returns the period as set bysetAngularVelocityPeriod(long)
.short[]
getCalibration(short typ)
Returns the calibration for a given type as set bysetCalibration(short, short[])
.short
getChipTemperature()
Returns the temperature as measured inside the microcontroller.int
getConvergenceSpeed()
Returns the convergence speed as set bysetConvergenceSpeed(int)
.Device.Identity
getIdentity()
Returns the UID, the UID where the Brick is connected to, the position, the hardware and firmware version as well as the device identifier.short
getIMUTemperature()
Returns the temperature of the IMU Brick.BrickIMU.MagneticField
getMagneticField()
Returns the calibrated magnetic field from the magnetometer for the x, y and z axis.long
getMagneticFieldPeriod()
Returns the period as set bysetMagneticFieldPeriod(long)
.short
getMagnetometerRange()
Not implemented yet.BrickIMU.Orientation
getOrientation()
Returns the current orientation (roll, pitch, yaw) of the IMU Brick as Euler angles.long
getOrientationPeriod()
Returns the period as set bysetOrientationPeriod(long)
.BrickIMU.Protocol1BrickletName
getProtocol1BrickletName(char port)
Returns the firmware and protocol version and the name of the Bricklet for a given port.BrickIMU.Quaternion
getQuaternion()
Returns the current orientation (x, y, z, w) of the IMU as `quaternions <https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation>`__.long
getQuaternionPeriod()
Returns the period as set bysetQuaternionPeriod(long)
.long
getSendTimeoutCount(short communicationMethod)
Returns the timeout count for the different communication methods.long
getSPITFPBaudrate(char brickletPort)
Returns the baudrate for a given Bricklet port, seesetSPITFPBaudrate(char, long)
.BrickIMU.SPITFPBaudrateConfig
getSPITFPBaudrateConfig()
Returns the baudrate config, seesetSPITFPBaudrateConfig(boolean, long)
.BrickIMU.SPITFPErrorCount
getSPITFPErrorCount(char brickletPort)
Returns the error count for the communication between Brick and Bricklet.boolean
isOrientationCalculationOn()
Returns *true* if the orientation calculation of the IMU Brick is on, *false* otherwise.boolean
isStatusLEDEnabled()
Returns *true* if the status LED is enabled, *false* otherwise.void
ledsOff()
Turns the orientation and direction LEDs of the IMU Brick off.void
ledsOn()
Turns the orientation and direction LEDs of the IMU Brick on.void
orientationCalculationOff()
Turns the orientation calculation of the IMU Brick off.void
orientationCalculationOn()
Turns the orientation calculation of the IMU Brick on.short[]
readBrickletPlugin(char port, short offset)
Reads 32 bytes of firmware from the bricklet attached at the given port.void
removeAccelerationListener(BrickIMU.AccelerationListener listener)
Removes a Acceleration listener.void
removeAllDataListener(BrickIMU.AllDataListener listener)
Removes a AllData listener.void
removeAngularVelocityListener(BrickIMU.AngularVelocityListener listener)
Removes a AngularVelocity listener.void
removeMagneticFieldListener(BrickIMU.MagneticFieldListener listener)
Removes a MagneticField listener.void
removeOrientationListener(BrickIMU.OrientationListener listener)
Removes a Orientation listener.void
removeQuaternionListener(BrickIMU.QuaternionListener listener)
Removes a Quaternion listener.void
reset()
Calling this function will reset the Brick.void
setAccelerationPeriod(long period)
Sets the period with which theBrickIMU.AccelerationListener
listener is triggered periodically.void
setAccelerationRange(short range)
Not implemented yet.void
setAllDataPeriod(long period)
Sets the period with which theBrickIMU.AllDataListener
listener is triggered periodically.void
setAngularVelocityPeriod(long period)
Sets the period with which theBrickIMU.AngularVelocityListener
listener is triggered periodically.void
setCalibration(short typ, short[] data)
There are several different types that can be calibrated: \verbatim "Type", "Description", "Values" "0", "Accelerometer Gain", "``[mul x, mul y, mul z, div x, div y, div z, 0, 0, 0, 0]``" "1", "Accelerometer Bias", "``[bias x, bias y, bias z, 0, 0, 0, 0, 0, 0, 0]``" "2", "Magnetometer Gain", "``[mul x, mul y, mul z, div x, div y, div z, 0, 0, 0, 0]``" "3", "Magnetometer Bias", "``[bias x, bias y, bias z, 0, 0, 0, 0, 0, 0, 0]``" "4", "Gyroscope Gain", "``[mul x, mul y, mul z, div x, div y, div z, 0, 0, 0, 0]``" "5", "Gyroscope Bias", "``[bias xl, bias yl, bias zl, temp l, bias xh, bias yh, bias zh, temp h, 0, 0]``" \endverbatim The calibration via gain and bias is done with the following formula:: new_value = (bias + orig_value) * gain_mul / gain_div If you really want to write your own calibration software, please keep in mind that you first have to undo the old calibration (set bias to 0 and gain to 1/1) and that you have to average over several thousand values to obtain a usable result in the end.void
setConvergenceSpeed(int speed)
Sets the convergence speed of the IMU Brick.void
setMagneticFieldPeriod(long period)
Sets the period with which theBrickIMU.MagneticFieldListener
listener is triggered periodically.void
setMagnetometerRange(short range)
Not implemented yet.void
setOrientationPeriod(long period)
Sets the period with which theBrickIMU.OrientationListener
listener is triggered periodically.void
setQuaternionPeriod(long period)
Sets the period with which theBrickIMU.QuaternionListener
listener is triggered periodically.void
setSPITFPBaudrate(char brickletPort, long baudrate)
Sets the baudrate for a specific Bricklet port.void
setSPITFPBaudrateConfig(boolean enableDynamicBaudrate, long minimumDynamicBaudrate)
The SPITF protocol can be used with a dynamic baudrate.void
writeBrickletPlugin(char port, short offset, short[] chunk)
Writes 32 bytes of firmware to the bricklet attached at the given port.-
Methods inherited from class com.tinkerforge.DeviceBase
getAPIVersion, getResponseExpected, setResponseExpected, setResponseExpectedAll
-
-
-
-
Field Detail
-
DEVICE_IDENTIFIER
public static final int DEVICE_IDENTIFIER
- See Also:
- Constant Field Values
-
DEVICE_DISPLAY_NAME
public static final java.lang.String DEVICE_DISPLAY_NAME
- See Also:
- Constant Field Values
-
FUNCTION_GET_ACCELERATION
public static final byte FUNCTION_GET_ACCELERATION
- See Also:
- Constant Field Values
-
FUNCTION_GET_MAGNETIC_FIELD
public static final byte FUNCTION_GET_MAGNETIC_FIELD
- See Also:
- Constant Field Values
-
FUNCTION_GET_ANGULAR_VELOCITY
public static final byte FUNCTION_GET_ANGULAR_VELOCITY
- See Also:
- Constant Field Values
-
FUNCTION_GET_ALL_DATA
public static final byte FUNCTION_GET_ALL_DATA
- See Also:
- Constant Field Values
-
FUNCTION_GET_ORIENTATION
public static final byte FUNCTION_GET_ORIENTATION
- See Also:
- Constant Field Values
-
FUNCTION_GET_QUATERNION
public static final byte FUNCTION_GET_QUATERNION
- See Also:
- Constant Field Values
-
FUNCTION_GET_IMU_TEMPERATURE
public static final byte FUNCTION_GET_IMU_TEMPERATURE
- See Also:
- Constant Field Values
-
FUNCTION_LEDS_ON
public static final byte FUNCTION_LEDS_ON
- See Also:
- Constant Field Values
-
FUNCTION_LEDS_OFF
public static final byte FUNCTION_LEDS_OFF
- See Also:
- Constant Field Values
-
FUNCTION_ARE_LEDS_ON
public static final byte FUNCTION_ARE_LEDS_ON
- See Also:
- Constant Field Values
-
FUNCTION_SET_ACCELERATION_RANGE
public static final byte FUNCTION_SET_ACCELERATION_RANGE
- See Also:
- Constant Field Values
-
FUNCTION_GET_ACCELERATION_RANGE
public static final byte FUNCTION_GET_ACCELERATION_RANGE
- See Also:
- Constant Field Values
-
FUNCTION_SET_MAGNETOMETER_RANGE
public static final byte FUNCTION_SET_MAGNETOMETER_RANGE
- See Also:
- Constant Field Values
-
FUNCTION_GET_MAGNETOMETER_RANGE
public static final byte FUNCTION_GET_MAGNETOMETER_RANGE
- See Also:
- Constant Field Values
-
FUNCTION_SET_CONVERGENCE_SPEED
public static final byte FUNCTION_SET_CONVERGENCE_SPEED
- See Also:
- Constant Field Values
-
FUNCTION_GET_CONVERGENCE_SPEED
public static final byte FUNCTION_GET_CONVERGENCE_SPEED
- See Also:
- Constant Field Values
-
FUNCTION_SET_CALIBRATION
public static final byte FUNCTION_SET_CALIBRATION
- See Also:
- Constant Field Values
-
FUNCTION_GET_CALIBRATION
public static final byte FUNCTION_GET_CALIBRATION
- See Also:
- Constant Field Values
-
FUNCTION_SET_ACCELERATION_PERIOD
public static final byte FUNCTION_SET_ACCELERATION_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_GET_ACCELERATION_PERIOD
public static final byte FUNCTION_GET_ACCELERATION_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_SET_MAGNETIC_FIELD_PERIOD
public static final byte FUNCTION_SET_MAGNETIC_FIELD_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_GET_MAGNETIC_FIELD_PERIOD
public static final byte FUNCTION_GET_MAGNETIC_FIELD_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_SET_ANGULAR_VELOCITY_PERIOD
public static final byte FUNCTION_SET_ANGULAR_VELOCITY_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_GET_ANGULAR_VELOCITY_PERIOD
public static final byte FUNCTION_GET_ANGULAR_VELOCITY_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_SET_ALL_DATA_PERIOD
public static final byte FUNCTION_SET_ALL_DATA_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_GET_ALL_DATA_PERIOD
public static final byte FUNCTION_GET_ALL_DATA_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_SET_ORIENTATION_PERIOD
public static final byte FUNCTION_SET_ORIENTATION_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_GET_ORIENTATION_PERIOD
public static final byte FUNCTION_GET_ORIENTATION_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_SET_QUATERNION_PERIOD
public static final byte FUNCTION_SET_QUATERNION_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_GET_QUATERNION_PERIOD
public static final byte FUNCTION_GET_QUATERNION_PERIOD
- See Also:
- Constant Field Values
-
FUNCTION_ORIENTATION_CALCULATION_ON
public static final byte FUNCTION_ORIENTATION_CALCULATION_ON
- See Also:
- Constant Field Values
-
FUNCTION_ORIENTATION_CALCULATION_OFF
public static final byte FUNCTION_ORIENTATION_CALCULATION_OFF
- See Also:
- Constant Field Values
-
FUNCTION_IS_ORIENTATION_CALCULATION_ON
public static final byte FUNCTION_IS_ORIENTATION_CALCULATION_ON
- See Also:
- Constant Field Values
-
FUNCTION_SET_SPITFP_BAUDRATE_CONFIG
public static final byte FUNCTION_SET_SPITFP_BAUDRATE_CONFIG
- See Also:
- Constant Field Values
-
FUNCTION_GET_SPITFP_BAUDRATE_CONFIG
public static final byte FUNCTION_GET_SPITFP_BAUDRATE_CONFIG
- See Also:
- Constant Field Values
-
FUNCTION_GET_SEND_TIMEOUT_COUNT
public static final byte FUNCTION_GET_SEND_TIMEOUT_COUNT
- See Also:
- Constant Field Values
-
FUNCTION_SET_SPITFP_BAUDRATE
public static final byte FUNCTION_SET_SPITFP_BAUDRATE
- See Also:
- Constant Field Values
-
FUNCTION_GET_SPITFP_BAUDRATE
public static final byte FUNCTION_GET_SPITFP_BAUDRATE
- See Also:
- Constant Field Values
-
FUNCTION_GET_SPITFP_ERROR_COUNT
public static final byte FUNCTION_GET_SPITFP_ERROR_COUNT
- See Also:
- Constant Field Values
-
FUNCTION_ENABLE_STATUS_LED
public static final byte FUNCTION_ENABLE_STATUS_LED
- See Also:
- Constant Field Values
-
FUNCTION_DISABLE_STATUS_LED
public static final byte FUNCTION_DISABLE_STATUS_LED
- See Also:
- Constant Field Values
-
FUNCTION_IS_STATUS_LED_ENABLED
public static final byte FUNCTION_IS_STATUS_LED_ENABLED
- See Also:
- Constant Field Values
-
FUNCTION_GET_PROTOCOL1_BRICKLET_NAME
public static final byte FUNCTION_GET_PROTOCOL1_BRICKLET_NAME
- See Also:
- Constant Field Values
-
FUNCTION_GET_CHIP_TEMPERATURE
public static final byte FUNCTION_GET_CHIP_TEMPERATURE
- See Also:
- Constant Field Values
-
FUNCTION_RESET
public static final byte FUNCTION_RESET
- See Also:
- Constant Field Values
-
FUNCTION_WRITE_BRICKLET_PLUGIN
public static final byte FUNCTION_WRITE_BRICKLET_PLUGIN
- See Also:
- Constant Field Values
-
FUNCTION_READ_BRICKLET_PLUGIN
public static final byte FUNCTION_READ_BRICKLET_PLUGIN
- See Also:
- Constant Field Values
-
FUNCTION_GET_IDENTITY
public static final byte FUNCTION_GET_IDENTITY
- See Also:
- Constant Field Values
-
CALIBRATION_TYPE_ACCELEROMETER_GAIN
public static final short CALIBRATION_TYPE_ACCELEROMETER_GAIN
- See Also:
- Constant Field Values
-
CALIBRATION_TYPE_ACCELEROMETER_BIAS
public static final short CALIBRATION_TYPE_ACCELEROMETER_BIAS
- See Also:
- Constant Field Values
-
CALIBRATION_TYPE_MAGNETOMETER_GAIN
public static final short CALIBRATION_TYPE_MAGNETOMETER_GAIN
- See Also:
- Constant Field Values
-
CALIBRATION_TYPE_MAGNETOMETER_BIAS
public static final short CALIBRATION_TYPE_MAGNETOMETER_BIAS
- See Also:
- Constant Field Values
-
CALIBRATION_TYPE_GYROSCOPE_GAIN
public static final short CALIBRATION_TYPE_GYROSCOPE_GAIN
- See Also:
- Constant Field Values
-
CALIBRATION_TYPE_GYROSCOPE_BIAS
public static final short CALIBRATION_TYPE_GYROSCOPE_BIAS
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_NONE
public static final short COMMUNICATION_METHOD_NONE
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_USB
public static final short COMMUNICATION_METHOD_USB
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_SPI_STACK
public static final short COMMUNICATION_METHOD_SPI_STACK
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_CHIBI
public static final short COMMUNICATION_METHOD_CHIBI
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_RS485
public static final short COMMUNICATION_METHOD_RS485
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_WIFI
public static final short COMMUNICATION_METHOD_WIFI
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_ETHERNET
public static final short COMMUNICATION_METHOD_ETHERNET
- See Also:
- Constant Field Values
-
COMMUNICATION_METHOD_WIFI_V2
public static final short COMMUNICATION_METHOD_WIFI_V2
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
BrickIMU
public BrickIMU(java.lang.String uid, IPConnection ipcon)
Creates an object with the unique device ID \c uid. and adds it to the IP Connection \c ipcon.
-
-
Method Detail
-
getAcceleration
public BrickIMU.Acceleration getAcceleration() throws TinkerforgeException
Returns the calibrated acceleration from the accelerometer for the x, y and z axis. If you want to get the acceleration periodically, it is recommended to use theBrickIMU.AccelerationListener
listener and set the period withsetAccelerationPeriod(long)
.- Throws:
TinkerforgeException
-
getMagneticField
public BrickIMU.MagneticField getMagneticField() throws TinkerforgeException
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 theBrickIMU.MagneticFieldListener
listener and set the period withsetMagneticFieldPeriod(long)
.- Throws:
TinkerforgeException
-
getAngularVelocity
public BrickIMU.AngularVelocity getAngularVelocity() throws TinkerforgeException
Returns the calibrated angular velocity from the gyroscope for the x, y and z axis in °/14.375s (you have to divide by 14.375 to get the value in °/s). If you want to get the angular velocity periodically, it is recommended to use theBrickIMU.AngularVelocityListener
listener and set the period withsetAngularVelocityPeriod(long)
.- Throws:
TinkerforgeException
-
getAllData
public BrickIMU.AllData getAllData() throws TinkerforgeException
Returns the data fromgetAcceleration()
,getMagneticField()
andgetAngularVelocity()
as well as the temperature of the IMU Brick. If you want to get the data periodically, it is recommended to use theBrickIMU.AllDataListener
listener and set the period withsetAllDataPeriod(long)
.- Throws:
TinkerforgeException
-
getOrientation
public BrickIMU.Orientation getOrientation() throws TinkerforgeException
Returns the current orientation (roll, pitch, yaw) of the IMU Brick as Euler angles. Note that Euler angles always experience a `gimbal lock <https://en.wikipedia.org/wiki/Gimbal_lock>`__. We recommend that you use quaternions instead. The order to sequence in which the orientation values should be applied is roll, yaw, pitch. If you want to get the orientation periodically, it is recommended to use theBrickIMU.OrientationListener
listener and set the period withsetOrientationPeriod(long)
.- Throws:
TinkerforgeException
-
getQuaternion
public BrickIMU.Quaternion getQuaternion() throws TinkerforgeException
Returns the current orientation (x, y, z, w) of the IMU as `quaternions <https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation>`__. You can go from quaternions to Euler angles with the following formula:: xAngle = atan2(2*y*w - 2*x*z, 1 - 2*y*y - 2*z*z) yAngle = atan2(2*x*w - 2*y*z, 1 - 2*x*x - 2*z*z) zAngle = asin(2*x*y + 2*z*w) This process is not reversible, because of the `gimbal lock <https://en.wikipedia.org/wiki/Gimbal_lock>`__. It is also possible to calculate independent angles. You can calculate yaw, pitch and roll in a right-handed vehicle coordinate system according to DIN70000 with:: yaw = atan2(2*x*y + 2*w*z, w*w + x*x - y*y - z*z) pitch = -asin(2*w*y - 2*x*z) roll = -atan2(2*y*z + 2*w*x, -w*w + x*x + y*y - z*z)) Converting the quaternions to an OpenGL transformation matrix is possible with the following formula:: matrix = [[1 - 2*(y*y + z*z), 2*(x*y - w*z), 2*(x*z + w*y), 0], [ 2*(x*y + w*z), 1 - 2*(x*x + z*z), 2*(y*z - w*x), 0], [ 2*(x*z - w*y), 2*(y*z + w*x), 1 - 2*(x*x + y*y), 0], [ 0, 0, 0, 1]] If you want to get the quaternions periodically, it is recommended to use theBrickIMU.QuaternionListener
listener and set the period withsetQuaternionPeriod(long)
.- Throws:
TinkerforgeException
-
getIMUTemperature
public short getIMUTemperature() throws TinkerforgeException
Returns the temperature of the IMU Brick.- Throws:
TinkerforgeException
-
ledsOn
public void ledsOn() throws TinkerforgeException
Turns the orientation and direction LEDs of the IMU Brick on.- Throws:
TinkerforgeException
-
ledsOff
public void ledsOff() throws TinkerforgeException
Turns the orientation and direction LEDs of the IMU Brick off.- Throws:
TinkerforgeException
-
areLedsOn
public boolean areLedsOn() throws TinkerforgeException
Returns *true* if the orientation and direction LEDs of the IMU Brick are on, *false* otherwise.- Throws:
TinkerforgeException
-
setAccelerationRange
public void setAccelerationRange(short range) throws TinkerforgeException
Not implemented yet.- Throws:
TinkerforgeException
-
getAccelerationRange
public short getAccelerationRange() throws TinkerforgeException
Not implemented yet.- Throws:
TinkerforgeException
-
setMagnetometerRange
public void setMagnetometerRange(short range) throws TinkerforgeException
Not implemented yet.- Throws:
TinkerforgeException
-
getMagnetometerRange
public short getMagnetometerRange() throws TinkerforgeException
Not implemented yet.- Throws:
TinkerforgeException
-
setConvergenceSpeed
public void setConvergenceSpeed(int speed) throws TinkerforgeException
Sets the convergence speed of the IMU Brick. The convergence speed determines how the different sensor measurements are fused. If the orientation of the IMU Brick is off by 10° and the convergence speed is set to 20°/s, it will take 0.5s until the orientation is corrected. However, if the correct orientation is reached and the convergence speed is too high, the orientation will fluctuate with the fluctuations of the accelerometer and the magnetometer. If you set the convergence speed to 0, practically only the gyroscope is used to calculate the orientation. This gives very smooth movements, but errors of the gyroscope will not be corrected. If you set the convergence speed to something above 500, practically only the magnetometer and the accelerometer are used to calculate the orientation. In this case the movements are abrupt and the values will fluctuate, but there won't be any errors that accumulate over time. In an application with high angular velocities, we recommend a high convergence speed, so the errors of the gyroscope can be corrected fast. In applications with only slow movements we recommend a low convergence speed. You can change the convergence speed on the fly. So it is possible (and recommended) to increase the convergence speed before an abrupt movement and decrease it afterwards again. You might want to play around with the convergence speed in the Brick Viewer to get a feeling for a good value for your application.- Throws:
TinkerforgeException
-
getConvergenceSpeed
public int getConvergenceSpeed() throws TinkerforgeException
Returns the convergence speed as set bysetConvergenceSpeed(int)
.- Throws:
TinkerforgeException
-
setCalibration
public void setCalibration(short typ, short[] data) throws TinkerforgeException
There are several different types that can be calibrated: \verbatim "Type", "Description", "Values" "0", "Accelerometer Gain", "``[mul x, mul y, mul z, div x, div y, div z, 0, 0, 0, 0]``" "1", "Accelerometer Bias", "``[bias x, bias y, bias z, 0, 0, 0, 0, 0, 0, 0]``" "2", "Magnetometer Gain", "``[mul x, mul y, mul z, div x, div y, div z, 0, 0, 0, 0]``" "3", "Magnetometer Bias", "``[bias x, bias y, bias z, 0, 0, 0, 0, 0, 0, 0]``" "4", "Gyroscope Gain", "``[mul x, mul y, mul z, div x, div y, div z, 0, 0, 0, 0]``" "5", "Gyroscope Bias", "``[bias xl, bias yl, bias zl, temp l, bias xh, bias yh, bias zh, temp h, 0, 0]``" \endverbatim The calibration via gain and bias is done with the following formula:: new_value = (bias + orig_value) * gain_mul / gain_div If you really want to write your own calibration software, please keep in mind that you first have to undo the old calibration (set bias to 0 and gain to 1/1) and that you have to average over several thousand values to obtain a usable result in the end. The gyroscope bias is highly dependent on the temperature, so you have to calibrate the bias two times with different temperatures. The values ``xl``, ``yl``, ``zl`` and ``temp l`` are the bias for ``x``, ``y``, ``z`` and the corresponding temperature for a low temperature. The values ``xh``, ``yh``, ``zh`` and ``temp h`` are the same for a high temperatures. The temperature difference should be at least 5°C. If you have a temperature where the IMU Brick is mostly used, you should use this temperature for one of the sampling points. \note We highly recommend that you use the Brick Viewer to calibrate your IMU Brick.- Throws:
TinkerforgeException
-
getCalibration
public short[] getCalibration(short typ) throws TinkerforgeException
Returns the calibration for a given type as set bysetCalibration(short, short[])
.- Throws:
TinkerforgeException
-
setAccelerationPeriod
public void setAccelerationPeriod(long period) throws TinkerforgeException
Sets the period with which theBrickIMU.AccelerationListener
listener is triggered periodically. A value of 0 turns the listener off.- Throws:
TinkerforgeException
-
getAccelerationPeriod
public long getAccelerationPeriod() throws TinkerforgeException
Returns the period as set bysetAccelerationPeriod(long)
.- Throws:
TinkerforgeException
-
setMagneticFieldPeriod
public void setMagneticFieldPeriod(long period) throws TinkerforgeException
Sets the period with which theBrickIMU.MagneticFieldListener
listener is triggered periodically. A value of 0 turns the listener off.- Throws:
TinkerforgeException
-
getMagneticFieldPeriod
public long getMagneticFieldPeriod() throws TinkerforgeException
Returns the period as set bysetMagneticFieldPeriod(long)
.- Throws:
TinkerforgeException
-
setAngularVelocityPeriod
public void setAngularVelocityPeriod(long period) throws TinkerforgeException
Sets the period with which theBrickIMU.AngularVelocityListener
listener is triggered periodically. A value of 0 turns the listener off.- Throws:
TinkerforgeException
-
getAngularVelocityPeriod
public long getAngularVelocityPeriod() throws TinkerforgeException
Returns the period as set bysetAngularVelocityPeriod(long)
.- Throws:
TinkerforgeException
-
setAllDataPeriod
public void setAllDataPeriod(long period) throws TinkerforgeException
Sets the period with which theBrickIMU.AllDataListener
listener is triggered periodically. A value of 0 turns the listener off.- Throws:
TinkerforgeException
-
getAllDataPeriod
public long getAllDataPeriod() throws TinkerforgeException
Returns the period as set bysetAllDataPeriod(long)
.- Throws:
TinkerforgeException
-
setOrientationPeriod
public void setOrientationPeriod(long period) throws TinkerforgeException
Sets the period with which theBrickIMU.OrientationListener
listener is triggered periodically. A value of 0 turns the listener off.- Throws:
TinkerforgeException
-
getOrientationPeriod
public long getOrientationPeriod() throws TinkerforgeException
Returns the period as set bysetOrientationPeriod(long)
.- Throws:
TinkerforgeException
-
setQuaternionPeriod
public void setQuaternionPeriod(long period) throws TinkerforgeException
Sets the period with which theBrickIMU.QuaternionListener
listener is triggered periodically. A value of 0 turns the listener off.- Throws:
TinkerforgeException
-
getQuaternionPeriod
public long getQuaternionPeriod() throws TinkerforgeException
Returns the period as set bysetQuaternionPeriod(long)
.- Throws:
TinkerforgeException
-
orientationCalculationOn
public void orientationCalculationOn() throws TinkerforgeException
Turns the orientation calculation of the IMU Brick on. As default the calculation is on. .. versionadded:: 2.0.2$nbsp;(Firmware)- Throws:
TinkerforgeException
-
orientationCalculationOff
public void orientationCalculationOff() throws TinkerforgeException
Turns the orientation calculation of the IMU Brick off. If the calculation is off,getOrientation()
will return the last calculated value until the calculation is turned on again. The trigonometric functions that are needed to calculate the orientation are very expensive. We recommend to turn the orientation calculation off if the orientation is not needed, to free calculation time for the sensor fusion algorithm. As default the calculation is on. .. versionadded:: 2.0.2$nbsp;(Firmware)- Throws:
TinkerforgeException
-
isOrientationCalculationOn
public boolean isOrientationCalculationOn() throws TinkerforgeException
Returns *true* if the orientation calculation of the IMU Brick is on, *false* otherwise. .. versionadded:: 2.0.2$nbsp;(Firmware)- Throws:
TinkerforgeException
-
setSPITFPBaudrateConfig
public void setSPITFPBaudrateConfig(boolean enableDynamicBaudrate, long minimumDynamicBaudrate) throws TinkerforgeException
The SPITF protocol can be used with a dynamic baudrate. If the dynamic baudrate is enabled, the Brick will try to adapt the baudrate for the communication between Bricks and Bricklets according to the amount of data that is transferred. The baudrate will be increased exponentially if lots of data is sent/received and decreased linearly if little data is sent/received. This lowers the baudrate in applications where little data is transferred (e.g. a weather station) and increases the robustness. If there is lots of data to transfer (e.g. Thermal Imaging Bricklet) it automatically increases the baudrate as needed. In cases where some data has to transferred as fast as possible every few seconds (e.g. RS485 Bricklet with a high baudrate but small payload) you may want to turn the dynamic baudrate off to get the highest possible performance. The maximum value of the baudrate can be set per port with the functionsetSPITFPBaudrate(char, long)
. If the dynamic baudrate is disabled, the baudrate as set bysetSPITFPBaudrate(char, long)
will be used statically. .. versionadded:: 2.3.5$nbsp;(Firmware)- Throws:
TinkerforgeException
-
getSPITFPBaudrateConfig
public BrickIMU.SPITFPBaudrateConfig getSPITFPBaudrateConfig() throws TinkerforgeException
Returns the baudrate config, seesetSPITFPBaudrateConfig(boolean, long)
. .. versionadded:: 2.3.5$nbsp;(Firmware)- Throws:
TinkerforgeException
-
getSendTimeoutCount
public long getSendTimeoutCount(short communicationMethod) throws TinkerforgeException
Returns the timeout count for the different communication methods. The methods 0-2 are available for all Bricks, 3-7 only for Master Bricks. This function is mostly used for debugging during development, in normal operation the counters should nearly always stay at 0. .. versionadded:: 2.3.3$nbsp;(Firmware)- Throws:
TinkerforgeException
-
setSPITFPBaudrate
public void setSPITFPBaudrate(char brickletPort, long baudrate) throws TinkerforgeException
Sets the baudrate for a specific Bricklet port. If you want to increase the throughput of Bricklets you can increase the baudrate. If you get a high error count because of high interference (seegetSPITFPErrorCount(char)
) you can decrease the baudrate. If the dynamic baudrate feature is enabled, the baudrate set by this function corresponds to the maximum baudrate (seesetSPITFPBaudrateConfig(boolean, long)
). Regulatory testing is done with the default baudrate. If CE compatibility or similar is necessary in your applications we recommend to not change the baudrate. .. versionadded:: 2.3.3$nbsp;(Firmware)- Throws:
TinkerforgeException
-
getSPITFPBaudrate
public long getSPITFPBaudrate(char brickletPort) throws TinkerforgeException
Returns the baudrate for a given Bricklet port, seesetSPITFPBaudrate(char, long)
. .. versionadded:: 2.3.3$nbsp;(Firmware)- Throws:
TinkerforgeException
-
getSPITFPErrorCount
public BrickIMU.SPITFPErrorCount getSPITFPErrorCount(char brickletPort) throws TinkerforgeException
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 Brick side. All Bricklets have a similar function that returns the errors on the Bricklet side. .. versionadded:: 2.3.3$nbsp;(Firmware)- Throws:
TinkerforgeException
-
enableStatusLED
public void enableStatusLED() throws TinkerforgeException
Enables the status LED. The status LED is the blue LED next to the USB connector. If enabled is is on and it flickers if data is transfered. If disabled it is always off. The default state is enabled. .. versionadded:: 2.3.1$nbsp;(Firmware)- Throws:
TinkerforgeException
-
disableStatusLED
public void disableStatusLED() throws TinkerforgeException
Disables the status LED. The status LED is the blue LED next to the USB connector. If enabled is is on and it flickers if data is transfered. If disabled it is always off. The default state is enabled. .. versionadded:: 2.3.1$nbsp;(Firmware)- Throws:
TinkerforgeException
-
isStatusLEDEnabled
public boolean isStatusLEDEnabled() throws TinkerforgeException
Returns *true* if the status LED is enabled, *false* otherwise. .. versionadded:: 2.3.1$nbsp;(Firmware)- Throws:
TinkerforgeException
-
getProtocol1BrickletName
public BrickIMU.Protocol1BrickletName getProtocol1BrickletName(char port) throws TinkerforgeException
Returns the firmware and protocol version and the name of the Bricklet for a given port. This functions sole purpose is to allow automatic flashing of v1.x.y Bricklet plugins.- Throws:
TinkerforgeException
-
getChipTemperature
public short getChipTemperature() throws TinkerforgeException
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 an accuracy of ±15%. Practically it is only useful as an indicator for temperature changes.- Throws:
TinkerforgeException
-
reset
public void reset() throws TinkerforgeException
Calling this function will reset the Brick. Calling this function on a Brick inside of a stack will reset the whole stack. After a reset you have to create new device objects, calling functions on the existing ones will result in undefined behavior!- Throws:
TinkerforgeException
-
writeBrickletPlugin
public void writeBrickletPlugin(char port, short offset, short[] chunk) throws TinkerforgeException
Writes 32 bytes of firmware to the bricklet attached at the given port. The bytes are written to the position offset * 32. This function is used by Brick Viewer during flashing. It should not be necessary to call it in a normal user program.- Throws:
TinkerforgeException
-
readBrickletPlugin
public short[] readBrickletPlugin(char port, short offset) throws TinkerforgeException
Reads 32 bytes of firmware from the bricklet attached at the given port. The bytes are read starting at the position offset * 32. This function is used by Brick Viewer during flashing. It should not be necessary to call it in a normal user program.- Throws:
TinkerforgeException
-
getIdentity
public Device.Identity getIdentity() throws TinkerforgeException
Returns the UID, the UID where the Brick is connected to, the position, the hardware and firmware version as well as the device identifier. The position is the position in the stack from '0' (bottom) to '8' (top). The device identifier numbers can be found :ref:`here <device_identifier>`. |device_identifier_constant|- Specified by:
getIdentity
in classDevice
- Throws:
TinkerforgeException
-
addAccelerationListener
public void addAccelerationListener(BrickIMU.AccelerationListener listener)
Adds a Acceleration listener.
-
removeAccelerationListener
public void removeAccelerationListener(BrickIMU.AccelerationListener listener)
Removes a Acceleration listener.
-
addMagneticFieldListener
public void addMagneticFieldListener(BrickIMU.MagneticFieldListener listener)
Adds a MagneticField listener.
-
removeMagneticFieldListener
public void removeMagneticFieldListener(BrickIMU.MagneticFieldListener listener)
Removes a MagneticField listener.
-
addAngularVelocityListener
public void addAngularVelocityListener(BrickIMU.AngularVelocityListener listener)
Adds a AngularVelocity listener.
-
removeAngularVelocityListener
public void removeAngularVelocityListener(BrickIMU.AngularVelocityListener listener)
Removes a AngularVelocity listener.
-
addAllDataListener
public void addAllDataListener(BrickIMU.AllDataListener listener)
Adds a AllData listener.
-
removeAllDataListener
public void removeAllDataListener(BrickIMU.AllDataListener listener)
Removes a AllData listener.
-
addOrientationListener
public void addOrientationListener(BrickIMU.OrientationListener listener)
Adds a Orientation listener.
-
removeOrientationListener
public void removeOrientationListener(BrickIMU.OrientationListener listener)
Removes a Orientation listener.
-
addQuaternionListener
public void addQuaternionListener(BrickIMU.QuaternionListener listener)
Adds a Quaternion listener.
-
removeQuaternionListener
public void removeQuaternionListener(BrickIMU.QuaternionListener listener)
Removes a Quaternion listener.
-
-