로봇 공학을 공부하다 보면 한 번쯤 Drake라는 이름을 듣게 돼요. 보스턴에서 시작해 MIT를 거쳐 Toyota Research Institute가 주도적으로 개발 중인 이 오픈소스 시뮬레이션 도구는, 단순한 비주얼라이저가 아니라 동역학·제어·최적화·플래닝을 한자리에서 다루는 종합 플랫폼이에요. 산업용 매니퓰레이터부터 휴머노이드, 그리퍼와 다물체 접촉 시나리오까지 폭넓게 검증할 수 있어 학계와 기업 양쪽에서 주목받고 있어요. 이 글에서는 Drake가 무엇이고, 왜 다른 시뮬레이터들과 결이 다른지, 그리고 어떻게 시작하면 좋은지를 한 번에 정리해 드릴게요.
Drake가 어떤 도구인지부터 짚어 봐요
Drake는 C++ 기반의 모델링·시뮬레이션 라이브러리로, Python 바인딩을 통해 누구나 쉽게 접근할 수 있어요. 단순히 로봇이 움직이는 모습을 보여주는 데 그치지 않고, 물리적으로 정확한 다물체 동역학과 최적화 기반 제어를 일관된 수학적 프레임 안에서 처리하는 것이 특징이에요. 그래서 동일한 모델을 시뮬레이션, 궤적 최적화, 모델 예측 제어(MPC)에 모두 활용할 수 있어요.
탄생 배경과 철학
Drake는 MIT의 Robot Locomotion Group이 휴머노이드 보행 연구 과정에서 출발했어요. 당시 연구진은 동역학 시뮬레이터, 최적화 솔버, 제어기 설계 도구가 따로 노는 상황이 비효율적이라고 봤어요. 그래서 처음부터 “물리는 정확하게, 수식은 미분 가능하게”라는 원칙으로 만들어졌고, 이 철학이 지금도 Drake의 강점으로 남아 있어요.
다른 시뮬레이터와의 차이
Gazebo, MuJoCo, Isaac Sim 같은 대안과 비교했을 때 Drake의 차별점은 명확해요. 첫째, 접촉 모델이 매우 견고해요. SAP(Semi-Analytic Primal) 솔버를 통해 다중 접촉 상황에서도 안정적인 시뮬레이션 결과를 얻을 수 있어요. 둘째, System 추상화가 잘 짜여 있어 센서·액추에이터·제어기를 블록 다이어그램처럼 조합할 수 있어요. 셋째, 같은 모델로 시뮬레이션과 최적화를 동시에 수행할 수 있다는 점이 가장 큰 장점이에요.

