修改模式为空bug

This commit is contained in:
2026-06-15 15:42:45 +08:00
parent 042b2b7c6a
commit 8b957d72ab
2 changed files with 27 additions and 6 deletions
+1 -1
View File
@@ -26,7 +26,7 @@
"baud_rate": 57600
},
"fc_info":{
"type": "ardupilot"
"type": "px4"
},
"pid_y": {
"kp": 1.0,
+26 -5
View File
@@ -375,15 +375,36 @@ class UAVControlLoop:
age_us, _ = self.proxy.get_state_freshness(state)
age_s = (age_us or 0) / 1_000_000
if not mode or mode not in ['GUIDED', 'OFFBOARD']:
target_mode = 'GUIDED' # ArduPilot
# 如果飞控是 PX4,则使用 'OFFBOARD'
if self.fc_cfg.get("fc_info", {}).get("type") == "px4":
target_mode = 'OFFBOARD'
self.logger.info("切换至 %s 模式...", target_mode)
ok, ack = self.proxy.send_command(target_mode)
if not ok:
self.logger.error("模式切换失败: %s", ack)
return False
# 等待模式切换生效(最多 2 秒)
for i in range(20):
state = self.proxy.get_latest_state()
if state and state["drone"]["mode"] == target_mode:
self.logger.info("已进入 %s 模式", target_mode)
break
time.sleep(0.1)
else:
self.logger.error("模式切换超时")
return False
self.logger.info("初始状态: mode=%s armed=%s alt_rel=%.1fm state_age=%.2fs",
mode, armed, alt_rel, age_s)
# ---- ③ 解锁(如未解锁) ----
# if not armed:
# if self._do_arm():
# armed = True
# else:
# return False
if not armed:
if self._do_arm():
armed = True
else:
return False
# ---- ④ 起飞到目标高度(如高度不足) ----
takeoff_alt = self.fc_cfg.get("takeoff_alt", 5.0)