ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

Fully agree with all of your points.

Perhaps you could also have a look at the imu_tools/imu_filter_madgwick package. You only need to provide the angular velocity and linear acceleration values from your device (optionally also magnetometer readings), and they will be fused to arrive at an orientation that follows the standards you outlined above.

Fully agree with all of your points.

Perhaps you could also have a look at the imu_tools/imu_filter_madgwick package. You only need to provide the angular velocity and linear acceleration values from your device (optionally also magnetometer readings), and they will be fused to arrive at an orientation that follows the standards you outlined above.

Edit in response to Alex's comment:

I guess there's something wrong with what you visualize, but to be sure, I first tested that the IMU I use (Phidgets Spatial 3/3/3) actually follows the conventions you outlined, and it does (all on the imu/data_raw topic):

angular_velcocity:

  • Rotation about the Y axis (pitch motion) is positive in the nose down direction.
  • Rotation about the X axis (roll motion) is positive for right side down motion.
  • Rotation about the Z axis (yaw) should is for CCW rotation looking down on the vehicle.

linear_acceleration:

  • When stationary, x and y are around 0, z is around +9.8. All increase when jerked into the direction of their respective axis.

This leaves the visualization part. What I do is:

  1. Launch this imu.launch file. The file contains both the IMU driver and the imu filter node. Note that I set publish_tf to false, since IIRC it was either wrong or at least misleading, and that I set the fixed frame to imu.
  2. Run rviz, set the fixed frame to imu and add a visualization of type rviz_imu_plugin (part of the imu_tools package). Set imu/data as the input topic.
  3. Run rqt_plot and plot imu/data_raw/angular_velocity and imu/data_raw/linear_acceleration.

Hope this helps!

Fully agree with all of your points.

Perhaps you could also have a look at the imu_tools/imu_filter_madgwick package. You only need to provide the angular velocity and linear acceleration values from your device (optionally also magnetometer readings), and they will be fused to arrive at an orientation that follows the standards you outlined above.

Edit in response to Alex's comment:

I guess there's something wrong with what you visualize, but to be sure, I first tested that the IMU I use (Phidgets Spatial 3/3/3) actually follows the conventions you outlined, and it does (all on the imu/data_raw topic):

angular_velcocity:

  • Rotation about the Y axis (pitch motion) is positive in the nose down direction.
  • Rotation about the X axis (roll motion) is positive for right side down motion.
  • Rotation about the Z axis (yaw) should is positive for CCW rotation looking down on the vehicle.

linear_acceleration:

  • When stationary, x and y are around 0, z is around +9.8. All increase when jerked into the direction of their respective axis.

This leaves the visualization part. What I do is:

  1. Launch this imu.launch file. The file contains both the IMU driver and the imu filter node. Note that I set publish_tf to false, since IIRC it was either wrong or at least misleading, and that I set the fixed frame to imu.
  2. Run rviz, set the fixed frame to imu and add a visualization of type rviz_imu_plugin (part of the imu_tools package). Set imu/data as the input topic.
  3. Run rqt_plot and plot imu/data_raw/angular_velocity and imu/data_raw/linear_acceleration.

Hope this helps!