3次関数を用いた目標値の生成
はじめに
ここでは図1のような3次関数を用いた目標値の生成方法を紹介します。
3次関数の導出
以下の3つのパラメータを決定した時にS字を描いて目標値へ変化する3次関数を求めてみます。
- 初期値:
- 目標値:
- 目標値に到達するまでの時間:
まず3次関数を一般式で書くと以下のようになります。
係数が4つあるので条件式も4つあれば3次関数を一意に決定することが出来ます。まず、初期値からということが分かります。同様に目標値からもが成り立ちます。
また、図1を見るととで平らになっているので、これはつまり微分した値が0ということを表しています。言い換えると極小値と極大値というわけです。極大・極小をとるところでは導関数は0になるのでとの2つの式も成り立ちます。
これで条件式が4つになったので係数を求めることができます。導関数、つまりはを微分したは以下のようになります。
まず、という条件から係数が得られます。
同様にという条件から係数が得られます。
また、という条件と係数から係数を係数を使って表現できます。
求めた係数、、とという条件から係数が得られます。
最後に求めた係数を係数の式に代入することですべての係数を、、で表現することができます。
なお、3次関数の導出方法に関しては以下のサイトを参考にさせていただきました。
使用例
実際にパラメータから3次関数を求めて描画したグラフを図2~4に示します。
- の場合
- の場合
- の場合
おわりに
S字を作る方法はこれ以外にもたくさんあります。「補間関数」とか「軌道生成」辺りで検索すると色々出て来ます。
今までは目標値の与え方といえばステップ入力とかランプ入程度しか扱ったことなかったけど、いつかこういうのも必要になる日が来るかもしれないということで自分用のメモとしてまとめました。