【Python】カメラ座標からロボシリンダー座標系への変換方法
1.背景
新しい生産技術といいますか、工法の開発も本業の傍ら、ほそぼそと
やっています。
超部分的ですが、要素毎にまとめて行こうと思います
(よく、どうやってやったけ??っと思い返すのに時間がかかるため・・・
がさつな性格がよくないのですが)
2. システムの構成と課題
画像処理にて検出した画像上の特徴点(x1,y1)からロボシリンダーの座標X
を求めたい。
3.方法
3.1 キャリブレーション
事前に画像座長系x-yとロボット座標系Xとの関係(変換)式を求める
①画像座標とその時のロボット座標を求める。
x | y | X |
536.00 | 295.00 | 51.00 |
514.00 | 296.00 | 53.34 |
471.00 | 296.00 | 58.02 |
451.00 | 299.00 | 60.36 |
405.00 | 299.00 | 65.04 |
363.00 | 303.00 | 69.72 |
298.00 | 308.00 | 76.74 |
②関係式を求める
画像座標のxとロボシリンダーXの関係は、1次関数で表せる。
X=ax + b
これをサクッとPythonで解くと
A = np.array([X,np.ones(len(X))])
A = A.T
a,b = np.linalg.lstsq(A,X)[0]
※X,xは、画像座標値xとロボット座標値XがN点配列に入っている。
3.2 座標変換
求めた関係式X=ax + bを用いて、検出した特徴点の画像座標から
ロボット座標系に変換することで、現在値Xを算出できる