chichengcn / gici-open-dataset

Land vehicle GNSS/INS/Camera dataset
GNU General Public License v3.0
68 stars 9 forks source link

ground_truth转换的参数问题 #11

Closed NavSesne closed 1 year ago

NavSesne commented 1 year ago

池博士,您好:

我从数据集配置文件intrinsics_and_extrinsics.yaml中看到的转换参数和nmea_pose_to_pose、nmea_pose_to_position中的 转换参数不一致,想请问两者之间的差异。 如intrinsics_and_extrinsics.yaml文件中两个IMU之间的杆臂为[-0.001631526123218773189,-0.32049491219831693910.06657108425640941018]:

# Fiber IMU to IMU extrinsic
# Transform of Fiber IMU in IMU frame.
T_B_Bf:
  cols: 4
  rows: 4
  data: [-0.999871192442087553,   -0.0128272212687904081,  0.009646808744800929036, -0.001631526123218773189,
        -0.01281568650175066333,    0.9999170861579332881,  0.001256578257457377414,   -0.3204949121983169391,
        -0.009662127298174172374,  0.001132785924064993229,   -0.9999526789264197024,   0.06657108425640941018,
                              0,                        0,                        0,                        1]

而nmea_pose_to_pose.cpp中对应的设置为: const Eigen::Vector3d t_AB_A(-0.00509546, 0.320372, 0.0669864); const Eigen::Vector3d rot_AB(179.928, -0.55273, -179.265);

chichengcn commented 1 year ago
        互逆

            font{
        line-height: 1.6;
    }Cheng ChiPhD candidate School of Aeronautics & AstronauticsShanghai Jiao Tong UniversityDongchuan Rd 800, Shanghai, ChinaZip Code: ***@***.***

---- 回复的原邮件 ----

     发件人 

        ***@***.***>

     发送日期 

    2023年11月14日 20:33

     收件人 

        ***@***.***>

     抄送人 

        ***@***.***>

     主题 

          [chichengcn/gici-open-dataset] ground_truth转换的参数问题 (Issue #11)

池博士,您好: 我从数据集配置文件intrinsics_and_extrinsics.yaml中看到的转换参数和nmea_pose_to_pose、nmea_pose_to_position中的 转换参数不一致,想请问两者之间的差异。 如intrinsics_and_extrinsics.yaml文件中两个IMU之间的杆臂为[-0.001631526123218773189,-0.32049491219831693910.06657108425640941018]: Fiber IMU to IMU extrinsic Transform of Fiber IMU in IMU frame. T_B_Bf: cols: 4 rows: 4 data: [-0.999871192442087553, -0.0128272212687904081, 0.009646808744800929036, -0.001631526123218773189, -0.01281568650175066333, 0.9999170861579332881, 0.001256578257457377414, -0.3204949121983169391, -0.009662127298174172374, 0.001132785924064993229, -0.9999526789264197024, 0.06657108425640941018, 0, 0, 0, 1] 而nmea_pose_to_pose.cpp中对应的设置为: const Eigen::Vector3d t_AB_A(-0.00509546, 0.320372, 0.0669864); const Eigen::Vector3d rot_AB(179.928, -0.55273, -179.265);

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

NavSesne commented 1 year ago

你好,yaml配置文件的光纤IMU和MEMS IMU之间的距离: (-0.001631526123218773189 , -0.3204949121983169391, 0.06657108425640941018) 代码nmea_pose_to_pose.cpp中的值: const Eigen::Vector3d t_AB_A(-0.00509546, 0.320372, 0.0669864);

GNSS和IMU之间的距离: [-0.035, 0.354, -0.042] 代码nmea_pose_to_position.cpp中的值: const Eigen::Vector3d t_SR_S(0.354, -0.042, -0.029); 请问这个顺序的差异和数值上的差异,是考虑了哪些因素?谢谢!

chichengcn commented 1 year ago

不好意思,这里有一个错误,GICI-LIB的输出是在Body系下的,而非MEMS IMU系下,这一点在readme上写的有问题,我会修改一下。因此,两个IMU之间的变换矩阵T_B_Bf与nmea_pose_to_pose中的值除了有一个逆矩阵关系之外,还有一个MEMS IMU与body系之间的旋转,这个旋转在yaml中定义为R_B_B0。至于你说“数值的差异”,你在做变换矩阵运算的时候,自然会有平移向量数值的变化。

总之,nmea_pose_to_pose.cpp中所表达的T_AB_A在应用两个IMU之间的变换时,其代表T_Bf_B0,它与yaml中的T_B_Bf的关系为:T_Bf_B0 = inv(T_B_Bf) * T_B_B0。

对于nmea_pose_to_position.cpp中的值,它同样存在一个从IMU到body系的旋转,即nmea_pose_to_position.cpp中的值在body系B0下,而yaml中的值在IMU系B下,之间存在一个旋转。yaml中,第一个值-0.035有误,应为-0.029。

NavSesne commented 1 year ago

感谢回答!