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?
Asked by mugetsu on 2020-10-02 18:16:51 UTC
Answers
Similar to what @JackB said, if I were you, I'd modify the IMU driver to put out the data in ENU, and then make the base_link
->imu_link
transform represent the sensor's pose (given its new ENU frame) w.r.t. the base_link
frame.
Asked by Tom Moore on 2020-10-12 03:27:35 UTC
Comments
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?
Asked by JackB on 2020-10-02 19:51:58 UTC
yes that's right. should I instead set imu_link to ENU but flipped upside down?
Asked by mugetsu on 2020-10-02 20:12:58 UTC
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
Asked by JackB on 2020-10-02 21:23:28 UTC