kalibr架构之齐次变换矩阵yaml文件保存

问题: 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的函数如下:
kalibr架构之齐次变换矩阵yaml文件保存_第1张图片

其中:
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格式数据

最终的保存结果如下:
kalibr架构之齐次变换矩阵yaml文件保存_第2张图片
 

读取代码如下:
kalibr架构之齐次变换矩阵yaml文件保存_第3张图片

kalibr架构之齐次变换矩阵yaml文件保存_第4张图片


Transformation.hpp:

kalibr架构之齐次变换矩阵yaml文件保存_第5张图片

 

targetObservations的获取过程:
kalibr架构之齐次变换矩阵yaml文件保存_第6张图片

kalibr/aslam_cv/aslam_cv_python/src/GridCalibration.cpp
kalibr架构之齐次变换矩阵yaml文件保存_第7张图片

kalibr架构之齐次变换矩阵yaml文件保存_第8张图片

kalibr/aslam_cv/aslam_cameras/src/GridDetector.cpp
kalibr架构之齐次变换矩阵yaml文件保存_第9张图片

你可能感兴趣的:(相机标定,SLAM,python学习)