Drake의 핵심 구성 요소를 살펴봐요
Drake를 처음 접하면 용어와 모듈이 많아 막막하게 느껴질 수 있어요. 하지만 큰 그림은 의외로 단순해요. 모든 것은 System과 Diagram이라는 두 개념 위에 세워져 있어요. 이 구조를 이해하면 다른 모듈도 자연스럽게 연결돼요.
MultibodyPlant — 물리의 심장
로봇 본체와 환경의 동역학은 MultibodyPlant가 책임져요. URDF나 SDF 파일을 읽어 강체 트리를 구성하고, 관성·마찰·제약 조건을 모두 반영한 운동 방정식을 자동으로 만들어 줘요. 연속 시간 모드와 이산 시간 모드를 모두 지원하기 때문에, 정밀한 분석이 필요할 때와 빠른 실행이 필요할 때를 골라 쓸 수 있어요.
SceneGraph — 충돌과 시각화
SceneGraph는 형상 정보를 관리하고 충돌 검사를 수행해요. MultibodyPlant와 짝을 이뤄 동작하며, Meshcat이나 RViz로 결과를 시각화할 때도 SceneGraph가 그 다리 역할을 해요. 충돌 필터링, 근접 쿼리, 거리 계산 같은 기능이 한 모듈에 깔끔하게 모여 있어 디버깅이 편해요.
Systems Framework — 블록을 잇는 언어
Drake의 모든 컴포넌트는 입력 포트와 출력 포트를 가진 System으로 정의돼요. 이를 Diagram 빌더로 연결하면 복잡한 제어 루프도 시각적으로 명확하게 구성할 수 있어요. 예를 들어 카메라 → 인식기 → 플래너 → 제어기 → 로봇으로 이어지는 파이프라인을 코드 몇 줄로 조립할 수 있어요.
Drake로 무엇을 할 수 있을까요
도구의 가치는 결국 어떤 문제를 푸는가에서 드러나요. Drake는 단일 기능에 특화되기보다는 다양한 로봇 연구 흐름을 폭넓게 받쳐 주는 플랫폼이에요. 실제 사례 몇 가지를 보면 그 활용 범위가 한눈에 들어와요.
매니퓰레이션 연구
TRI는 Drake를 그리퍼 기반 조작 연구의 표준 도구로 사용해요. 컵을 집어 올리는 단순한 작업부터, 천을 펴거나 물건을 쌓는 정교한 작업까지 모두 동일한 시뮬레이션 환경에서 검증돼요. 특히 접촉 풍부한(contact-rich) 작업에서 Drake의 정확한 충돌 모델은 큰 차이를 만들어요.
모델 예측 제어(MPC)와 궤적 최적화
Drake는 내부적으로 자동 미분(automatic differentiation)을 지원해요. 덕분에 동역학 모델의 그라디언트를 수치적으로 추출할 필요 없이, 그대로 최적화 솔버에 넘길 수 있어요. SNOPT, IPOPT, OSQP 같은 산업용 솔버를 손쉽게 호출할 수 있어, 휴머노이드 보행이나 드론 곡예 비행 같은 고난도 문제에도 대응돼요.
강화학습과의 결합
최근에는 Drake와 강화학습을 결합하는 사례도 늘고 있어요. Isaac Sim이 GPU 병렬화에서 앞서지만, Drake는 물리적 정확성과 sim-to-real 갭이 작다는 점에서 보완적으로 쓰여요. 정책 학습은 Isaac에서 빠르게, 최종 검증과 미세 조정은 Drake에서 정밀하게 — 이런 워크플로우가 자리를 잡아 가고 있어요.
설치와 첫 시뮬레이션을 해 봐요
Drake의 진입 장벽은 예전보다 많이 낮아졌어요. macOS와 Ubuntu에서 모두 동작하며, 가장 빠른 시작 방법은 pip install drake 한 줄이에요. 가상환경을 만든 뒤 설치하고, 공식 튜토리얼 노트북을 실행하면 30분 안에 첫 결과를 볼 수 있어요.
최소 예제 흐름
- 모델 로드: URDF 파일을
MultibodyPlant에 추가해요. - 다이어그램 구성: Plant, SceneGraph, Visualizer를 연결해요.
- 시뮬레이터 생성:
Simulator로 시간 적분을 진행해요. - 결과 시각화: Meshcat 브라우저 창에서 로봇이 움직이는 모습을 확인해요.
학습 자료 추천
가장 좋은 시작점은 Russ Tedrake 교수의 무료 온라인 강의 Robotic Manipulation이에요. 이론과 Drake 실습이 나란히 이어져 있어, 책을 읽으며 노트북을 돌리면 자연스럽게 익숙해져요. 공식 문서의 Python 튜토리얼도 잘 정리돼 있고, GitHub 저장소의 예제 코드를 따라가면 프로젝트 구조를 빠르게 파악할 수 있어요.
Drake를 도입할 때 고려할 점
장점이 많은 도구라도 모든 상황에 정답은 아니에요. 도입 전에 몇 가지를 짚어 보면 시행착오를 줄일 수 있어요.
학습 곡선과 커뮤니티
Systems Framework에 익숙해지기까지 약간의 시간이 필요해요. ROS에 익숙한 사용자라도 처음에는 포트와 컨텍스트 개념이 낯설게 느껴질 수 있어요. 다행히 GitHub Discussions와 Stack Overflow의 질문 응답이 활발하고, TRI 엔지니어들이 직접 답변하는 경우도 많아 막힘이 오래가지는 않아요.
GPU 가속과 대규모 병렬화
Drake는 정확성에 집중한 만큼 GPU 병렬 시뮬레이션은 Isaac Sim이나 MuJoCo MJX에 비해 약해요. 수천 환경을 동시에 굴려야 하는 대규모 RL 학습이 주 목적이라면 그쪽을 우선 고려하는 편이 좋아요. 반대로 정확한 접촉 시뮬레이션과 최적화 기반 제어가 핵심이라면 Drake가 압도적으로 유리해요.
장기적인 가치
오픈소스 라이선스(BSD)와 활발한 개발 속도, 그리고 학계·산업계에서 동시에 채택되고 있다는 점은 무시하기 어려운 강점이에요. 한 번 익혀 두면 매니퓰레이션, 보행, 드론, 자율주행에 이르기까지 다양한 도메인에서 재사용할 수 있어, 투자 대비 회수가 큰 도구라고 할 수 있어요.
마무리하며
Drake는 단순한 시뮬레이터가 아니라 로봇 연구의 사고 도구에 가까워요. 정확한 물리, 미분 가능한 동역학, 깔끔한 시스템 추상화가 한데 묶여 있어, 아이디어에서 검증까지의 거리를 크게 줄여 줘요. 처음에는 다소 낯설어도, 한 번 익숙해지면 다른 도구로 돌아가기 어려운 매력이 있어요. Physical AI와 로봇 공학의 흐름을 진지하게 따라가고 싶다면, Drake는 분명 가까이 두고 살펴볼 만한 선택이에요.
Drake 공식 문서와 MIT Robotic Manipulation 강의에서 더 깊이 있는 내용을 확인할 수 있어요.