TT Lab
ブログ

한국어 English 日本語 中文

はじめる
ブログ

ブログ

卓球ロボットはオープンハードウェアで作れるか:レール、スイング軸、カメラ、そしてライセンス

ステータス:ドラフト(2026-10-18)、計算と調査。 ハードウェアはまだ購入も製作もしていません。この記事の数値は次の3種類です。 計算は自前のスクリプト(flight_window.py, axis_budget.py)で直接算出した値であり、入力はDeepMindが公開したデータの初期ボール状態です。 物理はMuJoCoではなく簡易モデル(抗力、マグナス効果、反発係数の境界)であり、係数を2パターン(A:マグナス効果あり、B:なし)で回して範囲として記載しました。 調査は2026-10-18時点の公式販売元と論文・リポジトリを開いて確認した値であり、価格はその日公式販売元に表示されていた値です。 推定は根拠はあるものの確認できなかった値であり、その旨を表示しています。 元データは作業ディレクトリ tt-robot/hardware.md と tt-robot/hw/ にあります。

目次

1. 直感:待ち受ける軸と打つ軸は役割が違う

卓球選手の体を二つに分けて見るとこうなります。足はボールが来る位置へ あらかじめ移動して待ち、腕はボールが来たときに 短く素早く振ります。 足が多少遅くても早く出発すれば間に合います。腕は瞬間的な速度が必要ですが、動く距離は短いです。

ロボットも同様です。卓の幅をカバーする 位置軸は早めに出発することが重要であり、ラケットの速度を生み出す スイング軸は瞬間的な加速が重要です。 1つの腕で両方の役割をこなそうとすると、高価で重くなります。この記事では、役割を分ければどれほど安くシンプルになるかを数値で検証します。

2. ボールがもたらす時間:相手が打ってから1秒以内の出来事

DeepMindデータの初期ボール状態(ラリー13,088件、サーブ2,704件)のうち、ロボット側に向かってくるボール14,703個を簡易物理演算で飛ばしました。 ロボット側の卓で一度バウンドするボールは、係数Aで11,723個、係数Bで10,431個でした(サーブは最初のバウンドが相手側にあるため大半が除外されます)。

상대가 친 뒤 1초 안에 일어나는 일 막대는 공의 5–95% 범위, 굵은 눈금은 중앙값(계수 A, 간이 물리). 내 쪽 첫 바운드: 0.32–0.62 s, 중앙 0.45 s 타격면(y = −1.6 m) 도착: 0.54–1.00 s, 중앙 0.73 s 결정 시각 0.2 s 카메라 버퍼 3–4 프레임이 만드는 지연 30 fps: 100–133 ms 200 fps: 15–20 ms 0.0 0.2 0.4 0.6 0.8 1.0
図:相手が打ってからの最初のバウンド、打撃面到達時刻とカメラのバッファ遅延
項目(5 / 50 / 95パーセンタイル) 係数A 係数B
相手の打撃から自側の最初のバウンドまで 0.317 / 0.450 / 0.621 s 0.323 / 0.462 / 0.629 s
頂点の高さ(卓の上) 0.214 / 0.309 / 0.457 m 0.234 / 0.337 / 0.498 m
打撃面(エンドラインの23 cm後ろ、y = −1.6 m)への到達 0.537 / 0.726 / 1.003 s 0.528 / 0.721 / 1.011 s
打撃面でのボールの速さ 2.15 / 2.86 / 3.83 m/s 2.09 / 2.84 / 3.93 m/s

ボールは思ったよりもゆっくり到着します。バウンドと空気抵抗が速度を削るためです。一方でショートボールが多く、打撃面を後ろに下げるほど、2回目のバウンド前に打てるボールが減ります。

打撃面 打てるボール(係数A) (係数B)
エンドライン y = −1.37 m 89.7% 93.0%
y = −1.6 m 76.8% 85.6%
y = −1.9 m 49.1% 68.6%

3. 位置軸は思ったより遅くてもよい

各ボールに対し、ロボットがホームポジション(x = 0、高さ0.25 m)から出発し、「決定時刻」以降にのみ動き出し、各軸が台形速度プロファイルに従って移動すると仮定しました。 ラケットの半径7.5 cm分は少なく移動しても当たると見なしました。決定時刻は、カメラの遅延と予測が確定する時間を合わせた値です。

