# ピッキングロボット作ります:#4 ロボットアームの可動範囲の見積もり(運動学)

前回はアクチュエータを選ぶために必要なトルクを計算しました。https://note.com/you_memolog/n/n7520a1aca177
その際にロボットアームのリンクの長さを仮定しました。

今回は仮定したリンクの長さで、ロボットアームが対象物を取ることができる(手を伸ばすことができる)範囲を計算していきます。

一般的にはDH法を使ってDHパラメータを設定し、行列演算をすることで手先の位置を求めます。
ただ、今回作ろうとしている3自由度のアームであれば、三角関数だけで求めることができます。

まずはできるだけ簡単な方法から試してみようと思っています。
そのため今回は、三角関数だけで可動範囲を求めて、Excelを使って可動範囲を視覚化してみます。

可動範囲の見積もり(2自由度)

それぞれのアクチュエータの角度から、手先の位置を求めることを運動学(もしくは順運動学)と言います。
ちなみに順運動学とは反対に、手先の位置から、それぞれのアクチュエータの角度を求めることを逆運動学と言います。

まずは簡単な例として、以下のような2自由度のアームで、XY平面の位置を考えます。

画像1

ここでジョイント1の中心を原点として、手先の位置(x,y)を求めることを考えます。

画像2

画像3

ジョイント1の回転角度は、X軸とリンク1のなす角になります。
ジョイント2の回転角度は、リンク1方向とリンク2のなす角になります。
ジョイント1の回転角度と、ジョイント2の回転角度の和は、X軸とリンク2のなす角になります。
そのため手先の位置(x,y)は以下のように求められます。

画像4

あとはそれぞれの関節の角度θ1、θ2を回転範囲内で動かしていけば、手先を動かせる範囲(可動範囲)をプロットすることができます。
以下の図は、l1=50、l2=30とおいて、θ1、θ2を0°から180°まで10°ずつ動かしたときの手先の位置を、Excelの散布図でプロットしたものです。

画像5

実際にはリンクが自分自身に干渉することがあるので、上記の通りには動きませんが、これで大体の可動範囲を見積もることができます。

可動範囲の見積もり(3自由度)

次に今回作ろうとしている3自由度のロボットアームで考えます。

画像6

まずは手先を伸ばした方向の長さLについて考えます。このときも三角関数を使って、z,Lは以下のようになります。

画像7

画像8

続いてXY平面について考えます。先ほど求めたLを使って、x,yは以下のようになります。

画像9

画像10

画像11

数式を展開して、先ほど求めたzと合わせると、手先の位置(x,y,z)は以下のようになります。

画像12

2自由度の場合と同様に、θ1、θ2、θ3を0°から180°まで10°ずつ動かして手先の位置をExcelの散布図プロットします。このとき前回と同様に、l1=50、l2=50、l3=50としています。

画像13

今回作ろうとしているのは対象物をピッキングするロボットです。
そのため上の図から、ピッキングの能力について、概ね以下のようなことが言えます。
・地面に置いてあるもの(z=0)であれば、ロボットから半径60程度の距離にあるものであれば、ピッキングできる。
・ロボットから半径60程度の距離にあるものであれば、高さ130くらいのものまでは手が届く。
・ただし、XY平面の第2,第3象限(Y>=0)の範囲では、高さ50以下のものは手が届かず、ピッキングできない。
 360°回転する関節を選定すれば、手が届くようになる。

まとめ

今回は三角関数だけを使って、2自由度、3自由度のロボットアームの可動範囲を求めました。
関節の位置から、手先の位置を求めることを運動学といいます。

6自由度、7自由度のロボットアームでも、直動関節を使ったロボットアームでも、基本的には同様の考え方で手先の位置を求めることができます。
ただし毎回毎回、図を書きながら三角関数を使って数式を立てていると、特に自由度が大きい場合はすごく混乱しやすくなります。
自由度・関節の種類の依らない、統一的な方法で運動学を解く方法は、また別途紹介します。

この記事が気に入ったらサポートをしてみませんか?