Skip to content

ROS wrapper for the family of IMU sensor devices manufactured by Witmotion Ltd.

License

Notifications You must be signed in to change notification settings

zacharykratochvil/witmotion_IMU_ros

 
 

Repository files navigation

Witmotion IMU sensor driver for ROS

witmotion_ros module implements a ROS 1 wrapper for Witmotion IMU driver library. It reads the data from the family of TTL-compatible inertial pose estimation units (IMUs) manufactured by WitMotion Shenzhen Co.,Ltd publishing the information in ROS-native way using sensor_msgs and std_msgs message definition packages. The module is focused on read-only access, so calibration and bias regulation functions are implemented in the underlying library. Port access model is implemented in monopolistic way acccording to UNIX specification, so only one instance of the module can be executed for the dedicated virtual device.

The initial tests of the module were done using the following Witmotion sensor devices:

  • WT31N 3-Axis Accelerometer/Gyroscope (Linear accelerations + 2-axis Euler angles gravity tracking)
  • JY901B 9-Axis Combined IMU/Magnetometer/Altimeter (Linear accelerations, angular velocities, Euler angles, magnetic field, barometry, altitude)

All the devices were connected to the machine using USB-TTL converter under reference schematics.

Datasheets and official documentation

The module is developed according to the specifications released by Witmotion, the presented snapshot has download date is 23.02.2022. The official website https://wiki.wit-motion.com is not always accessible, so the PDF snapshots are placed under IPFS web directory:

Usage

roslaunch witmotion_ros witmotion_launch

Configuration

Configuration of the node is done by default via the configuration YAML file config.yml. But it also can be done using roslaunch XML syntax under the node's internal namespace. The single value measurements, like pressure and temperature, are enabled for the linear calibration because there can be differences in decoding coefficients between the sensors (proven for WT31N and JY901B sensors).

Parameters

  • port - the virtual kernel device name for a port, ttyUSB0 by default
  • baud_rate - port rate value to be used by the library for opening the port, 9600 baud by default
  • polling_interval - the sensor polling interval in milliseconds. If this parameter is omitted, the default value is set up by the library (50 ms).
  • restart_service_name - the service name used to restart the sensor connection after an error.
  • imu_publisher:
    • topic_name - the topic name for IMU data publisher, imu in the node's namespace by default
    • frame_id - IMU message header frame ID
    • measurements - every measurement in IMU message data pack can be enabled or disabled. If the measurement is disabled, the corresponding covariance matrix is set to begin from -1 as it is described in the message definition.
      • acceleration
        • enabled
        • covariance - row-major matrix 3x3, all zeros for unknown covariation
      • angular_velocity
        • enabled
        • covariance - row-major matrix 3x3, all zeros for unknown covariation
      • orientation
        • enabled
        • covariance - row-major matrix 3x3, all zeros for unknown covariation
  • temperature_publisher
    • enabled - enable or disable temperature measurement extraction
    • topic_name - the topic name for publishing temperature data
    • frame_id - message header frame ID
    • from_message - the message type string to determine from which type of Witmotion measurement message the temperature data should be extracted (please refer to the original documentation for detailed description). The possible values are: acceleration, angular_vel, orientation or magnetometer.
    • variance - the constant variance, if applicable, otherwise 0
    • coefficient - linear calibration multiplier, 1.0 by default
    • addition - linear calibration addendum, 0 by default
  • magnetometer_publisher
    • enabled - enable or disable magnetometer measurement extraction
    • topic_name - the topic name for publishing the data
    • frame_id - message header frame ID
    • coefficient - linear calibration multiplier, 1.0 by default
    • addition - linear calibration addendum, 0 by default
    • covariance - row-major matrix 3x3, all zeros for unknown covariation
  • barometer_publisher
    • enabled - enable or disable barometer measurement extraction
    • topic_name - the topic name for publishing the data
    • frame_id - message header frame ID
    • coefficient - linear calibration multiplier, 1.0 by default
    • addition - linear calibration addendum, 0 by default
    • variance - the constant variance, if applicable, otherwise 0
  • altimeter_publisher
    • enabled - enable or disable altitude measurement extraction
    • topic_name - the topic name for publishing the data
    • coefficient - linear calibration multiplier, 1.0 by default
    • addition - linear calibration addendum, 0 by default
  • orientation_publisher
    • enabled - enable or disable orientation measurement extraction
    • topic_name - the topic name for publishing the data

About

ROS wrapper for the family of IMU sensor devices manufactured by Witmotion Ltd.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 96.5%
  • CMake 3.5%