スクリーン座標からロボット座標への変換

arm.pyを実行するとロボットアームの操作アプリが起動します。

python arm.py
_images/arm.png

画面の各項目の説明は以下をご覧ください。



TCP pose

アームの手先(TCP : Tool Center Point )の位置と角度とハンドの開度を指定します。

テキストボックスに数値を入れてエンターキーを入力すると、アームが動きます。

X, Y, Z

ロボット座標の位置

R1, R2

R1はハンドの手首(J5)の回転角

R2はハンドと台の板との角度

hand

ハンドの開度(0~100)



Marker coordinates

5個のマーカーのカメラ座標(cam x, cam y, camz)とスクリーン座標(scr x, scr y)



TCP height

マーカーのカメラ座標から計算した手先の高さ。



Resetボタン

カメラを動かしたときなどに、板の上の3個のマーカーから平面の方程式を再計算します。



Readyボタン

J2とJ3が-90度で、それ以外が0度のポーズをとります。



Adjust XYボタン

下の写真のように複数の位置に手先を移動させ、ロボット座標とスクリーン座標のデータ対を作ります。

_images/all.png

scikit-learnのLinearRegressionを使って、スクリーン座標からロボット座標への変換器を作れます。

X = np.array(screen_coordinates)
Y = np.array(robot_coordinates)

model = LinearRegression().fit(X, Y)

ここで screen_coordinates がスクリーン座標のリストで、 robot_coordinates が対応するロボット座標のリストです。



Test XYボタン

スクリーン座標からロボット座標を計算した値が合っているかをテストします。



AIボタン

物体検出の推論をするプロセスを起動します。



Grabボタン

AIで検出した物体をハンドでつかんで別の位置に移動します。



Closeボタン

アプリを終了します。