soft_obstacle.h 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. #ifndef _SOFT_OBSTACLE_H
  2. #define _SOFT_OBSTACLE_H
  3. #include "stdint.h"
  4. #include "stdbool.h"
  5. #include "common.h"
  6. //恩曌前避障(多点)
  7. #define CAN_MIMO_FOBS_ID1 (0x401)
  8. #define CAN_MIMO_FOBS_ID2 (0x402)
  9. #define CAN_MIMO_FOBS_ID3 (0x403)
  10. //恩曌后避障(多点)
  11. #define CAN_MIMO_BOBS_ID1 (0x411)
  12. #define CAN_MIMO_BOBS_ID2 (0x412)
  13. #define CAN_MIMO_BOBS_ID3 (0x413)
  14. //恩曌分区仿地
  15. #define CAN_MIMO_T_ID1 (0x311)
  16. #define CAN_MIMO_T_ID2 (0x312)
  17. #define CAN_MIMO_T_ID3 (0x313)
  18. #define CAN_MIMO_T_ID4 (0x314)
  19. #define CAN_MIMO_T_ID5 (0x315)
  20. //莫之比前避障(多点)
  21. #define CAN_UAVRH_FOBS_ID1 (0x601)
  22. #define CAN_UAVRH_FOBS_ID2 (0x602)
  23. #define CAN_UAVRH_FOBS_ID3 (0x603)
  24. //莫之比后避障(多点)
  25. #define CAN_UAVRH_BOBS_ID1 (0x611)
  26. #define CAN_UAVRH_BOBS_ID2 (0x612)
  27. #define CAN_UAVRH_BOBS_ID3 (0x613)
  28. //莫之比分区仿地
  29. #define CAN_MICOB_T_ID1 (0x511)
  30. #define CAN_MICOB_T_ID2 (0x512)
  31. #define CAN_MICOB_T_ID3 (0x513)
  32. #define CAN_MICOB_T_ID4 (0x514)
  33. #define CAN_MICOB_T_ID5 (0x515)
  34. //莫之比雷达发送升级命令
  35. #define CAN_UAVRH_UPDATE_S1 (0x7E0)
  36. //发送消息到莫之比雷达
  37. #define SEND_UAV20_MSG (0x00FFEE01)
  38. //发送消息到莫之比雷达读取版本
  39. #define SEND_UAV20_VER (0x00FFEE02)
  40. //莫之比雷达反馈版本信息,读取命令是SEND_UAV20_VER
  41. #define CAN_UAVRH_VER_R (0x7E8)
  42. //莫之比雷达设置灵敏度及反馈
  43. #define CAN_UAVRH_SENSI_SA (0x7F6)
  44. //莫之比雷达读取灵敏度及反馈
  45. #define CAN_UAVRH_SENSI_RA (0x7F8)
  46. #define MIMO_360_TotalSect 60
  47. #pragma pack(1)
  48. typedef struct
  49. {
  50. unsigned long long FrameID : 4;
  51. unsigned long long PackageID : 4;
  52. long long RCS : 8;
  53. long long Vel : 10;
  54. unsigned long long FrameType : 2;
  55. long long Distance : 12;
  56. long long Amuzith : 12;
  57. long long Elevation : 12;
  58. }mimo_part_radar;
  59. #pragma pack()
  60. extern mimo_part_radar F_radar[3];
  61. extern mimo_part_radar B_radar[3];
  62. extern mimo_part_radar T_radar[5];
  63. //避障雷达
  64. #pragma pack(1)
  65. typedef struct
  66. {
  67. Connect_check Link;
  68. //距离数据
  69. short distance_x;
  70. short distance_y;
  71. uint8_t signal_qulity;
  72. //灵敏度
  73. short get_radar_sensi;
  74. bool get_radar_sensi_flag;
  75. bool fcu_set_sensi_flag;
  76. char send_fcu_sensi_count;
  77. char get_radar_sensi_count;
  78. char set_radar_sensi_count;
  79. char set_radar_sensi_ack;
  80. //版本信息
  81. int soft_verison; //软件版本 区分新旧雷达,旧版本设置灵敏度进BOOT
  82. char version[10];
  83. int hard_version;
  84. bool get_radar_ver_flag; //检测到雷达一直发,上电发几次可能收不到
  85. bool get_radar_sn_flag;
  86. //SN号
  87. //char send_radar_sn_count; 和版本用一个count
  88. char sn[20];
  89. }uavr_obs;
  90. #pragma pack()
  91. extern uavr_obs uavr11_info;
  92. extern uavr_obs uavr12_info;
  93. extern uavr_obs mimo_f_info;
  94. extern uavr_obs mimo_b_info;
  95. #pragma pack(1)
  96. typedef struct
  97. {
  98. short angel_4DF; //角度
  99. short ground_filter_4DF;//距离滤波
  100. short dotcloud_switch_4DF;//点云
  101. short angel_4DB;//角度
  102. short ground_filter_4DB;//距离滤波
  103. short dotcloud_switch_4DB;//点云
  104. short DM4DF_Blind_spot_distance;//4D前雷达盲区距离
  105. short DM4DB_Blind_spot_distance;//4D后雷达盲区距离
  106. short Packing_auger_size; //绞龙类型
  107. bool get_angel_4DF;//获取角度成功
  108. bool get_ground_filter_4DF;//距离滤波成功
  109. bool get_angel_4DB;//获取角度成功
  110. bool get_ground_filter_4DB;//距离滤波成功
  111. bool get_dotcloud_switch_4DF;//点云成功
  112. bool get_dotcloud_switch_4DB;//点云成功
  113. bool get_DM4DF_Blind_spot_distance;//4D前避障盲区距离
  114. bool get_DM4DB_Blind_spot_distance;//4D后雷达盲区距离
  115. }_dev_par;
  116. #pragma pack()
  117. extern _dev_par DM_4DRADARMAG;
  118. #pragma pack(1)
  119. typedef struct
  120. {
  121. uint8_t TotalSect;
  122. int16_t RangeRes:14;
  123. int16_t rev:10;
  124. int16_t Pitch:10;
  125. int16_t Roll:10;
  126. uint16_t nTarget:12;
  127. uint8_t index;
  128. bool get_TotalSect_flag;
  129. bool set_TotalSect_flag;
  130. }mimo_360status;
  131. #pragma pack()
  132. extern mimo_360status mimo360_status;
  133. #pragma pack(1)
  134. typedef struct
  135. {
  136. uint8_t sectId0;
  137. uint8_t dis0;
  138. int8_t rcs0;
  139. int8_t el0;
  140. }mimo_360info;
  141. #pragma pack()
  142. extern mimo_360info mimo360_info[MIMO_360_TotalSect];
  143. #pragma pack(1)
  144. typedef struct
  145. {
  146. uint16_t sec_angle;//当前目标角度 0-360
  147. uint16_t distance;//当前目标距离 cm
  148. uint8_t rcs0; //强度
  149. int8_t el0; //当前俯仰角 -80-80
  150. }mimo_360_data;
  151. #pragma pack()
  152. #pragma pack(1)
  153. typedef struct
  154. {
  155. uint8_t TotalSect;//分区数
  156. uint8_t total_tar;//目标总数
  157. mimo_360_data data[40];
  158. }mimo_360_cont;
  159. #pragma pack()
  160. extern mimo_360_cont fmu_360info;
  161. extern Connect_check mimo_360_info;
  162. extern char can_get_uavr21_ver_comp;
  163. extern uint8_t radar360_proflag;
  164. void can_recv_mocib_F_obstacle(uint8_t *data);
  165. void can_recv_mocib_B_obstacle(uint8_t *data);
  166. void can_recv_mimo_signal_obstacle(uint32_t cellCanID, uint8_t data[], uint8_t len);
  167. void can_recv_mocib_new360_obstacle(uint32_t cellCanID, uint8_t data[], uint8_t len);
  168. bool Bobs_handle_function(void);
  169. bool Fobs_handle_function(void);
  170. void can_recv_enzhao_obstacle(uint32_t cellCanID, uint8_t data[], uint8_t len);
  171. void can_recv_mocib_obstacle(uint32_t cellCanID, uint8_t data[], uint8_t len);
  172. #endif