用語集 · ロボティクスと制御

単調3次スプライン

別名:Monotone cubic spline、PCHIP、Fritsch–Carlson interpolation、cubic Hermite spline、spline、スプライン、3次エルミートスプライン、単調補間

点の集まりを通る滑らかな曲線で、点を行き過ぎることがありません。点が上がるところでは上がり、平らなところでは平らなままです。

スプラインとは、多項式の断片を滑らかにつないだ曲線です。3次スプラインは、隣り合う2点の間ごとに3次多項式を使います。tkt_k から tk+1t_{k+1} までの各区間で、s=(t−tk)/hs = (t - t_k)/h、h=tk+1−tkh = t_{k+1} - t_k とすると、3次エルミートの断片は、両端の値 yk,yk+1y_k, y_{k+1} とそこでの傾き mk,mk+1m_k, m_{k+1} で決まります。

p(s)=(2s3−3s2+1) yk+(s3−2s2+s) h mk+(−2s3+3s2) yk+1+(s3−s2) h mk+1p(s) = (2s^3 - 3s^2 + 1)\,y_k + (s^3 - 2s^2 + s)\,h\,m_k + (-2s^3 + 3s^2)\,y_{k+1} + (s^3 - s^2)\,h\,m_{k+1}

行き過ぎの問題

標準的な滑らかな3次スプラインは、曲線ができるだけ滑らかになるように傾きを選びます。そのため急な変化の近くではオーバーシュートします。データを通り越してから戻ってくるのです。動きの場合、これは目に見え、害にもなりえます。床の高さで止まるはずの足が床の下に沈んだり、関節が一瞬だけ限界を超えたりします。

単調にする解決策

Fritsch と Carlson(1980)は、データが単調なところでは曲線も単調になるように傾き mkm_k を選びます。点が上がるだけなら曲線も上がるだけで、隣り合う2点が等しければ、曲線はその間で平らなままです。傾きは隣どうしの割線の傾き Δk=(yk+1−yk)/h\Delta_k = (y_{k+1} - y_k)/h から取り、山と谷ではゼロにします。これはよくPCHIP(piecewise cubic Hermite interpolating polynomial、区分的3次エルミート補間多項式)と呼ばれます。

代償は滑らかさが少し落ちることで、2階微分が点のところで跳ぶことがあります。キーフレームで作った動きなら、これは良い取引です。

このプロジェクトでは

回復動作のキーフレームは単調3次スプラインでつないでいるので、地面についたままでいるべき足や、下ろしたままでいるべきかかとが、キーの間でずれていきません。

関連用語

この用語が出てくる記事

← すべての用語