軸仕様(最高速度・加速度) 決定 0.1 s 決定 0.2 s 決定 0.3 s
1.5 m/s・10 m/s² 92.0–92.5% 81.0–82.3% 65.4–67.0%
2 m/s・20 m/s² 99.0–99.2% 95.3–95.6% 85.0–86.0%
3 m/s・20 m/s² 99.8–99.9% 97.7–98.3% 89.3–89.9%
3 m/s・40 m/s² 100% 99.5–99.7% 96.2–96.9%
5 m/s・40 m/s² 100% 99.8% 97.7–98.3%

(範囲は係数BとAの値です。打撃面 y = −1.6 m に到達するボールA 9,025個、B 8,930個を基準とし、水平と高さの2軸がともに間に合う場合を成功としてカウントします。)

결정이 늦을수록 가로 축이 빨라야 합니다 제때 닿는 공의 비율(%), 계수 A(마그누스 있음) 기준 60 70 80 90 100 0.1 s 0.2 s 0.3 s 결정 시각(상대가 친 뒤) 1.5 m/s·10 m/s² 2 m/s·20 m/s² 3 m/s·20 m/s² 3 m/s·40 m/s² 5 m/s·40 m/s² 3 m/s·40 m/s², 0.2 s: 99.7% 계수 B(마그누스 없음)와의 차이는 모든 칸에서 1.6%p 이하입니다.
図:決定時刻と軸の仕様に応じた到達割合

決定が0.1 s遅れるごとに、同じ割合を維持するために必要な軸の仕様が大きく跳ね上がります。決定 0.2 sにおいて、ボールの半分は水平軸が3.7 m/s²だけでも済みますが、 95%をカバーするには14.4 m/s²、その時の最高速度2.92 m/sが必要でした(係数A)。 カメラの遅延を減らすことにお金をかける方が、モーターを大きくするよりも安上がりです。

下の図は、同じ計算を5つのボールでシミュレーションしたものです。図をクリックすると、ボールが飛んでくる間に2つの仕様のキャリッジが0.2 sに出発して打撃位置に向かいます。

레일 위 캐리지가 공을 기다리러 가는 시간 위에서 본 탁자. 공 5개를 차례로 보냅니다(3배 느리게). ▶ 누르면 재생 네트 타격면 y = −1.6 m 의 가로 레일 상대 쪽 1 2 3 4 5 공을 기다리는 가로 축 3 m/s·40 m/s² 1.5 m/s·10 m/s² 라켓 반지름 7.5 cm 두 축 모두 상대가 친 뒤 0.2 s(결정 시각)에 출발합니다. 공 1/5타격면 도착 0.89 s가로 위치 +0.13 m3 m/s: 0.27 s 제때1.5 m/s: 0.34 s 제때 공 2/5타격면 도착 0.70 s가로 위치 -0.38 m3 m/s: 0.38 s 제때1.5 m/s: 0.55 s 제때 공 3/5타격면 도착 0.96 s가로 위치 +0.58 m3 m/s: 0.44 s 제때1.5 m/s: 0.68 s 제때 공 4/5타격면 도착 0.74 s가로 위치 -0.74 m3 m/s: 0.50 s 제때1.5 m/s: 0.79 s 늦음 공 5/5타격면 도착 0.81 s가로 위치 +0.90 m3 m/s: 0.55 s 제때1.5 m/s: 0.90 s 늦음 공의 길은 DeepMind 공개 초기 상태(CC BY 4.0)를 간이 물리로 날린 계산입니다. × 는 첫 바운드. 가로 축만 그렸고 높이 축은 생략했습니다.
図:レール上の2つの仕様のキャリッジが5つのボールを待ち受ける動き

図の5つのボールは、seed 0で抽出した600個を同じ簡易物理で飛ばし、水平位置が均等に分散するように選んだものです。最も端の2つのボール(水平方向 −0.74 m、+0.90 m)に対し、 1.5 m/s・10 m/s²のキャリッジは0.79 s、0.90 sに到着してボール(0.74 s、0.81 s)より遅れ、3 m/s・40 m/s²のキャリッジは0.50 s、0.55 sに到着しました。 図用として計算を標準ライブラリに移行しましたが、600個のサンプルの到達割合(決定 0.2 sで82.7%、95.2%、99.2%)は元の計算と1%pの誤差以内で一致しました。図は水平軸のみを描画しています。

