Compare commits
5 Commits
sentry_rig
...
sentry_cha
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a57383fcf | ||
|
|
498ee93880 | ||
|
|
cff20de568 | ||
|
|
4cc319e997 | ||
|
|
33c47a12e4 |
File diff suppressed because one or more lines are too long
@@ -324,6 +324,11 @@
|
||||
<pMon>BIN\CMSIS_AGDI.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ST-LINKIII-KEIL_SWO</Key>
|
||||
<Name>-U-O206 -O206 -SF10000 -C0 -A0 -I0 -HNlocalhost -HP7184 -P1 -N00("ARM CoreSight SW-DP (ARM Core") -D00(2BA01477) -L00(0) -TO131090 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO15 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMRTXEVENTFLAGS</Key>
|
||||
@@ -360,7 +365,7 @@
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>chassis</ItemText>
|
||||
<ItemText>param_default</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
@@ -370,57 +375,42 @@
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>gimbal_out</ItemText>
|
||||
<ItemText>shoot</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>3</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>for_chassis</ItemText>
|
||||
<ItemText>param_hero</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>task_runtime</ItemText>
|
||||
<ItemText>ref</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>5</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>ref</ItemText>
|
||||
<ItemText>for_chassis</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>6</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>shoot</ItemText>
|
||||
<ItemText>cap_out,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>7</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>ai</ItemText>
|
||||
<ItemText>pm01_od,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>8</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>for_chassis</ItemText>
|
||||
<ItemText>cap,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>9</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>for_shoot</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>10</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>cmd</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>11</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>host</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>12</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>gimbal_ai</ItemText>
|
||||
<ItemText>ref</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow4>
|
||||
@@ -1293,7 +1283,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>User/bsp</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -1517,7 +1507,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>User/component</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
||||
@@ -2044,7 +2044,7 @@
|
||||
<uC99>0</uC99>
|
||||
<uGnu>0</uGnu>
|
||||
<useXO>0</useXO>
|
||||
<v6Lang>5</v6Lang>
|
||||
<v6Lang>6</v6Lang>
|
||||
<v6LangP>3</v6LangP>
|
||||
<vShortEn>1</vShortEn>
|
||||
<vShortWch>1</vShortWch>
|
||||
|
||||
Binary file not shown.
@@ -22,7 +22,7 @@ Dialog DLL: TCM.DLL V1.48.0.0
|
||||
|
||||
<h2>Project:</h2>
|
||||
C:\Users\lvzucheng\Documents\RMUL2025\MDK-ARM\DevC.uvprojx
|
||||
Project File Date: 03/19/2025
|
||||
Project File Date: 03/18/2025
|
||||
|
||||
<h2>Output:</h2>
|
||||
*** Using Compiler 'V6.16', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
|
||||
@@ -37,13 +37,32 @@ Note: source file '..\User\task\ai.c' - object file renamed from 'DevC\ai.o' to
|
||||
Note: source file '..\User\task\can.c' - object file renamed from 'DevC\can.o' to 'DevC\can_3.o'.
|
||||
Note: source file '..\User\task\cap.c' - object file renamed from 'DevC\cap.o' to 'DevC\cap_1.o'.
|
||||
Note: source file '..\User\task\referee.c' - object file renamed from 'DevC\referee.o' to 'DevC\referee_1.o'.
|
||||
compiling user_math.c...
|
||||
compiling main.c...
|
||||
compiling can.c...
|
||||
compiling freertos.c...
|
||||
compiling referee.c...
|
||||
compiling ai.c...
|
||||
compiling cap.c...
|
||||
compiling chassis.c...
|
||||
compiling config.c...
|
||||
compiling gimbal.c...
|
||||
compiling shoot.c...
|
||||
compiling ai.c...
|
||||
compiling atti_esti.c...
|
||||
compiling can.c...
|
||||
compiling cap.c...
|
||||
compiling cli.c...
|
||||
compiling command.c...
|
||||
compiling ctrl_chassis.c...
|
||||
compiling ctrl_gimbal.c...
|
||||
compiling ctrl_shoot.c...
|
||||
compiling info.c...
|
||||
compiling init.c...
|
||||
compiling rc.c...
|
||||
compiling monitor.c...
|
||||
compiling referee.c...
|
||||
compiling user_task.c...
|
||||
linking...
|
||||
Program Size: Code=149600 RO-data=6928 RW-data=1104 ZI-data=43832
|
||||
Program Size: Code=149000 RO-data=6908 RW-data=760 ZI-data=44208
|
||||
FromELF: creating hex file...
|
||||
"DevC\DevC.axf" - 0 Error(s), 0 Warning(s).
|
||||
|
||||
@@ -59,7 +78,7 @@ Package Vendor: Keil
|
||||
C:\Users\lvzucheng\AppData\Local\Arm\Packs\Keil\STM32F4xx_DFP\2.15.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include
|
||||
|
||||
<h2>Collection of Component Files used:</h2>
|
||||
Build Time Elapsed: 00:00:03
|
||||
Build Time Elapsed: 00:00:06
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
19461
MDK-ARM/DevC/DevC.hex
19461
MDK-ARM/DevC/DevC.hex
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
7
Middlewares/Third_Party/Protocol/protocol.h
vendored
7
Middlewares/Third_Party/Protocol/protocol.h
vendored
@@ -15,7 +15,7 @@ extern "C"
|
||||
#define AI_NOTICE_HITBUFF (1 << 1)
|
||||
#define AI_NOTICE_AUTOMATIC (1 << 2)
|
||||
#define AI_NOTICE_FIRE (1 << 3)
|
||||
#define AI_NOTICE_SEARCH_ARMOR (1 << 4)
|
||||
#define AI_NOTICE_ROTOR (1 << 7)
|
||||
|
||||
#define AI_ID_MCU (0xC4)
|
||||
#define AI_ID_REF (0xA8)
|
||||
@@ -47,8 +47,9 @@ extern "C"
|
||||
/* 电控 -> 视觉 裁判系统数据结构体*/
|
||||
typedef struct __attribute__((packed))
|
||||
{
|
||||
uint16_t team; /* 本身队伍 */
|
||||
uint16_t time; /* 比赛开始时间 */
|
||||
uint16_t remain_hp;
|
||||
uint8_t game_progress : 4;
|
||||
uint16_t stage_remain_time;
|
||||
} Protocol_UpDataReferee_t;
|
||||
|
||||
/* 视觉 -> 电控 数据结构体*/
|
||||
|
||||
@@ -236,14 +236,14 @@ static void CMD_RcLogic(const CMD_RC_t *rc, CMD_t *cmd, float dt_sec)
|
||||
|
||||
case CMD_SW_MID:
|
||||
cmd->chassis.mode = CHASSIS_MODE_FOLLOW_GIMBAL;
|
||||
cmd->ai_status = AI_STATUS_AUTOAIM;
|
||||
cmd->host_overwrite = true;
|
||||
cmd->ai_status = AI_STATUS_STOP;
|
||||
cmd->host_overwrite = false;
|
||||
break;
|
||||
|
||||
case CMD_SW_DOWN:
|
||||
cmd->chassis.mode = CHASSIS_MODE_ROTOR;
|
||||
// cmd->chassis.mode = CHASSIS_MODE_ROTOR;
|
||||
cmd->chassis.mode_rotor = ROTOR_MODE_CW;
|
||||
cmd->ai_status = AI_STATUS_AUTOAIM;
|
||||
cmd->ai_status = AI_STATUS_NAVIGATION;
|
||||
cmd->host_overwrite = true;
|
||||
break;
|
||||
|
||||
@@ -259,14 +259,12 @@ static void CMD_RcLogic(const CMD_RC_t *rc, CMD_t *cmd, float dt_sec)
|
||||
case CMD_SW_UP:
|
||||
cmd->gimbal.mode = GIMBAL_MODE_ABSOLUTE;
|
||||
cmd->shoot.mode = SHOOT_MODE_SAFE;
|
||||
cmd->fire = false;
|
||||
break;
|
||||
|
||||
case CMD_SW_MID:
|
||||
cmd->gimbal.mode = GIMBAL_MODE_ABSOLUTE;
|
||||
cmd->shoot.fire = false;
|
||||
cmd->shoot.mode = SHOOT_MODE_LOADED;
|
||||
cmd->fire = true;
|
||||
break;
|
||||
|
||||
case CMD_SW_DOWN:
|
||||
@@ -274,13 +272,11 @@ static void CMD_RcLogic(const CMD_RC_t *rc, CMD_t *cmd, float dt_sec)
|
||||
cmd->shoot.mode = SHOOT_MODE_LOADED;
|
||||
cmd->shoot.fire_mode = FIRE_MODE_SINGLE;
|
||||
cmd->shoot.fire = true;
|
||||
cmd->fire = true;
|
||||
break;
|
||||
|
||||
case CMD_SW_ERR:
|
||||
cmd->gimbal.mode = GIMBAL_MODE_RELAX;
|
||||
cmd->shoot.mode = SHOOT_MODE_RELAX;
|
||||
cmd->fire = false;
|
||||
}
|
||||
/* 将操纵杆的对应值转换为底盘的控制向量和云台变化的欧拉角 */
|
||||
if (cmd->ai_status == AI_STATUS_STOP || cmd->host_overwrite == false)
|
||||
@@ -400,18 +396,26 @@ int8_t CMD_ParseHost(const CMD_Host_t *host, CMD_t *cmd, float dt_sec)
|
||||
cmd->gimbal.delta_eulr.yaw = host->gimbal_delta.yaw;
|
||||
cmd->gimbal.delta_eulr.pit = host->gimbal_delta.pit;
|
||||
|
||||
/* 底盘控制向量设置为host相应的控制向量 */
|
||||
cmd->chassis.ctrl_vec.vx = host->chassis_move_vec.vx;
|
||||
cmd->chassis.ctrl_vec.vy = host->chassis_move_vec.vy;
|
||||
cmd->chassis.ctrl_vec.wz = host->chassis_move_vec.wz;
|
||||
|
||||
/*底盘运动模式*/
|
||||
if (host->rotor){
|
||||
cmd->chassis.mode = CHASSIS_MODE_ROTOR;
|
||||
} else {
|
||||
cmd->chassis.mode = CHASSIS_MODE_FOLLOW_GIMBAL;
|
||||
}
|
||||
/* host射击命令,设置不同的射击频率和弹丸初速度 */
|
||||
if(cmd->fire){
|
||||
if (host->fire)
|
||||
{
|
||||
cmd->shoot.mode = SHOOT_MODE_LOADED;
|
||||
cmd->shoot.fire = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// cmd->shoot.mode = SHOOT_MODE_SAFE;
|
||||
cmd->shoot.mode = SHOOT_MODE_LOADED;
|
||||
}
|
||||
if (host->fire)
|
||||
{
|
||||
cmd->shoot.mode = SHOOT_MODE_LOADED;
|
||||
cmd->shoot.fire = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cmd->shoot.mode = SHOOT_MODE_SAFE;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -19,9 +19,9 @@ extern "C" {
|
||||
typedef enum {
|
||||
ROBOT_MODEL_INFANTRY = 0, /* 步兵机器人 */
|
||||
ROBOT_MODEL_HERO, /* 英雄机器人 */
|
||||
ROBOT_MODEL_SENTRY, /* 哨兵机器人 */
|
||||
ROBOT_MODEL_ENGINEER, /* 工程机器人 */
|
||||
ROBOT_MODEL_DRONE, /* 空中机器人 */
|
||||
ROBOT_MODEL_SENTRY, /* 哨兵机器人 */
|
||||
ROBOT_MODEL_NUM, /* 型号数量 */
|
||||
} CMD_RobotModel_t;
|
||||
|
||||
@@ -178,7 +178,8 @@ typedef enum {
|
||||
AI_STATUS_STOP, /* 停止状态 */
|
||||
AI_STATUS_AUTOAIM, /* 自瞄状态 */
|
||||
AI_STATUS_HITSWITCH, /* 打符状态 */
|
||||
AI_STATUS_AUTOMATIC /* 自动状态 */
|
||||
AI_STATUS_AUTOMATIC, /* 自动状态 */
|
||||
AI_STATUS_NAVIGATION /* 导航状态 */
|
||||
} CMD_AI_Status_t;
|
||||
|
||||
/* UI所用行为状态 */
|
||||
@@ -199,7 +200,6 @@ typedef struct {
|
||||
typedef struct {
|
||||
bool pc_ctrl; /* 是否使用键鼠控制 */
|
||||
bool host_overwrite; /* 是否Host控制 */
|
||||
bool fire; /* 是否允许发弹 */
|
||||
uint16_t key_last; /* 上次按键键值 */
|
||||
|
||||
struct {
|
||||
@@ -254,7 +254,7 @@ typedef struct {
|
||||
} chassis_move_vec; /* 底盘移动向量 */
|
||||
|
||||
bool fire; /* 开火状态 */
|
||||
// bool search_armor; /* 寻找装甲板模式 */
|
||||
bool rotor; /* 小陀螺状态 */
|
||||
} CMD_Host_t;
|
||||
|
||||
/**
|
||||
|
||||
@@ -27,10 +27,6 @@ inline float AbsClip(float in, float limit) {
|
||||
return (in < -limit) ? -limit : ((in > limit) ? limit : in);
|
||||
}
|
||||
|
||||
float fAbs(float in){
|
||||
return (in > 0) ? in : -in;
|
||||
}
|
||||
|
||||
inline void Clip(float *origin, float min, float max) {
|
||||
if (*origin > max) *origin = max;
|
||||
if (*origin < min) *origin = min;
|
||||
@@ -107,7 +103,6 @@ inline float CalculateRpm(float bullet_speed, float fric_radius, bool is17mm) {
|
||||
if (is17mm) {
|
||||
if (bullet_speed == 15.0f) return 4670.f;
|
||||
if (bullet_speed == 18.0f) return 5200.f;
|
||||
if (bullet_speed == 25.0f) return 6600.f;
|
||||
if (bullet_speed == 30.0f) return 7350.f;
|
||||
} else {
|
||||
if (bullet_speed == 10.0f) return 4450.f;
|
||||
|
||||
@@ -51,8 +51,6 @@ float InvSqrt(float x);
|
||||
|
||||
float AbsClip(float in, float limit);
|
||||
|
||||
float fAbs(float in);
|
||||
|
||||
void Clip(float *origin, float min, float max);
|
||||
|
||||
float Sign(float in);
|
||||
|
||||
@@ -50,9 +50,7 @@ int8_t AI_Init(AI_t *ai) {
|
||||
Ai_RxCpltCallback);
|
||||
BSP_UART_RegisterCallback(BSP_UART_AI, BSP_UART_IDLE_LINE_CB,
|
||||
Ai_IdleLineCallback);
|
||||
|
||||
ai->search_velocity.yaw = 0.0025f;
|
||||
ai->search_velocity.pit = 0.003f;
|
||||
|
||||
inited = true;
|
||||
return 0;
|
||||
}
|
||||
@@ -93,28 +91,12 @@ void AI_PackCmd(AI_t *ai, CMD_Host_t *cmd_host) {
|
||||
cmd_host->gimbal_delta.yaw = ai->from_host.data.gimbal.yaw;
|
||||
cmd_host->gimbal_delta.pit = ai->from_host.data.gimbal.pit;
|
||||
cmd_host->fire = (ai->from_host.data.notice & AI_NOTICE_FIRE);
|
||||
cmd_host->rotor = (ai->from_host.data.notice & AI_NOTICE_ROTOR);
|
||||
cmd_host->chassis_move_vec.vx = ai->from_host.data.chassis_move_vec.vx;
|
||||
cmd_host->chassis_move_vec.vy = ai->from_host.data.chassis_move_vec.vy;
|
||||
cmd_host->chassis_move_vec.wz = ai->from_host.data.chassis_move_vec.wz;
|
||||
}
|
||||
|
||||
void AI_SearchArmor(AI_t *ai, CMD_Host_t *cmd_host , AHRS_Eulr_t *gimbal_ai){
|
||||
if (gimbal_ai->pit > 2.45){
|
||||
ai->search_velocity.pit = fAbs(ai->search_velocity.pit);
|
||||
} else if (gimbal_ai->pit < 2.2) {
|
||||
ai->search_velocity.pit = -fAbs(ai->search_velocity.pit);
|
||||
}
|
||||
|
||||
if (gimbal_ai->yaw > 1.5 && gimbal_ai->yaw < 1.9) {
|
||||
ai->search_velocity.yaw = -fAbs(ai->search_velocity.yaw);
|
||||
} else if (gimbal_ai->yaw > 5.4 && gimbal_ai->yaw < 6.0) {
|
||||
ai->search_velocity.yaw = fAbs(ai->search_velocity.yaw);
|
||||
}
|
||||
|
||||
cmd_host->gimbal_delta.yaw = ai->search_velocity.yaw;
|
||||
cmd_host->gimbal_delta.pit = ai->search_velocity.pit;
|
||||
}
|
||||
|
||||
int8_t AI_HandleOffline(AI_t *ai, CMD_Host_t *cmd_host) {
|
||||
if (ai == NULL) return DEVICE_ERR_NULL;
|
||||
if (cmd_host == NULL) return DEVICE_ERR_NULL;
|
||||
@@ -147,6 +129,9 @@ int8_t AI_PackMCU(AI_t *ai, const AHRS_Quaternion_t *quat, const AHRS_Eulr_t *gi
|
||||
int8_t AI_PackRef(AI_t *ai, const Referee_ForAI_t *ref) {
|
||||
(void)ref;
|
||||
ai->to_host.ref.id = AI_ID_REF;
|
||||
ai->to_host.ref.package.data.remain_hp = ref->remain_hp;
|
||||
ai->to_host.ref.package.data.game_progress = ref->game_progress;
|
||||
ai->to_host.ref.package.data.stage_remain_time = ref->stage_remain_time;
|
||||
ai->to_host.ref.package.crc16 = CRC16_Calc(
|
||||
(const uint8_t *)&(ai->to_host.ref.package),
|
||||
sizeof(ai->to_host.ref.package) - sizeof(uint16_t), CRC16_INIT);
|
||||
|
||||
@@ -35,17 +35,11 @@ typedef struct __packed {
|
||||
Protocol_UpPackageMCU_t package;
|
||||
} AI_UpPackageMCU_t;
|
||||
|
||||
typedef struct {
|
||||
float yaw;
|
||||
float pit;
|
||||
} AI_SearchVelocity_t;
|
||||
|
||||
typedef struct __packed {
|
||||
osThreadId_t thread_alert;
|
||||
|
||||
Protocol_DownPackage_t from_host;
|
||||
|
||||
AI_SearchVelocity_t search_velocity;
|
||||
struct {
|
||||
AI_UpPackageReferee_t ref;
|
||||
AI_UpPackageMCU_t mcu;
|
||||
@@ -67,7 +61,6 @@ int8_t AI_PackMCU(AI_t *ai, const AHRS_Quaternion_t *quat, const AHRS_Eulr_t *gi
|
||||
int8_t AI_PackRef(AI_t *ai, const Referee_ForAI_t *ref);
|
||||
int8_t AI_StartSend(AI_t *ai, bool option);
|
||||
void AI_PackCmd(AI_t *ai, CMD_Host_t *cmd_host);
|
||||
void AI_SearchArmor(AI_t *ai, CMD_Host_t *cmd_host , AHRS_Eulr_t *gimbal_ai);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -20,12 +20,12 @@ extern "C" {
|
||||
|
||||
/* Exported constants ------------------------------------------------------- */
|
||||
/* Exported macro ----------------------------------------------------------- */
|
||||
#define REF_SWITCH_STATUS(ref, stat) ((ref).ref_status = (stat))
|
||||
#define REF_SWITCH_STATUS(ref, stat) ((ref).ref_status = (stat))
|
||||
#define CHASSIS_POWER_MAX_WITHOUT_REF 2000.0f /* 裁判系统离线底盘最大功率 */
|
||||
|
||||
#define REF_UI_MAX_GRAPIC_NUM (7)
|
||||
#define REF_UI_MAX_STRING_NUM (7)
|
||||
#define REF_UI_MAX_DEL_NUM (3)
|
||||
#define REF_UI_MAX_GRAPIC_NUM (7) /* 最大图形数量 */
|
||||
#define REF_UI_MAX_STRING_NUM (7) /* 最大字符串数量 */
|
||||
#define REF_UI_MAX_DEL_NUM (3) /* 最大删除数量 */
|
||||
|
||||
/* Exported types ----------------------------------------------------------- */
|
||||
typedef struct __packed {
|
||||
@@ -38,30 +38,39 @@ typedef struct __packed {
|
||||
typedef enum { REF_STATUS_OFFLINE = 0, REF_STATUS_RUNNING } Referee_Status_t;
|
||||
|
||||
typedef enum {
|
||||
REF_CMD_ID_GAME_STATUS = 0x0001,
|
||||
REF_CMD_ID_GAME_RESULT = 0x0002,
|
||||
REF_CMD_ID_GAME_ROBOT_HP = 0x0003,
|
||||
REF_CMD_ID_DART_STATUS = 0x0004,
|
||||
REF_CMD_ID_ICRA_ZONE_STATUS = 0x0005,
|
||||
REF_CMD_ID_FIELD_EVENTS = 0x0101,
|
||||
REF_CMD_ID_SUPPLY_ACTION = 0x0102,
|
||||
REF_CMD_ID_REQUEST_SUPPLY = 0x0103,
|
||||
REF_CMD_ID_WARNING = 0x0104,
|
||||
REF_CMD_ID_DART_COUNTDOWN = 0x0105,
|
||||
REF_CMD_ID_ROBOT_STATUS = 0x0201,
|
||||
REF_CMD_ID_POWER_HEAT_DATA = 0x0202,
|
||||
REF_CMD_ID_ROBOT_POS = 0x0203,
|
||||
REF_CMD_ID_ROBOT_BUFF = 0x0204,
|
||||
REF_CMD_ID_DRONE_ENERGY = 0x0205,
|
||||
REF_CMD_ID_ROBOT_DMG = 0x0206,
|
||||
REF_CMD_ID_SHOOT_DATA = 0x0207,
|
||||
REF_CMD_ID_BULLET_REMAINING = 0x0208,
|
||||
REF_CMD_ID_RFID = 0x0209,
|
||||
REF_CMD_ID_DART_CLIENT = 0x020A,
|
||||
REF_CMD_ID_INTER_STUDENT = 0x0301,
|
||||
REF_CMD_ID_INTER_STUDENT_CUSTOM = 0x0302,
|
||||
REF_CMD_ID_CLIENT_MAP = 0x0303,
|
||||
REF_CMD_ID_KEYBOARD_MOUSE = 0x0304,
|
||||
REF_CMD_ID_GAME_STATUS = 0x0001, //比赛状态数据,固定以1Hz频率发送
|
||||
REF_CMD_ID_GAME_RESULT = 0x0002, //比赛结果数据,比赛结束触发发送
|
||||
REF_CMD_ID_GAME_ROBOT_HP = 0x0003, //机器人血量数据,固定以3Hz频率发送
|
||||
//REF_CMD_ID_DART_STATUS = 0x0004,
|
||||
// REF_CMD_ID_ICRA_ZONE_STATUS = 0x0005,
|
||||
REF_CMD_ID_FIELD_EVENTS = 0x0101, //场地事件数据,固定以1Hz频率发送
|
||||
//REF_CMD_ID_SUPPLY_ACTION = 0x0102,
|
||||
//REF_CMD_ID_REQUEST_SUPPLY = 0x0103,
|
||||
REF_CMD_ID_WARNING = 0x0104, //裁判警告数据
|
||||
REF_CMD_ID_DART_COUNTDOWN = 0x0105, //飞镖发射相关数据
|
||||
REF_CMD_ID_ROBOT_STATUS = 0x0201, //机器人性能体系数据
|
||||
REF_CMD_ID_POWER_HEAT_DATA = 0x0202, //实时底盘缓冲能量和射击热量数据
|
||||
REF_CMD_ID_ROBOT_POS = 0x0203, //机器人位置数据
|
||||
REF_CMD_ID_ROBOT_BUFF = 0x0204, //机器人增益和底盘能量数据
|
||||
//REF_CMD_ID_DRONE_ENERGY = 0x0205,
|
||||
REF_CMD_ID_ROBOT_DMG = 0x0206, //伤害状态数据
|
||||
REF_CMD_ID_SHOOT_DATA = 0x0207, //实时射击数据
|
||||
REF_CMD_ID_BULLET_REMAINING = 0x0208, //允许发弹量
|
||||
REF_CMD_ID_RFID = 0x0209, //机器人RFID模块状态
|
||||
REF_CMD_ID_DART_CLIENT = 0x020A, //飞镖选手端指令数据
|
||||
REF_CMD_ID_ROBOT_POS_TO_SENTRY = 0X020B, //地面机器人位置数据
|
||||
REF_CMD_ID_RADAR_MARK = 0X020C, //雷达标记进度数据
|
||||
REF_CMD_ID_SENTRY_DECISION = 0x020D, //哨兵自主决策相关信息同步
|
||||
REF_CMD_ID_RADAR_DECISION = 0x020E, //雷达自主决策相关信息同步
|
||||
REF_CMD_ID_INTER_STUDENT = 0x0301, //机器人交互数据
|
||||
REF_CMD_ID_INTER_STUDENT_CUSTOM = 0x0302, //自定义控制器与机器人交互数据
|
||||
REF_CMD_ID_CLIENT_MAP = 0x0303, //选手端小地图交互数据
|
||||
REF_CMD_ID_KEYBOARD_MOUSE = 0x0304, //键鼠遥控数据
|
||||
REF_CMD_ID_MAP_ROBOT_DATA = 0x0305, //选手端小地图接收雷达数据
|
||||
REF_CMD_ID_CUSTOM_KEYBOARD_MOUSE = 0X0306, //自定义控制器与选手端交互数据
|
||||
REF_CMD_ID_SENTRY_POS_DATA = 0x0307, //选手端小地图接收哨兵数据
|
||||
REF_CMD_ID_ROBOT_POS_DATA = 0x0308, //选手端小地图接受机器人消息
|
||||
REF_CMD_ID_DATA = 0x0309, //自定义控制器接收机器人数据
|
||||
} Referee_CMDID_t;
|
||||
|
||||
typedef struct __packed {
|
||||
@@ -69,19 +78,18 @@ typedef struct __packed {
|
||||
uint8_t game_progress : 4;
|
||||
uint16_t stage_remain_time;
|
||||
uint64_t sync_time_stamp;
|
||||
} Referee_GameStatus_t;
|
||||
} Referee_GameStatus_t;/* 0x0001 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t winner;
|
||||
} Referee_GameResult_t;
|
||||
} Referee_GameResult_t;/* 0x0002 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint16_t red_1;
|
||||
uint16_t red_2;
|
||||
uint16_t red_3;
|
||||
uint16_t red_4;
|
||||
uint16_t red_5;
|
||||
uint16_t red_6;
|
||||
uint16_t reserved;
|
||||
uint16_t red_7;
|
||||
uint16_t red_outpose;
|
||||
uint16_t red_base;
|
||||
@@ -89,12 +97,11 @@ typedef struct __packed {
|
||||
uint16_t blue_2;
|
||||
uint16_t blue_3;
|
||||
uint16_t blue_4;
|
||||
uint16_t blue_5;
|
||||
uint16_t blue_6;
|
||||
uint16_t reserved1;
|
||||
uint16_t blue_7;
|
||||
uint16_t blue_outpose;
|
||||
uint16_t blue_base;
|
||||
} Referee_GameRobotHP_t;
|
||||
} Referee_GameRobotHP_t;/* 0x0003 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t dart_belong;
|
||||
@@ -121,51 +128,44 @@ typedef struct __packed {
|
||||
} Referee_ICRAZoneStatus_t;
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t copter_pad : 2;
|
||||
uint8_t energy_mech : 2;
|
||||
uint8_t virtual_shield : 1;
|
||||
uint32_t res : 27;
|
||||
} Referee_FieldEvents_t;
|
||||
uint32_t exchange_nooverlap_status : 1;
|
||||
uint32_t exchange_overlap_status : 1;
|
||||
uint32_t supply_status : 1;
|
||||
uint32_t energy_mech_small_status : 1;
|
||||
uint32_t energy_mech_big_status : 1;
|
||||
uint32_t highland_annular : 2;
|
||||
uint32_t highland_trapezium_1 : 2;
|
||||
uint32_t last_hit_time : 9;
|
||||
uint32_t last_hit_target : 3;
|
||||
uint32_t activation_status : 2;
|
||||
uint32_t res : 9;
|
||||
} Referee_FieldEvents_t;/* 0x0101 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t supply_id;
|
||||
uint8_t robot_id;
|
||||
uint8_t supply_step;
|
||||
uint8_t supply_sum;
|
||||
} Referee_SupplyAction_t;
|
||||
} Referee_SupplyAction_t;/* 0x0102 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t place_holder; /* TODO */
|
||||
} Referee_RequestSupply_t;
|
||||
} Referee_RequestSupply_t;/* 0x0103 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t level;
|
||||
uint8_t robot_id;
|
||||
} Referee_Warning_t;
|
||||
uint8_t count;
|
||||
} Referee_Warning_t;/* 0x0104 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t countdown;
|
||||
} Referee_DartCountdown_t;
|
||||
uint16_t dart_last_target : 3;
|
||||
uint16_t attack_count : 2;
|
||||
uint16_t dart_target : 2;
|
||||
uint16_t res : 8;
|
||||
} Referee_DartCountdown_t;/* 0x0105 */
|
||||
|
||||
// typedef struct __packed {
|
||||
// uint8_t robot_id;
|
||||
// uint8_t robot_level;
|
||||
// uint16_t remain_hp;
|
||||
// uint16_t max_hp;
|
||||
// uint16_t shoot_id1_17_cooling_rate;
|
||||
// uint16_t shoot_id1_17_heat_limit;
|
||||
// uint16_t shoot_id1_17_speed_limit;
|
||||
// uint16_t shoot_id2_17_cooling_rate;
|
||||
// uint16_t shoot_id2_17_heat_limit;
|
||||
// uint16_t shoot_id2_17_speed_limit;
|
||||
// uint16_t shoot_42_cooling_rate;
|
||||
// uint16_t shoot_42_heat_limit;
|
||||
// uint16_t shoot_42_speed_limit;
|
||||
// uint16_t chassis_power_limit;
|
||||
// uint8_t power_gimbal_output : 1;
|
||||
// uint8_t power_chassis_output : 1;
|
||||
// uint8_t power_shoot_output : 1;
|
||||
// } Referee_RobotStatus_t;
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t robot_id;
|
||||
@@ -188,22 +188,15 @@ typedef struct __packed {
|
||||
uint16_t shoot_id1_17_heat;
|
||||
uint16_t shoot_id2_17_heat;
|
||||
uint16_t shoot_42_heat;
|
||||
} Referee_PowerHeat_t;
|
||||
} Referee_PowerHeat_t; /* 0x0202 */
|
||||
|
||||
typedef struct __packed {
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float yaw;
|
||||
} Referee_RobotPos_t;
|
||||
} Referee_RobotPos_t; /* 0x0203 */
|
||||
|
||||
// typedef struct __packed {
|
||||
// uint8_t healing : 1;
|
||||
// uint8_t cooling_acc : 1;
|
||||
// uint8_t defense_buff : 1;
|
||||
// uint8_t attack_buff : 1;
|
||||
// uint8_t res : 4;
|
||||
// } Referee_RobotBuff_t;
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t healing_buff;
|
||||
@@ -211,16 +204,17 @@ typedef struct __packed {
|
||||
uint8_t defense_buff;
|
||||
uint8_t vulnerability_buff;
|
||||
uint16_t attack_buff;
|
||||
} Referee_RobotBuff_t;
|
||||
uint8_t remaining_energy;
|
||||
} Referee_RobotBuff_t; /* 0x0204 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t attack_countdown;
|
||||
} Referee_DroneEnergy_t;
|
||||
} Referee_DroneEnergy_t; /* 0x0205 *///删
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t armor_id : 4;
|
||||
uint8_t damage_type : 4;
|
||||
} Referee_RobotDamage_t;
|
||||
} Referee_RobotDamage_t; /* 0x0206 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t bullet_type;
|
||||
@@ -233,38 +227,106 @@ typedef struct __packed {
|
||||
uint16_t bullet_17_remain;
|
||||
uint16_t bullet_42_remain;
|
||||
uint16_t coin_remain;
|
||||
} Referee_BulletRemain_t;
|
||||
} Referee_BulletRemain_t;/* 0x0208 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t base : 1;
|
||||
uint8_t high_ground : 1;
|
||||
uint8_t energy_mech : 1;
|
||||
uint8_t slope : 1;
|
||||
uint8_t outpose : 1;
|
||||
uint8_t resource : 1;
|
||||
uint8_t healing_card : 1;
|
||||
uint32_t res : 24;
|
||||
} Referee_RFID_t;
|
||||
uint32_t own_base : 1; //0
|
||||
uint32_t own_highland_annular : 1; //1
|
||||
uint32_t enemy_highland_annular : 1; //2
|
||||
uint32_t own_trapezium_R3B3 : 1; //3
|
||||
uint32_t enemy_trapezium_R3B3 : 1; //4
|
||||
uint32_t own_slope_before : 1; //坡道前5
|
||||
uint32_t own_slope_after : 1; //坡道后6
|
||||
uint32_t enemy_slope_before : 1; //坡道前7
|
||||
uint32_t enemy_slope_after : 1; //坡道后8
|
||||
uint32_t own_crosses_above : 1; //增益点 上方9
|
||||
uint32_t own_crosses_below : 1; //增益点 下方10
|
||||
uint32_t enemy_crosses_above : 1; //增益点 上方11
|
||||
uint32_t enemy_crosses_below : 1; //增益点 下方12
|
||||
uint32_t own_highway_above : 1; //公路 上方13
|
||||
uint32_t own_highway_below : 1; //公路 下方14
|
||||
uint32_t enemy_highway_above : 1; //公路 上方15
|
||||
uint32_t enemy_highway_below : 1; //公路 下方16
|
||||
uint32_t own_fortress : 1; //己方堡垒增益点17
|
||||
uint32_t own_outpost : 1; //己方前哨站增益点18
|
||||
uint32_t own_RMUL : 1; //己方RMUL增益点19
|
||||
uint32_t enemy_RMDL : 1; //敌方RMDL增益点20
|
||||
uint32_t own_island : 1; //己方资源岛 21
|
||||
uint32_t enemy_island : 1; //敌方资源岛 22
|
||||
uint32_t centre : 1; //中心 23
|
||||
uint32_t res : 8;
|
||||
} Referee_RFID_t;/* 0x0209 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t opening;
|
||||
uint8_t opening_status;
|
||||
uint8_t target;
|
||||
uint8_t target_changable_countdown;
|
||||
uint8_t dart1_speed;
|
||||
uint8_t dart2_speed;
|
||||
uint8_t dart3_speed;
|
||||
uint8_t dart4_speed;
|
||||
uint16_t last_dart_launch_time;
|
||||
uint16_t target_changable_countdown;
|
||||
uint16_t operator_cmd_launch_time;
|
||||
} Referee_DartClient_t;
|
||||
} Referee_DartClient_t;/* 0x020A */
|
||||
|
||||
typedef struct __packed {
|
||||
float hero_x;
|
||||
float hero_y;
|
||||
float engineer_x;
|
||||
float engineer_y;
|
||||
float standard_3_x;
|
||||
float standard_3_y;
|
||||
float standard_4_x;
|
||||
float standard_4_y;
|
||||
float reserved;
|
||||
float reserved1;
|
||||
} Referee_Robot_Position_t;/* 0x020B */
|
||||
|
||||
typedef struct __packed
|
||||
{
|
||||
uint8_t mark_hero_progress;
|
||||
uint8_t mark_engineer_progress;
|
||||
uint8_t mark_standard_3_progress;
|
||||
uint8_t mark_standard_4_progress;
|
||||
uint8_t mark_sentry_progress;
|
||||
}Referee_Radar_mark_data_t; /* 0x020C */
|
||||
|
||||
typedef struct __packed
|
||||
{
|
||||
uint32_t exchanged_bullet_num : 11;
|
||||
uint32_t exchanged_bullet_times : 4;
|
||||
uint32_t exchanged_blood_times : 4;
|
||||
uint32_t Confirmation_resurrection : 1;
|
||||
uint32_t now_resurrection : 1;
|
||||
uint32_t money : 10;
|
||||
uint32_t res : 1;
|
||||
uint16_t state : 1;
|
||||
uint16_t quantity : 11;
|
||||
uint16_t res1 : 4;
|
||||
} Referee_Sentry_Info_t; /* 0x020D */
|
||||
|
||||
typedef struct __packed
|
||||
{
|
||||
uint8_t qualification : 2;
|
||||
uint8_t enemy_status : 1;
|
||||
uint8_t res : 5;
|
||||
} Referee_Radar_Info_t; /* 0x020E */
|
||||
|
||||
typedef struct __packed
|
||||
{
|
||||
uint16_t data_cmd_id; /* 子内容ID */
|
||||
uint16_t sender_id;
|
||||
uint16_t receiver_id;
|
||||
uint8_t user_data[112];
|
||||
} Referee_Interaction_Data_t; /* 0x0301 */
|
||||
|
||||
typedef struct __packed
|
||||
{
|
||||
uint8_t data[30];
|
||||
} Referee_custom_robot_data_t; /* 0x0302 */
|
||||
|
||||
typedef struct __packed {
|
||||
float position_x;
|
||||
float position_y;
|
||||
float position_z;
|
||||
uint8_t commd_keyboard;
|
||||
uint16_t robot_id;
|
||||
} Referee_ClientMap_t;
|
||||
uint8_t robot_id;
|
||||
uint8_t cmd_source;
|
||||
} Referee_ClientMap_t;/* 0x0303 */
|
||||
|
||||
typedef struct __packed {
|
||||
int16_t mouse_x;
|
||||
@@ -274,10 +336,74 @@ typedef struct __packed {
|
||||
int8_t button_r;
|
||||
uint16_t keyboard_value;
|
||||
uint16_t res;
|
||||
} Referee_KeyboardMouse_t;
|
||||
} Referee_KeyboardMouse_t;/* 0x0304 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint16_t hero_position_x;
|
||||
uint16_t hero_position_y;
|
||||
uint16_t engineer_position_x;
|
||||
uint16_t engineer_position_y;
|
||||
uint16_t infantry_3_position_x;
|
||||
uint16_t infantry_3_position_y;
|
||||
uint16_t infantry_4_position_x;
|
||||
uint16_t infantry_4_position_y;
|
||||
uint16_t infantry_5_position_x;
|
||||
uint16_t infantry_5_position_y;
|
||||
uint16_t sentry_position_x;
|
||||
uint16_t sentry_position_y;
|
||||
} Referee_map_robot_data_t;/* 0x0305 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint16_t key_value;
|
||||
uint16_t x_position : 12;
|
||||
uint16_t mouse_left : 4;
|
||||
uint16_t y_position : 12;
|
||||
uint16_t mouse_right : 4;
|
||||
uint16_t res;
|
||||
} Referee_custom_client_data_t; /* 0x0306 */
|
||||
|
||||
typedef struct __packed {
|
||||
uint8_t intention;
|
||||
uint16_t start_position_x;
|
||||
uint16_t start_position_y;
|
||||
int8_t delta_x[49];
|
||||
int8_t delta_y[49];
|
||||
uint16_t sender_id;
|
||||
} Referee_map_data_t;/* 0x0307 */
|
||||
|
||||
typedef struct __packed
|
||||
{
|
||||
uint16_t sender_id;
|
||||
uint16_t receiver_id;
|
||||
uint8_t user_data[30];
|
||||
}Referee_custom_info_t; /* 0x0308 */
|
||||
|
||||
typedef struct __packed
|
||||
{
|
||||
uint8_t data[30];
|
||||
}Referee_robot_custom_data_t; /* 0x0309*/
|
||||
|
||||
typedef uint16_t Referee_Tail_t;
|
||||
|
||||
// typedef enum {
|
||||
// REF_BOT_RED_HERO = 1,
|
||||
// REF_BOT_RED_ENGINEER = 2,
|
||||
// REF_BOT_RED_INFANTRY_1 = 3,
|
||||
// REF_BOT_RED_INFANTRY_2 = 4,
|
||||
// REF_BOT_RED_INFANTRY_3 = 5,
|
||||
// REF_BOT_RED_DRONE = 6,
|
||||
// REF_BOT_RED_SENTRY = 7,
|
||||
// REF_BOT_RED_RADER = 9,
|
||||
// REF_BOT_BLU_HERO = 101,
|
||||
// REF_BOT_BLU_ENGINEER = 102,
|
||||
// REF_BOT_BLU_INFANTRY_1 = 103,
|
||||
// REF_BOT_BLU_INFANTRY_2 = 104,
|
||||
// REF_BOT_BLU_INFANTRY_3 = 105,
|
||||
// REF_BOT_BLU_DRONE = 106,
|
||||
// REF_BOT_BLU_SENTRY = 107,
|
||||
// REF_BOT_BLU_RADER = 109,
|
||||
// } Referee_RobotID_t;//
|
||||
|
||||
typedef enum {
|
||||
REF_BOT_RED_HERO = 1,
|
||||
REF_BOT_RED_ENGINEER = 2,
|
||||
@@ -286,7 +412,10 @@ typedef enum {
|
||||
REF_BOT_RED_INFANTRY_3 = 5,
|
||||
REF_BOT_RED_DRONE = 6,
|
||||
REF_BOT_RED_SENTRY = 7,
|
||||
REF_BOT_RED_DART = 8,
|
||||
REF_BOT_RED_RADER = 9,
|
||||
REF_BOT_RED_OUTPOST = 10,
|
||||
REF_BOT_RED_BASE = 11,
|
||||
REF_BOT_BLU_HERO = 101,
|
||||
REF_BOT_BLU_ENGINEER = 102,
|
||||
REF_BOT_BLU_INFANTRY_1 = 103,
|
||||
@@ -294,9 +423,27 @@ typedef enum {
|
||||
REF_BOT_BLU_INFANTRY_3 = 105,
|
||||
REF_BOT_BLU_DRONE = 106,
|
||||
REF_BOT_BLU_SENTRY = 107,
|
||||
REF_BOT_BLU_DART = 108,
|
||||
REF_BOT_BLU_RADER = 109,
|
||||
} Referee_RobotID_t;
|
||||
REF_BOT_BLU_OUTPOST = 110,
|
||||
REF_BOT_BLU_BASE = 111,
|
||||
} Referee_RobotID_t;//
|
||||
|
||||
|
||||
// typedef enum {
|
||||
// REF_CL_RED_HERO = 0x0101,
|
||||
// REF_CL_RED_ENGINEER = 0x0102,
|
||||
// REF_CL_RED_INFANTRY_1 = 0x0103,
|
||||
// REF_CL_RED_INFANTRY_2 = 0x0104,
|
||||
// REF_CL_RED_INFANTRY_3 = 0x0105,
|
||||
// REF_CL_RED_DRONE = 0x0106,
|
||||
// REF_CL_BLU_HERO = 0x0165,
|
||||
// REF_CL_BLU_ENGINEER = 0x0166,
|
||||
// REF_CL_BLU_INFANTRY_1 = 0x0167,
|
||||
// REF_CL_BLU_INFANTRY_2 = 0x0168,
|
||||
// REF_CL_BLU_INFANTRY_3 = 0x0169,
|
||||
// REF_CL_BLU_DRONE = 0x016A,
|
||||
// } Referee_ClientID_t;//选手端ID
|
||||
typedef enum {
|
||||
REF_CL_RED_HERO = 0x0101,
|
||||
REF_CL_RED_ENGINEER = 0x0102,
|
||||
@@ -310,8 +457,20 @@ typedef enum {
|
||||
REF_CL_BLU_INFANTRY_2 = 0x0168,
|
||||
REF_CL_BLU_INFANTRY_3 = 0x0169,
|
||||
REF_CL_BLU_DRONE = 0x016A,
|
||||
} Referee_ClientID_t;
|
||||
REF_CL_REFEREE_SERVER = 0x8080, /* 裁判系统服务器,用于哨兵和雷达自主决策 */
|
||||
} Referee_ClientID_t;//选手端ID
|
||||
|
||||
|
||||
// typedef enum {
|
||||
// REF_STDNT_CMD_ID_UI_DEL = 0x0100,
|
||||
// REF_STDNT_CMD_ID_UI_DRAW1 = 0x0101,
|
||||
// REF_STDNT_CMD_ID_UI_DRAW2 = 0x0102,
|
||||
// REF_STDNT_CMD_ID_UI_DRAW5 = 0x0103,
|
||||
// REF_STDNT_CMD_ID_UI_DRAW7 = 0x0104,
|
||||
// REF_STDNT_CMD_ID_UI_STR = 0x0110,
|
||||
|
||||
// REF_STDNT_CMD_ID_CUSTOM = 0x0200,
|
||||
// } Referee_StudentCMDID_t;
|
||||
typedef enum {
|
||||
REF_STDNT_CMD_ID_UI_DEL = 0x0100,
|
||||
REF_STDNT_CMD_ID_UI_DRAW1 = 0x0101,
|
||||
@@ -319,8 +478,9 @@ typedef enum {
|
||||
REF_STDNT_CMD_ID_UI_DRAW5 = 0x0103,
|
||||
REF_STDNT_CMD_ID_UI_DRAW7 = 0x0104,
|
||||
REF_STDNT_CMD_ID_UI_STR = 0x0110,
|
||||
|
||||
REF_STDNT_CMD_ID_CUSTOM = 0x0200,
|
||||
REF_STDNT_CMD_ID_SENTRY_CMD = 0X0120,
|
||||
REF_STDNT_CMD_ID_RADAR_CMD = 0X0121,
|
||||
} Referee_StudentCMDID_t;
|
||||
|
||||
typedef struct __packed {
|
||||
@@ -336,29 +496,40 @@ typedef struct __packed {
|
||||
|
||||
typedef struct {
|
||||
Referee_Status_t ref_status;
|
||||
Referee_GameStatus_t game_status;
|
||||
Referee_GameResult_t game_result;
|
||||
Referee_GameRobotHP_t game_robot_hp;
|
||||
Referee_DartStatus_t dart_status;
|
||||
Referee_ICRAZoneStatus_t icra_zone;
|
||||
Referee_FieldEvents_t field_event;
|
||||
Referee_SupplyAction_t supply_action;
|
||||
Referee_RequestSupply_t request_supply;
|
||||
Referee_Warning_t warning;
|
||||
Referee_DartCountdown_t dart_countdown;
|
||||
Referee_RobotStatus_t robot_status;
|
||||
Referee_PowerHeat_t power_heat;
|
||||
Referee_RobotPos_t robot_pos;
|
||||
Referee_RobotBuff_t robot_buff;
|
||||
Referee_DroneEnergy_t drone_energy;
|
||||
Referee_RobotDamage_t robot_danage;
|
||||
Referee_ShootData_t shoot_data;
|
||||
Referee_BulletRemain_t bullet_remain;
|
||||
Referee_RFID_t rfid;
|
||||
Referee_DartClient_t dart_client;
|
||||
Referee_InterStudent_Custom_t custom;
|
||||
Referee_ClientMap_t client_map;
|
||||
Referee_KeyboardMouse_t keyboard_mouse;
|
||||
Referee_GameStatus_t game_status; /* 0x0001 */
|
||||
Referee_GameResult_t game_result; /* 0x0002 */
|
||||
Referee_GameRobotHP_t game_robot_hp; /* 0x0003 */
|
||||
// Referee_DartStatus_t dart_status;
|
||||
// Referee_ICRAZoneStatus_t icra_zone;
|
||||
Referee_FieldEvents_t field_event; /* 0x0101 */
|
||||
//Referee_SupplyAction_t supply_action; /* 0x0102 */
|
||||
Referee_RequestSupply_t request_supply; /* 0x0103 */
|
||||
Referee_Warning_t warning; /* 0x0104 */
|
||||
Referee_DartCountdown_t dart_countdown; /* 0x0105 */
|
||||
Referee_RobotStatus_t robot_status; /* 0x0201 */
|
||||
Referee_PowerHeat_t power_heat; /* 0x0202 */
|
||||
Referee_RobotPos_t robot_pos; /* 0x0203 */
|
||||
Referee_RobotBuff_t robot_buff; /* 0x0204 */
|
||||
//Referee_DroneEnergy_t drone_energy; /* 0x0205 */
|
||||
Referee_RobotDamage_t robot_danage; /* 0x0206 */
|
||||
Referee_ShootData_t shoot_data; /* 0x0207 */
|
||||
Referee_BulletRemain_t bullet_remain; /* 0x0208 */
|
||||
Referee_RFID_t rfid; /* 0x0209 */
|
||||
Referee_DartClient_t dart_client; /* 0x020A */
|
||||
Referee_Robot_Position_t pos_sentry; /* 0x020B */
|
||||
Referee_Radar_mark_data_t radar_mark; /* 0x020C */
|
||||
Referee_Sentry_Info_t sentry_decision; /* 0x020D */
|
||||
Referee_Radar_Info_t radar_decision; /* 0x020E */
|
||||
// Referee_InterStudent_Custom_t custom;
|
||||
Referee_Interaction_Data_t interactive_data; /* 0x0301 */
|
||||
Referee_custom_robot_data_t custom_robot_data; /* 0x0302 */
|
||||
Referee_ClientMap_t client_map; /* 0x0303 */
|
||||
Referee_KeyboardMouse_t keyboard_mouse; /* 0x0304 */
|
||||
Referee_map_robot_data_t map_robot_data; /* 0x0305 */
|
||||
Referee_custom_client_data_t custom_keyboard_mouse; /* 0x0306 */
|
||||
Referee_map_data_t sentry_pos_data; /* 0x0307 */
|
||||
Referee_custom_info_t custom_info; /* 0x0308 */
|
||||
Referee_robot_custom_data_t custom_data; /* 0x0309*/
|
||||
|
||||
osTimerId_t ui_fast_timer_id;
|
||||
osTimerId_t ui_slow_timer_id;
|
||||
@@ -465,6 +636,9 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
Referee_Status_t ref_status;
|
||||
uint16_t remain_hp;
|
||||
uint8_t game_progress : 4;
|
||||
uint16_t stage_remain_time;
|
||||
} Referee_ForAI_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
1135
User/module/config.c
1135
User/module/config.c
File diff suppressed because it is too large
Load Diff
@@ -36,9 +36,7 @@ static int8_t Gimbal_SetMode(Gimbal_t *g, CMD_GimbalMode_t mode) {
|
||||
AHRS_ResetEulr(&(g->setpoint.eulr)); /* 切换模式后重置设定值 */
|
||||
if (g->mode == GIMBAL_MODE_RELAX) {
|
||||
if (mode == GIMBAL_MODE_ABSOLUTE) {
|
||||
// g->setpoint.eulr.yaw = g->feedback.eulr.encoder.yaw;
|
||||
g->setpoint.eulr.yaw = 3.7f;
|
||||
g->setpoint.eulr.pit = 2.2f;
|
||||
g->setpoint.eulr.yaw = g->feedback.eulr.imu.yaw;
|
||||
} else if (mode == GIMBAL_MODE_RELATIVE) {
|
||||
g->setpoint.eulr.yaw = g->feedback.eulr.encoder.yaw;
|
||||
}
|
||||
@@ -142,24 +140,16 @@ int8_t Gimbal_Control(Gimbal_t *g, CMD_GimbalCmd_t *g_cmd, uint32_t now) {
|
||||
const float delta_max =
|
||||
CircleError(g->limit.max,
|
||||
(g->feedback.eulr.encoder.pit + g->setpoint.eulr.pit -
|
||||
g->feedback.eulr.encoder.pit),
|
||||
g->feedback.eulr.imu.pit),
|
||||
M_2PI);
|
||||
const float delta_min =
|
||||
CircleError(g->limit.min,
|
||||
(g->feedback.eulr.encoder.pit + g->setpoint.eulr.pit -
|
||||
g->feedback.eulr.encoder.pit),
|
||||
g->feedback.eulr.imu.pit),
|
||||
M_2PI);
|
||||
Clip(&(g_cmd->delta_eulr.pit), delta_min, delta_max);
|
||||
g->setpoint.eulr.pit += g_cmd->delta_eulr.pit;
|
||||
|
||||
/* 限制yaw转动范围(待优化) */
|
||||
if (g->setpoint.eulr.yaw > 5.9f && g->setpoint.eulr.yaw < 6.01f) {
|
||||
g->setpoint.eulr.yaw = 5.9f;
|
||||
} else if (g->setpoint.eulr.yaw > 1.4f && g->setpoint.eulr.yaw < 1.71f) {
|
||||
g->setpoint.eulr.yaw = 1.71f;
|
||||
}
|
||||
|
||||
|
||||
/* 重置输入指令,防止重复处理 */
|
||||
AHRS_ResetEulr(&(g_cmd->delta_eulr));
|
||||
|
||||
@@ -173,17 +163,17 @@ int8_t Gimbal_Control(Gimbal_t *g, CMD_GimbalCmd_t *g_cmd, uint32_t now) {
|
||||
case GIMBAL_MODE_ABSOLUTE:
|
||||
yaw_omega_set_point =
|
||||
PID_Calc(&(g->pid[GIMBAL_PID_YAW_ANGLE_IDX]), g->setpoint.eulr.yaw,
|
||||
g->feedback.eulr.encoder.yaw, 0.0f, g->dt);
|
||||
g->feedback.eulr.imu.yaw, 0.0f, g->dt);
|
||||
g->out[GIMBAL_ACTR_YAW_IDX] =
|
||||
PID_Calc(&(g->pid[GIMBAL_PID_YAW_OMEGA_IDX]), yaw_omega_set_point,
|
||||
0.0, 0.f, g->dt);
|
||||
g->feedback.gyro.z, 0.f, g->dt);
|
||||
|
||||
pit_omega_set_point =
|
||||
PID_Calc(&(g->pid[GIMBAL_PID_PIT_ANGLE_IDX]), g->setpoint.eulr.pit,
|
||||
g->feedback.eulr.encoder.pit, 0.0f, g->dt);
|
||||
g->feedback.eulr.imu.pit, 0.0f, g->dt);
|
||||
g->out[GIMBAL_ACTR_PIT_IDX] =
|
||||
PID_Calc(&(g->pid[GIMBAL_PID_PIT_OMEGA_IDX]), pit_omega_set_point,
|
||||
0.0, 0.f, g->dt);
|
||||
g->feedback.gyro.x, 0.f, g->dt);
|
||||
break;
|
||||
|
||||
case GIMBAL_MODE_RELATIVE:
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
#define HEAT_INCREASE_17MM (10.f) /* 每发射一颗17mm弹丸增加10热量 */
|
||||
|
||||
#define BULLET_SPEED_LIMIT_42MM (16.0)
|
||||
#define BULLET_SPEED_LIMIT_17MM (25.0)
|
||||
#define BULLET_SPEED_LIMIT_17MM (30.0)
|
||||
|
||||
/* Private macro ------------------------------------------------------------ */
|
||||
/* Private variables -------------------------------------------------------- */
|
||||
|
||||
@@ -62,9 +62,6 @@ void Task_Ai(void *argument) {
|
||||
|
||||
if (ai.status != AI_STATUS_STOP && ai.ai_online){
|
||||
AI_PackCmd(&ai, &cmd_host);
|
||||
if (ai.from_host.data.notice & AI_NOTICE_SEARCH_ARMOR) {
|
||||
AI_SearchArmor(&ai, &cmd_host, &gimbal_ai);
|
||||
}
|
||||
osMessageQueueReset(task_runtime.msgq.cmd.raw.host);
|
||||
osMessageQueuePut(task_runtime.msgq.cmd.raw.host, &(cmd_host), 0, 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user