A-SW Hub / Repositories
Local Gitea · READ ONLY
← 저장소 Repositories
REPOSITORY

metafarmers/visual-servo-manipulation Private

[참조 MVP] 비주얼 서보 매니퓰레이션 — 선택한 작업대상의 위치 오차를 로봇팔 정렬 명령으로 변환하는 참조 MVP입니다.

https://git.agrithing.ai/metafarmers/visual-servo-manipulation.git
4 commits
2 items · feat/concrete-mvp-v2
·/ asw_component/component.py
python · 1.2 KB · 321018b Download
from __future__ import annotationsfrom math import sqrtdef execute(payload: dict) -> dict:    error = payload.get("positionErrorMm")    if not isinstance(error, list) or len(error) != 3:        raise ValueError("positionErrorMm must contain x, y, z")    max_step = float(payload.get("maxStepMm", 10))    tolerance = float(payload.get("toleranceMm", 2))    if max_step <= 0 or tolerance < 0:        raise ValueError("motion limits must be positive")    vector = [float(value) for value in error]    step = [max(-max_step, min(max_step, value)) for value in vector]    residual_vector = [value - motion for value, motion in zip(vector, step)]    residual = sqrt(sum(value * value for value in residual_vector))    converged = sqrt(sum(value * value for value in vector)) <= tolerance    if converged:        step = [0.0, 0.0, 0.0]        residual = 0.0    return {"component": "metafarmers/visual-servo-manipulation", "accepted": True,            "status": "ALIGNED" if converged else "ALIGNING", "target": "acu",            "targetId": str(payload.get("targetId", "unknown")), "stepMm": step,            "residualMm": round(residual, 3), "converged": converged}