리얼월드는 제조 현장 적용을 노리는 로보틱스 파운데이션 모델을 만드는 회사라, 로봇 작업 평가 하네스는 그 고자유도 로봇 손의 실제 작업 시퀀스가 있어야 판정을 검증한다.
'로보틱스 파운데이션 모델 개발'. 작업 평가 하네스가 모델 현장 적용의 토대.
'제조업 등 실제 산업 현장에서 즉각 적용 가능한 AI'. 작업 성공·실패 평가가 FDE 의 핵심.
'고자유도 로봇 손의 섬세한 조작'. 작업별 실패 원인 분석이 직격.
로봇 작업 로그·센서 데이터를 받아 작업 성공·실패를 규칙으로 판정하고 실패 원인을 근거와 함께 짚는 평가 하네스를 배포하는 1주 FDE PoC.
리얼월드 FDE. 로봇 작업 성패를 사람이 영상으로 확인하던 일을, 자동 평가 + 실패 원인 하네스로 현장에 배포하고 싶은 사람.
작업 로그에 단계·센서를 붙이면, 도구가 (a) 성공·실패를 규칙으로 판정하고 (b) 실패 원인을 근거와 함께 짚을 수 있다.
로봇 작업 로그를 받아 성공·실패를 판정하고 실패 원인을 근거와 함께 짚는 동작하는 평가 하네스.
검수자 라벨과 성공·실패 판정 일치도(κ)를 재고, 오탐을 보여주는 대시보드.
여러 작업 유형·로봇으로 평가 하네스를 확장 배포하는 단계.
작업 로그를 넣으면 성공·실패 판정과 실패 원인이 센서 근거와 함께 나오는 걸 시연한다
성공·실패 판정(완료 조건 규칙)이 정답과 일치하는 비율 100%
측정: 결정적 재계산, 표본: 작업 200건
일부러 만든 결측·경계·미등록 작업 30종을 넣어도 판정이 멈추지 않고 처리되는 걸 시연한다
위 수치는 더미데이터 자가채점이며, 실제 작업 판정 정확도는 리얼월드 현장 실데이터 + 실 검수자가 있어야 측정 가능. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만든다.
이건 고객·실데이터 없이 혼자 만든 포트폴리오라 모든 수치는 합성 데이터 자가채점이다. 면접에서 '데모 동작 + 실검증 준비 상태'로 솔직히 설명하는 게 오히려 신뢰를 준다
정답을 내가 만들었으니 잘 맞는 게 당연. 그래서 결측·경계·미등록·표기 흔들림 케이스를 더미에 일부러 섞어 쉬운 문제만 푸는 게 아님을 보여준다
도메인 갭: 더미 작업과 실제 물리 환경(마찰·조도)이 달라 '데모 조건'임을 명시한다
실제 도입 시 달라지는 것: 실 로봇·작업 분포가 더미와 다르므로 성공 조건을 실현장으로 맞춰야 한다(도입 단계 과제)
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
로봇 작업 로그·센서를 평가 입력으로 쓴다
| task_id | task_raw | task_key | grip_force | completed | error_code | duration_s |
|---|---|---|---|---|---|---|
| TK900 | A작업(구) | — | — | — | — | 3 |
| TK901 | 작업0 | tk0 | 0 | false | E_SLIP | 10 |
| TK902 | 완벽작업 | tk2 | 8 | true | — | 1.5 |
| TK903 | 미등록작업 | — | 99 | — | XXXX | 0.1 |
| TK000 | 작업0 | tk0 | 5 | false | — | 2 |
z.object({ task_id: z.string(), task_raw: z.string(), task_key: z.string().nullable(), grip_force: z.number().nullable(), completed: z.boolean().nullable(), error_code: z.string().nullable(), duration_s: z.number() }). 쉬운 데이터만 만들지 말 것. 다음 하드 케이스를 의도적으로 섞어라: grip_force/completed null(센서 누락), grip 0(파지 실패)·극단, error_code 미정의(XXXX), task_key null 미등록, task_raw 표기 흔들림. 형식 깨뜨리기 시도 3건도 별도로.z.object({ task_id: z.string(), task_raw: z.string(), task_key: z.string().nullable(), grip_force: z.number().nullable(), completed: z.boolean().nullable(), error_code: z.string().nullable(), duration_s: z.number() })| Python | 작업 로그 ingest + 판정 규칙 + eval |
| C++ | 실시간 센서 로그 파서 |
| Docker | 평가 하네스 컨테이너 배포 |
| ROS | 로봇 작업·센서 토픽 연동 |
| REST | 평가 API(`POST /eval-task`) |
| gRPC | 실시간 작업 스트림 연동 |
✓ pass → 그대로 멈춰도 완성품. 더 키우려면 2주차(판정 검증)로.
✓ pass → 여기서 멈춰도 완결. 더 키우려면 3주차(다작업 확장)로.
작업 평가 + 실패 원인
z.object({ task_id: z.string(), result: z.enum(['success','fail','review']), cause: z.string().nullable(), evidence: z.object({ field: z.string(), value: z.number() }).nullable() })[
{
"task_id": "TK901",
"result": "fail",
"cause": "파지력 0. 미끄러짐(E_SLIP)",
"evidence": {
"field": "grip_force",
"value": 0
}
},
{
"task_id": "TK002",
"result": "success",
"cause": null,
"evidence": {
"field": "duration_s",
"value": 1.5
}
},
{
"task_id": "TK900",
"result": "review",
"cause": "센서 결측. 확인 필요",
"evidence": null
}
]result(완료 조건)·evidence 정합성은 자동 검증, cause 타당성은 로봇 엔지니어/judge 검증.