인지야공

인지야공/오늘의 AI 이슈/7번째 글

구글이 로봇 스택을 열었다 — 그 안에 든 세 가지 알고리즘

실행: python 딥러닝/daily/DAILY_2026_09_24_robot_stack.py 3절의 수치는 전부 그 스크립트를 돌려 얻은 것이다.


1. 무슨 일이 있었나

2026년 9월 22일, 토론토에서 열린 ROSCon 2026에서 알파벳(구글 모회사) 산하 로봇 소프트웨어 회사 Intrinsic이 산업 로봇 플랫폼의 핵심을 Intrinsic Core라는 이름으로 공개했다. (공식 발표, SiliconANGLE, The Robot Report)

  • 라이선스는 Apache 2.0, GitHub에 공개됐고 로컬 하드웨어에서 도는 사전 구성 환경으로 배포된다.
  • 들어 있는 것: 하드웨어 독립 실시간 제어 프레임워크, 디지털 트윈, 모션·그립 계획, 자세 추정, 시뮬레이션, 카메라 보정, ROS 호환 하드웨어 드라이버.
  • 회사는 “실제 제조 현장에서 매일 쓰는 것과 같은 구성 요소”라고 밝혔다. Open Robotics Suite와 함께 동작한다.

무엇이 새로운가를 한 줄로 하면 이렇다 — 로봇 팔을 움직이는 데 필요한 밑바닥 부품들이 공짜가 됐다. 그러면 그 부품이 실제로 무슨 계산을 하는지가 궁금해진다. 셋만 골라 직접 재 봤다.


2. 핵심 개념을 아주 쉽게

관절 공간이라는 뒤집힌 지도

로봇 팔을 움직일 때 우리가 보는 것은 손끝이 어디 있나(작업공간)지만, 로봇이 실제로 돌리는 것은 관절 각도다. 그래서 “장애물을 피해 가라”는 문제는 관절 각도 평면에서 풀어야 한다.

문제는 그 평면에서 장애물이 전혀 다른 모양이 된다는 것이다. 작업공간에서는 동그라미였는데, 관절 공간에서는 휘어진 띠가 된다 — 그 팔 자세들이 전부 동그라미에 닿기 때문이다.

작업공간에서 관절 공간으로, 그리고 도넛으로 ① 작업공간에서는 팔이 그림처럼 놓이고 장애물은 동그라미다. ② 관절 공간에서는 가로축이 첫 관절, 세로축이 둘째 관절이며, 동그란 장애물이 휘어진 금지 띠로 바뀐다. ③ 각도는 원형이라 왼쪽 끝과 오른쪽 끝, 위와 아래가 서로 이어져 있다. 그래서 관절 공간은 사각형이 아니라 도넛이다. ① 작업공간 — 우리가 보는 것 ② 관절 공간 — 로봇이 푸는 것 ③ 사실은 도넛 장애물은 동그라미 동그라미가 휘어진 금지 띠가 된다 끝과 끝이 이어져 길이 생긴다 관절1 관절2 시작 목표 관절2 각도 ↑ / 관절1 각도 → 화살표가 같은 변끼리 붙는다 좌우 붙임 + 상하 붙임 = 도넛

③이 이 글에서 가장 중요한 그림이다. 관절 각도는 원형이다 — −180°-180°와 +180°+180°는 같은 자세다. 그래서 관절 공간은 사각형이 아니라 좌우와 상하가 이어진 도넛이고, 사각형으로만 보면 없는 벽이 생긴다. 3절에서 이걸 실제로 재 본다.

쓰는 기호

기호뜻
q=(q1,q2,… )q = (q_1, q_2, \dots)관절 각도들. 이 묶음 하나가 팔의 자세 하나다
C\mathcal{C}관절 공간(configuration space). 가능한 모든 qq의 집합
Cfree\mathcal{C}_{\text{free}}그중 아무 데도 안 부딪히는 qq들
R,tR, t물체의 회전과 평행이동. 둘을 합친 것이 자세(pose)
kp,kdk_p, k_d제어기가 얼마나 세게 당기고 얼마나 눌러 주는가

