/xsens_standalone

Python Standalone library for use with the xsens IMU

Primary LanguagePython

xsens_standalone

This is just a small program that does not depend on the ROS framework that allows for communication with the xsens imus. Most code was taken from ethz-asl/ethzasl_xsens_driver package, but all version of ROS have been removed. In the main script there is a way to specify what measurements should be reported from the IMU. Currently the linear acceleration, angular velocity, magnetometer, and orientation are being recorded.

File overview

  • mtdef.py - Contains all protocol variables needed
  • mtdevice.py - Actual python driver, opens a serial port with the IMU
  • mtnode.py - Wrapper that will try to get a new message from IMU as soon as possible

Configuration

One can configure the IMU using a series of strings. This information can also be found in the bottom of the mtdevice.py file. One can then call mtdevice.get_output_config(args) to get the config file, and then finally configure the IMU by calling SetOutputConfiguration().

The format is a sequence of "<group><type><frequency>?<format>?"
    separated by commas.
    The frequency and format are optional.
    The groups and types can be:
        t  temperature (max frequency: 1 Hz):
            tt  temperature
        i  timestamp (max frequency: 2000 Hz):
            iu  UTC time
            ip  packet counter
            if  sample time fine
            ic  sample time coarse
        o  orientation data (max frequency: 400 Hz):
            oq  quaternion
            om  rotation matrix
            oe  Euler angles
        b  pressure (max frequency: 50 Hz):
            bp  baro pressure
        a  acceleration (max frequency: 2000 Hz (see documentation)):
            ad  delta v
            aa  acceleration
            af  free acceleration
            ah  acceleration HR (max frequency 1000 Hz)
        p  position (max frequency: 400 Hz):
            pa  altitude ellipsoid
            pp  position ECEF
            pl  latitude longitude
        n  GNSS (max frequency: 4 Hz):
            np  GNSS PVT data
            ns  GNSS satellites info
            nu  Gnss Pvt Pulse
        w  angular velocity (max frequency: 2000 Hz (see documentation)):
            wr  rate of turn
            wd  delta q
            wh  rate of turn HR (max frequency 1000 Hz)
        r  Sensor Component Readout (max frequency: 2000 Hz):
            rr  ACC, GYR, MAG, temperature
            rt  Gyro temperatures
        m  Magnetic (max frequency: 100 Hz):
            mf  magnetic Field
        v  Velocity (max frequency: 400 Hz):
            vv  velocity XYZ
        s  Status (max frequency: 2000 Hz):
            sb  status byte
            sw  status word
            sd  DeviceId
            sl  LocationId
    Frequency is specified in decimal and is assumed to be the maximum
    frequency if it is omitted.
    Format is a combination of the precision for real valued numbers and
    coordinate system:
        precision:
            f  single precision floating point number (32-bit) (default)
            d  double precision floating point number (64-bit)
            a  fixed point 12.20 32-bit number (32-bit)
            b  fixed point 16.32 48-bit number (48-bit)
        coordinate system:
            e  East-North-Up (default)
            n  North-East-Down
            w  North-West-Up
    Examples:
        The default configuration for the MTi-1/10/100 IMUs can be
        specified either as:
            "wd,ad,mf,ip,if,sw"
        or
            "wd2000fe,ad2000fe,mf100fe,ip2000,if2000,sw2000"
        For getting quaternion orientation in float with sample time:
            "oq400fw,if2000"
        For longitude, latitude, altitude and orientation (on MTi-G-700):
            "pl400fe,pa400fe,oq400fe"