detamamoruのブログ

興味を持ったことや勉強したことに関して記事を書きます。主に低レイヤー寄りの記事を公開。

初めてのロボットアーム作りに挑戦!1: 1リンクの運動学

出田守です。
アイアンマンを観て、ロボットアームが欲しくなりました。
勉強しながら、初めてのロボットアーム作りに挑戦します。

今回の目標

1リンクにおける運動学を理解する。

運動学(Kinematics)

運動学とは、マニピュレータやリンクの状態(角度や長さなど)と手先状態(位置と姿勢)の関係を図形的に理解することです。

f:id:detamamoru:20200916132836j:plain
1リンクの角度と位置

運動学は、順運動学と逆運動学の2つに分類できます。

順運動学(Forward Kinematics)

順運動学は、マニピュレータの変位(直動関節の場合は長さ l、回転関節の場合は角度 θ)から、手先位置や姿勢を求めます。
以下は回転関節で、順運動学を計算する式です。


\begin{aligned}
x &= Lcos\theta \\
y &= Lsin\theta \\
\end{aligned}

逆運動学(Inverse Kinematics)

逆運動学は、順運動学とは逆に手先位置から変位を求めます。
以下は回転関節で手先位置 x,yが与えられている場合の逆運動学を計算する式です。


\theta = tan^{-1}(\frac{y}{x})
今回はリンクが1つしかないので簡単に求められますが、リンクが増えていくにつれて逆運動学の式がめちゃくちゃ複雑になっていくらしいです。

前回のAndroidアプリに順運動学を用いた手先位置表示を追加しました。
github.com

次回は2リンクアームを製作します。