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:
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:
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:
(İş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:
- En az iki, pratikte üç ve üzeri bağımsız dönme ekseni kullanın. Paralel eksenli iki hareket verirseniz sistem dejenere olur: RX'in o eksen etrafındaki bileşeni denklemlerde hiç görünmez ve çözüm belirsiz kalır.
- Küçük dönüşlerden kaçının. θ küçükken P vektörü küçülür ve ölçüm gürültüsü oransal olarak büyür; poz çiftleri arasında 30°'nin üzerinde dönme hedefleyin.
- Salt öteleme hareketi dönme aşamasına hiçbir bilgi katmaz — iki tarafın dönme kısmı birim matris olur ve Denk. 4 boş denklem üretir.
- Öteleme doğruluğu Denk. 3'teki (RA − I) matrisinin koşuluna bağlıdır; o da yine büyük ve çeşitli dönüşler ister.
- Hedef her pozda görüş alanında ve keskin odakta kalmalı. Köşe tespitinin pikselaltı kalitesi doğrudan B'nin kalitesidir; bulanık bir kare, zinciri en baştan zehirler.
- Pozları rastgele değil planlı seçin: hedefin etrafında hayali bir küre parçası düşünüp farklı bakış yönlerine dağılmak, hem eksen çeşitliliğini hem koşul sayısını kendiliğinden iyileştirir.
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.