ladrc_observer.h 936 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef _LADRC_OBSERVER_H__
  2. #define _LADRC_OBSERVER_H__
  3. #include "os/os_types.h"
  4. typedef struct {
  5. float z1,z2;
  6. }zStats;
  7. #define ANGLE_BUF_NUM 16
  8. typedef struct {
  9. //扩张状态观测器
  10. zStats alpha, beta;
  11. float B1,B2;
  12. float ts;
  13. float Wo; //初始带宽
  14. float max_eVel; //最大的电角速度
  15. float vel_min; //初始带宽对应的角频率
  16. float ld, lq, r, poles;
  17. float Ealpha, Ebeta;
  18. float Vel_El;
  19. float Vel_El_filter;
  20. float lpf_ceof; //低通滤波器系数(截止频率 x 2 x pi / Fs)
  21. float angle_atan;
  22. float angle_out;
  23. float angle_array[ANGLE_BUF_NUM];
  24. int angle_idx;
  25. float angle_sum;
  26. float max_z1, max_z2;
  27. }ladrc_observer;
  28. void ladrc_observer_init(float Wo, float vel_min, float lpf_cut_off);
  29. float ladrc_observer_update(float va, float vb, float ia, float ib);
  30. float ladrc_observer_angle(void);
  31. float ladrc_observer_vel(void);
  32. ladrc_observer *ladrc_observer_get(void);
  33. #endif /* _LADRC_OBSERVER_H__ */