상태: 초안 (2026-10-18), 원문 읽기와 실측. 논문 수치는 2026-10-18 에 arXiv HTML 판(2408.03906v3)을 직접 열어 해당 절에서 다시 확인한 것만 적었고, 쪽 번호 대신 절·표 번호를 씁니다. 실측은 2·5편과 같은 임시 파드(미니 PC 노드 Intel Core Ultra 9 185H, 상한 CPU 3코어·메모리 3 GiB, GPU 없음, MuJoCo 3.16.0, 시간 간격 1 ms)에서 했고, 다른 시뮬레이션 실험과 CPU 를 나눠 썼습니다. 모든 반환률은 시뮬레이터 안의 상대 비교값입니다. 실제 로봇이나 실제 공으로 잰 값이 아닙니다. 관측 잡음 σ 3 mm, 라켓 고무, 결정 지평 같은 조건은 가정값입니다. 반복은 관측 잡음 씨앗 3개이고 표의 값은 씨앗별 성공률의 중앙값입니다. 벽시계 시간은 DM1 1,702 s, DM2 560 s 였습니다. 원자료는 작업 디렉터리
measure/sim-tt-deepmind/에 있습니다.
목차
- 1. 직관: 아마추어 중급까지 온 로봇이 어디서 막혔나
- 2. 논문이 만든 것
- 3. 저자가 밝힌 한계 아홉 가지(§V)
- 4. 시뮬레이터 실험 DM1: 결정 지평과 회전 지식
- 5. 시뮬레이터 실험 DM2: 회전 「종류」만 알아도 얼마나 회복되나
- 6. 덤: 같은 접촉값의 반발이 적분기에 따라 달라진다(DM3)
- 7. 개선 방향: 우리가 먼저 할 다섯 가지
- 8. 공개된 것과 공개되지 않은 것
- 9. 한계
- 10. 다음 편으로
- 참고
1. 직관: 아마추어 중급까지 온 로봇이 어디서 막혔나
DeepMind 의 탁구 로봇은 사람을 상대로 경기를 치러 「아마추어 중급」 수준에 닿았습니다. 그런데 숙련자들은 금방 약점을 찾아냈습니다. 낮고 강한 언더스핀, 빠른 공, 백핸드입니다. 이 글은 논문이 스스로 적은 한계를 원문으로 확인하고, 그중 회전과 결정 시점 문제를 우리 시뮬레이터에서 직접 재 봅니다. 탁구 로봇을 처음부터 만드는 입장에서 「어디에 먼저 힘을 쓸지」를 정하려는 것입니다.
2. 논문이 만든 것
Achieving Human Level Competitive Robot Table Tennis(arXiv 2408.03906, ICRA 2025)에서 확인한 구조입니다.
| 항목 | 원문 내용 | 절 |
|---|---|---|
| 몸 | 6축 산업용 팔(ABB IRB 1100)을 Festo 직선 갠트리 두 개 위에 올림. 좌우 4 m, 앞뒤 2 m | §II-A |
| 눈 | Ximea 카메라 두 대, 125 Hz. 신경망 인식이 같은 주기로 공 위치를 냄. 상대 라켓은 모션캡처로 추적 | §II-A |
| 지연 | 시스템 전체 약 100 ms. 제어 주기는 50 Hz | §V(1) |
| 정책 | 저수준 기술 정책 17개(서브 받기 4, 랠리 13. 포핸드 11, 백핸드 6)와, 공마다 그중 하나를 고르는 고수준 제어기 | §II, 부록 |
| 정책 입력 | 8스텝의 공 위치·속도(6), 관절 위치(8), 포핸드·백핸드 원핫(2). 회전은 입력에 없음 | §II-C |
| 회전 | 회전량은 추정하지 않음. 들어오는 공이 탑스핀인지 언더스핀인지만 고르는 분류기. 서브의 언더스핀에서 정밀도 1.0, 재현율 0.4 | §II-D3, §III-G |
| 시뮬레이터 | MuJoCo. 실기 미세조정 없이 배포(zero-shot sim-to-real) | §II-E |
| 성적 | 29경기 13승(45%). 초급 7/7, 중급 6/11, 상급(Advanced) 0/5, 최상급(Advanced+) 0/6 | §III, 표 XIV |
재현율 0.4 는 언더스핀 서브 열 개 가운데 여섯 개를 탑스핀으로 잘못 읽었다는 뜻입니다.
3. 저자가 밝힌 한계 아홉 가지(§V)
- 빠른 공. 데이터 부족, 약 100 ms 의 시스템 지연, 공마다 같은 준비 자세로 돌아가는 리셋 때문입니다.
- 높은 공. 탁자 위 약 6 ft 를 넘으면 카메라 시야를 벗어납니다. 실제로는 드물었다고 적었습니다.
- 낮은 공. 라켓을 보호하는 충돌 회피 규칙 때문에 탁자에 붙어 오는 공을 잘 받지 못했고, 숙련자들이 낮은 언더스핀으로 이 점을 자주 공략했습니다.
- 숏핌플 라켓. 시뮬레이터로 모델링할 수 있는 고무를 골랐습니다. 상급자용 민러버는 비선형이고 여러 모드를 가져 모델링하기 매우 어렵다고 적었습니다.
- 회전 읽기. 극단적인 회전을 정확히 읽지 못해, 다룰 수 있는 회전량이 제한되었습니다. 회전 인식이 좋아지면 성능이 바로 오를 것이라고 봅니다.
- 여러 공을 내다보는 전략 없음. 공 하나씩 학습한 탓입니다.
- 모션캡처의 불안정. 가끔 생기는 추적 오류가 성능을 해쳤습니다.
- 백핸드가 포핸드보다 약함.
- 예측 가능한 배치. 심판이 꼽은 개선 영역 상위 셋은 배치, 회전 읽기, 백핸드였습니다.
아홉 가지 가운데 셋(1 지연, 3 낮은 언더스핀, 5 회전)이 「회전을 언제, 얼마나 아느냐」로 묶입니다. 그래서 이 문제부터 재 보았습니다.
4. 시뮬레이터 실험 DM1: 결정 지평과 회전 지식
설정. DeepMind 공개 초기 공 상태(랠리 중 로봇 쪽으로 오는 공)에서 200개를 뽑아, DeepMind MJCF 값의 MuJoCo 로 굴린 궤적을 「진실」로 두었습니다. 타격면(y = −1.6 m)에서 공 중심이 탁자 높이보다 5 cm 낮은 공 10개와 네트·두 번 바운드 같은 공 4개를 빼서 186개가 남았습니다. 카메라(120 fps 또는 240 fps)는 공 위치에 축마다 σ 3 mm 잡음을 더해 보고, 타격 시각에서 결정 지평 H(인지 지연 + 동작 준비 시간)를 뺀 시각까지의 관측만 씁니다. 추정기가 위치·속도를 맞추고, 계획기가 라켓 면의 법선과 속도를 정합니다. 회전은 방식마다 다르게 줍니다. 「회전 무시」는 0, 「참 회전」은 진실 값, 「회전 오차 x%」는 진실에 x% 오차를 섞은 값, 「궤적 적합」은 궤적의 휨에서 회전까지 맞춘 값입니다. 인지 오차가 없으면 186개 모두 반환했습니다(천장 100%).
| 회전 방식(120 fps) | H 50 | 100 | 150 | 200 | 250 | 300 | 350 | 400 ms |
|---|---|---|---|---|---|---|---|---|
| 회전 무시 | 84.4 | 83.3 | 66.7 | 50.0 | 45.7 | 48.9 | 50.5 | 47.8 |
| 궤적에서 회전 적합 | 100 | 100 | 100 | 98.4 | 94.6 | 85.5 | 78.5 | 66.7 |
| 회전 오차 15% | 100 | 100 | 100 | 100 | 99.5 | 95.7 | 90.9 | 88.2 |
| 참 회전 | 100 | 100 | 100 | 100 | 100 | 98.9 | 97.3 | 96.2 |
- 회전을 무시하면 지평이 짧아도 84% 입니다. 공은 맞히지만 라켓 반사를 잘못 계산해 탁자 밖으로 보냅니다. 지평이 바운드 뒤 남은 시간(중앙값 284 ms)을 넘으면 50% 안팎으로 떨어집니다. 회전은 비행 예측과 라켓 반사 양쪽에 필요합니다.
- 궤적 적합은 지평 150 ms 까지 참 회전과 같았습니다. 지평이 길어지면 떨어져, 300 ms 에서 85.5%, 400 ms 에서 66.7% 였습니다. 240 fps 카메라는 긴 지평에서만 차이를 냈습니다(300 ms 87.6%, 400 ms 76.9%).
- 참 회전을 알아도 400 ms 에서 96.2% 입니다. 남은 오차는 추정기의 단순한 바운드 모델과 MuJoCo 접촉의 차이에서 옵니다. 5편의 기준선에서 본 「모델 차이」와 같은 이야기입니다.
5. 시뮬레이터 실험 DM2: 회전 「종류」만 알아도 얼마나 회복되나
DeepMind 의 분류기처럼 회전의 종류만 아는 경우를 따로 재 보았습니다. 종류는 DeepMind 부록의 기준(탑 ωx > 50, 백 ωx < −25 rad/s, 나머지는 무회전)으로 나누고 종류마다 80개를 뽑았습니다. 데이터의 회전은 상급자보다 약하므로 회전을 2배, 3배로 키운 공도 만들었습니다. 지평은 빠른 팔을 가정한 150 ms 와 느린 갠트리를 가정한 300 ms 입니다(둘 다 가정). 「종류 + 궤적」은 공 밖의 신호(상대 자세, 타구음 같은 것)가 종류를 맞혔다고 보고, 그 종류의 평균 회전을 사전분포 중심으로 둔 궤적 적합입니다.
| 회전 배수 | H | 회전 무시 | 종류 평균만 | 궤적 적합 | 종류 + 궤적 | 참 회전 |
|---|---|---|---|---|---|---|
| ×1 | 150 ms | 69 | 93 | 93 | 100 | 100 |
| ×1 | 300 ms | 55 | 72 | 77 | 94 | 99 |
| ×2 | 150 ms | 35 | 83 | 88 | 97 | 100 |
| ×2 | 300 ms | 26 | 48 | 63 | 82 | 98 |
| ×3 | 150 ms | 20 | 76 | 88 | 98 | 100 |
| ×3 | 300 ms | 11 | 40 | 61 | 74 | 90 |
(탑·백·무회전 공을 모두 합친 반환률(%)입니다. 유효 공은 ×1 220개, ×2 176개, ×3 122개입니다. 회전을 키우면 로봇 쪽 탁자에 떨어지지 않는 공이 생겨 수가 줄었습니다.)
- 종류 힌트를 궤적 적합에 보태면 모든 조건에서 7–19%p 올랐습니다. 참 회전을 빼면 가장 좋은 방식이었습니다.
- 종류 평균만 쓰는 것은 궤적 적합보다 같거나 못했습니다. 종류 정보는 궤적 적합을 대신하지 않고 보탭니다. 종류를 80% 만 맞히면 종류 평균 방식이 5–13%p 떨어졌습니다.
- 가장 어려운 공은 탑스핀이었습니다. 3배 탑스핀, 지평 300 ms 에서 회전 무시 0%, 궤적 적합 32%, 종류 + 궤적 53%, 참 회전 84% 였습니다. 백스핀은 궤적 적합만으로 91–100% 였습니다. DeepMind 의 탁자 접촉값에서는 바운드가 백스핀을 거의 지웠기 때문입니다(1배 백스핀의 평균 ωx 가 바운드 전 −41, 뒤 −5 rad/s).
- 그렇다면 DeepMind 가 실기에서 겪은 백스핀 약점(한계 3, 5)은 비행 예측보다 라켓 쪽(공을 들어 올리는 라켓 각도, 고무 모델, 낮은 공의 충돌 회피)에서 왔을 수 있습니다. 이것은 추정이고 검증하지 않았습니다. 이 실험은 계획기와 진실이 같은 라켓 모델을 쓰므로 라켓 쪽 효과를 작게 잡았을 수 있습니다. 탁자 마찰을 문헌 값으로 바꾸고 라켓 모델을 진실과 다르게 둔 재실험이 다음 단계입니다.
6. 덤: 같은 접촉값의 반발이 적분기에 따라 달라진다(DM3)
2편 5절에서 비스듬한 바운드의 법선 반발이 1 을 넘는 칸(1.081)이 있었습니다. 시간 간격 3가지, 적분기 2가지, 마찰 원뿔 2가지, 입사 6가지로 72칸을 다시 재 보니, 1 을 넘는 경우는 implicitfast·1 ms·타원 원뿔·백스핀 300 rad/s 한 칸뿐이었고(0.5 ms 에서 1.001, 0.25 ms 에서 0.984), 같은 1 ms 에서 RK4 는 0.838–0.951, implicitfast 는 0.961–1.081 이었습니다. 총 운동에너지(병진 + 회전)의 접촉 후/전 비는 72칸 모두 1 보다 작았으므로(0.851–0.996) 에너지를 만든 것은 아니고, 접선 방향의 에너지가 법선 쪽으로 넘어간 것입니다. 시스템 식별로 맞춘 접촉값은 그때의 적분기와 시간 간격과 한 묶음으로 다뤄야 합니다.
7. 개선 방향: 우리가 먼저 할 다섯 가지
| 순서 | 개선안 | 겨냥하는 한계 | 이 글의 근거 |
|---|---|---|---|
| 1 | 회전 종류 힌트 + 궤적 적합. 상대 자세·타구음·라켓 면에서 종류를 먼저 알아내고, 그 평균을 궤적 적합의 사전분포로 씁니다. | 3, 5 | DM2: 7–19%p |
| 2 | 두 단계 결정. 느린 갠트리는 일찍 움직이고, 손목은 바운드 뒤 관측으로 늦게 보정합니다. | 1 | DM1: 지평이 바운드 뒤 남은 시간을 넘으면 절벽. 두 단계 결정 자체는 미실측 |
| 3 | 120–240 fps 카메라로 궤적에서 회전 적합. 회전 센서 없이 얻는 기준선입니다. | 5 | DM1: 지평 150 ms 까지 참 회전과 같음 |
| 4 | 회전·속도에 따라 변하는 공 물리와 접촉 모델 식별. | 4, 5 | DM1 의 「참 회전 96.2%」, 2편의 마그누스 4.2배, DM3 |
| 5 | 타격 순간을 최적화로 풀고 강화학습은 잔차로만. | 1, 8 | 5편의 고전 기준선이 출발점 |
1번은 TT Lab 이 점수판 인식에서 추구하는 공·소리·자세 다중 신호 인식과 바로 이어집니다. 「공이 날기 전에 회전 종류를 안다」가 로봇 성능으로 이어지는 고리라서, 가장 먼저 재현해 볼 방향입니다.
8. 공개된 것과 공개되지 않은 것
- 공개 저장소는
google-deepmind/competitive_robot_table_tennis하나이고, 2025-04-26 이후 보관(archived) 상태입니다. 코드는 Apache-2.0, 데이터는 CC BY 4.0 입니다. - 들어 있는 것은 공 초기 상태(랠리 13,088개, 서브 2,704개)와 MuJoCo 공·탁자 노트북뿐입니다. 정책 가중치와 학습 코드는 없습니다. 로봇·갠트리·라켓 모델도 없습니다.
- 그래서 「DeepMind 로봇을 그대로 돌려 보는」 재현은 할 수 없고, 이 글처럼 공 분포와 물리 설정을 빌려 와 부분을 재는 방식이 현실적입니다.
9. 한계
- 반환률은 모두 MuJoCo 를 진실로 둔 시뮬레이터 안의 비교입니다. 실제 로봇의 반환률을 예측하지 않습니다.
- 관측 잡음 σ 3 mm, 라켓 고무(e 0.85, μ 0.6), 타격 허용 반경 6 cm, 바운드 구간을 안다는 가정, 지평 150·300 ms 는 모두 가정값입니다.
- 「종류 + 궤적」 방식에서 종류를 잘못 맞혔을 때의 영향은 재지 않았습니다.
- 추정 계산 시간(회전까지 맞추면 중앙값 77–186 ms)은 순수 파이썬을 CPU 를 나눠 쓰며 잰 값이라 실시간 예산의 근거로 쓰면 안 됩니다.
10. 다음 편으로
다음은 5편의 기준선 위에 강화학습을 얹어, 이 글의 1번 방향(회전 종류 힌트)이 학습된 정책에서도 같은 크기로 효과를 내는지 보는 것입니다(준비 중).
티티 한마디. 공이 어떤 회전인지 「종류」만 미리 알아도 10% 넘게 더 받아 낼 수 있었어요. 상대의 자세와 타구음을 듣는 눈과 귀가 로봇의 손을 도와줄 수 있다는 뜻이에요!
참고
모든 링크는 2026-10-18 에 열람해 열리는 것을 확인했습니다.
- DeepMind, Achieving Human Level Competitive Robot Table Tennis(ICRA 2025), arXiv HTML 판 v3: https://arxiv.org/html/2408.03906v3
- 공개 저장소(보관 상태): https://github.com/google-deepmind/competitive_robot_table_tennis(코드 Apache-2.0, 초기 공 상태 © 2025 Google LLC, CC BY 4.0. 데이터는 다시 배포하지 않고 시뮬레이션 결과만 실었습니다.)
- DeepMind, Robotic Table Tennis: A Case Study into a High Speed Learning System(RSS 2023): https://arxiv.org/abs/2309.03315
- MuJoCo: https://github.com/google-deepmind/mujoco