概要
アーム3+手首3軸垂直多関節ロボットアームを制作した。その制御を行う。
まず、xz平面においてアーム部の2軸制御のみを行う(なので制御は比較的平易)。
計算
\displaylines{
\begin{align}
&R_1=\sqrt{x_e^2+z_e^2},\ R_2=\sqrt{L_1^2+l^2}\\
&\phi_1=\arctan2(L_1,l),\ \phi_2=\arccos(\frac{L_2^2+R_2^2-R_1^2}{2L_2R_2})\\
&\theta_3=\pi-\phi_1-\phi_2\\
&\phi_3=\arctan2(z_e,x_e),\ \phi_4=\arccos(\frac{R_1^2+R_2^2-L_2^2}{2R_1R_2}),\ \phi_5=\arctan2(l,L_1)\ (=\frac{\pi}{2}-\phi_1)\\
&\theta_2=\frac{\pi}{2}-(\phi_3+\phi_4+\phi_5)\ (=\phi_1-\phi_3-\phi_4)
\end{align}
}
上図で、求めたい角$\theta_{2,3}$は上記の式で求められる。
0除算防止や角度制限は別途かける必要がある。
シミュレーション
pythonを用いてシミュレーションを行った。
先述の式で求めたphi1~5を用いて、腕L1,l,L2の端点座標は簡単に求められる。
実機動作
実際に制作したロボットアームを制御する。
制御系は上図のように実装した。
描画付き計算・通信コード(未掲載)
padSerial.py
#清書してから
— 6186milktea (@6186milktea) June 21, 2025
動作の様子。
次
3軸もしくは手首制御
(あくまで人間が手動操作しやすくすることを目的としているため満足すればここで終わり)
余談
当初、腕L1の垂直オフセット成分、lを考慮していなかったが、この場合実機でシミュレーション上の動きと著しく乖離した動きを見せた。全体に対して十分短いと考えていたため、簡単のために無視していたのだが案外影響が大きかった。
ログ
2025-06-21 試動作成功
2025-06-23 記事ほぼ完成
2025-06-24 記事投稿