81 lines
2.7 KiB
C++
81 lines
2.7 KiB
C++
#ifndef CONFIGXMLUTILS_H
|
||
#define CONFIGXMLUTILS_H
|
||
|
||
#include <vector>
|
||
#include <string>
|
||
#include "VrCommonConfig.h"
|
||
#include "VrHandEyeCalibConfig.h"
|
||
#include "tinyxml2.h"
|
||
|
||
/**
|
||
* @brief 公共配置 XML 读写工具
|
||
*
|
||
* 提供手眼标定、平面校准、调试参数、串口配置、相机列表等
|
||
* 通用配置段的 XML 加载和保存功能,供各应用的 VrConfig 复用。
|
||
*/
|
||
namespace ConfigXmlUtils
|
||
{
|
||
|
||
// ============ 手眼标定矩阵 ============
|
||
|
||
/**
|
||
* @brief 从 XML 根节点加载手眼标定矩阵列表
|
||
*
|
||
* 向后兼容策略:
|
||
* 1. 优先找 <HandEyeCalibMatrixs> 容器节点
|
||
* 2. 其次找旧名 <HandEyeCalibMatrixList>
|
||
* 3. 最后找单个 <HandEyeCalibMatrix>(作为 cameraIndex=1)
|
||
*
|
||
* @param root XML 根节点
|
||
* @param list 输出的矩阵列表
|
||
* @param defaultEulerOrder 当 XML 中无 eulerOrder 属性时使用的默认值
|
||
*/
|
||
void LoadHandEyeCalibMatrixs(tinyxml2::XMLElement* root,
|
||
std::vector<VrHandEyeCalibMatrix>& list,
|
||
int defaultEulerOrder = 11);
|
||
|
||
/**
|
||
* @brief 保存手眼标定矩阵列表到 XML 根节点(<HandEyeCalibMatrixs> 格式)
|
||
*/
|
||
void SaveHandEyeCalibMatrixs(tinyxml2::XMLDocument& doc,
|
||
tinyxml2::XMLElement* root,
|
||
const std::vector<VrHandEyeCalibMatrix>& list);
|
||
|
||
// ============ 平面校准参数 ============
|
||
|
||
/**
|
||
* @brief 从 <PlaneCalibParams> 节点加载多相机平面校准参数
|
||
* @param parent 包含 <PlaneCalibParams> 的父节点(通常是 AlgorithmParams)
|
||
*/
|
||
void LoadPlaneCalibParams(tinyxml2::XMLElement* parent,
|
||
VrPlaneCalibParam& param);
|
||
|
||
/**
|
||
* @brief 保存多相机平面校准参数到 <PlaneCalibParams> 节点
|
||
*/
|
||
void SavePlaneCalibParams(tinyxml2::XMLDocument& doc,
|
||
tinyxml2::XMLElement* parent,
|
||
const VrPlaneCalibParam& param);
|
||
|
||
// ============ 调试参数 ============
|
||
|
||
void LoadDebugParam(tinyxml2::XMLElement* root, VrDebugParam& param);
|
||
void SaveDebugParam(tinyxml2::XMLDocument& doc, tinyxml2::XMLElement* root,
|
||
const VrDebugParam& param);
|
||
|
||
// ============ 串口配置 ============
|
||
|
||
void LoadSerialConfig(tinyxml2::XMLElement* root, SerialConfig& config);
|
||
void SaveSerialConfig(tinyxml2::XMLDocument& doc, tinyxml2::XMLElement* root,
|
||
const SerialConfig& config);
|
||
|
||
// ============ 相机列表 ============
|
||
|
||
void LoadCameraList(tinyxml2::XMLElement* root, std::vector<DeviceInfo>& list);
|
||
void SaveCameraList(tinyxml2::XMLDocument& doc, tinyxml2::XMLElement* root,
|
||
const std::vector<DeviceInfo>& list);
|
||
|
||
} // namespace ConfigXmlUtils
|
||
|
||
#endif // CONFIGXMLUTILS_H
|