问题: kalibr里面在获取到齐次变换矩阵T_t_c之后如何输出到文件里面进行保存呢?
现以camera calibrate过程中获取的靶标坐标系和相机坐标系间的齐次变换矩阵T_t_c为例进行说明:
分析代码结构可以发现, 每个占位相机姿态参数保存在targetObservations list中,targetObservations的获取过程见后面说明.
齐次变换矩阵T_t_c存储在outObservation的_T_t_c变量之中:
提供了T_t_c()函数来访问该齐次变换矩阵
以targetObservations list为基础,yaml文件保存齐次变换矩阵T_t_c的函数如下:
其中:
1. T_cam_target 属于sm::kinematics::Transformation类型, 其定义见Transformation.hpp文件
kalibr/Schweizer-Messer/sm_kinematics/include/sm/kinematics/Transformation.hpp
2. obs.T_t_c().inverse() 通过求逆来获取的camera --> lidar 坐标系的变换矩阵
3. T_cam_target.T() 获取Eigen::Matrix4d类型的变换矩阵
4. data = {'extrinsic': T_cam_target.T().tolist()} 定义yaml格式数据
最终的保存结果如下:
读取代码如下:
Transformation.hpp:
targetObservations的获取过程:
kalibr/aslam_cv/aslam_cv_python/src/GridCalibration.cpp
kalibr/aslam_cv/aslam_cameras/src/GridDetector.cpp