MacGyvBot
사용자의 공구 요청과 반납을 처리하는 어시스턴트
MacGyvBot문제 정의에서 시스템 설계, 구현 파트, 검증과 임팩트로 내려갑니다
발표는 사용자의 공구 요청과 반납 문제로 시작합니다. 이후 System Design, Command, Task Coordination, Perception, Manipulation, Safety를 구현 관점에서 설명하고, Simulation과 Impact로 마무리합니다.
PROBLEM
사용자의 공구 요청과 반납을 처리하는 어시스턴트
MacGyvBot작업 페르소나: Hands-Busy Operator
작업 위치를 떠나기 어려운 현장 작업자
작업자는 장비나 조립물을 잡고 있어 공구 보관 장소까지 직접 이동하기 어렵습니다. MacGyvBot은 고정형 팔이 아니라 이동 가능한 로봇이라는 가정에서, 서랍 보관 장소와 작업자 위치 사이를 연결합니다.
공구 서랍은 정리된 보관 장소에 있고, 작업자는 다른 위치에서 장비를 다룹니다.
렌치, 드라이버처럼 필요한 공구가 바뀔 때 작업자는 위치를 이탈하지 않고 요청합니다.
로봇은 서랍에서 공구를 꺼내 작업자에게 이동하고, 사용 후 다시 보관 장소로 돌려놓습니다.
MacGyvBot문제 정의: Tool Flow Interruption
작업자가 보관 장소까지 직접 이동하면 작업 흐름이 끊깁니다.
서랍을 열고 필요한 공구를 찾는 과정이 본 작업과 분리된 반복 업무가 됩니다.
사용 후 제자리에 돌아가지 않은 공구는 다음 작업과 재고 관리 문제로 이어집니다.
이동 로봇이 보관 서랍에서 공구를 꺼내 작업자에게 가져다주고, 사용 후 다시 보관합니다.
SYSTEM DESIGN
Command를 robot task로 바꾸고 실행 순서를 소유하는 구조
MacGyvBot전체 작업 흐름도
보관 장소
MacGyvBotCommand-to-Task 기반 ROS 2 계층형 아키텍처
MacGyvBotMILESTONE
Pipeline Skeleton
Pick and Place, Topic Command
Pick & Handover
GUI Prototype, Pick and Handover to User
Retrieve Tool
Return Tool From User, Place Temporary Space
Store in Drawer
Open Close Drawer, Place Tool in Drawer
Advanced & Safety
Enhanced PCA, SAM, YOLO, Safety, Recovery, Exception Handling
MacGyvBot협업 기반 업무 분장
Tool Grasp Method
LLM Based Operator Interface
Drawer Flow / Simulation / QA
Model Training
Integration / Grasp Gesture Detection
MoveIt / Safety
COMMAND
자연어 요청을 안정적인 robot task intent로 변환
MacGyvBot자연어 명령을 Task로 바꾸는 Command Pipeline
Voice / GUI Text → typed ROS command
음성 STT와 GUI 텍스트 입력을 같은 command path로 통합하고, 사용자의 한국어 명령을 task coordinator가 처리할 수 있는 구조화된 command로 변환합니다.
MacGyvBotSchema와 Context 기반 LLM Parser
MacGyvBot로봇 상태 확인과 수동 제어를 통합한 Operator GUI

TASK COORDINATION
bring과 return을 queue 상태로 쪼개고 중단, 재개, 복구를 관리
MacGyvBotTask Coordination은 bring과 return을 TaskStep queue로 쪼개 실행합니다
실행 순서를 모듈 내부에 숨기지 않고 queue 상태로 관리
bring은 drawer 준비와 pick step을 같은 queue에 넣고, pause/resume/exit은 현재 queue 상태에 적용됩니다.
MacGyvBotPause / Resume은 단순 cancel이 아니라 중단된 step을 다시 실행하는 문제였습니다
PERCEPTION
공구 감지, mask 생성, handoff gate, PCA grasp 판단
MacGyvBotYOLO fine-tuning으로 공구 후보를 먼저 안정적으로 찾습니다
RealSense RGB/depth 기반 tool detection
YOLO는 공구 후보와 bbox를 제공하고, 이후 SAM/depth mask와 PCA yaw 계산의 시작점이 됩니다.
MacGyvBot사용자 공구 전달 초기 구현
MacGyvBotBBOX rule-based 공구 전달 초기 구현의 한계
MacGyvBotSAM+Depth mask
MacGyvBot최종 사용자 공구 전달
hand landmark ML classifier + SAM depth mask contact
rule-based proximity 대신 손 landmark 지도학습 모델로 grasp/open을 먼저 판단합니다. 여기에 SAM+Depth mask로 잡힌 공구 표면과의 contact, 시간 안정성을 함께 확인해 release gate를 닫습니다.
MacGyvBotPCA는 mask의 주축으로 yaw와 gripper width를 계산합니다
YOLO bbox와 SAM/depth mask pixels
yaw, grasp width, overlay image
mask 주축으로 yaw를 얻고, tool width를 gripper width 설정에 연결합니다.
MacGyvBotPerception은 탐지, mask, handoff, grasp를 하나의 evidence chain으로 묶었습니다
MANIPULATION
공구를 꺼내고 전달하고 다시 서랍에 보관하는 실행 계층
MacGyvBot공구 요청에서는 drawer open, pick, handoff pose까지 motion sequence를 구성합니다
MacGyvBot공구 반납은 drawer ownership을 다시 얻고 안전 높이에서 보관하는 문제입니다
receive → identify → open drawer → place → close
처음에는 drawer 전체를 이해하려 했지만, 시연 목표에는 반복 가능한 기준점과 안전한 z 제한이 더 중요했습니다.
서랍 상태와 공구 소유권을 task flow 안에서 추적합니다.
공구 폭과 접근 깊이에 맞춰 RG2 gripper 동작을 조정합니다.
MoveIt target, RG2 width, hand-eye transform, marker reference
SAFETY
collision scene, tool drop detection, recovery flow
MacGyvBotDrawer collision scene은 실제 로봇 동작에서 planning 가능성과 안전성을 동시에 좌우했습니다
drawer collision scene + RG2 self-collision 관리
서랍과 gripper를 planning scene에 반영해 위험한 경로를 줄입니다. 동시에 collision object가 목표 pose를 과하게 막지 않도록 조정이 필요했습니다.
MacGyvBot공구를 떨어뜨렸을 때는 queue를 보존하고 recovery flow로 전환합니다
SIMULATION
실제 로봇 투입 전 sequence와 collision risk를 검증하는 환경
MacGyvBotIsaac Sim은 개선 방향이 아니라 실제 로봇 투입 전 검증 체계입니다
- drawer open/close sequence와 collision scene 검증
- tool placement, marker pose, reachability 확인
- pregrasp height, safe z, gripper approach 검토
- drawer simulation으로 실제 로봇 투입 전 위험 동작을 먼저 확인
IMPACT
작업 효율, 안전성, 스마트팩토리 공구 관리 자동화 가능성
MacGyvBotMacGyvBot의 임팩트는 공구 이동을 로봇 task로 바꾸는 데 있습니다
MacGyvBot개선 방향은 perception 안정화와 reactive planning으로 이어집니다
MacGyvBot
공구 요청과 반납을 하나의 closed loop로 만들고, 실제 로봇에서 깨진 가정을 task queue, perception evidence, safety recovery로 바꿨습니다.