ladrc_observer.h 903 B

12345678910111213141516171819202122232425262728293031323334
  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 lpf_cutoff_freq; //低通滤波器截止频率 (截止频率 x 2 x pi)
  20. float angle_last;
  21. float angle_array[ANGLE_BUF_NUM];
  22. int angle_idx;
  23. float angle_sum;
  24. float max_z1, max_z2;
  25. }ladrc_observer;
  26. void ladrc_observer_init(float Wo, float vel_min, float lpf_cut_off);
  27. float ladrc_observer_update(float va, float vb, float ia, float ib);
  28. float ladrc_observer_angle(void);
  29. float ladrc_observer_vel(void);
  30. ladrc_observer *ladrc_observer_get(void);
  31. #endif /* _LADRC_OBSERVER_H__ */