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