状態:草案(2026-10-18)、実測。 数値はノートPC(Apple M1 Max、macOS 26.5)の Python 3.9.6・numpy 2.0.2 で直接計算しました。 原データとコード:作業ディレクトリ
measure/robot-arm-basics/のm08_traj.py,out/m08_traj.json。関節の速度・加速度制限と慣性は仮定値であり、実際のモーターで測定した値ではありません(ハードウェア未測定)。参考文献は 2026-10-18 に閲覧しました。 作成規則:実測データが基本であり、測定できなかったものは「未測定」、確認できなかったものは「未確認」と表示します。
目次
1. 直感:運転と同じ
信号機から次の信号機まで行く方法は複数あります。アクセルペダルを最後まで踏み込んで最後に急ブレーキをかけると最も早く到着しますが、乗客が前に傾きます。 ゆっくり踏んでゆっくり離すと快適ですが、少し遅れます。ロボットの関節も同じです。同じ距離を同じ時間で移動する場合でも、速度の形状によってモーターが出さなければならない最高速度とトルク、そしてアームが受ける衝撃が異なります。
卓球ロボットの軌跡には、もう一つの特別な要求があります。 停止した位置に到着するのではなく、決められた時刻に決められた速度で通過しなければならない 点です。第7部で定めたラケット速度を打撃の瞬間に発揮しなければならないためです。
2. グラフ:速度の形状
3. 計算
3.1 多項式の時間スケーリング
一つの関節が q0 から q1 まで時間 T で移動するとき、τ = t/T を用いて q(t) = q0 + (q1 − q0)·s(τ) と表します。s は 0 から 1 へ向かう関数です。
3차: s = 3τ² − 2τ³ 끝점 조건: 위치·속도 (4개)
5차: s = 10τ³ − 15τ⁴ + 6τ⁵ 끝점 조건: 위치·속도·가속도 (6개)
Modern Robotics のセクション 9.2.2.1 では、3次の最高速度が (3/2)·Δ/T(中央で)、最高加速度が 6·Δ/T²(両端で)であると記載しています。3次は出発瞬間の加速度が 0 から 6Δ/T² へ急激に変化するため、ジャック(jerk、加速度の変化率)がその瞬間に無限大になり、同じセクションではこれが振動を引き起こす可能性があると説明しています。5次は終端加速度まで 0 に合わせることでこの問題を解消します。5次の最高速度 15/8·Δ/T と最高加速度 10/√3·Δ/T² は本文ではなく練習問題として残されているため直接計算し、第4節で数値として確認します。
3.2 最小ジャックと最小加速度
5次多項式には別名があります。静止状態から静止状態へ向かうすべての滑らかな軌跡の中で、 ジャックの2乗の積分を最小にする軌跡です。変分法で見ると ∫(q⃛)² を最小化する関数は q⁽⁶⁾ = 0 を満たすため5次多項式になり、6つの終端条件が係数を一意に決定します(独自の導出)。Flash と Hogan(1985)は、人間の手の動きが手のジャックの2乗の金を最小化するモデルでうまく説明できると報告しました(抄録で確認、本文は未確認)。
同様の論理で 加速度の2乗の積分を最小化すると q⁽⁴⁾ = 0 となり、3次多項式が得られます。Koç ら(2018)の卓球ロボットはこの基準に基づいて関節ごとに3次多項式軌跡を最適化しました。加速度の2乗はトルクの2乗、すなわちモーターの銅損(発熱)に比例するため、エネルギー観点からの選択となります。
3.3 台形とS字カーブ、そして時間最適
速度制限 v_max と加速度制限 a_max のみが与えられている場合、最も速い運動は「最大加速 → 最高速度維持 → 最大減速」となります。速度曲線が台形になるため台形プロファイルと呼び、距離が短くて最高速度に達しない場合は三角形(バング・バング)になります。
Δ ≤ v_max²/a_max: T_opt = 2·√(Δ / a_max) (삼각형)
그 밖: T_opt = Δ / v_max + v_max / a_max (사다리꼴)
台形も加速度が階段状に変化するためジャックが無限大です。加速度の変化まで制限すると、加速区間がさらに3つに分かれた7区間のS字カーブになります(Modern Robotics セクション 9.2.2.3)。
3.4 打撃軌跡:終端速度が 0 ではない
卓球ロボットの関節軌跡は2つの区間に分かれます。
- スイング: 現在の状態(静止)から打撃時刻 T に (q_h, q̇_h, q̈ = 0) へ。打撃瞬間の加速度を 0 に設定すると、接触する短い時間の間、ラケット速度がほぼ一定になります。
- 停止(フォロースルー): その状態から再び静止へ。
5次多項式は6つの終端条件に任意の値を与えることができるため、これら2つの区間をすべて同じ関数で構成できます。6×6の線形連立方程式を1回解くだけで係数が求まり、この計算は 7.2 µs でした。Mülling ら(2013)が動的運動プリミティブ(DMP)の目標移動を5次多項式に変更し、終端の速度や加速度まで一致させたのも同じ理由です(セクション 3.2、式 8)。
def quintic_coeffs(q0, v0, a0, q1, v1, a1, T):
A = [[1, 0, 0, 0, 0, 0 ],
[0, 1, 0, 0, 0, 0 ],
[0, 0, 2, 0, 0, 0 ],
[1, T, T**2, T**3, T**4, T**5 ],
[0, 1, 2*T, 3*T**2, 4*T**3, 5*T**4 ],
[0, 0, 2, 6*T, 12*T**2, 20*T**3]]
return np.linalg.solve(A, [q0, v0, a0, q1, v1, a1]) # q(t) = Σ c_k t^k
ボールの予測が修正された場合、現在の状態(位置・速度・加速度)を新たな出発点として残りの時間に対して再計算を行えばよいのです。出発点の加速度まで滑らかにつながるため、修正時にも加速度が跳ね上がりません。
4. 実測
4.1 同じ距離、同じ時間、異なる形状
Δ = 1 rad を T = 0.3 s で移動させる4つの軌跡を 100,001 個の点でサンプリングして数値微分しました。
| 軌跡 | 最高速度 | 最高加速度 | 出発瞬間の加速度 | 最高ジャック(内部) | ∫加速度² dt |
|---|---|---|---|---|---|
| 3次 | 5.00 rad/s | 66.7 rad/s² | 66.7 | 457 rad/s³ | 444 |
| 5次(最小ジャック) | 6.25 | 64.2 | 0.01 | 2,262 | 635 |
| 台形(各1/3) | 5.00 | 50.0 | 50.0 | (階段状) | 500 |
| S字カーブ(ジャック区間 10%) | 5.00 | 71.4 | 0.03 | 2,385 | 612 |
公式の値は、3次が 5.0 および 66.7、5次が 6.25、64.15、2,222(ジャック)、台形が 5.0 および 50.0 です。数値微分の結果は公式と一致しました(5次のジャックは差分誤差により 2% 大きい)。
- 滑らかさには代償があります。 5次は出発加速度を 0 にする代わりに、最高速度が3次よりも 25% 高くなります。
- ∫加速度² は3次が最も小さくなります。 セクション 3.2 で述べたとおりです。トルクの2乗(発熱)を抑えたければ3次、振動を抑えたければ5次です。
- 慣性 0.03 kg·m² の関節に変更した場合、最高トルクは3次が 2.0、5次が 1.9、台形が 1.5、S字カーブが 2.1 N·m になります。最高トルクの観点では台形が最も小さくなります。
4.2 制限内でどれくらい速く移動できるか
関節の制限(v_max、a_max)が与えられたときの、各軌跡の最小時間を比較しました。
| 制限 | Δ | 時間最適 | 5次 | 3次 | 5次 ÷ 最適 |
|---|---|---|---|---|---|
| 20 rad/s, 300 rad/s² | 0.2 rad | 0.052 s | 0.062 s | 0.063 s | 1.20 |
| 20 rad/s, 300 rad/s² | 1.0 rad | 0.115 s | 0.139 s | 0.141 s | 1.20 |
| 20 rad/s, 300 rad/s² | 2.0 rad | 0.167 s | 0.196 s | 0.200 s | 1.18 |
| 10 rad/s, 100 rad/s² | 1.0 rad | 0.200 s | 0.240 s | 0.245 s | 1.20 |
| 10 rad/s, 100 rad/s² | 2.0 rad | 0.300 s | 0.375 s | 0.346 s | 1.25 |
5次多項式は、時間最適に比べておおむね 20% 遅くなります。加速度制限がボトルネックになる短い移動では、その比率は √(10/√3 ÷ 4) = 1.20 で一定になります(独自の計算)。第1部で時間的余裕がない高速なボールに対しては、この 20% の遅れが惜しまれます。そのため、時間最適に近い軌跡(台形・S字カーブ、あるいは制限を制約条件とした最適化)を用い、滑らかさはS字カーブのジャック制限によって確保します。
4.3 打撃軌跡の最小時間
静止状態から出発し、Δ を通過する瞬間に q̇_h に到達する軌跡を、速度制限 20 rad/s および加速度制限 300・600 rad/s² の下で最短となるように作成しました。5次は二分法を用いて最短の T を探し、時間最適は「最大加速 → (必要に応じて)最大減速で q̇_h へ」という形式から求めました。
| Δ | q̇_h | a_max | 5次 T | 時間最適 T | 停止のために余分に進む角度・時間 |
|---|---|---|---|---|---|
| 0.3 rad | 10 rad/s | 300 | 0.054 s | 0.046 s | 0.17 rad, 33 ms |
| 0.6 rad | 10 rad/s | 300 | 0.082 s | 0.068 s | 0.17 rad, 33 ms |
| 0.6 rad | 10 rad/s | 600 | 0.062 s | 0.051 s | 0.08 rad, 17 ms |
| 0.6 rad | 15 rad/s | 300 | 0.076 s | 0.064 s | 0.38 rad, 50 ms |
| 1.0 rad | 15 rad/s | 300 | 0.102 s | 0.085 s | 0.38 rad, 50 ms |
- 同じ 0.6 rad でも、 終端速度が速い軌跡(15 rad/s)の方が、遅い軌跡(10 rad/s)よりも所要時間が短くなりました。 静止状態から出発して加速し続けるだけでよいためです。逆にゆっくり通過したい場合は、途中で減速する必要があります。
- 打撃後に停止するために必要な角度 q̇_h²/(2·a_max) を作業空間内にあらかじめ残しておかなければなりません。15 rad/s の場合、これは 0.38 rad(22°)になります。関節の制限の直前で打撃を行うと、停止する場所がなくなります。
- 第1部の時間的予算と結びつけると、スイングには 0.05〜0.1 秒がかかります。加速度制限を 300 から 600 rad/s² に2倍にすると、時間は約 25% 短縮されます。第5部の速度制限とともに、 加速度制限(すなわちトルク ÷ 慣性)はモーター選定における2番目の指標となります。
4.4 経由点:停止するか、続けるか
関節が複数の経由点を通過しなければならない場合について、2つの方法を比較しました。(a) 経由点ごとに停止する5次区間、(b) 経由点で停止しない3次スプライン(両端の速度は 0)です。スプラインは、区間時間を均等に分割する方法と、移動距離の平方根に比例して分割する方法の両方を用い、制限(20 rad/s、300 rad/s²)の範囲内での最小総時間を二分法により求めました。
| 経由点(rad) | 停止する5次 | スプライン(等間隔) | スプライン(√距離に比例) |
|---|---|---|---|
| 0 → 0.3 → 0.7 → 1.0(同一方向) | 0.240 s | 0.170 s | 0.184 s |
| 0 → 0.6 → 0.2 → 1.0(折り返し) | 0.319 s | 0.357 s | 0.325 s |
一方向に進む経路では止めない方が 29% 速かったですが、方向が変わる経路ではどうせその場で速度が 0 にならなければならないため、止まる 5次の方がむしろ速くなりました。スプラインは常に速いという直感は間違っている可能性があり、 区間の時間をどう配分するかが形状と同じくらい重要です(Modern Robotics 9.3節が経由点多項式を扱っています)。
5. 限界
- 関節ごとに別々に計画しました。複数の関節を同じ時刻に合わせるには、最も遅い関節に合わせて残りを引き伸ばします(同期)。この記事では行っていません。
- 限界を定数としました。実際のトルク限界は姿勢(重力、慣性coupling)と速度(モーターのトルク-速度曲線)によって変わります。第9部で2リンクアームの逆動力学の最大トルクを測定します。
- 関節空間の軌道のみを扱いました。ラケットが空間上で直線を描くようにするタスク空間軌道は、毎瞬き逆運動学を解く必要があり、特異点を通過する可能性があります(未計測)。
6. まとめ
- 3次は出発加速度が跳ね上がり、5次(最小ジャーク)は滑らかな代わりに最高速度が 25% 高くなります。3次は ∫加速度²(熱)を、5次は ∫ジャーク²(振動)を最小化します。
- 限界の範囲内で、5次は時間最適より約 20% 遅いです。
- 卓球の関節軌道は「決められた時刻に決められた速度で通過する」 + 「止まる」の2つのパーツであり、5次多項式1つで両方を作ることができます。予測が変われば現在の状態から再び解きます。
- スイングの時間と止まる位置を決めるのは加速度の限界です。
ティティの一言。 ラケットは止まるところではなく、通過するところに向かって振るんだよ。そして打った後に止まる場所も必ず残しておかないとダメ。そうしないと腕が壁にぶつかっちゃうよ!
参考文献
すべての資料は 2026-10-18 に閲覧しました。
- Lynch, Park, Modern Robotics, 2017, 公開プレプリント, 第9章(9.2.2.1 多項式、9.2.2.2 台形、9.2.2.3 S字カーブ、9.3 経由点、9.4 時間最適).
- Flash, Hogan, The coordination of arm movements: an experimentally confirmed mathematical model, J. Neuroscience 5(7) (1985) 1688–1703, 抄録(Europe PMC).
- Koç, Maeda, Peters, Online optimal trajectory generation for robot table tennis, RAS 105 (2018), 著者公開版.
- Mülling 他, Learning to select and generalize striking movements in robot table tennis, IJRR 32(3) (2013), 著者公開版, 3.2節.