保护速度

This commit is contained in:
Robofish 2026-03-17 08:41:22 +08:00
parent 0f4dfbd61d
commit 55403f1f87

View File

@ -1047,12 +1047,19 @@ int8_t Chassis_LQRControl(Chassis_t *c, const Chassis_CMD_t *c_cmd) {
} }
/* 有速度指令时:纯速度控制,目标位移跟随当前位移(消除位移误差) /* 有速度指令时:纯速度控制,目标位移跟随当前位移(消除位移误差)
* + */ * +
* ±2m */
if (fabsf(c->chassis_state.target_velocity_x) > 0.01f) { if (fabsf(c->chassis_state.target_velocity_x) > 0.01f) {
c->chassis_state.target_x = c->chassis_state.position_x; c->chassis_state.target_x = c->chassis_state.position_x;
} else { } else {
c->chassis_state.target_x += c->chassis_state.target_velocity_x * c->dt; c->chassis_state.target_x += c->chassis_state.target_velocity_x * c->dt;
} }
float pos_err = c->chassis_state.target_x - c->chassis_state.position_x;
if (pos_err > 2.0f) {
c->chassis_state.target_x = c->chassis_state.position_x + 2.0f;
} else if (pos_err < -2.0f) {
c->chassis_state.target_x = c->chassis_state.position_x - 2.0f;
}
/* ==================== 状态更新 ==================== */ /* ==================== 状态更新 ==================== */