rm_balance/User/component/kinematics.h
2025-09-02 15:06:58 +08:00

43 lines
1.3 KiB
C

#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