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

IMU convention for robot_localization

asked 2017-08-17 05:06:31 -0600

MIN LATT gravatar image

updated 2017-08-22 05:12:50 -0600

Tom Moore gravatar image

Hi all, I am trying to use one IMU in robot_localization. I am confusing with IMU convention.The symbol in my IMU is as shown in the following figure.

image description

Can I assume that IMU is in ENU format if I make the IMU X direction as the forward direction of the robot?

If my robot is stationary in the flat surface, what should be my linear acceleration value in z direction ? -9.8 or +9.8?

Best Regards Min Latt

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
3

answered 2017-08-18 05:26:17 -0600

updated 2017-08-23 03:20:25 -0600

ENU means that the reference frame with respect to which the IMU's orientation is reported is oriented X=East, Y=North, Z=Up. So when the linear acceleration value reads (0, 0, +9.8), i.e. "z is up", and the magnetometer reads (0, +, *) (i.e., "north is east", the orientation reported by the IMU should be neutral (roll/pitch/yaw all 0, quaternion = (0, 0, 0, 1)).

If you don't use a magnetometer, just ignore that part.

If your IMU doesn't provide an orientation, you'll have to use a package like imu_filter_madgwick with the parameter use_enu = true.

Edit to clarify magnetometer readings: Let's say the IMU uses an ENU reference frame and is in the neutral orientation, i.e. the IMU's x axis points east, y=north, z=up. Then the magnetometer should read (0.0, 0.00005, -0.00005), or short (0, +, -). In other words, the earth magnetic field points north (+ towards the y axis) and down (- on the z axis). In the southern hemisphere, it's (0, +, +), i.e. the magnetic field points north and up. That's why I wrote (0, +, *) above: the magnetometer should read 0 on the x axis and positive on the y axis, don't care about the z axis.

That said, just ignore the magnetometer at first. The robot_localization package works fine without it, and magnetometers are mostly useless on indoor robots anyway.

edit flag offensive delete link more

Comments

Hi , Thanks for your answer although I am still learning how to interpret the magnetometer reading. Best Regards Min Latt

MIN LATT gravatar image MIN LATT  ( 2017-08-23 01:38:12 -0600 )edit

I've updated my answer!

Martin Günther gravatar image Martin Günther  ( 2017-08-23 03:20:43 -0600 )edit

Hi, Thanks a lot for your clear explanation. Based on your explanation, my understanding is that I need to align IMU x-axis to the east direction of the compass. Although it can be done using compass, is it really necessary? Because i am afraid that there will be some error margin if I align it

MIN LATT gravatar image MIN LATT  ( 2017-08-23 04:57:01 -0600 )edit

I'm not sure what you want to do. Do you want to find out whether your IMU follows the ENU convention? Or where the axes are? If so, rotate your IMU until it reports a neutral orientation (i.e., quaternion is 0,0,0,1) and look at the magnetometer topic.

Martin Günther gravatar image Martin Günther  ( 2017-08-23 05:22:27 -0600 )edit

Hi, I am very sorry for making you confuse. I think I need to ask different question. Thanks a lot for your explanation.

MIN LATT gravatar image MIN LATT  ( 2017-08-23 05:46:02 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2017-08-17 05:06:31 -0600

Seen: 2,285 times

Last updated: Aug 23 '17