Go2 + RealSense D435i:
Tespit Kutusundan 3D Yer İmi Haritasına.
Nesne tespiti size "şurada bir priz var" der ve kare geçince unutur. Saha işinde gereken ise şu: "bu prizin tesisteki koordinatı x = -2,42 m, y = 2,49 m". Bu incelemede, Unitree Go2 üzerinde açık sözlüklü tespiti derinlik kamerasıyla birleştirip kalıcı bir 3D varlık haritası üreten ROS 2 boru hattını adım adım çözümlüyoruz: yöntem, konu akışı ve açık kaynak referans uygulamanın dürüst sınırları.
Boru hattının çalışma noktası
renk ve derinlik karesini aynı ana ait sayan eşleme toleransı
iki gözlemi aynı fiziksel nesne sayan kümeleme yarıçapı
bir adayın onaylı yer imine dönüşmesi için gereken kare sayısı
açıklamalı görüntünün tarayıcıdan izlendiği MJPEG portu
| Düğüm | ROS 2 Konusu | Rolü |
|---|---|---|
| go2_rs_spatial_localizer | /camera/camera/color/image_raw + .../aligned_depth_to_color | Girdi: eşlenmiş renk ve derinlik karesi |
| go2_rs_spatial_localizer | /utlidar/robot_odom | Girdi: robotun konumu ve yönelimi |
| go2_rs_spatial_localizer | /go2_vision/detected_outlet_position | Çıktı: harita çerçevesinde tekil 3D nokta |
| go2_outlet_plotter | /go2_vision/landmark_markers | Çıktı: RViz için 3D işaret dizisi ve JSON harita |
| vid_stream_server | /go2_camera/segmented_overlay/compressed | Çıktı: 8080 portunda tarayıcıdan izlenen MJPEG akışı |
Konu adları, MCatahayIDE/go2-spatial-vision-mapping deposundaki referans uygulamadan alınmıştır. Kendi kurulumunuzda RealSense önekini ve hedef konu adlarını değiştirebilirsiniz.
Dört adım: kareden koordinata
Boru hattının fikri sade: tespit tek başına geçicidir, kalıcı olan koordinattır. Görüntüdeki kutu derinlikle metrik bir vektöre, vektör odometriyle harita koordinatına, koordinat da çok kareli kümelemeyle güvenilir bir yer imine dönüşür. Robotun gezinme tarafını nasıl kurduğumuzu SLAM navigasyon demolarında anlatmıştık.
Hizalanmış RGB-D akışı
RealSense D435i, renkli görüntüyle piksel piksel hizalanmış 16 bitlik derinlik karesi yayınlar. İki akış ROS 2 tarafında yaklaşık zaman eşleyiciyle (80 ms tolerans) birleştirilir; aynı ana ait olmayan renk ve derinlik karesinin eşleşmesi böyle engellenir.
Metinle tarif edilen hedef
YOLO-World modeline sabit bir sınıf listesi değil, metin komutu verilir: power outlet, electrical socket, light switch. Model eğitim setinde hiç görmediği bir nesneyi bu tarife göre arar. Hedefi değiştirmek için yeniden eğitim değil, tek satır komut değişikliği yeter.
Metrik geri izdüşüm
Kutu merkezindeki dar bölgenin derinlik medyanı alınarak parlak yüzeylerin sıfır okumaları elenir. İğne deliği kamera modeli ve CameraInfo'dan gelen iç parametrelerle 2 boyutlu piksel, kamera çerçevesinde metrik bir vektöre çevrilir.
Küresel çerçeve ve kümeleme
Kamera vektörü, Go2'nin kendi LiDAR-atalet odometrisiyle harita çerçevesine taşınır. 25 santimetrelik komşuluk içindeki gözlemler koşan ortalamayla tek ağırlık merkezinde birleşir; 100 gözleme ulaşan küme onaylanıp JSON haritaya yazılır.
Go2 neyi verir, derinlik kamerası neyi ekler
Go2'nin ön kamerası 1280 x 720 çözünürlükte ve 120 derece görüş açılıdır: iyi bir görüntü verir ama tek gözlü olduğu için mesafe vermez. 4D LiDAR L2 ise 360 x 96 derecelik taramasıyla engelden kaçınma ve konumlandırma tarafını taşır, nesne seviyesinde semantik veri üretmez.
Eksik parça, RGB ile hizalanmış piksel başına metrik derinliktir. RealSense D435i bunu USB 3.2 üzerinden verir; hesaplama tarafında da Go2 EDU'nun Jetson Orin seçeneği YOLO-World çıkarımını robotun üzerinde tutar. Böylece boru hattı, harici bir sunucuya bağımlı olmadan sahada çalışır.
| Hedef nesne | Saha karşılığı |
|---|---|
| Elektrik panosu ve priz | Tesis devralma sırasında koordinatlı elektrik envanteri |
| Vana ve manometre | Proses hatlarında periyodik okuma noktalarının haritalanması |
| Yangın tüpü ve acil buton | Mevzuat denetimi: eksilen veya yeri değişen ekipmanın tespiti |
| Saha etiketi ve QR | Varlık yönetim sistemine konumlu besleme |
Hedefi değiştirmek için model yeniden eğitilmez: YOLO-World'e verilen metin komutu değiştirilir.
Referans uygulamanın bilinen sınırları
Aşağıdakiler, açık kaynak referans uygulamanın kodunu ve örnek çıktısını okuyarak çıkardığımız gerçek kısıtlardır. Prototip olarak sağlam bir başlangıç, ancak sahaya çıkmadan önce kapatılması gereken boşluklar var.
- •Dünya çerçevesi dönüşümü yalnızca yaw eksenini kullanır. Yürürken sürekli yalpalayan dört bacaklı bir robotta pitch ve roll ihmal edilince hata mesafeyle birlikte büyür.
- •Kameranın robot gövdesine göre montaj ofseti hesaba katılmaz: kamera tam robot merkezindeymiş gibi davranılır. Sabit bir kaydırma, tüm haritayı aynı yönde kaydırır.
- •Dönüşüm tf2 ile değil elle trigonometriyle yapılır; harita çerçevesi bir TF ağacından türetilmez, mesaja etiket olarak iliştirilir.
- •Örnek çıktıda 4 onaylı yer imine karşılık 91 aday küme vardır: aynı fiziksel nesne, odometri kayması yüzünden birden fazla kümeye bölünmektedir.
- •Kod bir ROS 2 paketi olarak paketlenmemiştir: package.xml, bağımlılık listesi ve başlatma dosyası yoktur, düğümler tek tek elle çalıştırılır.
Unitree Go2 EDU
Bu boru hattının çalışabileceği taban Go2 EDU'dur: tam kod erişimi, ROS 2 desteği ve 100 TOPS'luk NVIDIA Jetson Orin seçeneği. AIR ve PRO varyantlarında ikincil geliştirme erişimi bulunmaz. Türkiye'de yetkili distribütör fiyatı Go2 EDU için $9.700'den başlar.
Saha kurulumu ve entegrasyon
Robotlar.org; Go2 EDU tedariki, derinlik kamerası montajı ve kalibrasyonu, ROS 2 ile tf2 ağacının doğru kurulması, hedef nesneye göre komut ayarı ve çıkan haritanın varlık yönetim sisteminize bağlanmasını uçtan uca üstlenir.
Sıkça Sorulan Sorular
Mekansal yer imi haritalama tam olarak ne demek?
Sıradan nesne tespiti size görüntü üzerinde bir kutu verir: "şurada bir priz var". Mekansal haritalama bir adım öteye gider ve o prizin tesis içindeki metrik konumunu çıkarır: x = -2,42 m, y = 2,49 m, z = 0,29 m. Robot gezinmesini bitirdiğinde elinizde bir görüntü yığını değil, koordinatlı bir varlık listesi kalır. Fark şurada önemli: kutu geçicidir, koordinat kalıcıdır ve bir sonraki denetimde aynı noktaya geri dönebilirsiniz.
Açık sözlüklü (open-vocabulary) tespit neden bu işin merkezinde?
Klasik YOLO modelleri eğitildikleri sabit sınıf listesiyle sınırlıdır; listede "priz" yoksa veri toplayıp yeniden eğitmeniz gerekir. YOLO-World metinle çalışır: modele "power outlet", "electrical socket", "light switch" yazarsınız, model o tarifi arar. Saha tarafında bu şu demek: yangın tüpü envanteri çıkaracaksanız yeni bir veri seti toplamak yerine komut metnini değiştirirsiniz. Ar-Ge maliyetinin büyük kısmı veri etiketlemede olduğu için bu, projeyi haftalardan saatlere indirir.
Go2'nin kendi kamerası yetmiyor mu, neden ayrı bir derinlik kamerası?
Go2'nin ön kamerası 1280 x 720 çözünürlükte, 120 derece görüş açılı tek gözlü bir kameradır; görüntü verir ama mesafe vermez. Tek kareden metrik derinlik çıkarmak mümkün değildir. Intel RealSense D435i stereo derinlik kamerası her piksel için milimetre cinsinden mesafe üretir ve RGB ile hizalanmış olarak yayınlar. Geri izdüşüm formülünün ihtiyaç duyduğu Z değeri buradan gelir. Go2'nin 4D LiDAR L2 sensörü ise engelden kaçınma ve konumlandırma için kullanılır, nesne seviyesinde semantik tespit için değil.
2 boyutlu kutudan 3 boyutlu koordinata nasıl geçiliyor?
Üç adım var. Birincisi: tespit kutusunun merkez bölgesindeki derinlik piksellerinin medyanı alınır, böylece parlak yüzeylerden gelen sıfır okumaları elenir ve metrik Z elde edilir. İkincisi: iğne deliği kamera modeliyle geri izdüşüm yapılır, yani x = (u - cx) * Z / fx ve y = (v - cy) * Z / fy. Buradaki fx, fy, cx, cy değerleri kameranın CameraInfo mesajından gelen iç parametreleridir. Üçüncüsü: kamera çerçevesindeki bu vektör, robotun odometrisiyle birleştirilerek küresel harita çerçevesine taşınır.
Bir tespiti gerçek yer imi saymak için kaç kare gerekiyor?
Referans uygulamada eşik 100 gözlemdir. Yeni bir 3D nokta geldiğinde 25 santimetrelik komşuluk yarıçapı içinde mevcut bir küme aranır; varsa kümenin ağırlık merkezi koşan ortalamayla güncellenir, yoksa yeni aday açılır. Küme 100 gözleme ulaşınca onaylı sayılıp haritaya yazılır. Bu eşik anlık yanlış pozitifleri eler: bir karede parlayan bir yansımayı priz sanmak ucuzdur, aynı hatayı 100 kare üst üste yapmak zordur.
Örnek uygulamanın bilinen sınırları neler?
Dürüst olmak gerekirse üç tanesi ciddi. Birincisi, dünya çerçevesi dönüşümü yalnızca yaw eksenini kullanır; yürürken sürekli yalpalayan dört bacaklı bir robotta pitch ve roll ihmal edilince mesafeyle büyüyen bir hata oluşur. İkincisi, kameranın robot gövdesine göre montaj ofseti hesaba katılmaz, yani kamera tam robot merkezindeymiş gibi davranılır. Üçüncüsü, dönüşüm ROS 2'nin tf2 kütüphanesiyle değil elle trigonometriyle yapılır, dolayısıyla "map" çerçevesi bir TF ağacından türetilmez, sadece etiket olarak iliştirilir. Ciddi bir kurulumda bu üçü de düzeltilmelidir.
Örnek çıktıda neden 4 onaylı yer imine karşılık 91 aday var?
Bu sayı tam olarak yukarıdaki sınırların sahadaki karşılığıdır. Odometri kayması ve yalnızca yaw kullanan dönüşüm birleşince, aynı fiziksel priz robot farklı açılardan baktığında farklı koordinatlara düşer; 25 santimetrelik yarıçap bu sapmayı yakalayamaz ve tek nesne onlarca ayrı adaya bölünür. Çözüm yolu bellidir: tam 6 serbestlik dereceli dönüşüm, tf2 ile statik kamera montaj çerçevesi, Go2'nin 4D LiDAR'ıyla döngü kapatma ve gerekirse kümeleme yarıçapının gözlem belirsizliğine göre uyarlanması.
Priz dışında ne işe yarar, gerçek bir saha senaryosu var mı?
Priz burada sadece kolay doğrulanabilir bir hedef. Aynı boru hattı, komut metnini değiştirerek vana, manometre, yangın tüpü, acil durum butonu, saha etiketi veya elektrik panosu envanteri çıkarmak için çalışır. Tipik kullanım: yeni devralınan bir tesiste varlık envanterinin robot gezerek koordinatlı biçimde çıkarılması, ya da periyodik denetimlerde "geçen ay buradaki tüp bu ay yok" farkının otomatik yakalanması. Robotlar.org olarak bu tür saha projelerini Go2 EDU üzerinde kuruyoruz.
Kaynaklar
Referans uygulama (GitHub)
İncelediğimiz açık kaynak boru hattı: üç ROS 2 düğümü, örnek JSON harita çıktısı ve mimari şeması.
YOLO-World (Ultralytics)
Açık sözlüklü tespit modelinin resmi belgeleri: metin komutu ayarlama ve çalıştırma.
Intel RealSense ROS 2
D435i için resmi ROS 2 sürücüsü: hizalanmış derinlik ve CameraInfo yayını.
robotlar.org Destek
Go2 EDU tedariki, derinlik kamerası entegrasyonu ve saha kurulumu.
Tesisinizin Varlık Envanterini
Robot Çıkarsın.
Hedef nesneyi siz söyleyin, koordinatlı envanteri robot getirsin. Go2 EDU tedariki, derinlik kamerası entegrasyonu ve saha kurulumu için teknik ekibimizle konuşun.