4. 打つ軸:低価格なオープンソースアームはなぜ遅いのか

ラケット法線方向の1次元衝突として考えると、ボールの出射速度は v_out = e·v_in + (1+e)·v_r です。入ってくるボールの中央値を2.8 m/sとし、 ラケットの反発係数eを0.6~0.85と仮定した場合(推定)、必要なラケット速度は次のようになります。

目標のボール速度 e = 0.85 e = 0.6
5 m/s(研究用空気圧アームの一般的な返球) 1.4 m/s 2.1 m/s
8 m/s 3.0 m/s 3.9 m/s
12 m/s(同アームのスマッシュ) 5.2 m/s 6.4 m/s

返球にはラケット1.5~4 m/s、スマッシュには5~7 m/sを設定しました。これをアームの先端速度に換算すると、低価格なアームでは不足します。

逆にスイング軸1つを長さ0.30 mのアームで作る場合、ラケットの1.5~7 m/sは角速度5~23 rad/s(48~220 rpm)に相当します。ブラシレスモーターを直駆動するか1:4に減速すれば容易に達成できます。

5. 構造:ベルトレール+スイング軸

軸 段階 動き モーター / コントローラー 目標
X 横レール 1 直線、ストローク 1.7~1.8 m(レール 2.2~2.4 m) ODrive D6374 150KV / moteus-n1、HTD5Mスチール芯ベルト 3 m/s、30~40 m/s²、移動質量 2 kg以下
S スイング 1 水平軸に平行な軸を中心に回転し、アーム 0.25~0.30 mが円弧を描く mjbots mj5208 / moteus r4.11、1:4 ベルト ラケット先端 1.5~7 m/s、±120°
Y 奥行き(または Z 高さ) 2 直線、ストローク 0.4~0.6 m D6374 / moteus-n1 2~3 m/s、20~30 m/s²
手首の2軸 3 ラケット面の向き mj5208 / moteus-c1 ±45–60°

第1段階のスイングアームは円弧を描くため、タイミングさえ合わせれば高さ(卓上 0.03~0.53 m)と奥行きを同時にカバーでき、ラケットの速度もこの軸が発揮します。 DeepMindロボット(6軸産業用アーム+2軸レール)から「肩の1つ」だけを残したような形です。第2段階の軸で奥行きを先に見る理由は、第2節の表にあります。打撃面を23 cm後ろに下げるだけで、打てるボールが7~13%p減少しました。

軸のサイズも計算しました(回転子の慣性は推定)。

6. moteusに統一した理由

コントローラー 連続 / ピーク電流 通信 ハードウェア / ファームウェアライセンス 価格
moteus r4.11 ファンレス 12 A、冷却時 32 A / 100 A CAN-FD Apache-2.0 / Apache-2.0 94ドル
moteus-n1 9 A、26 A / 100 A CAN-FD、RS422 Apache-2.0 / Apache-2.0 149ドル
moteus-c1 5 A、14 A / 20 A CAN-FD Apache-2.0 / Apache-2.0 69ドル
ODrive S1 / Pro 20~40 A / 80~100 A CAN 2.0B 非公開 / 非公開 149 / 229ドル
SimpleFOC Mini 最大 8 A なし MIT / MIT 12ユーロ、品切れ

7. 目:カメラのfpsと遅延

現在の卓球スコアボード機能で使用しているカメラは30 fpsです。ロボットの目としては不足しています。

カメラ センサー 最大fps インターフェース 価格
Basler dart daA720-520uc IMX287 523(720×540) USB3 245ドル
FLIR BFS-U3-04S2M-CS IMX287 522 USB3 541.50ドル
OAK-D S2(ステレオ一体型) OV9282 255(400p) USB 329ドル
Raspberry Pi Global Shutter IMX296 60 CSI 50ドル

第1段階以降は、Basler dartを2台、200–250 fpsで使用することをお勧めします。2台をハードウェアトリガーで同期できるかどうかはまだ確認できていません(未確認)。 全体の遅延(写真からモーター指令まで)の目標は50 ms以下とし、打撃時刻の誤差は±10 ms程度に設定しました(ボール 3 m/s × 10 ms = 3 cm、ラケットの半径より小さい、推定)。

