This commit is contained in:
2026-04-05 11:23:18 +08:00
parent f13d7eb686
commit f829fa6bb7
3 changed files with 18 additions and 31 deletions

View File

@@ -164,11 +164,10 @@ void Chassis_Diagnostics_10ms_Tick(void);
/*
* 20ms 周期调用:
* - 发送 0x181 状态帧
* - 发送 0x182 实际轮速帧
* - 发送 0x183 目标轮速帧
* - 发送 0x200 里程计帧
* - 内部每 5 次额外发送 1 次 0x184 通信诊断帧
* - 发送 0x181 状态帧每次20ms
* - 发送 0x200 里程计帧每次20ms
* - 轮流发送 0x182 实际轮速帧 / 0x183 目标轮速帧(各 40ms
* - 内部每 5 次额外发送 1 次 0x184 通信诊断帧100ms
*/
void CAN_Send_Telemetry_20ms(void);

View File

@@ -18,7 +18,7 @@ volatile uint32_t g_dbg_valid_accept = 0U;
/* ================= 机器人底盘物理参数 ================= */
#define WHEEL_RADIUS_M 0.04f
#define WHEEL_TRACK_M 0.30f
#define WHEEL_TRACK_M 0.25f
#define PI_F 3.14159265358979323846f
/* ================= CAN 协议参数 ================= */
@@ -929,32 +929,20 @@ void CAN_Send_Telemetry_20ms(void)
/* 状态帧最重要,固定每 20ms 发一次 */
CAN_Send_StatusFrame();
/* 第二帧轮换发送,避免同一拍挤爆 3 个 TX mailbox */
switch (s_telem_slot)
/* 里程计帧实时性关键,固定每 20ms 发一次 */
CAN_Send_OdomFrame();
/* 轮速帧轮换发送,降低瞬时总线负载 */
if (s_telem_slot == 0U)
{
case 0:
CAN_Send_ActualRpmFrame(); /* 0x182 */
break;
case 1:
CAN_Send_TargetRpmFrame(); /* 0x183 */
break;
case 2:
CAN_Send_OdomFrame(); /* 0x200 */
break;
default:
s_telem_slot = 0U;
CAN_Send_ActualRpmFrame();
break;
CAN_Send_ActualRpmFrame(); /* 0x182 - 40ms 周期 */
}
else
{
CAN_Send_TargetRpmFrame(); /* 0x183 - 40ms 周期 */
}
s_telem_slot++;
if (s_telem_slot >= 3U)
{
s_telem_slot = 0U;
}
s_telem_slot = 1U - s_telem_slot; /* 在 0 和 1 之间切换 */
/* 通信诊断帧保持 100ms 一次 */
s_comm_diag_divider++;

View File

@@ -7,11 +7,11 @@
/* 这组只是保守起始值b0 仍建议后续辨识 */
#define LADRC_DEFAULT_WC 12.0f
#define LADRC_DEFAULT_WO 25.0f
#define LADRC_DEFAULT_B0 0.80f
#define LADRC_DEFAULT_B0 0.60f
#define LADRC_DEFAULT_OUT_MAX 1000.0f
/* 把目标爬坡放到控制循环内部,避免依赖外部调用频率 */
#define LADRC_TARGET_SLEW_RPM_PER_S 100.0f
#define LADRC_TARGET_SLEW_RPM_PER_S 400.0f
static float LADRC_Abs(float x);
static float LADRC_Clamp(float x, float min_value, float max_value);