how to interface ENU IMU to Robot localization
I have a NED IMU that is is flipped upside down on my robot.
The imu_link frame is represented as X forward, y left and z up to indicate the flip of the IMU. So its represented like:
Now, to use this with robot localization I swap x with y and invert Z, that converts NED to ENU. However, the IMU topic still gets published on the imu_link.
Is that the proper way? Or does robot localization expect a frame_id that is in the ENU convention?
All data that ever gets published from the IMU will ALWAYS be in the "imu_link" regardless of the values of xyz/rpy or coordinate convention right?
yes that's right. should I instead set imu_link to ENU but flipped upside down?
You need to do whatever you need to do (read: apply the right rotation) to get your imu reporting data in the ENU frame, and then consider its translation (read: y,y,z) from base_link. You can capture both of those things in a single static transform from base_link to imu_link