Files
ASER/App/robot_params.h

407 lines
15 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
*/
#define PARAM_WHEEL_TRACK 0.140f
/** @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
*/
#define PARAM_REAR_LASER_OFFSET 0.0f
/** @brief [实测] 侧向 VL53L0X 传感器内缩距离 [m]
* VL53L0X ()
* 0 1cm 0.01
* d_actual_to_wall = d_sensor - sensor_inset
*
* 40cm - 20cm = 10cm1cm的偏差就是10%
*/
#define PARAM_VL53_SIDE_INSET 0.0f
/* ------------------- 编码器参数 ------------------- */
/** @brief [实测] 编码器每转脉冲数 (CPR)
* F407
* 500 (F407 )
*/
#define PARAM_ENCODER_CPR 500
/* =========================================================
* 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
/* --- EKF 观测噪声 R (对传感器信任度) --- */
/** @brief [调优] 横向观测噪声方差 [m²]
* VL53L0X
* 0.001
* 0.001~0.005
* EKF
* EKF
*/
#define PARAM_EKF_R_EY 0.002f
/** @brief [调优] 航向观测噪声方差 [rad²]
*
* 0.001
* 0.0005~0.003
*/
#define PARAM_EKF_R_ETH 0.001f
/** @brief [调优] IMU 航向观测噪声方差 [rad²]
* IMU yaw EKF
* IMU yaw ( wz )
* R R_ETH
* 0.01 IMU yaw
* 0.005~0.05
* IMU
* IMU
*/
#define PARAM_EKF_R_ETH_IMU 0.01f
/* --- 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
*
*
*/
#define PARAM_CTRL_KD_THETA 0.1f
/** @brief [调优] 横向比例增益 kp_y [1/(m·s)]
* 1m
* 1.0
* 1.5~4.0
*
*
*/
#define PARAM_CTRL_KP_Y 3.0f
/** @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
*
*
*
*/
#define PARAM_SAFE_D_FRONT_STOP 0.08f
/** @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, )
* 100000 (100ms)
* 100ms 200ms
*/
#define PARAM_VL53_TIMING_BUDGET 100000U
/** @brief [调优] VL53L0X 卡尔曼滤波参数 Q
*
* 5.0~20.0
*/
#define PARAM_VL53_KALMAN_Q 10.0f
/** @brief [调优] VL53L0X 卡尔曼滤波参数 R
*
* 10.0~30.0
*/
#define PARAM_VL53_KALMAN_R 14.1f
/* --- IMU --- */
/** @brief [实测] HWT101 IMU 安装偏置 (航向) [rad]
* IMU
* IMU
*
*/
#define PARAM_IMU_YAW_OFFSET 0.0f
/* =========================================================
*
* ========================================================= */
#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 */