ConcretePrint
LinuxCNC · Vision AI

قرارداد Bridge Agent

مشخصات API و WebSocket برای اتصال داشبورد به PC چاپگر

معماری

روی PC چاپگر (Debian + LinuxCNC) یک سرویس پایتون به نام bridge-agent اجرا می‌شود که:

  • با ماژول linuxcnc به interpreter وصل می‌شود (stat + command).
  • یک سرور FastAPI روی پورت 8765 بالا می‌آورد.
  • Vision Worker (پروسه جدا) با OpenCV دوربین را می‌خواند و از طریق MQTT/UnixSocket بازخورد می‌فرستد.
  • وضعیت را هر ۵۰۰ms به داشبورد push می‌کند.

REST Endpoints

GET  /api/status                → { running, x, y, z, feed, override, layer, temp, humidity }
POST /api/command/start         { file: "wall_section_A.ngc" }
POST /api/command/pause
POST /api/command/resume
POST /api/command/abort
POST /api/command/mdi           { gcode: "G1 X100 Y50 F800" }
POST /api/command/feed-override { value: 108 }   # درصد
POST /api/command/set-offset    { axis: "X", value: 2.14 }  # G10 L20
POST /api/files/upload          multipart .ngc
GET  /api/files                 → [{ name, size, mtime }]
GET  /api/defects               → [{ id, type, severity, layer, x, y, image_url, ts }]
POST /api/vision/homing/start
GET  /api/vision/calibration    → { intrinsic, extrinsic, nozzle_offset }

WebSocket Streams

ws://printer.local:8765/ws/status       # وضعیت هر 500ms
ws://printer.local:8765/ws/video        # MJPEG frames (یا WebRTC signaling)
ws://printer.local:8765/ws/vision       # رویدادهای بینایی: layer_width, defect, nozzle_pos
ws://printer.local:8765/ws/log          # لاگ‌های LinuxCNC + agent

نمونه پیام Vision Event

{
  "type": "layer_width",
  "ts": 1732450123.421,
  "measured_mm": 48.6,
  "target_mm": 50.0,
  "error_mm": -1.4,
  "correction_pct": 108,
  "roi": [420, 340, 780, 520],
  "confidence": 0.92
}

نصب Bridge Agent روی PC چاپگر

# روی سیستم LinuxCNC (Debian bookworm + linuxcnc 2.9)
sudo apt install python3-pip python3-opencv python3-numpy
git clone <repo>/bridge-agent
cd bridge-agent
pip install -r requirements.txt

# اجرای سرویس
python3 linuxcnc_bridge.py --host 0.0.0.0 --port 8765

# اجرای Vision Worker (پروسه جدا)
python3 vision_layer.py --camera /dev/video0 --target-width 50

سورس کامل bridge-agent در فولدر /bridge-agent ریپازیتوری در دسترس است.