Tüm yazılar

Yazı 01Robotik Algılama

El-Göz Kalibrasyonu: Tsai-Lenz Yöntemine Giriş

Robot flanşı ile kameranın arasındaki görünmez dönüşümü tek bir matris denkleminden söküp almak: AX = XB probleminin iki aşamalı, kapalı biçimli klasik çözümü.

30 Temmuz 2026 ≈ 7 dk okuma Sercan Sözer
Robotik 3D Metroloji Kalibrasyon

01Problem

İki koordinat sistemi, bir bilinmeyen

Bir robot koluna kamera monte ettiğinizde elinizde iki ayrı "gerçeklik" olur. Robot denetleyicisi, flanşın — uç eleman bağlantı yüzeyinin — taban koordinat sistemindeki pozunu her an bilir; ileri kinematik bunu verir. Kamera ise gördüğü kalibrasyon hedefinin pozunu kendi optik merkezine göre ölçer. İki bilgi de doğrudur, ama farklı dillerde yazılmıştır. Kameranın ölçtüğü bir noktaya robotu gönderebilmek için flanş ile kamera arasındaki katı dönüşümü — üç eksenli dönme artı üç eksenli öteleme, toplam altı serbestlik derecesi — bilmek zorundayız. Bu bilinmeyen dönüşüme X diyelim.

X'i cetvelle ölçemezsiniz: kameranın optik merkezi lens grubunun içinde bir yerdedir ve mekanik çizimden okunmaz. Onun yerine robotu hareket ettirir, her iki tarafın aynı hareketi nasıl gördüğünü karşılaştırırız. Robot, i. adımda flanşını Ai dönüşümü kadar oynatsın; bu, iki flanş pozunun bileşiminden hesaplanır ve bilinir. Aynı anda kamera, sabit duran hedefe göre kendi pozunun Bi kadar değiştiğini ölçsün; bu da iki hedef gözleminden çıkar. Kamera flanşa vidalı olduğuna göre iki hareket aynı fiziksel olaydır ve ilişkileri tek satırdır:

Ai X = X BiDenk. 1 — el-göz denklemi

Sözle söylersek: "önce flanş hareketi, sonra el-göz dönüşümü" ile "önce el-göz dönüşümü, sonra kamera hareketi" aynı yere varmak zorundadır. Klasik el-göz kalibrasyonu problemi budur; literatür onu kısaca AX = XB diye anar.

02Düzenler

Eye-in-hand mi, eye-to-hand mi?

Aynı denklem iki farklı fiziksel kurulumu kapsar. Eye-in-hand'de kamera robotun üzerindedir; X, flanştan kameraya giden dönüşümdür ve kalibrasyon hedefi sabit durur. Eye-to-hand'de kamera hücrenin bir köşesine sabitlenmiştir, hedef ise robotun ucuna takılır; bu kez aranan şey taban ile kamera arasındaki dönüşümdür. İki durumda da denklem yapısı birebir aynı kalır — yalnızca A ve B'nin hangi poz çiftlerinden türetildiği değişir. Bu yüzden aynı çözücü kod, tek satır bile değişmeden her iki kurulumda kullanılabilir. Robotlu 3D tarama hücremde kamera flanşta gezdiği için bu yazının kalanı eye-in-hand diliyle ilerliyor.

03Yöntem

Tsai-Lenz: önce dönme, sonra öteleme

Homojen dönüşüm matrisini dönme bloğu R ile öteleme vektörü t'ye ayırınca Denk. 1 ikiye dağılır:

RA RX = RX RBDenk. 2 — dönme
(RA − I) tX = RX tB − tADenk. 3 — öteleme

Tsai ve Lenz'in 1989 tarihli makalesinin zarafeti, bu iki denklemi sırayla ve her seferinde lineer biçimde çözmesidir. Önce dönme: her dönme matrisi bir birim eksen k ve açı θ ile, yani eksen-açı gösterimiyle yazılabilir. Denk. 2'yi düzenleyince RA = RX RB RXT çıkar; bu bir benzerlik dönüşümüdür ve anlamı nettir: RX, kameranın gördüğü dönme eksenini flanşın dönme eksenine taşır — kA = RX kB. Açı ise iki tarafta aynıdır.

