I'm trying to fuse gps and imu data through the robot_localization package. According to the package description, the robot_localization package assumes an ENU frame for IMU data, which I don't understand very well. If IMU data assumes an ENU frame, does it get an absolute orientation value where yaw value becomes 0 when looking east? Also, I'm not sure which sensor to buy for this. Currently I have a 6-axis IMU that publishes only the acceleration and angular velocity values, do I need to buy a new IMU?
-
$\begingroup$ What is your IMU (make/model)? Please edit and update your question $\endgroup$– GreenonlineCommented Mar 31 at 13:58
-
$\begingroup$ Does this help: IMU sensor is in which frame, ENU or NED frame??. Here are some other questions that might help. $\endgroup$– GreenonlineCommented Mar 31 at 14:13
1 Answer
ENU frame is the accronym of East North Up (XYZ). Which means that robot_localization
expects your IMU to publish 0 degree rotation when the X axis of your IMU sensor is alligned with East, Y axis with North and Z axis pointing up. I recommend you to check REPs such as REP-103 in order to know the coordinate frame conventions used in ROS as well as the wiki of robot_localization. You have details about how the IMU should perform in order to use it in the package. Feel free to ask again if you need more clarification.
-
$\begingroup$ Thank you. Then, what principle makes the IMU frame follow the ENU frame? Can I do this by using a 9-axis AHRS sensor with an added geomagnetic sensor? $\endgroup$ Commented Apr 2 at 4:30
-
$\begingroup$ Indeed, normally, IMU's have some geomagnetic sensors in order to detect where is North. If yours doesn't have it, you could buy the sensor individually, and then use some known packages such as imu_filter_madgwick in order to fuse both and get a rotation respect to the
earth
orworld
frame. $\endgroup$– ÁngeLoGaCommented Apr 2 at 6:05