Files
ASER/App/robot_params.h

508 lines
20 KiB
C
Raw Normal View History

2026-03-31 23:30:33 +08:00
/**
* @file robot_params.h
* @brief ARES
*
* ============================================
*
* ============================================
* 1. (m) (rad) m/s
* 2. "实测"/
* 3. "调优"
* 4.
*
* :
* P0: () ->
* P1: -> 10 /
* P2: ->
* P3: ->
* P4: ->
*/
#ifndef ROBOT_PARAMS_H
#define ROBOT_PARAMS_H
#include <stdint.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
/* =========================================================
* P0/ (!)
* ========================================================= */
/* ------------------- 车体几何 ------------------- */
/** @brief [实测] 车体外轮廓宽度 [m] (左右方向,含外壳)
*
* 20cm -> 0.20
*
*/
#define PARAM_ROBOT_WIDTH 0.200f
/** @brief [实测] 车体外轮廓长度 [m] (前后方向,含外壳)
*
* 20cm -> 0.20
*
*/
#define PARAM_ROBOT_LENGTH 0.200f
/** @brief [实测] 驱动轮标称直径 [m]
* ()
* 60mm -> 0.060
*/
#define PARAM_WHEEL_DIAMETER 0.080f
/** @brief [实测] 左右轮中心距 [m]
*
* 20cm 3cm -> 0.14m
*/
2026-04-05 14:38:15 +08:00
#define PARAM_WHEEL_TRACK 0.130f
2026-03-31 23:30:33 +08:00
/** @brief [实测] 同侧前后 VL53L0X 雷达纵向间距 [m]
* VL53L0X
* 0.10~0.15m
* z_eth = atan2((d_back-d_front), L_s)
*/
#define PARAM_SENSOR_BASE_LENGTH 0.120f
/** @brief [实测] 比赛走廊标准宽度 [m]
* ( 40cm±5% )
* 0.40 ()
*/
#define PARAM_CORRIDOR_WIDTH 0.40f
/** @brief [实测] 前向激光雷达安装中心偏置 [m]
* ()
* 0
* d_body_front = d_sensor - offset
*
*/
#define PARAM_FRONT_LASER_OFFSET 0.0f
/** @brief [实测] 后向激光雷达安装中心偏置 [m]
* ()
* 0
* d_body_rear = d_sensor - offset
*/
2026-04-05 14:51:14 +08:00
#define PARAM_REAR_LASER_OFFSET 0.0f
2026-03-31 23:30:33 +08:00
/** @brief [实测] 侧向 VL53L0X 传感器内缩距离 [m]
* VL53L0X ()
* 0 1cm 0.01
* d_actual_to_wall = d_sensor - sensor_inset
*
* 40cm - 20cm = 10cm1cm的偏差就是10%
2026-04-04 23:24:36 +08:00
* 使
2026-03-31 23:30:33 +08:00
*/
#define PARAM_VL53_SIDE_INSET 0.0f
2026-04-04 23:24:36 +08:00
/** @brief [改进A][实测] 左侧 VL53L0X 传感器内缩距离 [m]
* ()
* = (-)/2 = (0.40-0.20)/2 = 0.10m
* left_inset = -
* ("持续偏右/偏左")
* 0.0
*/
#define PARAM_VL53_LEFT_INSET 0.0f
/** @brief [改进A][实测] 右侧 VL53L0X 传感器内缩距离 [m]
* right_inset = -
* 0.0
*/
#define PARAM_VL53_RIGHT_INSET 0.0f
2026-03-31 23:30:33 +08:00
/* ------------------- 编码器参数 ------------------- */
/** @brief [实测] 编码器每转脉冲数 (CPR)
* F407
* 500 (F407 )
*/
2026-04-04 15:59:11 +08:00
#define PARAM_ENCODER_CPR 3680
2026-03-31 23:30:33 +08:00
2026-04-08 12:49:16 +08:00
/* =========================================================
* P1-EXTVL53
* ========================================================= */
/** @brief 侧向 ToF 驱动选择
* 0 = VL53L0X
* 1 = VL53L1X
*/
#ifndef PARAM_VL53_USE_L1X
2026-04-11 13:08:54 +08:00
#define PARAM_VL53_USE_L1X 1
2026-04-08 12:49:16 +08:00
#endif
2026-03-31 23:30:33 +08:00
/* =========================================================
* P1 ()
* ========================================================= */
/** @brief [调优] 里程计过程噪声 [m²/s²]
*
* 线 10 EKF s
* 0.01~0.1
* EKF
* EKF 沿 s
*/
#define PARAM_ODOM_PROCESS_NOISE 0.1f
/** @brief [调优] 里程计速度低通滤波系数
* alpha=0.8 20% 80%
* 0.7~0.9
*/
#define PARAM_ODOM_LOWPASS_ALPHA 0.8f
/* =========================================================
* P2 EKF ()
* ========================================================= */
/* --- EKF 过程噪声 Q (对模型信任度) --- */
/** @brief [调优] 横向偏差 e_y 过程噪声方差 [m²]
*
* 0.001
* 0.001~0.02
* EKF ->
* EKF
*/
#define PARAM_EKF_Q_EY 0.01f
/** @brief [调优] 航向偏差 e_th 过程噪声方差 [rad²]
*
* IMU
* 0.0001~0.005
* EKF IMU
* EKF IMU
*/
#define PARAM_EKF_Q_ETH 0.001f
/** @brief [调优] 沿程进度 s 过程噪声方差 [m²]
*
*
* 0.05~0.2
*/
#define PARAM_EKF_Q_S 0.1f
2026-04-05 10:15:40 +08:00
/** @brief [改进] 横向-航向耦合过程噪声 [m·rad]
* e_y e_th
*
* 0
* 0~0.005
* 0 退 Q
*/
#define PARAM_EKF_Q_EY_ETH 0.0f
2026-03-31 23:30:33 +08:00
/* --- EKF 观测噪声 R (对传感器信任度) --- */
/** @brief [调优] 横向观测噪声方差 [m²]
* VL53L0X
2026-04-04 23:24:36 +08:00
* [B] 0.002 0.015 VL53
* VL53
* 0.005~0.02
2026-03-31 23:30:33 +08:00
* EKF
* EKF
*/
2026-04-04 23:24:36 +08:00
#define PARAM_EKF_R_EY 0.015f
2026-03-31 23:30:33 +08:00
/** @brief [调优] 航向观测噪声方差 [rad²]
*
* 0.001
* 0.0005~0.003
*/
#define PARAM_EKF_R_ETH 0.001f
/** @brief [调优] IMU 航向观测噪声方差 [rad²]
* IMU yaw EKF
2026-04-04 23:24:36 +08:00
* [C] 0.01 0.002 IMU yaw
* IMU e_th R
* IMU yaw
* 0.001~0.01
* IMU e_th wz
* IMU
*/
#define PARAM_EKF_R_ETH_IMU 0.002f
2026-03-31 23:30:33 +08:00
/* --- EKF 初始状态 --- */
/** @brief [调优] e_y 初始不确定度 [m²]
*
* 0.01~0.1 ( 10~30cm )
*/
#define PARAM_EKF_P0_EY 0.1f
/** @brief [调优] e_th 初始不确定度 [rad²]
*
* 0.05~0.2 ( 13°~26°)
*/
#define PARAM_EKF_P0_ETH 0.1f
/* --- χ² 检验门限 (鲁棒拒绝) --- */
/** @brief [固定] 1 自由度 χ² 检验门限 (95% 置信度)
*
* 3.84 (95%), 6.63 (99%)
*
*/
#define PARAM_CHI2_1DOF 3.84f
/** @brief [固定] 2 自由度 χ² 检验门限 (95% 置信度)
* 5.99
*/
#define PARAM_CHI2_2DOF 5.99f
/* =========================================================
* P3 ()
* ========================================================= */
/** @brief [调优] 航向比例增益 kp_theta [1/s]
* 1 rad
* 0.5
* 1.0~3.0
* ()
*
*/
#define PARAM_CTRL_KP_THETA 2.0f
/** @brief [调优] 航向微分增益 kd_theta [s]
* IMU
* 0.05
* 0.05~0.2
*
*
*/
2026-04-04 15:59:11 +08:00
#define PARAM_CTRL_KD_THETA 0.4f
2026-03-31 23:30:33 +08:00
/** @brief [调优] 横向比例增益 kp_y [1/(m·s)]
* 1m
* 1.0
* 1.5~4.0
*
*
*/
2026-04-04 17:09:19 +08:00
#define PARAM_CTRL_KP_Y 4.0f
2026-03-31 23:30:33 +08:00
/** @brief [调优] 走廊巡航速度 [m/s]
*
* 0.1 m/s
* 0.15~0.4 m/s
*
*/
#define PARAM_CTRL_V_CRUISE 0.15f
/** @brief [调优] 角速度输出限幅 [rad/s]
*
* 1.0~2.0 ( 57°/s ~ 115°/s)
*/
#define PARAM_CTRL_W_MAX 1.5f
/** @brief [调优] 线速度输出限幅 [m/s]
* 线
* 0.3~0.5
*/
#define PARAM_CTRL_V_MAX 0.3f
/** @brief [调优] 弯道减速系数 [0~1]
* 线
* v = v_cruise * (1 - k * |w/w_max|)
* 0.3~0.5
*/
#define PARAM_CTRL_SPEED_REDUCTION 0.4f
/* =========================================================
* P4
* ========================================================= */
/* --- 到端检测 --- */
/** @brief [调优] 前向停车距离阈值 [m]
* ()
* PARAM_FRONT_LASER_OFFSET () + (2~5cm)
* (offset=0) + 3cm安全裕量 = 0.03m
* 5cm(offset=0.05) + 3cm安全裕量 = 0.08m
* >= PARAM_FRONT_LASER_OFFSET
*
*
*
*/
2026-04-04 17:09:19 +08:00
#define PARAM_SAFE_D_FRONT_STOP 0.10f
2026-03-31 23:30:33 +08:00
/** @brief [调优] 前向减速预警距离 [m]
* 线
* 0.20~0.40
*/
#define PARAM_SAFE_D_FRONT_APPROACH 0.25f
/** @brief [调优] 减速区最低速度 [m/s]
*
* 0.03~0.08
*/
#define PARAM_SAFE_APPROACH_MIN_V 0.05f
/* --- 置信度降级 --- */
/** @brief [调优] E-Stop 置信度阈值
* EKF
* 0.05~0.15
*/
#define PARAM_SAFE_CONF_ESTOP 0.1f
/** @brief [调优] 单侧退化置信度
* VL53L0X
* 0.6~0.8
*/
#define PARAM_SAFE_CONF_DEGRADED 0.7f
/* --- 入口/退出 --- */
/** @brief [调优] 入口对准速度 [m/s]
*
* 0.05~0.10
*/
#define PARAM_SCRIPT_ENTRY_V 0.08f
/** @brief [调优] 入口对准超时 [ms]
* ()
* 20000~40000 (20~40 )
*/
#define PARAM_SCRIPT_ENTRY_TIMEOUT 30000U
/** @brief [调优] 原地转向角速度 [rad/s]
* 180
* 0.8~1.5
*/
#define PARAM_SCRIPT_TURN_OMEGA 1.0f
/** @brief [调优] 退出场地后冲距离 [m]
*
* 1.5~2.5
*/
#define PARAM_SCRIPT_EXIT_RUNOUT 2.0f
/** @brief [调优] 退出场地直线冲出速度 [m/s]
* 线
* 0.3~0.5
* turn_omega ()
*/
#define PARAM_SCRIPT_EXIT_V 0.3f
/* =========================================================
* P5
* ========================================================= */
/* --- VL53L0X --- */
/** @brief [实测] VL53L0X 测距预算 [μs]
*
* 20000(20ms, ), 33000(33ms), 100000(100ms), 200000(200ms, )
2026-04-04 21:19:41 +08:00
* 33000 (33ms)
* 33ms
2026-03-31 23:30:33 +08:00
*/
2026-04-04 21:19:41 +08:00
#define PARAM_VL53_TIMING_BUDGET 33000U
2026-03-31 23:30:33 +08:00
2026-04-05 10:15:40 +08:00
/** @brief [调试] 是否启用 VL53L0X 端EMA滤波
2026-04-04 21:51:55 +08:00
* 1: 使 range_mm_filtered
* 0: range_mm_filtered便 A/B
*/
2026-04-05 10:15:40 +08:00
#define PARAM_VL53_USE_EMA_FILTER 1
2026-03-31 23:30:33 +08:00
2026-04-05 10:15:40 +08:00
/** @brief [调优] VL53L0X EMA滤波平滑系数 alpha
* (0.0~1.0)
* -
* -
*
* 0.3 - (100ms)
* 0.4 - (60ms)
* 0.5 - (40ms)
* 0.6 - (25ms)
2026-03-31 23:30:33 +08:00
*/
2026-04-05 10:15:40 +08:00
#define PARAM_VL53_EMA_ALPHA 0.4f
2026-03-31 23:30:33 +08:00
/* --- IMU --- */
/** @brief [实测] HWT101 IMU 安装偏置 (航向) [rad]
* IMU
* IMU
*
*/
#define PARAM_IMU_YAW_OFFSET 0.0f
2026-04-03 08:56:26 +08:00
/* =========================================================
* P6 ()
* ========================================================= */
/** @brief 编译开关1=赛道模式(6沟S型遍历) 0=单沟测试模式(原nav_script) */
2026-04-05 14:38:15 +08:00
#define USE_GLOBAL_NAV 1
2026-04-03 08:56:26 +08:00
2026-04-07 21:43:23 +08:00
/** @brief 上电后导航启动延迟 [ms]
* IMU VL53
*
*/
#define PARAM_NAV_STARTUP_DELAY_MS 5000U
2026-04-03 08:56:26 +08:00
/* --- 入场段 --- */
2026-04-03 13:46:45 +08:00
/* 启动区入口(Y=40)距第一条垄沟(Y=36~39)极近,入场距离仅约 10~40cm */
#define PARAM_GNAV_ENTRY_V 0.08f /* m/s — 入场速度 (沿左端纵向通道向北) */
#define PARAM_GNAV_ENTRY_DISTANCE 0.30f /* m — 入场里程上限 (启动区到C1入口约10~30cm) */
2026-04-03 08:56:26 +08:00
#define PARAM_GNAV_ENTRY_TIMEOUT 10000U /* ms — 入场超时 */
/* --- 转向 --- */
#define PARAM_GNAV_TURN_OMEGA 1.0f /* rad/s — 转向角速度 */
#define PARAM_GNAV_TURN_TOLERANCE 0.087f /* rad — 转向完成容差 (~5°) */
#define PARAM_GNAV_TURN_DECEL_ZONE 0.5f /* rad — 接近目标时减速区 (~28°) */
#define PARAM_GNAV_TURN_MIN_OMEGA 0.3f /* rad/s — 减速区最低角速度 */
#define PARAM_GNAV_TURN_TIMEOUT 8000U /* ms — 单次转向超时 */
/* --- 重捕获 --- */
2026-04-07 21:43:23 +08:00
#define PARAM_GNAV_REACQUIRE_V 0.1f /* m/s — 重捕获入沟速度 */
2026-04-03 08:56:26 +08:00
#define PARAM_GNAV_REACQUIRE_CONF 0.6f /* — 重捕获置信度阈值 */
#define PARAM_GNAV_REACQUIRE_WIDTH_TOL 0.05f /* m — 走廊宽度容差 */
2026-04-11 13:08:54 +08:00
#define PARAM_GNAV_REACQUIRE_TICKS 10 /* 拍 — 连续确认次数 (5×20ms=100ms) */
2026-04-03 08:56:26 +08:00
#define PARAM_GNAV_REACQUIRE_TIMEOUT 5000U /* ms — 重捕获超时 */
/* --- 沟内 --- */
#define PARAM_GNAV_CORRIDOR_MAX_LEN 2.50f /* m — 沟内里程保护上限 */
2026-04-07 21:43:23 +08:00
#define PARAM_GNAV_CORRIDOR_END_DIST 0.05f /* m — 到端检测距离 */
2026-04-03 08:56:26 +08:00
/* --- 连接段 --- */
2026-04-03 13:46:45 +08:00
/* 在纵向端部通道里北行,从一条垄沟入口到下一条入口,距离=垄沟宽40cm+垄背宽30cm=70cm */
#define PARAM_GNAV_LINK_V 0.10f /* m/s — 连接段速度 (纵向通道内IMU航向保持) */
2026-04-03 08:56:26 +08:00
#define PARAM_GNAV_LINK_DISTANCE 0.70f /* m — 连接段标称距离 (沟间距) */
#define PARAM_GNAV_LINK_TIMEOUT 8000U /* ms — 连接段超时 */
/* --- 出场 --- */
2026-04-03 13:46:45 +08:00
/* C6完成后在左端通道左转朝南沿纵向通道南行回到入口距离约390cm */
#define PARAM_GNAV_EXIT_V 0.15f /* m/s — 出场速度 (沿左端通道向南) */
2026-04-03 08:56:26 +08:00
#define PARAM_GNAV_EXIT_RUNOUT 1.50f /* m — 出场侧向丢失后冲刺距离 */
2026-04-03 13:46:45 +08:00
#define PARAM_GNAV_EXIT_MAX_DIST 4.50f /* m — 出场里程保护 (通道全长约3.9m) */
#define PARAM_GNAV_EXIT_TIMEOUT 30000U /* ms — 出场超时 (距离长,给足时间) */
2026-04-03 08:56:26 +08:00
/* --- 回停 --- */
#define PARAM_GNAV_DOCK_V 0.05f /* m/s — 回停速度 */
#define PARAM_GNAV_DOCK_DISTANCE 0.50f /* m — 回停推进距离 */
/* --- 航向保持 --- */
#define PARAM_GNAV_HEADING_KP 0.03f /* — — 航向保持P增益 (输入°输出rad/s) */
2026-03-31 23:30:33 +08:00
/* =========================================================
*
* ========================================================= */
#define PARAM_RAD2DEG(rad) ((rad) * 57.2957795131f)
#define PARAM_DEG2RAD(deg) ((deg) * 0.01745329252f)
/* =========================================================
*
* =========================================================
*
* :
* 1. (P0 ) ->
* 2. (P1 ) -> 10
* 3. -> kp_theta, kd_theta
* 4. -> kp_y, v_cruise
* 5. ->
* 6. ->
*
* :
* -> kp_theta kd_theta
* -> kp_y
* -> d_front_stop approach
* -> exit_runout v_cruise
* EKF -> Q R
*
* =========================================================
*/
#ifdef __cplusplus
}
#endif
#endif /* ROBOT_PARAMS_H */