#pragma once
#ifdef __cplusplus
extern "C" {
#endif

/* Includes ----------------------------------------------------------------- */
#include <stdint.h>
#include <stdbool.h>
#include <math.h>

/**
 * @brief 串联腿参数结构体
 */
typedef struct {
    float thigh_length; // 大腿长度
    float calf_length;  // 小腿长度
} KIN_SerialLeg_Param_t; // ← 补上分号

/**
 * @brief 串联腿单腿转摆动杆正运动学
 * @param param 腿部长度参数
 * @param hip_angle 髋关节角度(弧度)
 * @param knee_angle 膝关节角度(弧度)
 * @param angle 计算到的等效摆动杆角度
 * @param height 计算到的等效摆动杆高度
 * @return 0:成功, -1:失败
 */
int8_t KIN_SerialLeg_FK(const KIN_SerialLeg_Param_t *param, const float *hip_angle, const float *knee_angle, float *angle, float *height);

/**
 * @brief 串联腿单腿转摆动杆逆运动学
 * @param param 腿部长度参数
 * @param angle 输入的等效摆动杆角度
 * @param height 输入的等效摆动杆高度
 * @param hip_angle 计算到的髋关节角度(弧度)
 * @param knee_angle 计算到的膝关节角度(弧度)
 * @return 0:成功, -1:失败
 */
int8_t KIN_SerialLeg_IK(const KIN_SerialLeg_Param_t *param, const float *angle, const float *height, float *hip_angle, float *knee_angle);

#ifdef __cplusplus
}
#endif