자세 추정은 카메라가 본 점들과 물체 모형을 겹쳐 R,tR, t를 찾는 일이고, 고전적인 방법인 ICP는 이 한 줄을 반복한다 — 가장 가까운 점끼리 짝짓고, 그 짝을 가장 잘 겹치는 R,tR,t로 갱신한다.

min⁡R, t ∑i∥R mi+t−sπ(i)∥2,π(i)=arg⁡min⁡j∥R mi+t−sj∥\min_{R,\,t}\ \sum_i \bigl\lVert R\,m_i + t - s_{\pi(i)} \bigr\rVert^2, \qquad \pi(i) = \arg\min_j \lVert R\,m_i + t - s_j\rVert

여기서 mim_i는 모형의 점, sjs_j는 카메라가 본 점, π\pi는 그 짝짓기다. 짝짓기가 옳아야 갱신이 옳고, 갱신이 옳아야 짝짓기가 옳아진다 — 그래서 처음 위치가 중요하다.


3. 직접 재 보기

A. 자세 추정 — ICP는 가까이에서만 맞는다

물체 점군 400개를 정해진 각도만큼 돌려 놓고, 처음에 얼마나 틀어져 있었는지를 바꿔 가며 ICP를 돌렸다 (각 40회).

로봇 스택의 세 알고리즘

처음 틀어진 각도5°20°40°60°90°180°
수렴 성공률100%100%100%100%0%0%
최종 오차 중앙값0.1°0.0°0.1°0.1°120.0°119.9°

60°까지는 100%, 90°부터는 0%다. 중간이 거의 없다.

실패했을 때의 오차가 정확히 120°라는 것이 단서다. 이 실험의 물체는 r=1+0.35cos⁡3θr = 1 + 0.35\cos 3\theta로 만든 세 갈래 모양이라, 120° 돌려 놓아도 거의 똑같아 보인다. ICP는 그 “그럴듯한 오답”에 빠져 자신 있게 멈춘다. 국소 최소란 이런 것이다.

그래서 오늘날의 스택은 ICP만 쓰지 않는다. 딥러닝 자세 추정기로 처음 한 번을 잡고(수십 도 안으로), ICP로 소수점을 다듬는다. Intrinsic Core의 자세 추정이 학습 기반 모듈과 고전 정합을 함께 싣는 이유가 이 표 안에 있다.

B. 모션 계획 — 도넛인 줄 알아야 길이 보인다

관절 2개짜리 팔과 동그란 장애물 3개를 놓고, 관절 공간을 180×180 격자로 훑어 어디가 막혔는지 그렸다 (위 그림 가운데).

값
관절 공간에서 자유 영역66.9%
사각형으로 볼 때 연결 성분4개 — 시작과 목표가 다른 덩어리(도달 불가)
도넛으로 볼 때 연결 성분3개 — 시작과 목표가 같은 덩어리(도달 가능)

같은 문제인데 판정이 뒤집힌다. 각도가 원형이라는 사실을 안 쓰면, 풀 수 있는 문제를 “불가능”이라고 결론 내린다. 2절 그림 ③이 바로 이 이야기였다.

그 위에서 RRT(무작위로 가지를 뻗어 나가는 계획법)를 돌렸다. 트리가 자라며 통로를 찾아내는 과정이다.

RRT 트리가 자라며 길을 찾는다

빨간 영역이 금지 구역이고, 초록 점이 시작, 주황 별이 목표다. 가지는 아무 데나 뻗는데도 막힌 곳은 자연히 피해 가고 빈 곳으로 번진다. 관절 수를 늘려 가며 목표에 닿기까지 뻗은 가지 수를 쟀다.

관절 수2345
성공 (10회 중)101090
닿기까지 뻗은 가지 (중앙값)49개72개184개—
관절당 20칸 격자로 훑는다면400칸8,000칸160,000칸3,200,000칸

격자로 전부 훑는 방식은 관절 하나 늘 때마다 20배씩 커진다(400 → 320만). 그런데 무작위로 뻗는 쪽은 수십~수백 가지로 닿는다. 이것이 샘플링 기반 계획이 로봇 팔의 표준이 된 이유다.

