2026.7.29日志输出修改
This commit is contained in:
@@ -242,11 +242,7 @@ class MissionManager:
|
||||
if self.state not in (MissionState.INIT, MissionState.FINISHED):
|
||||
if state is not None:
|
||||
if not self.proxy.is_state_fresh(state):
|
||||
age_us, _ = self.proxy.get_state_freshness(state)
|
||||
age_s = (age_us or 0) / 1_000_000
|
||||
self._throttle_log("stale_state", 5.0,
|
||||
"⚠️ STATE 严重过期 (age=%.2fs),"
|
||||
"本轮保守跳过", age_s, level=logging.WARNING)
|
||||
# 过期警告已由 is_state_fresh 内部输出,此处不重复打印
|
||||
return
|
||||
else:
|
||||
logger.warning("⚠️ 尚未收到 STATE,跳过本轮处理")
|
||||
@@ -267,7 +263,11 @@ class MissionManager:
|
||||
mode = state["drone"].get("mode", "")
|
||||
# 飞控切到 AUTO.LAND 或 AUTO.RTL → 自动让渡控制权
|
||||
if mode in ("AUTO.LAND", "AUTO.RTL"):
|
||||
logger.warning(f"⚠️ 飞控切换到 {mode},Python 端主动让渡控制权")
|
||||
# 去重:同一 mode 只在首次出现时打印,避免每帧刷屏
|
||||
self._throttle_log_on_change(
|
||||
"yield_mode", mode,
|
||||
"⚠️ 飞控切换到 %s,Python 端主动让渡控制权", mode,
|
||||
level=logging.WARNING)
|
||||
# 根据模式决定切换到的状态
|
||||
if mode == "AUTO.LAND":
|
||||
self.state = MissionState.LANDING
|
||||
|
||||
@@ -113,6 +113,9 @@ class RouterProxy:
|
||||
self._last_stale_warn_time = 0.0 # 上次 "STATE 过期" 日志时间
|
||||
self._last_severe_warn_time = 0.0 # 上次 "STATE 严重过期" 日志时间
|
||||
|
||||
# ---- 日志节流:PX4_ACK 按 (cmd, result) 去重 ----
|
||||
self._last_ack_log_time = {} # {(cmd, result): 上次打印时间}
|
||||
|
||||
# ================================================================
|
||||
# 内部工具
|
||||
# ================================================================
|
||||
@@ -354,7 +357,8 @@ class RouterProxy:
|
||||
# 日志节流:间隔 ≥ THROTTLE_INTERVAL 秒才打印一次
|
||||
now = time.time()
|
||||
if age_us >= self.STALE_THRESHOLD_WARN_US:
|
||||
if now - self._last_severe_warn_time >= 5.0:
|
||||
# 严重过期(长时断流)30 秒提示一次即可,避免持续刷屏
|
||||
if now - self._last_severe_warn_time >= 30.0:
|
||||
self._last_severe_warn_time = now
|
||||
logger.warning("STATE 严重过期: age=%.2fs(阈值=%.0fms)",
|
||||
age_us / 1e6, stale_threshold_us / 1000)
|
||||
@@ -469,6 +473,12 @@ class RouterProxy:
|
||||
logger.error("ALERT 回调异常: %s", e)
|
||||
|
||||
elif msg_type == "PX4_ACK":
|
||||
# 节流:相同 (cmd, result) 30 秒内只打印一次,新组合立即可见
|
||||
ack_key = (data.get("ref_cmd"), data.get("result"))
|
||||
now = time.time()
|
||||
last = self._last_ack_log_time.get(ack_key, 0)
|
||||
if now - last >= 30.0:
|
||||
self._last_ack_log_time[ack_key] = now
|
||||
logger.info("PX4_ACK: cmd=%s result=%s",
|
||||
data.get("ref_cmd"), data.get("result"))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user