Ask Your Question

robot_localization: how to deal with imu data

asked 2019-06-19 03:00:47 -0600

huchaohong gravatar image

Recently, i am reading robot_localization and want to understand how it works. Previously, i have read and understood code and logics in robot_pose_ekf package.

I am confused about how imu data is processed in robot_localization. It seems to me that if config of differential was set to false, then imu can't work in robot_localization. The orientation of imu in 'world' fixed frame is transformed to orientation of base_link in 'world' fixed frame and set as measurement and send to ekf or ukf. But how can this data in world frame be fused with other data in other frame(such as 'odom' frame) ?

Hope i was wrong in understanding robot_localization and someone can fix me.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2019-07-03 05:01:07 -0600

Tom Moore gravatar image

Part of the problem is that IMU data lacks separate frame_id fields for orientation, angular velocity, and linear acceleration, so we have to make some assumptions.

Let's say your IMU's frame_id was set to the same value as your EKF base_link_frame. In that event, the filter would assume that all orientations are being reported in the EKF's world_frame parameter value, e.g., odom or map. If your IMU is rotated w.r.t. the base_link frame and the data is given in a frame like imu_link, then the filter will rotate the orientation data according to that base_link->imu_link transform, and then fuse it.

If you always want the orientation data to start at 0, turn on the _relative parameter for your IMU.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2019-06-19 03:00:47 -0600

Seen: 137 times

Last updated: Jul 03 '19