Compare commits

...

9 Commits

Author SHA1 Message Date
RB
d79bb5ea0b 改完了 2025-03-19 17:19:43 +08:00
RB
3a509aaf87 修改扫描范围 2025-03-17 13:09:57 +08:00
RB
aa5e191f30 修改射频10 2025-03-16 23:40:02 +08:00
RB
1b0ed78b10 修改弹速 2025-03-16 23:02:55 +08:00
RB
fe7d4bd705 调了个硬的 2025-03-16 10:37:46 +08:00
RB
0ff235f235 准备调pid 2025-03-16 09:56:29 +08:00
RB
1f897bd9ae 调好pid了 2025-03-15 01:03:52 +08:00
RB
6b05b4d58a 修改扫描范围 2025-03-14 22:47:40 +08:00
RB
a749be5f93 修改扫描速度 2025-03-14 22:10:04 +08:00
19 changed files with 19131 additions and 19023 deletions

File diff suppressed because one or more lines are too long

View File

@ -417,7 +417,20 @@
<WinNumber>1</WinNumber>
<ItemText>host</ItemText>
</Ww>
<Ww>
<count>12</count>
<WinNumber>1</WinNumber>
<ItemText>gimbal_ai</ItemText>
</Ww>
</WatchWindow1>
<MemoryWindow4>
<Mm>
<WinNumber>4</WinNumber>
<SubType>0</SubType>
<ItemText>for_chassis</ItemText>
<AccSizeX>0</AccSizeX>
</Mm>
</MemoryWindow4>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>

Binary file not shown.

View File