다만 공짜는 아니다. 관절 5개에서는 3만 가지를 뻗고도 한 번도 닿지 못했다. 표본이 차원의 저주를 늦춰 줄 뿐 없애 주지는 않는다(실제 6~7축 팔에서는 양방향 RRT, 경로 다듬기, 좋은 휴리스틱을 함께 쓴다).

C. 실시간 제어 — “실시간”은 마케팅 문구가 아니다

관절 하나를 목표 궤적(1.5Hz 사인파)에 붙이는 PD 제어를 놓고, 제어 주기만 바꿨다.

제어 게인 kpk_p빠른 주기(2kHz)에서 오차안정적으로 돌릴 수 있는 가장 느린 주기
2000.1242 rad15 Hz (66.7 ms)
9000.0393 rad35 Hz (28.6 ms)
3,6000.0110 rad70 Hz (14.3 ms)

읽는 법이 중요하다. 세게 잡을수록 오차는 작아지지만(0.124 → 0.011, 11배), 더 빠른 주기를 요구한다 (15Hz → 70Hz). kpk_p를 18배 키우는 대가로 제어 주기를 4.7배 빠르게 해야 하고, 그 선을 못 지키면 오차가 조금 나빠지는 게 아니라 통째로 발산한다(kp=3,600에서 50Hz면 이미 발산).

그래서 “하드웨어 독립 실시간 제어 프레임워크”라는 말이 진짜 기능이다. 일반 운영체제에서 가끔 1ms씩 밀리는 것이 대수롭지 않아 보여도, 세게 잡은 관절에서는 그 지연이 안정성의 문제가 된다.


4. 흔한 오해와 한계

  1. “오픈소스가 됐으니 로봇을 쉽게 만들 수 있다” — 풀린 것은 밑바닥 부품이다. 3절 A·B·C 어디에도 “그냥 쓰면 된다”는 구간이 없었다. 초기값, 좌표계의 위상, 주기 예산을 여전히 사람이 맞춰야 한다.
  2. “ICP면 자세 추정 끝” — 60°를 넘으면 0%였다(3절 A). 학습 기반 추정기와 짝으로 써야 한다.
  3. “관절 공간은 그냥 각도 평면” — 도넛이다. 이 사실 하나로 도달 가능/불가능 판정이 뒤집혔다(3절 B).
  4. “샘플링 계획은 차원에 강하다” — 상대적으로 그렇다는 뜻이다. 5관절에서는 3만 표본으로도 실패했다.
  5. 이 글의 실험 — 2차원 평면 팔, 점군 400개, 관절 하나짜리 제어라는 축소 모형이다. 60°·15Hz 같은 수는 이 설정의 값이고, 요점은 국소 수렴·공간의 위상·주기와 게인의 묶임이라는 구조다. Intrinsic Core 자체를 돌려 본 것이 아니다.

5. 한 문단 요약

알파벳의 Intrinsic이 산업 로봇 플랫폼의 핵심(실시간 제어·자세 추정·모션 계획·디지털 트윈)을 Apache 2.0으로 공개했다(2026-09-22, ROSCon). 그 안에 든 알고리즘 셋을 축소해서 재 보니 각각의 성격이 분명했다. 자세 추정의 ICP는 60°까지는 100% 맞추다가 90°에서 0%로 떨어졌고, 실패할 때는 물체의 대칭 때문에 정확히 120° 틀어진 곳에 자신 있게 갇혔다 — 그래서 학습 기반 추정기가 첫 위치를 잡아 줘야 한다. 모션 계획은 관절 공간을 사각형으로 보면 시작과 목표가 다른 덩어리에 있어 도달 불가였지만, 각도가 원형이라는 것(도넛)을 쓰면 도달 가능이 됐다 — 공간의 모양을 잘못 알면 풀 수 있는 문제를 포기한다. 실시간 제어는 게인을 18배 세게 잡아 오차를 11배 줄이는 대신 요구 주기가 15Hz에서 70Hz로 올라갔고, 그 선을 넘기면 발산했다. 부품이 공짜가 됐다는 것은 이 세 가지 제약이 사라졌다는 뜻이 아니라, 이제 누구나 그 제약과 직접 씨름할 수 있게 됐다는 뜻이다.


참고

표시는 이 브라우저에만 남는다. 서버로 가는 것은 없다.