본문으로 건너뛰기
← Work

CASE STUDY / SYSTEMS · AUTOMATION · PHYSICAL SYSTEMS

ROSAIC Robot Control SW

카메라 관측을 로봇의 이동 목표와 실행 상태로 연결하는 ROS 2 기반 제어·기록 소프트웨어

Period
2026.07 — 현재
Team
기술연구소 팀
Role
연구원(인턴) · Robot SW
Context
로자이크 기술연구소 · 산업용 조립 공정 자동화 PoC
Stack
Python · ROS 2 · OpenCV · NumPy · LeRobot · pytest

회사 업무이므로 내부 코드·장비 설정·정밀 수치는 공개하지 않고, 문제와 설계 판단 중심으로 정리했습니다.

Context

산업용 조립 공정 자동화 PoC에서, 외부 카메라로 작업대와 지그의 위치를 인식해 로봇 목표로 연결하는 트랙을 맡았습니다. 이후 상위 TCP 이동 연동, 그리고 관절 구조가 다른 Leader–Follower 협동로봇의 조작·기록·재생 업무로 범위가 넓어졌습니다.

Problem

  • 좌표 계산이 맞는 것, 명령이 발행된 것, 로봇이 실제로 도달한 것은 서로 다른 문제입니다.
  • 관측이 실패했을 때 이전 값을 계속 쓰면 로봇이 이미 없는 목표로 움직일 수 있습니다.
  • Leader와 Follower의 축 수·기구학이 달라 관절값을 일대일로 옮길 수 없었습니다.

Architecture

  • Vision 계산 코어: 마커 관측을 작업대·지그 pose와 목표 TCP로 변환합니다. ROS에 의존하지 않아 카메라·로봇 없이 단위 테스트할 수 있습니다.
  • ROS 2 노드 계층: 토픽·Action 연결과 로그 수준 결정은 노드 경계에서만 담당합니다.
  • 상위 TCP 제어: 실제 경과시간과 속도 제한으로 중간 명령을 만들고, 진행·완료·취소를 ROS 2 Action으로 전달합니다. 제조사 API와 하위 제어기는 기존 구현을 사용합니다.
  • Teleoperation·Record/Replay: TCP 위치·회전과 그리퍼 의도를 한 표본(Motion Intent)으로 묶고, 입력·목표·발행 명령·관측을 별도 사건으로 기록합니다.

My Contribution

  1. Vision 위치 인식과 입력 검증 트랙을 담당하고, 이후 TCP 이동 연동과 Teleoperation·Record/Replay로 업무를 확장했습니다.
  2. Codex에 코드·자동시험 작성을 맡기고, 본인은 요구사항·물리 조건·설계 전제를 검토하고 장비 실험 결과를 피드백했습니다.
  3. 지그가 떠 있을 수 있는데 작업대 높이만 쓰는 고정 Z 계산 전제를 찾아 수정을 요구했고, 축소 모형 실험으로 마커 방향과 물리 입력을 정정했습니다.
  4. 관절 구조가 다른 로봇 연결에 TCP·그리퍼를 한 표본으로 다루는 방향을 제안하고, AI가 정리한 Motion Intent 계약을 검토해 채택했습니다.

Engineering Decisions

실패를 예외가 아니라 결과로 반환

마커 부족처럼 촬영 중 정상적으로 생길 수 있는 관측 실패는 valid=False와 거부 사유로 돌려주고, 설정 파일의 단위·타입 오류 같은 잘못된 입력은 로드 시점에 즉시 중단합니다. 하위 시스템이 “값이 없다”가 아니라 “왜 쓸 수 없는지”를 알아야 안전 판단을 할 수 있기 때문입니다.

이전 pose 재사용 금지

마커가 안 보인다고 직전 값을 내보내면 로봇은 사라진 지그를 향해 움직입니다. 과거 pose 재사용을 구조적으로 막고, 부분 관측은 현재 촬영만으로 계산해 상태를 따로 표시했습니다.

여러 마커를 하나의 강체로 풀기

마커별 pose를 평균하면 보이는 마커 조합이 바뀔 때 결과가 튑니다. 같은 촬영의 모든 마커 모서리를 하나의 강체로 묶어 한 번에 PnP를 풀고, 평면 모호성 후보는 물리적 타당성으로 걸렀습니다.

물리값 하드코딩 금지

실측 치수와 임계값을 YAML로 분리하고, 알 수 없는 키·누락·타입·단위 오류와 NaN을 로드 시점에 거부했습니다. 실측 전 값은 시험 전용으로 표시해 운영 경로에 들어가지 않게 했습니다.

Result

  • 합성 참값 시험과 축소 모형의 이동·회전 비교로 위치 계산을 검증
  • 산업용 로봇의 제한된 단일 축 TCP 이동 시험 기록
  • 모의 Follower 기반 shadow Record/Replay와 LeRobotDataset 변환 경로 검증

아직 완료하지 않은 범위: 협동로봇 실물 종단 추종·Replay 성공, 물리 정지·그리퍼 실물 동작 검증, 정책 학습.

Retrospective

관측·목표·실행을 분리해 확인하는 습관이 Vision에서 Teleoperation까지 그대로 이어졌습니다. AI로 코드를 빠르게 만들수록, 코드와 테스트가 같은 잘못된 전제를 공유할 수 있다는 점을 체감했습니다. 그래서 합성 시험 통과와 실물 결과를 구분하고, 현장 치수·방향·관측으로 전제를 다시 확인하는 절차를 유지하고 있습니다.