@ -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/09/2025
Project File Date: 03/19/2025
<h2>Output:</h2>
*** Using Compiler 'V6.16', folder: 'C:\Keil_v5\ARM\ARMCLANG\Bin'
@ -37,9 +37,13 @@ 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 cmd.c...
compiling user_math.c...
compiling main.c...
compiling ai.c...
compiling config.c...
compiling shoot.c...
linking...
Program Size: Code=149536 RO-data=7272 RW-data=760 ZI-data=43832
Program Size: Code=149600 RO-data=6928 RW-data=1104 ZI-data=43832
FromELF: creating hex file...
"DevC\DevC.axf" - 0 Error(s), 0 Warning(s).
@ -55,7 +59,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:02
Build Time Elapsed: 00:00:03
</pre>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -3,7 +3,7 @@
<title>Static Call Graph - [DevC\DevC.axf]</title></head>
<body><HR>
<H1>Static Call Graph for image DevC\DevC.axf</H1><HR>
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 6160001: Last Updated: Mon Mar 10 22:02:56 2025
<BR><P>#&#060CALLGRAPH&#062# ARM Linker, 6160001: Last Updated: Wed Mar 19 17:14:45 2025
<BR><P>
<H3>Maximum Stack Usage = 632 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
Call chain for Maximum Stack Depth:</H3>
@ -724,9 +724,9 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[347]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ieee754_rem_pio2
</UL>
<P><STRONG><a name="[362]"></a>__decompress</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)
<P><STRONG><a name="[362]"></a>__decompress</STRONG> (Thumb, 0 bytes, Stack size unknown bytes, __dclz77c.o(.text), UNUSED)
<P><STRONG><a name="[363]"></a>__decompress1</STRONG> (Thumb, 86 bytes, Stack size unknown bytes, __dczerorl2.o(.text), UNUSED)
<P><STRONG><a name="[363]"></a>__decompress2</STRONG> (Thumb, 94 bytes, Stack size unknown bytes, __dclz77c.o(.text), UNUSED)
<P><STRONG><a name="[c3]"></a>AHRS_GetEulr</STRONG> (Thumb, 348 bytes, Stack size 48 bytes, ahrs.o(.text.AHRS_GetEulr))
<BR><BR>[Stack]<UL><LI>Max Depth = 80<LI>Call Chain = AHRS_GetEulr &rArr; __hardfp_atan2f
@ -751,8 +751,8 @@ Global Symbols
<P><STRONG><a name="[188]"></a>AHRS_ResetEulr</STRONG> (Thumb, 18 bytes, Stack size 4 bytes, ahrs.o(.text.AHRS_ResetEulr))
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = AHRS_ResetEulr
</UL>
<BR>[Called By]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_SetMode
<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
<BR>[Called By]<UL><LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
<LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_SetMode
</UL>
<P><STRONG><a name="[ca]"></a>AHRS_Update</STRONG> (Thumb, 3098 bytes, Stack size 224 bytes, ahrs.o(.text.AHRS_Update))
@ -1353,7 +1353,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[268]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Referee_Parse
</UL>
<P><STRONG><a name="[280]"></a>CalculateRpm</STRONG> (Thumb, 284 bytes, Stack size 20 bytes, user_math.o(.text.CalculateRpm))
<P><STRONG><a name="[280]"></a>CalculateRpm</STRONG> (Thumb, 320 bytes, Stack size 20 bytes, user_math.o(.text.CalculateRpm))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = CalculateRpm
</UL>
<BR>[Called By]<UL><LI><a href="#[27c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_Control
@ -1443,20 +1443,20 @@ Global Symbols
<P><STRONG><a name="[185]"></a>CircleAdd</STRONG> (Thumb, 132 bytes, Stack size 16 bytes, user_math.o(.text.CircleAdd))
<BR><BR>[Stack]<UL><LI>Max Depth = 16<LI>Call Chain = CircleAdd
</UL>
<BR>[Called By]<UL><LI><a href="#[283]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_UpdateFeedback
<BR>[Called By]<UL><LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
<LI><a href="#[283]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_UpdateFeedback
<LI><a href="#[27c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_Control
<LI><a href="#[27d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_SetMode
<LI><a href="#[189]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Init
<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
</UL>
<P><STRONG><a name="[186]"></a>CircleError</STRONG> (Thumb, 154 bytes, Stack size 20 bytes, user_math.o(.text.CircleError))
<BR><BR>[Stack]<UL><LI>Max Depth = 20<LI>Call Chain = CircleError
</UL>
<BR>[Called By]<UL><LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PID_Calc
<BR>[Called By]<UL><LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
<LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PID_Calc
<LI><a href="#[283]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_UpdateFeedback
<LI><a href="#[27d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_SetMode
<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
</UL>
<P><STRONG><a name="[14c]"></a>CircleReverse</STRONG> (Thumb, 32 bytes, Stack size 4 bytes, user_math.o(.text.CircleReverse))
@ -1752,7 +1752,7 @@ Global Symbols
<BR>[Called By]<UL><LI><a href="#[8e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Task_CLI
</UL>
<P><STRONG><a name="[183]"></a>Gimbal_Control</STRONG> (Thumb, 844 bytes, Stack size 64 bytes, gimbal.o(.text.Gimbal_Control))
<P><STRONG><a name="[183]"></a>Gimbal_Control</STRONG> (Thumb, 856 bytes, Stack size 64 bytes, gimbal.o(.text.Gimbal_Control))
<BR><BR>[Stack]<UL><LI>Max Depth = 184<LI>Call Chain = Gimbal_Control &rArr; Gimbal_SetMode &rArr; PID_Reset &rArr; LowPassFilter2p_Reset &rArr; LowPassFilter2p_Apply &rArr; __ARM_isinf
</UL>
<BR>[Calls]<UL><LI><a href="#[184]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_SetMode
@ -3118,11 +3118,11 @@ Global Symbols
<LI><a href="#[23a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__ARM_isinf
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2d
</UL>
<BR>[Called By]<UL><LI><a href="#[145]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Chassis_Control
<BR>[Called By]<UL><LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
<LI><a href="#[145]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Chassis_Control
<LI><a href="#[148]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;PID_Calc
<LI><a href="#[156]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;LowPassFilter2p_Reset
<LI><a href="#[27c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_Control
<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
</UL>
<P><STRONG><a name="[14e]"></a>LowPassFilter2p_Init</STRONG> (Thumb, 316 bytes, Stack size 40 bytes, filter.o(.text.LowPassFilter2p_Init))
@ -3448,10 +3448,10 @@ Global Symbols
<LI><a href="#[14a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;LowPassFilter2p_Apply
<LI><a href="#[c8]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;__aeabi_f2d
</UL>
<BR>[Called By]<UL><LI><a href="#[145]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Chassis_Control
<BR>[Called By]<UL><LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
<LI><a href="#[145]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Chassis_Control
<LI><a href="#[8d]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Task_AttiEsti
<LI><a href="#[27c]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Shoot_Control
<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
</UL>
<P><STRONG><a name="[14d]"></a>PID_Init</STRONG> (Thumb, 406 bytes, Stack size 32 bytes, pid.o(.text.PID_Init))
@ -3972,12 +3972,12 @@ Global Symbols
<LI><a href="#[f7]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;osKernelGetTickFreq
<LI><a href="#[289]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;osKernelGetTickCount
<LI><a href="#[28e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;osDelayUntil
<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
<LI><a href="#[18a]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_UpdateFeedback
<LI><a href="#[29e]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_PackAI
<LI><a href="#[189]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Init
<LI><a href="#[2a0]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_DumpUI
<LI><a href="#[29f]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_DumpOutput
<LI><a href="#[183]">&gt;&gt;</a>&nbsp;&nbsp;&nbsp;Gimbal_Control
</UL>
<BR>[Address Reference Count : 1]<UL><LI> init.o(.text.Task_Init)
</UL>

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.

