1.0
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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++;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user