This commit is contained in:
2026-04-04 15:59:11 +08:00
parent 7d010a85c3
commit ee63bee6e5
3 changed files with 11 additions and 6 deletions

View File

@@ -42,9 +42,9 @@ void CorridorCtrl_Compute(const CorridorState_t *state,
* - kp_y * e_y : 横向纠偏,车身偏了就产生角速度拉回来 * - kp_y * e_y : 横向纠偏,车身偏了就产生角速度拉回来
* ======================================================== */ * ======================================================== */
float w_cmd = s_cfg.kp_theta * state->e_th float w_cmd = -(s_cfg.kp_theta * state->e_th
+ s_cfg.kd_theta * (-imu_wz) + s_cfg.kd_theta * imu_wz
+ s_cfg.kp_y * state->e_y; + s_cfg.kp_y * state->e_y);
/* 角速度限幅:防止 PD 溢出导致原地打转 */ /* 角速度限幅:防止 PD 溢出导致原地打转 */
w_cmd = clampf(w_cmd, -s_cfg.w_max, s_cfg.w_max); w_cmd = clampf(w_cmd, -s_cfg.w_max, s_cfg.w_max);

View File

@@ -4,6 +4,7 @@
*/ */
#include "nav_script.h" #include "nav_script.h"
#include "est/corridor_filter.h"
#include <stdint.h> #include <stdint.h>
#include <stdbool.h> #include <stdbool.h>
#include <math.h> #include <math.h>
@@ -215,6 +216,10 @@ void NavScript_Update(const CorridorObs_t *obs,
/* 转向完成 -> 决定下一步 */ /* 转向完成 -> 决定下一步 */
if (s_internal.pass_count < 2) { if (s_internal.pass_count < 2) {
/* 只走了一遍,往回走 */ /* 只走了一遍,往回走 */
/* 180° 掉头后,走廊方向基准已经翻转。
* 必须清空上一趟的 EKF/IMU 航向参考,避免返程首拍把新朝向
* 误判成大航向误差,导致一恢复闭环就猛打方向。 */
CorridorFilter_Reset();
s_internal.pass_count++; s_internal.pass_count++;
s_stage = SCRIPT_STAGE_CORRIDOR_BACKWARD; s_stage = SCRIPT_STAGE_CORRIDOR_BACKWARD;
} else { } else {

View File

@@ -101,7 +101,7 @@ extern "C" {
* 测量方法:查阅 F407 固件配置,或实车转动一圈数脉冲 * 测量方法:查阅 F407 固件配置,或实车转动一圈数脉冲
* 典型值500 (F407 默认固件) * 典型值500 (F407 默认固件)
*/ */
#define PARAM_ENCODER_CPR 500 #define PARAM_ENCODER_CPR 3680
/* ========================================================= /* =========================================================
* 【P1】里程计参数 (实车标定) * 【P1】里程计参数 (实车标定)
@@ -226,7 +226,7 @@ extern "C" {
* 过大:车头转动被过度抑制,响应迟钝 * 过大:车头转动被过度抑制,响应迟钝
* 过小:阻尼不足,容易超调震荡 * 过小:阻尼不足,容易超调震荡
*/ */
#define PARAM_CTRL_KD_THETA 0.1f #define PARAM_CTRL_KD_THETA 0.4f
/** @brief [调优] 横向比例增益 kp_y [1/(m·s)] /** @brief [调优] 横向比例增益 kp_y [1/(m·s)]
* 含义:横向偏差 1m 时产生的角速度修正 * 含义:横向偏差 1m 时产生的角速度修正
@@ -376,7 +376,7 @@ extern "C" {
* ========================================================= */ * ========================================================= */
/** @brief 编译开关1=赛道模式(6沟S型遍历) 0=单沟测试模式(原nav_script) */ /** @brief 编译开关1=赛道模式(6沟S型遍历) 0=单沟测试模式(原nav_script) */
#define USE_GLOBAL_NAV 1 #define USE_GLOBAL_NAV 0
/* --- 入场段 --- */ /* --- 入场段 --- */
/* 启动区入口(Y=40)距第一条垄沟(Y=36~39)极近,入场距离仅约 10~40cm */ /* 启动区入口(Y=40)距第一条垄沟(Y=36~39)极近,入场距离仅约 10~40cm */