1.0
This commit is contained in:
@@ -220,8 +220,18 @@ static void execute_turn(const CorridorObs_t* obs,
|
||||
uint32_t now_ms,
|
||||
GlobalNavOutput_t* out)
|
||||
{
|
||||
float imu_yaw = board->imu_yaw_continuous.is_valid
|
||||
? board->imu_yaw_continuous.value : 0.0f;
|
||||
/* [改进G] IMU 失效安全保护: 没有 IMU 数据时立即停车,不盲转。
|
||||
* 超时后会被外部超时保护捕获,进入 GNAV_ERROR。 */
|
||||
if (!board->imu_yaw_continuous.is_valid) {
|
||||
out->override_v = 0.0f;
|
||||
out->override_w = 0.0f;
|
||||
out->use_override = true;
|
||||
out->request_corridor = false;
|
||||
out->safety_mode = SAFETY_MODE_IDLE;
|
||||
return;
|
||||
}
|
||||
|
||||
float imu_yaw = board->imu_yaw_continuous.value;
|
||||
|
||||
/* 已转过的角度 (取绝对值) */
|
||||
float delta = (imu_yaw - s_nav.turn_start_yaw_deg) * s_nav.turn_sign;
|
||||
@@ -438,8 +448,9 @@ void GlobalNav_Update(const CorridorObs_t* obs,
|
||||
s_last_odom_vx = odom_vx;
|
||||
}
|
||||
|
||||
/* [改进G] IMU yaw 提取: 失效时使用参考值,保持航向不变而不是跳到 0 */
|
||||
float imu_yaw_deg = board->imu_yaw_continuous.is_valid
|
||||
? board->imu_yaw_continuous.value : 0.0f;
|
||||
? board->imu_yaw_continuous.value : s_nav.heading_ref_deg;
|
||||
|
||||
/* 默认输出 */
|
||||
out->use_override = true;
|
||||
|
||||
Reference in New Issue
Block a user