Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Coordinate System Definition #39

Open
nikiFoe opened this issue Apr 23, 2024 · 2 comments
Open

Coordinate System Definition #39

nikiFoe opened this issue Apr 23, 2024 · 2 comments

Comments

@nikiFoe
Copy link

nikiFoe commented Apr 23, 2024

Hello,

The last couple of days I have been trying to test the IC-GVINS code on my own dataset. However, my Camera-IMU coordinate systems transformation is not working. In the image below I added the setup of my system. My IMU-Coordinate system is not setup as suggested for the IC-GVINS and doesn't conform to Front(x)-Right(y)-Down(z). Because I tested this setup on VINS-Fusion with calibration of camera, and camera-IMU with Kalibr I was hoping that still would work, however it doesn't. To get my system in the Front-Right-Down format I tried:

  1. I rotated my IMU frame +90degree around x. For that the IMU z-axis becomes the negative y-value and the y-axis becomes the z-value. I transformed the values when recording directly and did the Kalibr calibration process again. However the Direction of travel did not fit to the direction of features. Of course, then the calculated extrinsic parameters will be wrong and ad some point the the code fails to run.

20240423_090324

My question now: How do I properly configure and calibrate the coordinate frames of each system?

@thlsealight
Copy link
Contributor

Hello. The IMU frame should be front-right-down, which is determined by the INS mechanization algorithm. This can be simply achieved by swapping the axis of IMU with correct signs. The camera frame is usually defined as right-down-front. You should just prepare a correct extrinsic parameters.

@nikiFoe
Copy link
Author

nikiFoe commented May 16, 2024

Hello. The IMU frame should be front-right-down, which is determined by the INS mechanization algorithm. This can be simply achieved by swapping the axis of IMU with correct signs. The camera frame is usually defined as right-down-front. You should just prepare a correct extrinsic parameters.

Thank you for your reply. As far as I understand your suggestion I think I did exactly that. However, my travel direction is not in the direction of the camera. Does that effect the algorithm somehow?

I also tried running the urban Dataset, however there I had the same problem. Could you share how you handle the arriving IMU ros message in the fusion_ros.cc file? I looked up the IMU coordinate system for the urban dataset and it is similar to mine. When looking at the image below, the IMU-x axis faces forward, but the y and z-axis have to be modified.

Screenshot 2024-05-16 133259

To make it a Front-Right-Down system, the y values has to be inverted and the z values as well.

`imu_.dtheta[0] = imumsg->angular_velocity.x * imu_.dt;
imu_.dtheta[1] = -imumsg->angular_velocity.y * imu_.dt;
imu_.dtheta[2] = -imumsg->angular_velocity.z * imu_.dt;

imu_.dvel[0] = imumsg->linear_acceleration.x * imu_.dt;
imu_.dvel[1] = -imumsg->linear_acceleration.y * imu_.dt;
imu_.dvel[2] = -imumsg->linear_acceleration.z * imu_.dt;`

However, if I run this modification with the urban config file, the code still fails to run.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants