tier4 / CalibrationTools

sensor calibration tools for autonomous driving and robotics
GNU General Public License v3.0
121 stars 44 forks source link

Confusion with transformation (Lidar Ground Plane Calibration) #106

Closed akshayantony12 closed 1 year ago

akshayantony12 commented 1 year ago

Thank you for your exciting and useful work. I was going through extrinsic_ground_plane_calibrator.cpp. In publishTF there is a line Eigen::Isometry3d raw_lidar_to_base_eigen = modelPlaneToPose(ground_plane_model) . Is'nt the function making a transformation from base to lidar? As in the modelPlaneToPose function, the transformation takes the default basis of (0, 0, 1) to the new basis which is the normal of the plane detected in the lidar frame. Am I missing something. Thanks

knzo25 commented 1 year ago

Hi, I agree that this is not the best name for the variable. If you have any suggestions I will love to hear it !

As you can see in the comments just below the line of code you provided https://github.com/tier4/CalibrationTools/blob/83b210334169daa712b5215fdfca9558198538e5/sensor/extrinsic_ground_plane_calibrator/src/extrinsic_ground_plane_calibrator.cpp#L487

The intention is just to provide a visualization of a tf that is in the ground plane. If you are interested in this method I would recommend following the updated branch for this method.

If my answer was insufficient or you have any more doubts about the methods and its applications let me know !

akshayantony12 commented 1 year ago

Thanks for the quick reply. I have some clarifications

  1. The ground plane is estimated using RANSAC in lidar frame or the base link frame?
  2. The normal of the plane (0, 0, 1) is assumed in base link right?
knzo25 commented 1 year ago

Hi, The ground plane is estimated in whatever the pointcloud's frame is (it could be the base link depending on your particular data, but usually would be the lidar's own frame)

The (0,0,1) forces the z-axis of a basis to correspond to the normal of the plane (in both the real base link or the auxiliar tf defined in the plane)

akshayantony12 commented 1 year ago

So if i know my ground plane's real normal is like (0.001, 0, 0.99) I can substitute that to get the transformation?

knzo25 commented 1 year ago

I don't quite follow. I defined a coordinate system placed in the ground plane with its z-axis corresponding to the normal of the plane

akshayantony12 commented 1 year ago

Sorry I did not explain it correctly. The real world ground may not be always (0, 0, 1) due irregularities. So can we put the real normal of the plane?

knzo25 commented 1 year ago

I don't think you can do that. This method strongly assumes that the points lie in a plane, and the computed normal by RANSAC would be just the result of that assumption. In practice, surfaces would not be perfect locally, which is why we fit a model on a larger area. If you are still not convinced I think we should move to using some drawings or similar graphic tools

knzo25 commented 1 year ago

@akshayantony12 Since there has not been any updates in this issue, I will be closing it in about a week.