minwoo0611 / MA-LIO

Asynchronous Multiple LiDAR-Inertial Odometry using Point-wise Inter-LiDAR Uncertainty Propagation
GNU General Public License v2.0
286 stars 36 forks source link

Two IMU-LiDAR extrinsics in yaml #29

Open cmakelabs opened 2 weeks ago

cmakelabs commented 2 weeks ago

For mapping/extrinsic_T, and mapping/extrinsic_R in the yaml files available in the config folder, there is only: one translation matrix and one rotation matrix, like this for example:

    extrinsic_T: [ 0.215, 0, 0.018, 
                   -1.2574, 0.413, 0.0324,
                   -1.306, -0.361, 0.042  ]
    extrinsic_R: [ 1, 0, 0, 0,
                   0.6965018, -0.0037329, -0.0038405, 0.717535, 
                   0.0074645, 0.0000044, -0.0005919, -0.999972]

but in the image I can see that it is possible to specify for each LIDAR the matrices extrinsic_T and extrinsic_R with respect to IMU, this means I would have for two LIDARs two translation matrices and two rotation matrices, Could you please tell how to specify that in the yaml file?

minwoo0611 commented 4 days ago

Hello @cmakelabs,

In the YAML files within the config folder, each row of extrinsic_T corresponds to the translation parameters (x, y, z) for each LIDAR with respect to the IMU. Similarly, each row of extrinsic_R corresponds to the rotation parameters (qw, qx, qy, qz) for each LIDAR with respect to the IMU.

For example, the given matrices translate as follows:

Ensure the order of these rows corresponds to your LIDAR configuration, which might look like this:

lid_topic: ["/os_cloud_node/points", "/livox/avia/points", "/livox/tele/points"]
lid_type: [3, 1, 1]           # 1-Livox, 2-Velodyne, 3-Ouster
N_SCANS: [128, 8, 8]
point_filter_num: [8, 4, 4]

This way, each LIDAR's translation and rotation matrices are properly specified with respect to the IMU.

cmakelabs commented 4 days ago

Thank you very much, does that mean that in the yaml file for two lidars for example I will have:

extrinsic_T: 
extrinsic_R:            
# followed directly by
extrinsic_T: 
extrinsic_R:

Would that be what you meant, that the parser will understand what parameter in the yaml file is for which LIDAR solely based on the order of the parameter in the file? Is it fine that these parameters are having the same name?