8. 費用(推定含む)

区分 内容 金額
駆動(公式価格) D6374 119、moteus-n1 149、mj5208 74、moteus r4.11 94、CAN-FDアダプター 39ドル 475ドル
カメラ(公式価格) Basler dart 2台 490ドル
機構(推定) リニアレール、フレーム、ベルト・プーリー、キャリッジ・スイングアーム、ラケット 410–1,150ドル
電源・安全(推定) 36–44 V電源と回生対策、非常停止・コンタクタ・リミットスイッチ、保護ネット 300–750ドル
レンズ・ケーブル・三脚(推定) 130–300ドル
ボール発射機とボール(推定) オープンソース設計AIMY 1台、練習球100個 530–960ドル
第1段階合計 約2,300–4,100ドル
第2・3段階の追加(推定含む) 奥行き軸、手首2軸 900–1,600ドル
全体 約3,200–5,800ドル

カメラを低価格なUSB2カメラ2台に変更すると350–450ドル、発射機の代わりに人が手で投げると500–900ドル削減できます。比較として、OpenArmの両腕だけで6,500ドルです。

9. 第1段階の試作仕様

10. ライセンス:NCを付けない理由

TT Labは営利目的のないプロジェクトですが、私たちが公開する成果物には非営利条項(NC)を付けません。オープンソースハードウェア協会(OSHWA)の定義1.0は 用途による差別を禁止し(第8条)、その例としてビジネスでの使用を妨げてはならないと定めています。NCを付けるとオープンハードウェアとして認められません。 「私たちが非営利」であるという事実は、他人のNC素材を使ってもよいという意味でああり、私たちの成果物をNCでロックするという意味ではありません。

成果物 ライセンス 理由
メカCAD(編集可能なオリジナル)、回路図、PCB CERN-OHL-S-2.0 強い互恵性により、改良版も公開されるようにします。OpenArmも同じ選択をしています。
ファームウェア、制御、ビジョンコード Apache-2.0 moteusやDeepMindの公開コードと同じであり、組み合わせやすいためです。
ドキュメント、写真、測定データ CC BY-SA 4.0 ハードウェアのS(互恵性)に合わせます。

流用する素材の義務も一緒に負います。発射機AIMYのCADとコードはBSD-3(著作権表示の維持)、AIMYの回転軌跡データはDL-DE-BY-2.0(出所の表示)、 DeepMindのボール状態はCC BY 4.0(出所の表示)です。ライセンスのない公開リポジトリは、ファイルをコピーせずアイデアのみ参考にします。

この文章で使用したデータの出所表示。 第2〜3節の計算は、Google DeepMindの competitive_robot_table_tennis リポジトリに公開された初期ボール状態(rallies.json、serves.json、© 2025 Google LLC)を 入力として使用しました。このデータはCC BY 4.0、同リポジトリのコードはApache-2.0です。私たちはロボット側に向かってくるボール(vel_y < 0)のみを抽出し、簡易物理で飛ばしました。 データ自体は再配布せず、計算結果のみを掲載しています。

11. 限界

12. 次回予告

次のステップは、この構成をまずMuJoCo内に構築することです。レールとスイング軸をボールモデルに組み込み、アーム長、回転軸の高さ、第2段階の軸(奥行き対高さ)をシミュレーターで決定します。 ロボットアームの座標系や逆運動学などの基礎は、「卓球ロボットアームの基礎」シリーズ(目次)で併せて取り上げます。 シリーズの次の記事である 第4部は一時的に卓球を離れ、同じアプローチでPX4ドローンをポッドから飛ばした実験について扱います。

ティティの一言。 足は早く動き出せば遅くてもいいし、腕は短く素早く振ればいいんだよ。ロボットもそのように役割分担させれば、高価な腕を1つ使うより安く作れるよ。その代わり、目は速くなければならないね!

参考

すべてのリンクは2026-10-18にアクセスして開くことを確認しました。販売サイトの1つが自動アクセスをブロックしているため今回は再取得できず、その価格は同日の調査資料の値です。

ログインするといいねできます

コメント

まだコメントはありません。

ログインするとコメントできます