Inertial measurement unit

This sensor emulates an Inertial Measurement Unit (IMU), measuring the angular velocity and linear acceleration including acceleration due to gravity.

If the robot has a physics controller, the velocities are directly read from it’s properties localAngularVelocity and worldLinearVelocity. Otherwise the velocities are calculated by simple differentiation. Linear acceleration is always computed by differentiation of the linear velocity. The measurements are given in the IMU coordinate system, so the location and rotation of the IMU with respect to the robot is taken into account.

Configuration parameters for inertial measurement unit

No configurable parameter.

Data fields

This sensor exports these datafields at each simulation step:

  • timestamp (float, initial value: 0.0)

    number of milliseconds in simulated time

  • angular_velocity (vec3<float>, initial value: [0.0, 0.0, 0.0])

    rates in IMU x, y, z axes (in radian . sec ^ -1)

  • linear_acceleration (vec3<float>, initial value: [0.0, 0.0, 0.0])

    acceleration in IMU x, y, z axes (in m . sec ^ -2)

Interface support:

Services for Inertial measurement unit

  • get_properties() (blocking)

    Returns the properties of a component.

    • Return value

      a dictionary of the current component’s properties

  • get_configurations() (blocking)

    Returns the configurations of a component (parsed from the properties).

    • Return value

      a dictionary of the current component’s configurations

  • get_local_data() (blocking)

    Returns the current data stored in the sensor.

    • Return value

      a dictionary of the current sensor’s data

Examples

The following examples show how to use this component in a Builder script:

from morse.builder import *

robot = ATRV()

# creates a new instance of the sensor
imu = IMU()

# place your component at the correct location
imu.translate(<x>, <y>, <z>)
imu.rotate(<rx>, <ry>, <rz>)

robot.append(imu)

# define one or several communication interface, like 'socket'
imu.add_interface(<interface>)

env = Environment('empty')

Other sources of examples

(This page has been auto-generated from MORSE module morse.sensors.imu.)