Files
smart_wasm/include/QuadrupedRobotSimulation/CompleteJsonExporter.h
2026-06-01 16:57:39 +08:00

52 lines
1.9 KiB
C++

// CompleteJsonExporter.h
#ifndef COMPLETE_JSON_EXPORTER_H
#define COMPLETE_JSON_EXPORTER_H
#include "QuadrupedRobotSimulation/BaseClass.h"
#include "QuadrupedRobotSimulation/KinematicsSimulation.h"
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <map>
#include <sstream>
#include <iomanip>
class CompleteJsonExporter
{
public:
// 主导出函数
static std::string ExportCompleteDataJsonString(const QuadrupedRobotSimulation &simulation);
// 各个组件的创建函数
static GaitInfo CreateGaitInfo(const QuadrupedRobotSimulation &simulation);
static SystemParameters CreateSystemParameters(const QuadrupedRobotSimulation &simulation);
static TrajectoryData CreateTrajectoryData(const QuadrupedRobotSimulation &simulation);
static MotorDataExport CreateMotorData(const QuadrupedRobotSimulation &simulation);
static ConstraintData CreateConstraintData(const QuadrupedRobotSimulation &simulation);
static StatisticsData CreateStatistics(const QuadrupedRobotSimulation &simulation);
static InitialAnglesData CreateInitialAngles(const QuadrupedRobotSimulation &simulation);
static PhaseInfo CreatePhaseInfo(const QuadrupedRobotSimulation &simulation);
static MotionRangeData CreateMotionRange(const QuadrupedRobotSimulation &simulation);
private:
// 辅助函数
static Point2D ArrayToPoint(const std::vector<double> &array);
// 查找最小值和最大值的模板函数
template <typename T>
static T FindMin(const std::vector<T> &values);
template <typename T>
static T FindMax(const std::vector<T> &values);
// 检查所有值是否满足条件的模板函数
template <typename T>
static bool All(const std::vector<T> &values, std::function<bool(const T &)> predicate);
// 转换函数
static std::string DoubleToString(double value, int precision = 6);
};
#endif // COMPLETE_JSON_EXPORTER_H