OTONOM ROBOTİK VE HARİTALAMA

Navigasyon & SLAM: Eş Zamanlı Haritalama, Konumlama, LiDAR ve Kameralı Takip

Bilinmeyen bir ortamda otonom hareket eden bir robotun en kritik sorusu şudur: "Neredeyim ve nereye gidiyorum?" Bu rehberde, robotik dünyasının en karmaşık problemlerinden biri olan SLAM algoritmalarını, LiDAR ve kamera tabanlı algılama mimarilerini derinlemesine inceliyoruz.

1 SLAM Problemine Giriş: Yumurta mı Tavuk mu?

Eş Zamanlı Haritalama ve Konumlama (Simultaneous Localization and Mapping - SLAM), otonom robotiğin "yumurta mı tavuk mu" ikilemidir. Kesin bir haritaya sahip olmadan konumunuzu tam kestiremezsiniz; ancak nerede olduğunuzu bilmeden de doğru bir haritayı inşa edemezsiniz. SLAM algoritmaları, bu iki belirsizliği aynı anda ihtimaller teorisi (olasılıksal modelleme) çerçevesinde çözer.

Gözleri bağlı bir insanın daha önce girmediği bir odada duvarlara dokunarak ilerlemesini hayal edin. Kişi adımlarını sayarak (odometri) hareket eder, duvarın köşesine çarptığında zihninde bir kerteriz noktası (landmark) belirler. Zamanla attığı adımlardaki sapmaları bu kerteriz noktalarına göre düzeltir. İşte modern SLAM sistemleri, sensör gürültülerini olasılık matrisleriyle (Kalman Filtreleri veya Parçacık Filtreleri) işleyerek bu süreci milisaniyeler içerisinde gerçekleştirir.

Odometri (Odometry) Tekerlek enkoderleri ve IMU verisi ile robotun göreceli yer değişiminin anlık hesaplanması.
Haritalama (Mapping) Sensörlerin (LiDAR/Kamera) algıladığı engelleri 2D/3D küresel koordinat sistemine işleme.
Döngü Kapatma (Loop Closure) Daha önce geçilen bir mekanın tanınarak haritadaki zamanla biriken sapmaların (drift) sıfırlanması.

2 LiDAR Tabanlı SLAM Mimarileri

LiDAR (Light Detection and Ranging), saniyede yüz binlerce lazer darbesi göndererek nesnelerin mesafesini milimetrik hassasiyetle ölçen bir sensördür. 2D planar LiDAR'lar genellikle ızgara tabanlı doluluk haritaları (Occupancy Grid Map) üretmek için yeterliyken, 3D LiDAR'lar (Velodyne, Ouster) devasa nokta bulutları (Point Cloud) üreterek karmaşık arazi şartlarında otonom sürüş olanağı sağlar.

2.1 ICP (Iterative Closest Point) Algoritması

LiDAR verileriyle haritalama yapılırken ardışık iki lazer taraması arasındaki dönüşüm (rotasyon ve öteleme) hesaplanmalıdır. ICP algoritması, birinci taramadaki noktalar ile ikinci taramadaki en yakın noktaları eşleştirerek kareler toplamı hatasını minimize eder. Matris dönüşümü şu matematiksel model ile ifade edilir:

LiDAR ICP Hizalama Dönüşüm Formülü

Mevcut sensör verisi $P$ ve hedef referans verisi $Q$ için toplam dönüşüm matrisi $R$ (Rotasyon) ve $t$ (Öteleme) vektörü ile şöyle minimize edilir:

E(R, t) = \sum_{i=1}^{N} || (R \cdot p_i + t) - q_i ||^2

Bu hesaplama robot hareket ettikçe döngüsel olarak güncellenir ve harita parçaları birbirine dikilerek eksiksiz bir 2D/3D haritaya dönüştürülür.

  • Cartographer (Google): Alt haritalar (submaps) oluşturarak gerçek zamanlı 2D/3D SLAM optimizasyonu sağlar. İmalat ve depo robotlarında son derece popülerdir.
  • LOAM (Lidar Odometry and Mapping): 3D LiDAR nokta bulutlarından kenar ve yüzey özniteliklerini çıkararak düşük işlemci yüküyle yüksek hassasiyette konumlama sunar.

3 Kameralı Takip ve Visual SLAM (vSLAM)

Kameraların hafif, ucuz ve renk/doku gibi zengin bilgi katmanları sunması, Visual SLAM (vSLAM) teknolojisini ön plana çıkarmıştır. Tekil kamera (Monocular), çift kamera (Stereo) veya derinlik sensörlü kameralar (RGB-D, Intel RealSense) vSLAM mimarilerinin temel yapı taşlarıdır.

vslam_feature_tracking.py (ORB Feature Extraction Example)
import cv2
import numpy as np

# RGB-D veya Monoküler Kamera Akışından Öznitelik Takibi
def track_features(image_curr, image_prev):
    # ORB (Oriented FAST and Rotated BRIEF) dedektörü oluşturma
    orb = cv2.ORB_create(nfeatures=2000)
    
    # Öznitelik noktalarını ve tanımlayıcıları (descriptors) tespit et
    kp1, des1 = orb.detectAndCompute(image_prev, None)
    kp2, des2 = orb.detectAndCompute(image_curr, None)
    
    # FLANN veya BFMatcher ile karesel mesafe eşleştirmesi
    bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
    matches = bf.match(des1, des2)
    
    # Eşleşen noktaları mesafeye göre sırala
    matches = sorted(matches, key=lambda x: x.distance)
    return kp1, kp2, matches[:100]

Visual SLAM sistemlerinde öne çıkan yaklaşımlar ikiye ayrılır:

  1. Öznitelik Tabanlı (Feature-based) Yöntemler: Görseldeki köşe ve kenar noktaları (ORB, SIFT, SURF) ayıklanır. ORB-SLAM3 bu alandaki en gelişmiş açık kaynaklı kütüphanelerden olup monoküler, stereo ve IMU entegreli (Inertial) yapıları destekler.
  2. Doğrudan (Direct) Yöntemler: Öznitelik çıkarmak yerine piksellerin fotometrik parlaklık değerlerini doğrudan optimize eder (Örn: DSO - Direct Sparse Odometry). Doku açısından fakir duvarlarda daha iyi performans gösterir.

4 Sensör Füzyonu ve Otonom Navigasyon (ROS 2 Nav2)

Tek bir sensör kaynağı hiçbir zaman %100 güvenilir değildir. Tekerlekler kayabilir (odometri hatası), LiDAR sisli havada kırılabilir veya kamera karanlıkta kör kalabilir. Bu nedenle modern otonom sistemlerde sensör verileri Extended Kalman Filter (EKF) veya Unscented Kalman Filter (UKF) mimarileri üzerinden birleştirilir.

Haritalama tamamlandıktan sonra robotun A noktasından B noktasına güvenle ulaşması için ROS 2 Nav2 (Navigation Stack) mimarisi devreye girer. Nav2 mimarisinin temel bileşenleri şunlardır:

  • Global Planner (Küresel Planlayıcı): Statik harita üzerinde A* (A-Star) veya Dijkstra algoritmalarını kullanarak robota başlangıçtan hedefe en kısa yolu çizer.
  • Local Planner / Controller (Yerel Planlayıcı): DWB veya TEB (Timed Elastic Band) algoritmaları ile anlık olarak önüne çıkan dinamik engellerden (insanlar, yürüyen nesneler) kaçınarak robota `cmd_vel` (hız ve açısal yönelim) komutları üretir.
  • Costmaps (Maliyet Haritaları): Sensör verilerini "Engelli", "Serbest" veya "Tehlikeli Yakınlıkta" şeklinde derecelendirerek robota güvenlik tampon bölgeleri (inflation radius) tanımlar.

Robotik Projelerinizi Otonom Mimarilerle Güçlendirin

ROS 2, LiDAR sensör entegrasyonu ve otonom araç algoritmaları hakkında hazırladığımız diğer teknik dokümanlara ve açık kaynak kod depolarına göz atabilirsiniz.

ROBOTİK PROJELERİ İNCELE

Sıkça Sorulan Sorular

SLAM (Simultaneous Localization and Mapping) tam olarak nedir?

SLAM, bir robotun daha önceden bilmediği bilinmeyen bir ortamda kendi konumunu kestirirken aynı zamanda ortamın haritasını eş zamanlı olarak oluşturmasını sağlayan matematiksel ve algoritmik yöntemler bütünüdür.

LiDAR tabanlı SLAM ile Visual SLAM (vSLAM) arasındaki fark nedir?

LiDAR tabanlı SLAM lazer ışınları ile milimetrik mesafe matrisleri üreterek yüksek doğruluk sağlar ancak donanım maliyeti yüksektir. Visual SLAM ise kameralardan gelen piksel verileri ve öznitelik takibi ile haritalama yapar; maliyeti düşük, zengin görsel veri sunan ancak ışık değişimlerine hassas bir yöntemdir.

SLAM sürecinde odometri sürüklenmesi (drift) nasıl engellenir?

Odometri sürüklenmesi, sensör füzyonu (IMU + tekerlek enkoderi) için Genişletilmiş Kalman Filtresi (EKF) veya Parçacık Filtresi (Particle Filter) kullanılarak ve geçmişte ziyaret edilen bir yer tekrar görüldüğünde Döngü Kapatma (Loop Closure) optimizasyonları yapılarak engellenir.