スクリーン座標からロボット座標への変換
arm.pyを実行するとロボットアームの操作アプリが起動します。
python arm.py

画面の各項目の説明は以下をご覧ください。
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ボタン
下の写真のように複数の位置に手先を移動させ、ロボット座標とスクリーン座標のデータ対を作ります。

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ボタン
アプリを終了します。