View File

@ -107,6 +107,7 @@ 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;

View File

@ -51,7 +51,7 @@ int8_t AI_Init(AI_t *ai) {
BSP_UART_RegisterCallback(BSP_UART_AI, BSP_UART_IDLE_LINE_CB,
Ai_IdleLineCallback);
ai->search_velocity.yaw = 0.0015f;
ai->search_velocity.yaw = 0.0025f;
ai->search_velocity.pit = 0.003f;
inited = true;
return 0;
@ -99,15 +99,15 @@ 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){
if (gimbal_ai->pit > 2.75){
if (gimbal_ai->pit > 2.45){
ai->search_velocity.pit = fAbs(ai->search_velocity.pit);
} else if (gimbal_ai->pit < 2.35) {
} else if (gimbal_ai->pit < 2.2) {
ai->search_velocity.pit = -fAbs(ai->search_velocity.pit);
}
if (gimbal_ai->yaw > 1.4 && gimbal_ai->yaw < 1.7) {
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.7 && gimbal_ai->yaw < 6.0) {
} else if (gimbal_ai->yaw > 5.4 && gimbal_ai->yaw < 6.0) {
ai->search_velocity.yaw = fAbs(ai->search_velocity.yaw);
}

View File

@ -345,7 +345,11 @@ static const Config_RobotParam_t param_hero = {
}, /* can */
}; /* param_hero */
#ifdef DEBUG
Config_RobotParam_t param_sentry = {
#else
static const Config_RobotParam_t param_sentry = {
#endif
.model = ROBOT_MODEL_SENTRY,
.chassis = { /* 底盘模块参数 */
@ -388,8 +392,8 @@ static const Config_RobotParam_t param_sentry = {
.pid = {
{
/* GIMBAL_PID_YAW_OMEGA_IDX */
.k = 0.24f,
.p = 1.0f,
.k = 0.20f,
.p = 0.8f,
.i = 0.5f,
.d = 0.0f,
.i_limit = 1.0f,
@ -398,8 +402,8 @@ static const Config_RobotParam_t param_sentry = {
.range = -1.0f,
}, {
/* GIMBAL_PID_YAW_ANGLE_IDX */
.k = 10.0f,
.p = 1.0f,
.k = 8.0f,
.p = 0.8f,
.i = 0.0f,
.d = 0.05f,
.i_limit = 0.0f,
@ -409,8 +413,8 @@ static const Config_RobotParam_t param_sentry = {
}, {
/* GIMBAL_PID_PIT_OMEGA_IDX */
.k = 0.25f,
.p = 1.0f,
.k = 0.2f,
.p = 0.8f,
.i = 0.0f,
.d = 0.0f,
.i_limit = 1.0f,
@ -420,7 +424,7 @@ static const Config_RobotParam_t param_sentry = {
}, {
/* GIMBAL_PID_PIT_ANGLE_IDX */
.k = 2.0f,
.p = 5.0f,
.p = 4.0f,
.i = 2.5f,
.d = 0.0f,
.i_limit = 0.0f,
@ -642,3 +646,4 @@ const Config_PilotCfgMap_t *Config_GetPilotNameMap(void) {
const Config_RobotParamMap_t *Config_GetRobotNameMap(void) {
return robot_param_map;
}

View File

@ -153,10 +153,10 @@ int8_t Gimbal_Control(Gimbal_t *g, CMD_GimbalCmd_t *g_cmd, uint32_t now) {
g->setpoint.eulr.pit += g_cmd->delta_eulr.pit;
/* 限制yaw转动范围待优化 */
if (g->setpoint.eulr.yaw > 5.9f && g->setpoint.eulr.yaw < 6.0f) {
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.5f) {
g->setpoint.eulr.yaw = 1.5f;
} else if (g->setpoint.eulr.yaw > 1.4f && g->setpoint.eulr.yaw < 1.71f) {
g->setpoint.eulr.yaw = 1.71f;
}

View File

@ -15,7 +15,7 @@
#define HEAT_INCREASE_17MM (10.f) /* 每发射一颗17mm弹丸增加10热量 */
#define BULLET_SPEED_LIMIT_42MM (16.0)
#define BULLET_SPEED_LIMIT_17MM (30.0)
#define BULLET_SPEED_LIMIT_17MM (25.0)
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */