Skip to content
Published on

로봇이 보고 듣고 움직이다 — VLA 모델 RT-2와 OpenVLA 리뷰

Authors

들어가며: 인식과 행동 사이의 다리

오랫동안 로봇 학습은 세 개의 분리된 파이프라인을 이어 붙이는 일이었습니다. 카메라가 본 것을 해석하는 인식(perception) 모듈, 무엇을 해야 할지 정하는 계획(planning) 모듈, 그리고 관절을 실제로 움직이는 제어(control) 모듈이 각각 따로 설계되고 따로 학습되었습니다. 각 단계 사이의 경계에서 정보가 손실되고, 새로운 물체나 새로운 지시가 들어오면 전체 파이프라인이 무너지기 일쑤였습니다.

비전-언어-행동(Vision-Language-Action, VLA) 모델은 이 세 단계를 하나의 신경망으로 통합하려는 시도입니다. 카메라 이미지와 "빨간 컵을 집어서 접시 위에 올려" 같은 자연어 지시를 입력으로 받아, 로봇이 다음에 취할 행동을 직접 출력합니다. 핵심 통찰은 단순합니다. 웹 규모의 이미지-텍스트 데이터로 사전학습된 비전-언어 모델(VLM)이 이미 세상에 대한 풍부한 상식과 일반화 능력을 갖고 있으니, 여기에 "행동"이라는 출력 양식을 하나 더 가르치면 된다는 것입니다.

이 글에서는 VLA 패러다임을 연 RT-2, 데이터 측면의 토대를 놓은 Open X-Embodiment/RT-X, 그리고 이를 오픈소스로 재현하고 확장한 OpenVLA를 차례로 살펴봅니다. 정확한 사실에 근거하되, 버전이나 세부 수치는 출처에 따라 다를 수 있으므로 확실한 것만 다룹니다.

VLA 패러다임의 개념

행동을 토큰으로 보기

언어 모델은 텍스트를 토큰의 시퀀스로 보고 다음 토큰을 예측합니다. VLA의 핵심 아이디어는 로봇의 행동도 마찬가지로 토큰의 시퀀스로 표현할 수 있다는 것입니다. 로봇 팔의 행동은 보통 다음과 같은 연속값 벡터로 표현됩니다.

action = [Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper]
          └──── 엔드이펙터 위치/자세 변화 ────┘  └ 그리퍼 ┘

이 7차원 연속 벡터의 각 차원을 일정 구간(bin)으로 나누어 정수 토큰으로 바꾸면, 행동은 정수 토큰들의 시퀀스가 됩니다. 그러면 "이미지와 지시를 보고 다음 행동 토큰을 예측하라"는 문제는 언어 모델이 풀던 "다음 토큰 예측" 문제와 정확히 같은 형태가 됩니다.

┌─────────────────────────────────────────────────────────┐
│                   VLA 추론의 기본 흐름                     │
└─────────────────────────────────────────────────────────┘

  카메라 이미지          자연어 지시
   (관찰 o_t)         "빨간 컵을 집어"
       │                    │
       ▼                    ▼
  ┌──────────┐        ┌──────────┐
  │ 비전     │        │ 텍스트   │
  │ 인코더   │        │ 토크나이저│
  └────┬─────┘        └────┬─────┘
       │   비전 토큰        │  언어 토큰
       └─────────┬──────────┘
        ┌──────────────────┐
        │   대형 Transformer │
        │   (VLM 백본)       │
        └────────┬─────────┘
        ┌──────────────────┐
        │  행동 토큰 디코딩  │  ──▶  [126, 14, 200, ...]
        └────────┬─────────┘
        ┌──────────────────┐
        │  역토큰화(de-tok) │  ──▶  연속 행동 벡터
        └────────┬─────────┘
            로봇 실행 a_t

왜 VLM에서 출발하는가

VLM에서 출발하는 이유는 "전이(transfer)" 때문입니다. 웹의 이미지-텍스트 쌍으로 학습된 모델은 "컵", "왼쪽", "쌓다", "빨간색" 같은 개념을 이미 알고 있습니다. 로봇 데이터만으로는 이런 폭넓은 의미적 지식을 얻기 어렵습니다. 로봇 시연 데이터는 수집 비용이 매우 비싸서 양이 제한적이기 때문입니다. VLM의 사전지식 위에 로봇 행동을 얹으면, 학습 중에 한 번도 본 적 없는 물체나 지시에 대해서도 어느 정도 일반화가 가능해집니다.

RT-2: VLM을 로봇 정책으로 파인튜닝하다

RT-2(Robotic Transformer 2, Google DeepMind, arXiv 2307.15818)는 이 패러다임을 본격적으로 제시한 연구입니다. 핵심 아이디어는 다음과 같습니다.

  1. 대형 비전-언어 모델(PaLI-X, PaLM-E 계열)을 백본으로 사용합니다.
  2. 로봇의 행동을 이산 토큰으로 표현합니다. 7차원 행동의 각 차원을 256개의 구간으로 양자화하여 토큰으로 만듭니다.
  3. 웹 데이터(VQA, 캡셔닝 등)와 로봇 시연 데이터를 함께 학습하는 공동 파인튜닝(co-fine-tuning)을 수행합니다.

행동을 텍스트처럼 출력하기

RT-2의 인상적인 점은 행동 토큰을 모델의 어휘(vocabulary) 안에 통합한다는 것입니다. 모델은 마치 문장을 생성하듯 행동을 생성합니다. 출력 문자열은 개념적으로 이런 형태입니다.

입력: [이미지] "테이블 위에서 거의 떨어진 가방을 집어"

출력(개념):
  "terminate Δpos_x Δpos_y Δpos_z Δrot_x Δrot_y Δrot_z gripper"
   →  "1   135   149   125   124   135   134   141"
       └ 각 숫자가 양자화된 행동 토큰 ┘

여기서 각 정수는 미리 정해둔 구간 인덱스이며, 역토큰화를 통해 실제 연속 행동값으로 복원됩니다.

공동 파인튜닝과 일반화

RT-2가 보여준 가장 중요한 결과는 신규 객체와 신규 지시에 대한 일반화였습니다. 웹 데이터를 함께 학습했기 때문에, 학습 시 로봇으로 한 번도 다뤄보지 못한 물체("멸종 위기 동물 인형을 집어")나 상징적 추론이 필요한 지시에 대해서도 의미를 이해하고 합리적으로 행동하는 경향을 보였습니다. 즉, 인터넷 규모 지식이 로봇 제어로 "스며드는(emergent)" 현상이 관찰되었습니다.

다만 RT-2는 모델 가중치가 공개되지 않았고, 거대한 사유(proprietary) VLM에 의존하며, 추론이 무겁다는 한계가 있었습니다. 여기서 두 가지 후속 흐름이 나옵니다. 하나는 데이터 측면의 통합(Open X-Embodiment), 다른 하나는 오픈소스 재현(OpenVLA)입니다.

Open X-Embodiment / RT-X: 교차 로봇 데이터셋

RT-2가 모델 아키텍처를 제시했다면, Open X-Embodiment(arXiv 2310.08864)는 데이터의 토대를 닦았습니다. 핵심 문제의식은 이렇습니다. 각 연구실은 자신의 로봇으로 자신의 데이터만 모으고, 그 데이터로 학습한 정책은 다른 로봇에서 쓸 수 없었습니다. 데이터가 로봇 기종(embodiment)마다 파편화되어 있었던 것입니다.

Open X-Embodiment는 여러 기관의 다양한 로봇에서 수집된 시연 데이터를 하나의 표준 포맷으로 통합한 대규모 컬렉션입니다. 여기에는 단일 팔 매니퓰레이터부터 양팔 로봇, 이동 로봇까지 다양한 형태가 포함됩니다.

┌──────────────────────────────────────────────────────────┐
│           Open X-Embodiment: 교차 로봇 데이터 통합          │
└──────────────────────────────────────────────────────────┘

  기관 A 로봇   기관 B 로봇   기관 C 로봇   ...   기관 N 로봇
  (7-DoF 팔)   (양팔)        (이동 베이스)        (다른 그리퍼)
      │            │             │                   │
      └────────────┴──────┬──────┴───────────────────┘
              ┌───────────────────────┐
              │  표준화된 데이터 포맷    │
              │  (관찰·행동·언어 지시)  │
              └───────────┬───────────┘
              ┌───────────────────────┐
              │   RT-X 정책 학습        │
              │ (여러 기종 공동 학습)   │
              └───────────┬───────────┘
          한 정책이 여러 로봇 기종에서 동작
          (positive transfer 관찰)

이 데이터로 학습한 RT-X 계열 정책은 여러 기종을 한꺼번에 학습할 때 단일 기종만으로 학습한 경우보다 성능이 향상되는 양성 전이(positive transfer)를 보였습니다. 즉, 한 로봇에서 배운 것이 다른 로봇의 성능을 끌어올린 것입니다. 이는 자연어 처리에서 더 많고 다양한 데이터가 더 나은 일반화로 이어지는 것과 같은 직관입니다. Open X-Embodiment는 이후 거의 모든 오픈 VLA 연구의 사실상 표준 학습 데이터가 되었습니다.

OpenVLA: 오픈소스 7B VLA

OpenVLA(arXiv 2406.09246)는 RT-2가 보여준 비전을 오픈소스로 재현하고 누구나 쓸 수 있게 만든 모델입니다. 약 70억(7B) 파라미터 규모이며 가중치와 학습 코드가 공개되어 있습니다. 학습에는 Open X-Embodiment에서 추린 약 97만 개의 실제 로봇 시연이 사용되었습니다.

듀얼 비전 인코더 + Llama 2

OpenVLA의 아키텍처에서 눈에 띄는 선택은 두 개의 비전 인코더를 함께 쓴다는 점입니다.

┌────────────────────────────────────────────────────────────┐
│                  OpenVLA 아키텍처 (개략)                     │
└────────────────────────────────────────────────────────────┘

        입력 이미지
   ┌────────┴─────────┐
   ▼                  ▼
┌────────┐       ┌────────┐
│ DINOv2 │       │ SigLIP │
│(공간/  │       │(의미/  │
│ 기하)  │       │ 언어정렬)│
└───┬────┘       └───┬────┘
    │   특징 결합(concat)│
    └────────┬─────────┘
      ┌─────────────┐      "빨간 컵을 집어"
      │ 프로젝터    │            │
      │ (MLP)       │            ▼
      └──────┬──────┘     ┌─────────────┐
             │            │ 텍스트 토큰  │
             └─────┬──────┘             │
                   ▼                    │
          ┌──────────────────────────────┐
          │      Llama 2 (7B) 백본        │
          │  (자기회귀 Transformer 디코더)│
          └──────────────┬───────────────┘
                  행동 토큰 예측
                  [126, 14, 200, 51, ...]
                  역토큰화 → 연속 행동
  • DINOv2: 자기지도 학습으로 얻은 공간적·기하학적 특징에 강합니다. 물체의 위치, 경계, 구조를 잘 포착합니다.
  • SigLIP: 언어와 정렬된 의미적 특징에 강합니다. "빨간색", "컵" 같은 의미와 픽셀을 연결합니다.

두 인코더의 특징을 결합하면 "무엇이(의미) 어디에(공간) 있는가"를 함께 표현할 수 있어, 매니퓰레이션처럼 정밀한 공간 이해가 필요한 작업에 유리합니다. 결합된 시각 특징은 프로젝터(MLP)를 거쳐 언어 모델의 토큰 공간으로 사상되고, 텍스트 토큰과 함께 Llama 2 디코더에 입력됩니다.

액션 토큰화의 세부

OpenVLA도 RT-2와 마찬가지로 연속 행동을 이산 토큰으로 바꿉니다. 7차원 행동의 각 차원을 256개 구간으로 양자화하는 방식이 일반적입니다. 이때 언어 모델의 기존 어휘 중 거의 쓰이지 않는 토큰들을 행동 토큰으로 재할당하는 기법이 흔히 사용됩니다.

연속 행동 차원 d 의 토큰화

  값 범위: [v_min, v_max]  를 256개 구간으로 분할

   v_min ├─┬─┬─┬─ ... ─┬─┤ v_max
         0 1 2 3       255   ← 구간 인덱스 = 행동 토큰

  분위수(quantile) 기반 경계를 쓰면 데이터 분포에
  맞춰 구간을 나눌 수 있어 양자화 오차를 줄임

  추론: 모델이 인덱스 예측 ──▶ 구간 중앙값으로 역변환

이산화는 언어 모델 구조를 그대로 재사용할 수 있다는 큰 장점이 있지만, 양자화 오차가 생기고 행동 차원 간 상관관계를 자기회귀로 한 차원씩 풀어야 한다는 단점도 있습니다. 이 한계가 뒤에서 다룰 연속 액션 모델(Diffusion Policy, π0)의 동기가 됩니다.

효율적 적응: LoRA와 양자화

7B 모델 전체를 새 로봇·새 작업마다 풀 파인튜닝하는 것은 비쌉니다. OpenVLA는 LoRA(저랭크 적응) 같은 파라미터 효율적 파인튜닝으로 적은 자원으로도 새로운 환경에 적응할 수 있음을 보였습니다. LoRA의 개념은 다음과 같이 요약됩니다.

# 개념적 의사코드: 기존 가중치는 동결, 저랭크 행렬만 학습
# (실제 구현은 PEFT 등 라이브러리를 사용)

class LoRALinear:
    def __init__(self, base_linear, rank=16, alpha=32):
        self.base = base_linear        # 동결된 원래 가중치 W
        d_in = base_linear.in_features
        d_out = base_linear.out_features
        self.A = zeros(rank, d_in)     # 학습 대상
        self.B = zeros(d_out, rank)    # 학습 대상
        self.scale = alpha / rank

    def forward(self, x):
        # W x + (B A) x * scale
        return self.base(x) + (x @ self.A.T @ self.B.T) * self.scale

원래 가중치 행렬은 그대로 두고, 작은 두 행렬 A와 B의 곱으로 표현되는 보정항만 학습하기 때문에 학습 파라미터 수와 메모리가 크게 줄어듭니다. 또한 4비트/8비트 양자화를 함께 쓰면 단일 GPU에서도 추론·미세조정이 가능해집니다(정확한 메모리 요구량은 설정에 따라 다를 수 있습니다).

세 모델 비교

항목RT-2RT-X (Open X-Embodiment)OpenVLA
주체Google DeepMind다기관 협업다기관(오픈소스)
핵심 기여VLM 파인튜닝으로 VLA 정립교차 로봇 통합 데이터셋오픈 7B VLA 재현
백본대형 사유 VLM (PaLI-X/PaLM-E 계열)다양DINOv2+SigLIP+Llama 2
행동 표현이산 액션 토큰표준화 행동 포맷이산 액션 토큰
가중치 공개비공개데이터 공개가중치·코드 공개
강점강한 의미적 일반화데이터 다양성·양성 전이접근성·LoRA 적응

표의 세부 사양은 출처와 버전에 따라 다를 수 있습니다. 핵심 구분은 RT-2가 아키텍처 패러다임을, Open X-Embodiment가 데이터 토대를, OpenVLA가 오픈 재현과 효율적 적응을 각각 대표한다는 점입니다.

데이터 수집과 학습 파이프라인

VLA의 성능은 모델 구조만큼이나 데이터에 좌우됩니다. 여기서는 로봇 시연 데이터가 어떻게 수집되고 학습으로 흘러가는지 전체 흐름을 정리합니다.

시연 데이터는 어떻게 모으는가

가장 흔한 방식은 사람이 직접 로봇을 조종해 작업을 시연하는 원격조작(teleoperation)입니다. 조작자는 스페이스마우스, VR 컨트롤러, 또는 별도의 마스터 암을 통해 로봇을 움직이고, 그 과정의 관찰(이미지)과 행동(엔드이펙터 명령)을 시간순으로 기록합니다.

┌──────────────────────────────────────────────────────────┐
│            시연 데이터 수집 파이프라인 (개략)             │
└──────────────────────────────────────────────────────────┘

  사람 조작자
     │  (스페이스마우스/VR/마스터암)
  ┌──────────┐    명령      ┌──────────┐
  │ 텔레옵    │  ─────────▶  │  로봇    │
  │ 인터페이스│              │ (실행)   │
  └──────────┘              └────┬─────┘
                                 │ 관찰(카메라)·상태(관절)
                        ┌──────────────────┐
                        │  타임스탬프 동기화 │
                        │  (관찰 ↔ 행동 정렬)│
                        └────────┬─────────┘
                        ┌──────────────────┐
                        │  에피소드 저장     │  ──▶  학습 데이터셋
                        │ (성공/실패 라벨)   │
                        └──────────────────┘

한 에피소드는 보통 "관찰, 행동, 다음 관찰"의 시퀀스로 이루어지며, 언어 지시(예: "수건을 접어")가 함께 붙습니다. 이렇게 모은 수만~수십만 개의 에피소드가 모델의 학습 재료가 됩니다.

관찰과 행동의 표현

학습에 들어가기 전, 관찰과 행동을 일관된 형식으로 정리해야 합니다. 관찰은 카메라 이미지(때로는 여러 시점)와 로봇 상태(관절 각도, 그리퍼 개폐)로 구성되고, 행동은 앞서 본 7차원 엔드이펙터 명령으로 표현되는 경우가 많습니다.

한 타임스텝의 데이터 구조 (개념)

  관찰 o_t:
    - 이미지: 전면 카메라, 손목 카메라 ...
    - 상태:  관절 각도, 그리퍼 개폐 정도
  지시 g:
    - 자연어 문장 ("빨간 컵을 집어")
  행동 a_t:
    - [Δx, Δy, Δz, Δroll, Δpitch, Δyaw, gripper]

  → (o_t, g, a_t) 삼중쌍의 시퀀스가 한 에피소드

기종마다 카메라 배치, 관절 수, 그리퍼 종류가 다르므로, Open X-Embodiment 같은 통합 데이터셋은 이런 차이를 표준 포맷으로 흡수합니다. 이것이 교차 로봇 학습을 가능하게 한 토대입니다.

공동 파인튜닝의 절차

RT-2와 OpenVLA가 공통으로 강조한 공동 파인튜닝(co-fine-tuning)은 웹 비전-언어 데이터와 로봇 데이터를 섞어 학습하는 기법입니다. 핵심은 학습 중 두 종류의 데이터를 적절한 비율로 함께 보여주어, 의미적 일반화 능력을 잃지 않으면서 행동을 배우게 하는 것입니다.

┌──────────────────────────────────────────────────────────┐
│              공동 파인튜닝의 데이터 흐름                  │
└──────────────────────────────────────────────────────────┘

  웹 VL 데이터               로봇 시연 데이터
  (VQA·캡셔닝)               (관찰·지시·행동)
      │                          │
      └────────────┬─────────────┘
          ┌──────────────────┐
          │  혼합 배치 샘플링  │  비율 조절(예: 일부는 웹, 일부는 로봇)
          └────────┬─────────┘
          ┌──────────────────┐
          │  VLM 파인튜닝      │  같은 손실로 텍스트·행동 토큰 학습
          └────────┬─────────┘
            VLA 정책 완성

로봇 데이터만으로 파인튜닝하면 모델이 웹에서 배운 폭넓은 지식을 잊어버리는 경향(파국적 망각)이 있습니다. 웹 데이터를 섞으면 이 망각을 완화하고, "한 번도 본 적 없는 물체"에 대한 일반화를 유지할 수 있습니다.

평가와 실세계 배포

VLA를 어떻게 평가하는가

VLA 평가는 본질적으로 어렵습니다. 언어 모델은 고정된 벤치마크로 점수를 매기지만, 로봇 정책은 실제 물리 환경에서 작업을 수행해야 하기 때문입니다. 일반적인 평가 항목은 다음과 같습니다.

  • 성공률(success rate): 주어진 작업을 끝까지 완수한 비율. 가장 직접적인 지표입니다.
  • 일반화 평가: 학습 시 보지 못한 물체·배경·지시에 대한 성공률. VLA의 핵심 가치를 측정합니다.
  • 강건성(robustness): 조명 변화, 물체 위치 교란, 방해 요소가 있을 때의 성능.
  • 언어 이해: 같은 장면에서 지시만 바꿨을 때 올바른 작업으로 분기하는지.
평가 시나리오의 분류 (개념)

  ┌─────────────────────────────────────────────┐
  │  인-디스트리뷰션 (학습 분포 안)             │
  │   - 본 물체, 본 배치 → 기본 성공률          │
  ├─────────────────────────────────────────────┤
  │  아웃-오브-디스트리뷰션 (학습 분포 밖)      │
  │   - 새 물체    → 의미적 일반화 검증         │
  │   - 새 배경    → 시각적 강건성 검증         │
  │   - 새 지시    → 언어 이해 검증             │
  └─────────────────────────────────────────────┘

실제 로봇 평가는 환경 셋업, 하드웨어 마모, 조작자 차이 등으로 재현이 어렵습니다. 그래서 시뮬레이션 벤치마크를 보조로 쓰되, 시뮬과 실제의 간극(sim-to-real gap)을 항상 염두에 두어야 합니다.

실세계 배포에서의 고려사항

연구 환경을 넘어 실제로 VLA를 배포하려면 추가 고려가 필요합니다.

  • 추론 지연: 7B 규모 모델은 추론이 무겁습니다. 양자화·캐싱·행동 청크로 지연을 줄이는 것이 실용성의 관건입니다.
  • 안전 가드레일: 모델 출력이 위험한 행동(과도한 힘, 충돌 경로)을 낼 수 있으므로, 저수준 제어기에 속도·토크 제한과 충돌 회피를 둡니다.
  • 휴먼 인 더 루프: 초기 배포에서는 사람이 감독하며 위험 시 즉시 정지할 수 있어야 합니다.
  • 분포 모니터링: 입력이 학습 분포에서 크게 벗어나면 신뢰도가 떨어지므로, 이를 감지해 보수적으로 행동하거나 사람에게 넘기는 장치가 필요합니다.
배포 스택의 안전 계층 (개념)

   VLA 정책 출력 (행동 제안)
   ┌──────────────────┐
   │ 안전 필터         │  속도·토크 제한, 작업공간 경계, 충돌 회피
   └────────┬─────────┘
   ┌──────────────────┐
   │ 저수준 제어기      │  실제 관절 명령으로 변환
   └────────┬─────────┘
        로봇 실행  ──▶  (사람 감독·비상 정지 가능)

이 계층들은 모델이 아무리 똑똑해져도 물리 세계의 실패 비용이 크다는 현실을 반영한 것입니다. VLA의 발전은 모델 성능뿐 아니라 이런 운영 인프라의 성숙과 함께 이루어집니다.

강점과 한계

강점

  • 의미적 일반화: 웹 사전학습 덕분에 학습 중 보지 못한 물체·지시에 어느 정도 대응합니다.
  • 단일 모델 통합: 인식·계획·제어의 경계 손실을 줄이고 자연어 지시를 직접 받습니다.
  • 확장성: 더 많은 데이터(Open X-Embodiment)와 더 큰 백본으로 성능이 향상되는 경향을 보입니다.
  • 재현성: OpenVLA처럼 가중치와 코드가 공개되면 연구·응용의 진입 장벽이 낮아집니다.

한계

  • 이산화 오차: 액션 토큰화는 양자화 오차를 동반하고, 부드럽고 정밀한 연속 제어에 불리할 수 있습니다.
  • 제어 주파수: 자기회귀로 토큰을 한 개씩 생성하면 추론이 느려 고주파 제어(빠른 반응)가 어렵습니다.
  • 데이터 비용: 실제 로봇 시연 데이터는 여전히 수집 비용이 매우 높습니다.
  • 안전성·신뢰성: 물리 세계에서의 실패는 비용이 크며, 분포 밖 상황에서의 행동을 보장하기 어렵습니다.
  • 평가의 어려움: 실제 로봇 평가는 재현이 어렵고 환경 차이에 민감합니다.

이 중 이산화 오차와 제어 주파수 문제는 행동을 연속값으로 생성하는 접근(Diffusion Policy, flow-matching 기반 π0)으로 이어집니다. 이는 후속 글에서 다룹니다.

마치며

VLA 모델은 "웹에서 배운 의미적 지식"과 "로봇 시연에서 배운 운동 기술"을 하나의 신경망에서 합치려는 시도입니다. RT-2는 VLM을 로봇 정책으로 파인튜닝하면 신규 객체·지시에 대한 일반화가 나타난다는 것을 보였고, Open X-Embodiment는 교차 로봇 데이터의 양성 전이를 입증했으며, OpenVLA는 이를 오픈소스로 재현해 누구나 실험할 수 있게 했습니다.

물론 이산 액션 토큰화의 한계, 제어 주파수, 데이터 비용, 안전성 등 풀어야 할 문제가 많습니다. 그러나 인식과 행동을 단일 모델로 잇는다는 방향성은 분명해 보입니다. 다음 단계는 더 부드럽고 빠른 행동 생성과, 휴머노이드 같은 복잡한 기종으로의 확장입니다.

참고 자료