← 포트폴리오08 / ROBOTICS CASE STUDY

ROBOSKILL LAB · PHYSICS / CONTROL / EVALUATION

실패한 로봇은
어떻게 다시 움직일까?

지시를 실행하는 것에서, 결과를 확인하고 다시 시도하는 것까지.

블록 하나를 목표까지 미는 작은 과제로, 물리적 오차와 실패 복구를 다룹니다. 만든 이유부터 실제 24회 실험과 다음 개선까지 공개합니다.

MuJoCo에서 실제 렌더한 3축 직교 로봇, 빨간색·파란색 블록과 목표 지점
실제 MuJoCo 렌더 · 외력 후 복구

외력 · seed 0 · 재계획 4회 · 최종 오차 1.43 cm

프로젝트
RoboSkill Lab · 2026.09
구현
Python · MuJoCo · NumPy · JavaScript
현재 범위
규칙 제어 · 시뮬레이터 좌표 · 저장된 실행
전략별 성공5/12 → 12/12한 번 밀기 → 재관측·재접근 · 개발 조건
평균 시뮬레이션 시간7.05 → 17.71 s한 번 밀기 → 재관측·재접근 · 실제 계산 시간과 구분
물리 실행244조건 × 3 seed × 2전략 · MuJoCo 3.13.0

01 / 출발점

AI의 판단을 물리적인 결과까지 연결하기

MED-RAG에서는 응답을 평가하고, 에이전트 프로젝트에서는 작업을 실행하며, VisionEye에서는 원본과 인식 결과를 비교했습니다. 다음에는 “명령을 이해했다”에서 한 걸음 더 나아가, 움직인 물체가 실제 목표에 도달했는지 확인하는 시스템을 만들고 싶었습니다.

첫 과제는 “빨간 블록을 오른쪽 목표로 밀어줘”입니다. 툴이 계획한 경로를 끝까지 움직여도 블록은 목표에 도착하지 않을 수 있습니다. 마찰·질량·외력을 바꾸고, 실행 결과를 다시 관찰하는 전략이 이 차이를 줄일 수 있는지 실험했습니다.

02 / 구현

지시부터 접촉·재관측까지

MuJoCo를 CPU에서 0.002초 간격으로 실행합니다. 제어기는 로봇 액추에이터의 목표 위치를 쓰고, 블록은 중력·마찰·접촉에 따라 움직입니다. 접근→내리기→밀기→들기→재관측 단계를 나누어 어느 단계에서 결과가 달라졌는지 기록합니다.

현재 공개 실험은 규칙 기반 지시 해석과 시뮬레이터의 정답 좌표를 사용합니다. 선택적 Ollama 연결은 검증된 작업 명세만 전달하도록 구현하고 응답 계약을 시험했습니다. 실제 LLM 추론과 카메라 인식은 다음 단계입니다.

  1. 01지시한국어·영어 규칙 문법
  2. 02작업 명세push / object / goal
  3. 03실행3축 로봇 · 위치 액추에이터
  4. 04관측·수정물체 위치 → 다시 접근
  5. 05검증안정 도달 · 궤적·이벤트

03 / 실험 설계

동일한 출발점, 다른 실행 전략

각 조건에서 초기 블록 위치를 seed로 ±2.5 cm 바꾸고 두 전략에 같은 상태를 사용했습니다. 한 번 밀기는 처음 본 위치로 전체 경로를 실행합니다. 재관측 전략은 최대 9.5 cm씩 밀고, 현재 위치를 읽어 다시 접근합니다.

성공은 목표 중심 4.5 cm 안에서 선속도 2.5 cm/s 미만·각속도 0.5 rad/s 미만을 0.3초 유지하는 것입니다. 비표적 블록 이동은 4 cm 미만이어야 하며, 작업 영역 이탈과 24초 시간 초과는 실패로 처리합니다.

전략실행 방식공통 조건
open_loop초기 관측 → 전체 거리 한 번 밀기같은 seed·목표·액추에이터·속도·24초 예산
closed_loop최대 9.5 cm 밀기 → 재관측·재접근같은 성공 판정과 비표적 이동 제한
  • 관측 주기와 함께 밀기 구간·재접근 횟수도 달라지는 전략 비교입니다. 관측만의 효과를 분리한 실험은 다음 단계로 남겼습니다.

04 / 측정 · 2026.09.15

더 많이 도달했지만, 더 오래 걸렸다

4조건 × 3 seed × 2전략을 실제 실행했습니다. 한 번 밀기는 12회 중 5회, 재관측·재접근은 12회 모두 성공했습니다. 평균 최종 거리는 13.28 cm에서 1.08 cm로 줄었고, 평균 시뮬레이션 시간은 7.05초에서 17.71초로 늘었습니다.

낮은 마찰에서는 두 전략 모두 3/3으로 성공했습니다. 질량과 마찰을 함께 높인 조건, 외력을 가한 조건에서는 결과 차이가 컸습니다. 이 조건과 seed는 제어기 개발에도 사용한 작은 개발 세트입니다.

OPEN LOOP

한 번 계획하고 밀기

5 / 12 성공

평균 시뮬레이션 시간
7.05 s
평균 최종 목표 거리
13.28 cm

CLOSED LOOP

다시 관찰하고 수정하기

12 / 12 성공

평균 시뮬레이션 시간
17.71 s
평균 최종 목표 거리
1.08 cm

2026.09.15 · 4조건 × 3 seed × 2전략. 제어기 개발에 사용한 24회이며 독립 평가셋이 아닙니다. 시간은 시뮬레이션상 작업 시간입니다.

