状態:草案(2026-10-18)、実測。 数値はノートパソコン(Apple M1 Max、macOS 26.5)上のPython 3.9.6・numpy 2.0.2を用いて直接計算しました。 元データとコード:作業ディレクトリ
measure/robot-arm-basics/のarm.py,m05_speed.py,out/m05_speed.json(必要な速度は第7部のout/m07_hit.json)。 関節速度の限界は仮定値であり、実際のモーターで測定した値ではありません(ハードウェア未計測)。参考資料は2026-10-18に閲覧しました。 作成ルール:実測データを基本とし、測定できなかったものは「未計測」、確認できなかったものは「未確認」と表記します。
目次
1. 直感:テコの長さ
同じ角速度でスイングしても、長い棒の端は短い棒の端よりも速くなります。肩を1 rad/sで回転させると、0.75 m離れた手首は0.75 m/sで、0.4 m離れた ひじは0.4 m/sで移動します。関節が複数ある場合、各関節が作り出す速度をベクトルとして足し合わせます。この「関節速度 → ラケット速度」の変換表がヤコビアン(Jacobian) です。関節の角度によってテコの長さと方向が変わるため、ヤコビアンも姿勢ごとに異なります。
モーターを選定する際に真っ先に思い浮かぶ疑問がここにあります。 関節は何 rad/s を出せば、ラケットがボールを打ち返せるほど速くなるのか?
2. 計算
2.1 幾何学的ヤコビアン
回転関節 i の軸が単位ベクトル z_i であり、軸上の1点が o_i であるとき、その関節のみが 1 rad/s で回転すると、ラケットの中心 p は z_i × (p − o_i) の速度で移動し、 ラケットは z_i を中心に 1 rad/s で回転します。これを列として積み上げた 6×6 の行列が幾何学的ヤコビアンです。
def jacobian(q):
Ts = frames_dh(q) # 바닥, 관절 1..6 의 좌표계(3편)
pe = Ts[6][:3, 3] # 라켓 중심
J = np.zeros((6, 6))
for i in range(6):
z, o = Ts[i][:3, 2], Ts[i][:3, 3]
J[:3, i] = np.cross(z, pe - o) # 선속도 부분 J_v
J[3:, i] = z # 각속도 부분 J_w
return J
ラケット中心の速度は v = J_v q̇、ラケットの角速度は ω = J_w q̇ です。ラケット面の別の点(中心から r 離れた点)は v + ω × r で移動するため、ボールが面の 端に当たると、中心速度とは異なる速度を受けます。
2.2 速度限界内での最大速度
関節ごとに |q̇_i| ≤ q̇max_i という限界があります。ラケットを単位方向 d に最も速く動かすには、dᵀ J_v q̇ を最大化する q̇ を選べばよいのです。 目的関数が線形で、許容範囲がボックス(box)であるため、最大値はボックスの頂点において得られ、関節ごとに符号を合わせるだけで済みます。
v_max(d) = Σ_i |dᵀ J_v,i| · q̇max_i (J_v,i 는 J_v 의 i 번째 열)
この式は線形計画法を解く必要のない閉じた式です。コードでは、6軸の頂点 2⁶ = 64個をすべて代入し、同じ値が得られることを検算しました(第4節)。
注意すべき点が1つあります。この最大値は ラケットの角速度を自由に設定できる場合の値です。上の式の q̇ は手首も含めてすべて最大速度で回転するため、ラケット面も 高速で回転します。打撃の瞬間にラケット面の方向が固定されている必要がある場合(第7部)、その分だけ不利になります。以下では、両方のケースをあわせて測定します。
2.3 可操作性と特異点
可操作性(manipulability) w = √det(J Jᵀ) は、ラケットをあらゆる方向に均等に動かすことができる度合いです。2リンクの平面アームでは w = L1·L2·|sin q2| となるため、 ひじを直角に曲げたときに最も大きくなり、腕をまっすぐ伸ばすか完全に折りたたむと 0 になります。第4部の特異点こそがまさにこの 0 です。まっすぐ伸ばした腕は、腕の長さの方向に ラケットをこれ以上押し出すことができません。
| ひじの角度 q2 | 0° | 30° | 60° | 90° | 120° | 150° |
|---|---|---|---|---|---|---|
| w = L1·L2·|sin q2| | 0 | 0.070 | 0.121 | 0.140 | 0.121 | 0.070 |
| 肩から先端までの距離(m) | 0.75 | 0.72 | 0.65 | 0.53 | 0.38 | 0.20 |
ボールを強く打つためには腕を伸ばしてテコを長くする必要がありますが、完全に伸ばしきると特異点になります。人間が腕を「ほぼ」伸ばして打つ理由と同じ、このようなトレードオフの関係が存在します。
3. 図:関節速度の限界とラケット速度
4. 実測
4.1 打撃姿勢と測定方法
アームの底面を基準として +x を相手側(卓球台の方向)に設定します。ラケットの中心を x が 0.40〜0.65 m、y が −0.35〜0.35 m、z が 0.0〜0.35 m のボックスからランダムにサンプリングし、ラケットの法線を +x から上向きに 0〜20°、横向きに ±20° 傾けました。400個の姿勢を第4部の解析解で解き、8個の解のうちすべての関節が ±170° の範囲内に収まる解をすべて使用しました。 このようにして得られた関節の姿勢は 2,134個です。64個の頂点の総当たり検算と閉じた式の差は、最大で 3.6×10⁻¹⁵ m/s でした。
4.2 関節速度の限界ごとの最大ラケット速度
| 関節速度の限界(rad/s) | +x 方向 5% / 中央値 / 95%(m/s) | ラケット法線方向の中央値(m/s) |
|---|---|---|
| すべて 5 | 2.1 / 2.8 / 3.7 | 2.8 |
| すべて 10 | 4.3 / 5.7 / 7.5 | 5.7 |
| すべて 20 | 8.5 / 11.3 / 15.0 | 11.4 |
| すべて 30 | 12.8 / 17.0 / 22.5 | 17.1 |
| 肩・ひじ 8、手首 20 | 3.8 / 5.1 / 6.7 | 4.6 |
同じ限界であっても、姿勢によって第5パーセンタイルと第95パーセンタイルに1.7倍の差が生じます。腕をほぼ伸ばした姿勢では速く、腕を折りたたんだ姿勢では遅くなります。したがって、 「どこで打つか」を決定する際には、その姿勢で発揮できる速度も一緒に考慮しなければならない のです。第7部の打撃決定において、この表が制約条件として使用されます。
最後の行は、減速比の大きい肩・ひじと、軽量な手首を組み合わせた構成です。手首をどれほど高速に動かしても、テコ(d6 = 0.15 m)が短いためメリットが少なく、 結局のところ肩・ひじの速度がラケットの速度を決定づけます。
4.3 逆に:5 m/sを出すには関節が何 rad/s でなければならないか
ラケットの中心を +x 方向に 5 m/s で移動させるのに必要な関節速度を擬似逆行列を用いて求め、6つの関節の中で最も速い関節の速度を記録しました。
| 条件 | 5% | 中央値 | 95% |
|---|---|---|---|
| ラケット面が回転しないようにする(角速度 0) | 10.7 | 14.1 | 18.0 rad/s |
| ラケット面の回転を自由にする(位置速度のみを合わせる) | 11.9 | 14.7 | 17.8 rad/s |
回転の制約を解除すれば必要な速度が減ると予想していましたが、むしろ中央値がわずかに増加しました。擬似逆行列は関節速度の 二乗和を最小化する解を与えるものであり、 最も速い関節の速度を最小化する解を与えるわけではないためです。関節の限界が問題である場合は、最大値ノルムを最小化する線形計画問題として解く必要があります (未計測)。位置に関するヤコビアン J_v の最小特異値は、姿勢の中央値で 0.26 m/rad でした。「最も動きの鈍い方向に対しては、関節の 1 rad/s がラケットの 0.26 m/s に相当する」という意味になります。
4.4 必要な速度との比較
第7部では、実際の打球200個を受け止め、目標点(相手側の x = 0.3、y = 0.9 m)に定められた飛行時間で打ち返すためのラケット速度を計算しました。その結果をあらかじめ持ってきます。
| 打ち返す際の飛行時間 | 打ち出されるボールの速度の中央値 | 必要なラケット法線速度 5% / 中央値 / 95% |
|---|---|---|
| 0.80 s(遅い返球) | 5.5 m/s | 1.4 / 1.9 / 2.1 m/s |
| 0.60 s | 5.7 m/s | 1.5 / 2.0 / 2.2 m/s |
| 0.45 s | 6.9 m/s | 2.1 / 2.6 / 2.9 m/s |
| 0.35 s(速い返球) | 8.7 m/s | 3.1 / 3.6 / 4.0 m/s |
ボールはラケットで跳ね返るため、ラケットはボールよりもはるかに遅くて構いません(反発係数 0.8 と仮定)。 すべての関節が 10 rad/s であれば、速い返球までも大部分の姿勢で可能であり、 5 rad/s であれば遅い返球のみが可能となります。
人間と比較するとその差は大きいです。Bańkosz・Winiarski(2018)は、ポーランドのエリート女子ジュニア選手10名を120 Hzのモーションキャプチャで測定し、フォアハンドトップスピンのボール接触 瞬間のラケット速度が平均して 13.0〜14.6 m/s であったと報告しています。人間はボールを単に「打ち返す」のではなく、 回転をかけて強く打つ ためにその速度を使用します。 このサンプルアームでそのレベルに到達するには、中央値基準ですべての関節が 25 rad/s 前後である必要があります(20 rad/s の場合の 11.3 m/s と 30 rad/s の場合の 17.0 m/s の間)。
4.5 ガントリー + 手首
2軸ガントリー上の手首は計算がさらにシンプルです。ラケットの速度は、ベルト軸の線速度に、手首の角速度 × 手首からラケットまでの距離を足したものが最大となります。
| ベルト軸(m/s) | 手首(rad/s) | 手首〜ラケット 0.15 m | 0.25 m |
|---|---|---|---|
| 1 | 20 | 4.0 | 6.0 |
| 2 | 20 | 5.0 | 7.0 |
| 3 | 20 | 6.0 | 8.0 |
| 5 | 20 | 8.0 | 10.0 |
この表は足し算であるため、実測値というよりは計算値です。参考として、Google の 2023年のシステムでは、ガントリーの最大速度が 2 m/s と記載されていました(arXiv:2309.03315 の II-A 節)。 ガントリーは姿勢に関わらず同じ速度を発揮しますが、ベルト軸は大きな質量を動かすため、加速度の限界が別途かかります(第8部)。
5. 限界
- 速度の限界のみに着目しました。実際には、加速度やトルクの限界が先にボトルネックとなることが多く、スイングする前にその速度まで加速するための距離と時間が必要となります(第8部)。
- モーターの速度限界は電源電圧と逆起電力によって決定され、トルクが大きくなるほど減少します(トルク-スピード曲線)。本記事では定数の限界として単純化しています。
- ラケット法線方向の最大値(表の右側の列)も、ラケット面の回転を自由に設定した場合の値です。
6. まとめ
- ヤコビアンは姿勢ごとに異なる「関節速度 → ラケット速度」の変換表です。1つの列が1つの関節の寄与を表します。
- 関節速度の限界内における最大ラケット速度は、Σ |dᵀ J_v,i| q̇max_i という閉じた式で表されます。
- サンプルアームにおいて、関節速度 10 rad/s はラケット速度約 5.7 m/s、20 rad/s は約 11.3 m/s に相当します。ボールを打ち返すだけであれば 10 rad/s で十分ですが、人間のように強く打つためには 25 rad/s 前後が必要となります。
- 同じ限界であっても姿勢によって1.7倍の差が生じるため、打つ場所を選ぶことと速度計画を切り離して考えることはできません。
卓球のワンポイントアドバイス。 関節が 10 rad/s 回転するだけでもボールは打ち返すことができますよ!しかし、選手のように 14 m/s でスイングするには2、3倍の速さが必要になるため、最初に作るロボットは「打ち返し」を目標に設定しましょう!
参考文献
すべての資料は2026-10-18に閲覧しました。
- Lynch, Park, Modern Robotics, 2017, 公開プレプリント、第5章(5.1 ヤコビアン、5.3 特異点、5.4 可操作性)。
- Bańkosz, Winiarski, Correlations between Angular Velocities in Selected Joints and Velocity of Table Tennis Racket during Topspin Forehand and Backhand, J. Sports Sci. Med. 17 (2018) 330–338, 原文、表 1。
- D'Ambrosio 他、Robotic Table Tennis: A Case Study into a High Speed Learning System、 arXiv:2309.03315、II-A 節。