0
$\begingroup$

Rosanswers logo

I am using the last version of robot_localization.

I have a 3DM-GX3-5 OEM IMU sensor in my robot. I want to remove the effect of gravity in the EKF.

I have set the parameter in the launchfile so to do that. However, my results are not good because (I suppose) the EKF thinks there is some acceleration in Y axis.

I don't know exactcly how does it work, but I can imagine that the filter use the orientation given by the IMU topic to remove the acceleration due to gravity in the 3 axis. If I am right, the problem might be in the orientation calibration.

Any idea of what can be happening?


Originally posted by arenillas on ROS Answers with karma: 223 on 2015-03-10

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

What kind of IMU are you using? Does it conform to the ROS spec? See this page on the wiki, and make sure your IMU behaves as specified.

EDIT: as to how ekf_localization_node handles linear acceleration, it first uses the orientation as reported by that IMU to determine what an IMU at rest would read due to gravitational acceleration. It then removes the appropriate value from each axis.


Originally posted by Tom Moore with karma: 13689 on 2015-03-10

This answer was ACCEPTED on the original site

Post score: 0


Original comments

Comment by arenillas on 2015-03-10:
I am using 3DM-GX3-5 OEM, which is supported in ROS (It has its own drivers). I think the problem is that the magnetometer is not well calibrated becasuse:

  1. The gravity is completely removed in X axis.
  2. In the EKF output, the Vy increases continously

Comment by Tom Moore on 2015-03-11:
Being supported by ROS might not be enough. I'd have to look at the driver, but the Microstrain IMUs report data in NED, and robot_localization assumes ENU. One quick test you can do is to set the IMU flat on a table, face up, and read the Z acceleration. If it's negative, you have a problem.

Comment by Tom Moore on 2015-03-11:
Which driver are you using?

Comment by arenillas on 2015-03-12:
It is positive, because it has the Z axis going down. I am using this driver: http://wiki.ros.org/microstrain_3dmgx2_imu

Comment by Tom Moore on 2015-03-13:
I think that for an ENU sensor, the Z axis points up, and on a flat surface, the acceleration should read +Z. This is because when it's on the ground, the IMU is undergoing acceleration is the direction opposite the gravity vector.

Comment by Tom Moore on 2015-03-13:
Also, see this question, and the fork I created. Our GX-2s were not behaving as I expected, which may have been an issue with our sensors, but I had to make some changes.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.