조건설정한 번 밀기재관측·재접근
기본질량 80 g · 마찰 0.502/33/3
낮은 마찰질량 80 g · 마찰 0.123/33/3
질량·마찰 증가질량 180 g · 마찰 0.700/33/3
외력기본 조건 + x 방향 1.2 N · 0.10초0/33/3
  • 숫자는 저장된 원본 JSON과 요약에 대응합니다. 시뮬레이션 시간은 가상 환경의 경과 시간이며, CPU 계산 시간은 별도 기록합니다.

05 / 사례 분석

외력 이후, 무엇이 달라졌는가

외력 조건 seed 0에서는 두 전략 모두 2.868초에 같은 힘이 적용됐습니다. 한 번 밀기는 최종 목표 거리 28.95 cm로 끝났습니다. 재관측 전략은 3.874초부터 네 번 경로를 다시 계획했고, 16.81초에 목표에서 1.43 cm 떨어진 위치로 안정적으로 도달했습니다.

이 성공에도 비표적 접촉은 있었습니다. 20개 물리 step에서 접촉이 기록됐고 다른 블록은 약 2.97 mm 움직였습니다. 현재 허용 범위에는 들어가지만, 다음 제어기가 줄여야 할 부작용으로 남겼습니다.

외력 · seed 0한 번 밀기재관측·재접근
최종 목표 거리28.95 cm1.43 cm
재계획04
시뮬레이션 시간7.05 s16.81 s
비표적 접촉 step020 / 0.04 s
  • 기록은 도달 실패와 재계획 후 회복을 보여줍니다. 마찰·접촉·밀기 구간 각각의 기여도는 이 비교만으로 확정하지 않았습니다.

06 / 검증하며 고친 것

성공 숫자를 믿을 수 있게 만들기

제어기뿐 아니라 실험 자체도 확인했습니다. 초기 위치가 유지되는지, 잠깐 목표를 통과한 경우가 성공으로 잡히는지, 실행과 재생의 근거가 섞이지 않는지를 점검해 수정했습니다.

점검한 문제반영한 변경
상수 재계산 중 초기 위치가 리셋될 수 있음mj_setConst 전 qpos를 저장하고 복원. 같은 seed의 일치와 다른 seed의 차이를 시험
한 순간의 위치·속도만으로 성공 판정목표 영역에서 선속도·각속도 기준을 0.3초 유지하고, 시간 초과는 실패 처리
시뮬레이션 결과와 화면 재생의 역할 혼동코드 hash·환경·궤적·이벤트를 JSON에 기록. 웹은 저장된 결과를 읽어 재생
성공만 보면 가려지는 비표적 접촉접촉 step·비표적 이동·개별 접촉점 최대 힘을 별도 기록

07 / 다음 실험 · 제안

평가를 고정하고, 관측과 AI를 확장하기

다음 순서는 비교의 공정성을 높인 뒤 카메라와 실제 LLM을 연결하는 것입니다. 아래 표는 아직 실행하지 않은 제안이며, 통과 기준도 후속 실험 전에 고정할 목표입니다.

우선순위실험제안한 통과 기준
01밀기 구간·재접근·시간 예산을 맞춘 기준 전략, 개발에 쓰지 않은 seed 100개같은 조건에서 성공률·시간·비표적 접촉을 함께 공개하고, 관측의 추가 효과를 분리
02렌더 RGB에서 블록 위치 추정, 가림·조명 조건 추가분리한 평가셋에서 위치 오차 p95 ≤2 cm, 좌표 정답 대비 성공률 하락 ≤10%p
03실제 로컬 LLM으로 정상·모호·거부 지시 평가고정한 지시 100개에서 작업 명세 정확도 ≥95%, 거부 세트의 잘못된 실행 0건
04전문가 궤적으로 모방학습, 독립 조건에서 기준 제어기와 비교같은 24초 예산에서 기준 성공률을 유지하며 실행 시간 또는 비표적 접촉을 줄이기

DESIGN DECISIONS

구현하면서 지킨 세 가지 기준

01

작업 계약을 고정

허용 동작·물체·목표를 명세로 검증하고 좌표와 모터 명령은 제어기가 결정하게 했습니다. 지시 해석 실패와 물리 실행 실패를 나누어 볼 수 있습니다.

02

도달과 안정 상태를 함께 평가

목표 근처를 지나가는 장면만으로는 충분하지 않아 속도와 유지 시간을 성공 조건에 넣었습니다. 비표적 이동과 시간 초과도 같은 판정에 포함했습니다.

03

결과를 다시 살펴볼 수 있게

성공 횟수 옆에 시간·접촉·실패 기록과 궤적을 두었습니다. 저장된 기록을 웹에서 비교하고 JSON으로 내려받을 수 있게 했습니다.

SCOPE / EVIDENCE

지금 증명한 것, 다음에 확인할 것

  • 24회는 제어기 개발에 사용한 소규모 실험입니다. 12/12는 이 조건의 관측값이며 새로운 환경의 성공률은 미측정입니다.
  • 공개 측정은 규칙 파서·비학습 제어기·시뮬레이터 좌표를 사용합니다. LLM·VLM·VLA·강화학습 모델의 성능은 아직 측정하지 않았습니다.
  • 3축 직교 로봇의 탁상 밀기 과제입니다. 6축 로봇팔, 집기, 실제 로봇 이전은 후속 범위입니다.
  • 개인 프로젝트로 자동화 도구의 도움을 받아 구현·실행했습니다. 공개 웹은 저장된 궤적을 재생하며, 실행 코드와 원본 기록을 함께 제공합니다.
연결되는 작업VisionEye ↗

Contact

hyunaeee@gmail.com ↗

대한민국 · 한국어 / 영어

포트폴리오 PDF

역할, 설계 판단, 검증 결과와 자료 링크를 함께 담습니다.

인쇄 창에서 ‘PDF로 저장’을 선택하세요.