三角関数の微分と積分 ==================== S字加減速​ -------------------- モーターを滑らかに加速と減速をすることをS字加減速​と言います。​ | 急に加減速をすると、大きな電流が流れて過電流になる危険があるので | 滑らかな加減速は重要です。 S字加減速​には一般に三角関数を使います。 まず、距離や速度の関係をまとめます。 .. image:: ../img/math/dist.png ---- 距離の微分が速度です。​ .. image:: ../img/math/vel.png | 加減速時間を :math:`t_1` 、等速時間を :math:`t_2` とします。 | 加速中の移動距離を :math:`S_1` 、等速での移動距離を :math:`S_2` とします。 | 最高時速を :math:`v_{max}` とします。 ---- .. image:: ../img/math/acc.png 速度の微分が加速度です。​ ---- .. image:: ../img/math/jerk.png 加速度の微分を躍度と言います。​ 躍度 :math:`\mathrm{jerk}` を以下の式で定義します。 .. math:: \begin{eqnarray} \mathrm{jerk}(t) = \begin{cases} A \ \sin(\omega t) & ( \boldsymbol{加速中} ) \\ 0 & ( \boldsymbol{等速中} ) \\ - A \ \sin(\omega t) & ( \boldsymbol{減速中} ) \end{cases} \end{eqnarray} 以下では証明は省略して結果だけを書きます。 加速度 :math:`\mathrm{acc}` .. math:: \mathrm{acc}(t) = \frac{A}{\omega} \ (1 - \cos(\omega t)) 速度 :math:`\mathrm{vel}` .. math:: \mathrm{vel}(t) = \frac{A}{\omega} \ (t - \frac{\sin(\omega t)}{\omega}) 距離 :math:`S` .. math:: S(t) = \frac{A}{\omega}( \frac{1}{2} t^2 + \frac{\cos(\omega t) - 1}{\omega^2} ) 躍度の定義式の中のω .. math:: \omega = \frac{2 \pi}{t_1} 躍度の定義式の中のA .. math:: A = \frac{v_{max} \ \omega^2}{2 \ \pi} 加速中の移動距離 :math:`S_1` .. math:: S_1 = \frac{v_{max} \ t_{1} }{2} 上の :math:`S_1` の式はとても重要です。 実際にロボットアームを制御するときは、最高速度 :math:`v_{max}` と加速時間 :math:`t_{1}` を調節して、指定した距離を移動します。