Tsai-Lenz bu ilişkiyi doğrudan çözmek yerine her dönmeyi değiştirilmiş Rodrigues vektörüne çevirir: P = 2 sin(θ/2) k. Bu gösterimde her hareket çifti, bilinmeyen vektör üzerinde çapraz-çarpım (skew) matrisli lineer bir denklem üretir:

skew(PA + PB) · P′X = PA − PBDenk. 4 — lineer dönme sistemi

(İşaretler, A ile B'nin hangi tarafta tanımlandığına göre kaynaktan kaynağa değişebilir; önemli olan yapıdır.) Skew matrisinin rankı 2 olduğundan tek hareket çifti üç bilinmeyen için yetmez: en az iki, pratikte çok daha fazla çift üst üste yığılır ve en küçük kareler ile çözülür. Bulunan P′X, küçük bir ölçek düzeltmesiyle gerçek Rodrigues vektörüne, oradan da RX matrisine dönüştürülür.

İkinci aşama artık kolaydır: RX bilindiğine göre Denk. 3, tX'te düpedüz lineerdir. Her hareket çifti için denklem yazılır, hepsi tek bir yığın sisteme dizilir, yine en küçük kareler koşulur. Toplam: iki küçük lineer sistem, kapalı biçim, iterasyon yok — modern bir işlemcide milisaniyeler.

04Saha

Pratik ipuçları: veri toplamanın sanatı

Çözücü on satırlık lineer cebirdir; kalibrasyonun kalitesini asıl belirleyen, robotu nasıl gezdirdiğinizdir. Sahada işe yarayan kurallar:

05Kanıt

Doğrulama: önce sentetik, sonra gerçek

Bir kalibrasyon kodundaki hatayı gerçek verinin gürültüsü içinde ayıklamak neredeyse imkânsızdır; bu yüzden ilk sınav her zaman kapalı döngü sentetik test olmalı. Bilinen bir Xgerçek seçin, rastgele Ai hareketleri üretin, Bi = X−1 Ai X ile kusursuz gözlemleri hesaplayıp çözücüye verin. Doğru yazılmış bir Tsai-Lenz bu veriden X'i makine hassasiyetinde geri bulmalıdır — kendi gerçekleştirmemde öteleme hatası ~10−13 mm mertebesinde çıkıyor ki bu, algoritmanın değil double aritmetiğinin sınırıdır. Sonra gözlemlere kademeli gürültü enjekte edip hata eğrisini izlersiniz: hangi gürültü seviyesinde, kaç pozla, ne kadar hata. Bu eğri, sahada kaç poz toplamanız gerektiğinin de cevabıdır.

Gerçek veride altın ölçüt yeniden-projeksiyon hatasıdır: hedefin bilinen köşe noktalarını, kestirilen X üzerinden zincirleme dönüşümle kamera görüntüsüne yansıtın ve tespit edilen piksellerle karşılaştırın; pikselaltı ortalama hata sağlıklı bir kalibrasyonun işaretidir. Ayrıca her poz çifti için Ai X Bi−1 X−1 çarpımının birim matristen sapmasına bakmak, tutarlılığı poz bazında gösterir — tek bir bozuk poz çifti burada hemen sırıtır ve ayıklanır.

06Kapanış

Tarama hücresindeki yeri

Bu yöntem benim için akademik bir merak değil, robotlu 3D tarama hücresinin taşıyıcı kolonu. 3D kameranın nokta bulutunda bulduğu bir kaynak noktası, ancak X üzerinden robot taban koordinatına taşındığında robota bir anlam ifade eder; kalibrasyondaki her milimetre hata, parça üstünde milimetre olarak geri döner. Tsai-Lenz'in iki aşamalı, kapalı biçimli yapısı hem sahada hızlı hem de sentetik testle kanıtlanabilir olduğu için hücrenin kalibrasyon adımında ilk tercihim oldu. İleriki bir yazıda, dönme ile ötelemeyi tek seferde çözen dual-quaternion tabanlı yaklaşımı (Daniilidis) bu yöntemle aynı sentetik tezgâhta karşılaştırmayı planlıyorum.

Bu yazı, sersoz.com mühendislik günlüğünün ilk kaydıdır. Düzeltme ve itirazlar için forum her zaman açık.

Tüm yazılar