-
This commit is contained in:
+28
-6
@@ -126,10 +126,11 @@ try:
|
||||
# Flask 2.3+ 方式
|
||||
with app.app_context():
|
||||
load_persisted_config()
|
||||
# 启动时自动重连 AGV(异步,不阻塞 Flask 启动)
|
||||
# 启动时自动连接所有设备(异步,不阻塞 Flask 启动)
|
||||
import threading
|
||||
def _auto_reconnect():
|
||||
def _auto_connect_all():
|
||||
time.sleep(2) # 等待 Flask 完全就绪
|
||||
# 连接 AGV
|
||||
try:
|
||||
from utils.agv_controller_ros2 import AGVController
|
||||
gs.agv_controller = AGVController()
|
||||
@@ -139,7 +140,19 @@ try:
|
||||
print("[启动] AGV 自动连接失败,请手动连接")
|
||||
except Exception as e:
|
||||
print(f"[启动] AGV 自动连接异常: {e}")
|
||||
threading.Thread(target=_auto_reconnect, daemon=True).start()
|
||||
# 连接机械臂
|
||||
try:
|
||||
from utils.arm_client import ArmClient
|
||||
gs.arm_client = ArmClient(ARM_CONFIG["host"], ARM_CONFIG["port"])
|
||||
if gs.arm_client.connect():
|
||||
gs.arm_client.power_on()
|
||||
gs.arm_client.state_on()
|
||||
print("[启动] 机械臂自动连接成功")
|
||||
else:
|
||||
print("[启动] 机械臂自动连接失败,请手动连接")
|
||||
except Exception as e:
|
||||
print(f"[启动] 机械臂自动连接异常: {e}")
|
||||
threading.Thread(target=_auto_connect_all, daemon=True).start()
|
||||
except:
|
||||
# 兼容旧版 Flask
|
||||
@app.before_first_request
|
||||
@@ -184,6 +197,15 @@ def api_status():
|
||||
if gs.agv_controller:
|
||||
agv_connected = gs.agv_controller.is_connected()
|
||||
|
||||
# 实时检测机械臂摄像头是否可用
|
||||
try:
|
||||
import requests as _armcam_req
|
||||
_r = _armcam_req.get(ARM_CAMERA_CONFIG["url"], stream=True, timeout=3)
|
||||
gs.arm_camera_opened = (_r.status_code == 200)
|
||||
_r.close()
|
||||
except:
|
||||
gs.arm_camera_opened = False
|
||||
|
||||
return jsonify({
|
||||
"state": gs.state,
|
||||
"agv_connected": agv_connected,
|
||||
@@ -1179,7 +1201,7 @@ def api_agv_move():
|
||||
"""控制 AGV 移动(前进/后退/左转/右转/停止)"""
|
||||
data = request.json
|
||||
direction = data.get("direction", "stop") # forward / backward / left / right / stop
|
||||
speed = data.get("speed", AGV_CONFIG.get("move_speed", 0.5))
|
||||
speed = data.get("speed", AGV_CONFIG.get("move_speed", 1.0))
|
||||
if not gs.agv_controller or not gs.agv_controller.is_connected():
|
||||
return jsonify({"ok": False, "error": "AGV 未连接"}), 400
|
||||
try:
|
||||
@@ -1250,8 +1272,8 @@ def api_mission_start():
|
||||
"qr_scan": bool(data.get("qr_scan", True)),
|
||||
"front_photo": bool(data.get("front_photo", True)),
|
||||
"back_photo": bool(data.get("back_photo", True)),
|
||||
"agv_speed": float(data.get("agv_speed", 0.5)),
|
||||
"arm_speed": int(data.get("arm_speed", 500)),
|
||||
"agv_speed": float(data.get("agv_speed", 1.0)),
|
||||
"arm_speed": int(data.get("arm_speed", 1000)),
|
||||
}
|
||||
print(f"[Mission] options: {options}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user