Camera Calibration Pipeline
ピクセルから実世界座標へ
01
iPhone 真上固定
三脚で真上に固定。斜め撮影では遠近歪みが入るため、
ホモグラフィ精度を保つには真俯瞰が必須。
カッティングマット(5mm格子)が映り込む。
格子交点が基準点になるため追加マーキングは不要。
02
4点キャリブレーション
カメラ映像上で4点をクリック → 対応する実世界座標(mm)を入力。
ロボットベースを原点(0,0)とした座標系を採用。
1(左奥) : (-300, -150)
2(右奥) : ( 300, -150)
3(左手前): (-300, 250)
4(右手前): ( 300, 250)
03
ホモグラフィ行列の生成
cv2.findHomography() でピクセル→実世界の変換行列を計算。
homography.npy として保存。以降は毎回使い回す。
src: ピクセル座標(4点)
dst: 実世界座標mm(4点)
→ 3×3 変換行列
04
HSV赤検出 → 重心取得
フレーム全体からHSVマスクで赤ブロックを検出。
輪郭面積500px未満はノイズとして無視。
最大輪郭のモーメントから重心(cx, cy)を計算。
lower_red1: [ 0, 100, 100]
upper_red1: [ 10, 255, 255]
lower_red2: [160, 100, 100]
upper_red2: [180, 255, 255]
05
perspectiveTransform → World XY
cv2.perspectiveTransform() でピクセル座標を実世界mmに変換。
Pixel : (326, 875)
World : (-253.1 mm, 204.8 mm)
← ロボットベース左253mm、手前205mm
Calibration Result
COVERAGE X
-265 〜 +280 mm
COVERAGE Y
-114 〜 +227 mm
DATA POINTS
9 trials
GRID RESOLUTION
5 mm
作業エリアマップ(ロボットベース原点)
X+
X-
Y-
Y+
ARM
1px = 1mm
○ = 収集データ点 ■ = キャリブレーション基準点 ● = ロボットベース