Otonom Sistemler

SAE Seviye 0'dan Seviye 5'e kadar otonom araç teknolojileri ve gelişmiş algoritmaların kapsamlı rehberi

Seviye 0 → Seviye 5: Tam Otomasyon Yolculuğu

Otonom Araçlar ve SAE Standartları

Otonom araçlar, insan müdahalesi olmadan veya minimal müdahaleyle sürüş görevlerini gerçekleştirebilen ileri teknoloji araçlardır. Society of Automotive Engineers (SAE) tarafından geliştirilen J3016 standardı, otonom sürüş seviyelerini 0'dan 5'e kadar kategorilere ayırır.

Bu sınıflandırma sistemi, sürücü ile sistemin sorumluluk dağılımını, çevresel izleme gereksinimlerini ve operasyonel tasarım alanını (ODD - Operational Design Domain) belirler. Her seviye, teknolojik karmaşıklık ve güvenlik gereksinimlerinde önemli artışları temsil eder.

💡 Önemli Not: SAE seviyeleri teknolojik kabiliyeti değil, sistemin tasarım felsefesini ve güvenlik yaklaşımını tanımlar. Seviye 3'ten sonra sorumluluk tamamen sisteme geçer.
Temel Kavramlar:
  • ODD (Operational Design Domain): Sistemin çalışma koşulları
  • DDT (Dynamic Driving Task): Dinamik sürüş görevi
  • OEDR: Nesne ve olay algılama ve tepki
  • Fallback: Acil durumda geri çekilme stratejisi
  • MRC: Minimal risk koşulu (güvenli durma)

SAE Otonom Sürüş Seviyeleri

SAE J3016 standardı, otonom sürüş teknolojilerini altı seviyede kategoriler. Bu seviyeler, sürücü ve sistemin sorumluluklarına göre belirlenir:

Seviye 0 - Manuel Sürüş

İnsan sürücü tüm sürüş görevlerini yerine getirir. Sistem sadece uyarı verebilir.

Seviye 1 - Sürücü Desteği

Sistem belirli koşullarda direksiyon VEYA hız/frenleme konusunda yardım eder.

Seviye 2 - Kısmi Otomasyon

Sistem hem direksiyon hem de hız/frenleme kontrolü yapabilir, sürücü izler.

Seviye 3 - Koşullu Otomasyon

Sistem tüm sürüş görevlerini yapar, sürücü müdahaleye hazır bekler.

Seviye 4 - Yüksek Otomasyon

Sistem belirli koşullarda tamamen bağımsız çalışır, sürücü müdahalesi gerekmez.

Seviye 5 - Tam Otomasyon

Sistem her koşulda tamamen bağımsız çalışır, direksiyon simidi bile olmayabilir.

SEVİYE 0

Seviye 0 - Manuel Sürüş

Seviye 0, tamamen manuel sürüş anlamına gelir. İnsan sürücü, sürüş görevinin tüm yönlerini (direksiyon, gaz, fren, çevre izleme) kendisi gerçekleştirir. Sistem sadece bilgi veya uyarı sağlayabilir.

Uyarı Sistemleri
Çarpışma uyarısı, şerit çıkış uyarısı, kör nokta uyarısı gibi pasif güvenlik özellikleri.
Bilgi Gösterimi
Hız, yakıt tüketimi, navigasyon bilgileri gibi sürücüye yardımcı veriler.
Sorumluluk
Sürücü her an tam kontroldedir ve tüm sürüş kararlarından sorumludur. Sistem hiçbir zaman kontrol almaz.
Önemli: Uyarı sistemleri olsa bile, tüm sürüş sorumluluğu sürücüdedir. Bu sistemler güvenilir değildir ve her durumda çalışmayabilir.
SEVİYE 1

Seviye 1 - Sürücü Desteği

Seviye 1 sistemler, belirli koşullarda sürücüye tek bir sürüş görevinde yardım eder. Bu ya direksiyon kontrolü (şerit takip) ya da hız kontrolü (adaptif cruise control) olabilir, ancak ikisi birlikte çalışmaz.

Şerit Takip Desteği
Kamera tabanlı şerit algılama ile hafif direksiyon düzeltmeleri yapar. Sürücü her an hazır olmalıdır.
Adaptif Cruise Control
Öndeki araca göre hızı otomatik ayarlar. Radar/lidar ile mesafe takibi yapar.
Acil Fren Desteği
Çarpışma riski algılandığında otomatik frenleme yapar. Kaza şiddetini azaltır.
Park Desteği
Park manevrasında direksiyon kontrolü. Sürücü gaz/fren pedallarını kontrol eder.
Çevre İzleme
Sürücü çevreyi sürekli izlemeli ve sistem arızalandığında hemen müdahale etmeye hazır olmalıdır. Sistem sadece yardım eder, sorumluluğu almaz.
SEVİYE 2

Seviye 2 - Kısmi Otomasyon

Seviye 2, şerit takip ve hız kontrolünün aynı anda çalıştığı seviyedir. Sistem hem direksiyon hem de gaz/fren kontrolü yapabilir, ancak sürücü her an sistemi izlemeli ve gerektiğinde müdahale etmeye hazır olmalıdır.

Tesla Autopilot
Otoyollarda şerit takip + adaptif cruise control kombinasyonu. 8 kamera, radar ve ultrasonik sensörler.
Mercedes Drive Pilot
Traffic jam assist özelliği. Yoğun trafikte düşük hızlarda tam kontrol sağlar.
Şerit Değiştirme
Sinyal verildikinde güvenli şerit değiştirme manevrası. Kör nokta kontrolü ve mesafe hesaplama.
Sürücü İzleme
İç kamera ile sürücünün dikkatini izler. Dikkatsizlik tespit edilirse uyarı verir.
Kritik Uyarı: Seviye 2 sistemler "hands-off" değildir! Sürücü her an müdahaleye hazır olmalı ve çevreyi aktif olarak izlemelidir.
# Seviye 2 Sistem Mimarisi Örneği
class Level2System:
    def __init__(self):
        self.lane_keeping = LaneKeepingAssist()
        self.adaptive_cruise = AdaptiveCruiseControl()
        self.driver_monitor = DriverMonitoringSystem()
        self.is_active = False
    
    def update(self, sensor_data):
        # Sürücü dikkatini kontrol et
        if not self.driver_monitor.is_attentive():
            self.disengage_system()
            return
        
        # Her iki sistemi de çalıştır
        steering_cmd = self.lane_keeping.get_steering(sensor_data)
        speed_cmd = self.adaptive_cruise.get_speed(sensor_data)
        
        return steering_cmd, speed_cmd
SEVİYE 3

Seviye 3 - Koşullu Otomasyon

Seviye 3, otonom sürüşte kritik bir dönüm noktasıdır. Sistem, belirli koşullarda tüm sürüş görevlerini yerine getirir ve çevreyi izler. Sürücü "fallback" kullanıcısı olarak sistemin müdahale talep ettiği durumlarda devreye girer.

Seviye 3'ün Özellikleri:
  • Sistem OEDR (Nesne ve Olay Algılama) yapar
  • Belirli ODD (Operasyonel Tasarım Alanı) içinde çalışır
  • Sürücüden "takeover request" ile müdahale ister
  • Sistem kendi sınırlarını bilir ve bildirir
Traffic Jam Pilot
Audi A8'in traffic jam pilot özelliği. 60 km/h altında otoyollarda tam otonom sürüş.
HD Maps
Santimetre hassasiyetinde haritalar. Şerit bilgileri, trafik işaretleri ve yol geometrisi.
Sensor Fusion
LiDAR, kamera, radar ve GPS verilerinin gelişmiş füzyon algoritmaları ile birleştirilmesi.
Fallback Strategy
Sistem sınırına yaklaşıldığında sürücüye bildirim ve güvenli geçiş protokolü.
Takeover Challenge: Seviye 3'te en büyük sorun, sürücünin durumsal farkındalığını kaybetmesi ve hızlı takeover yapamama riskidir.
# Seviye 3 Takeover Request Sistemi
class Level3TakeoverManager:
    def __init__(self):
        self.takeover_time_budget = 10  # saniye
        self.warning_stages = [10, 7, 5, 3, 1]
        self.current_warning = 0
    
    def request_takeover(self, reason, urgency):
        print(f"Takeover İsteği: {reason}")
        
        if urgency == "HIGH":
            self.immediate_takeover()
        else:
            self.gradual_takeover()
    
    def gradual_takeover(self):
        for warning_time in self.warning_stages:
            self.show_warning(warning_time)
            if self.driver_took_control():
                return "SUCCESS"
        
        # Sürücü müdahale etmediyse MRC'ye geç
        self.execute_minimal_risk_condition()
        return "MRC_EXECUTED"
Yasal Durum
Seviye 3 sistemlerin yasal sorumluluğu karmaşıktır. Sistem aktifken üretici, sürücü müdahalesi gerektiğinde sürücü sorumlu olabilir.
SEVİYE 4

Seviye 4 - Yüksek Otomasyon

Seviye 4, belirli operasyonel tasarım alanı (ODD) içinde tam otonom sürüş sunar. Sistem kendi fallback'ini gerçekleştirir ve sürücü müdahalelesi gerekmez. Ancak sistem, sadece tasarlandığı koşullarda çalışır.

Geofenced Operations
Belirli coğrafi bölgelerde işlem. Waymo Phoenix'te belirli mahallerde robotaksi hizmeti.
360° Perception
Çoklu LiDAR, kamera ve radar ile tam çevre algılama. Ölü nokta olmayan sensör kapsamı.
Fleet Management
Bulut tabanlı filo yönetimi. Gerçek zamanlı haritalama güncellemeleri ve remote monitoring.
MRC Capability
Minimum Risk Condition: Sistem sorun yaşadığında güvenli bir yere park edebilme kabiliyeti.
Teknofest Deneyimi: Geliştirdiğimiz sistem Seviye 4 özellikler taşıyordu. Belirli bir parkur (ODD) içinde tam otonom çalışabiliyordu ve MRC protokolüne sahipti.
# Seviye 4 MRC (Minimal Risk Condition) Sistemi
class Level4MRCController:
    def __init__(self):
        self.mrc_locations = self.load_safe_zones()
        self.system_health = SystemHealthMonitor()
        
    def execute_mrc(self, failure_reason):
        # En yakın güvenli bölgeyi bul
        safe_location = self.find_nearest_safe_zone()
        
        # Acil durum ışıklarını aç
        self.activate_hazard_lights()
        
        # Güvenli parkura yönlen
        self.navigate_to_safe_zone(safe_location)
        
        # Fleet management'e bildir
        self.notify_operations_center(failure_reason)
        
        print("MRC executed: Vehicle safely stopped")
Gerçek Dünya Örnekleri
Waymo One: Phoenix'te geofenced robotaksi
Cruise: San Francisco'da (askıya alındı)
Baidu Apollo: Beijing'de sınırlı bölgelerde
Nuro: Teslimat araçları için
SEVİYE 5

Seviye 5 - Tam Otomasyon

Seviye 5, teorik olarak mükemmel otonom sürüştür. Sistem, insanın sürüş yapabileceği her yerde ve her koşulda çalışabilir. Direksiyon simidi, pedal gibi manuel kontroller bile gerekmez.

Gerçeklik Kontrolü: Seviye 5 tam otomasyon henüz mevcut değildir ve ne zaman gerçekleşeceği belirsizdir. Bu seviye, teorik bir hedeftir.
Universal ODD
Sınırsız operasyonel tasarım alanı. Her iklim, yol tipi ve trafik koşulunda çalışma.
AGI Level Intelligence
İnsan seviyesi genel zeka. Hiç görülmemiş senaryolarda bile optimal kararlar.
V2X Communication
Vehicle-to-Everything iletişim. Diğer araçlar, altyapı ve pedestrianlarla anlık veri paylaşımı.
Self-Maintenance
Kendi kendine bakım ve güncelleme. Yazılım ve donanım sorunlarını otomatik çözme.
Seviye 5'e Giden Zorluklar:
  • Edge Cases: Nadir durumların tamamının öngörülmesi
  • Etik Kararlar: Dilemma durumlarında ahlaki tercihler
  • Yasal Çerçeve: Küresel standart ve sorumluluk dağılımı
  • Teknolojik Sınırlar: Sensör limitasyonları ve işlem gücü
  • Sosyal Kabul: Toplumsal güven ve adaptasyon
Gelecek Projeksiyonları
Uzmanlar Seviye 5'in 2040-2050 arasında gerçekleşebileceğini tahmin ediyor. Ancak bu, birçok teknolojik ve sosyal faktöre bağlı.

Otonom Araçların Temel Teknolojileri

Otonom araçlar, birden fazla gelişmiş teknolojinin bir araya gelmesiyle çalışır. Bu bölümde, bu sistemlerin temelini oluşturan ana teknolojik bileşenleri inceleyeceğiz.

Computer Vision
Kameralar aracılığıyla görsel algılama. Nesne tanıma, şerit tespiti, trafik işareti okuma için kullanılır.
LiDAR Technology
Lazer tabanlı mesafe ölçümü. 3D nokta bulutu oluşturarak çevrenin hassas haritasını çıkarır.
Radar Systems
Radyo dalgalarıyla nesne tespiti. Hava koşullarından etkilenmez, hız ölçümünde etkilidir.
GNSS/GPS
Global konum belirleme. RTK-GPS ile santimetre hassasiyetinde konumlandırma sağlar.
IMU Sensörleri
İvmeölçer, jiroskop ve magnetometre. Aracın yönelim ve hareket bilgilerini sağlar.
AI/ML Algorithms
Derin öğrenme modelleri. YOLO, CNN, RNN gibi ağlarla nesne tanıma ve karar verme.

Sensör Füzyon ve Veri İşleme

Sensör füzyon, farklı sensörlerden gelen verilerin birleştirilerek daha güvenilir ve eksiksiz bir çevre algısı oluşturma sürecidir. Bu, otonom araçların güvenli çalışması için kritiktir.

# Genişletilmiş Kalman Filtresi ile Sensör Füzyon
import numpy as np
from filterpy.kalman import ExtendedKalmanFilter as EKF

class VehicleEKF(EKF):
    def __init__(self, dt):
        super().__init__(dim_x=4, dim_z=2)
        self.dt = dt
        
        # Durum geçiş matrisi
        self.F = np.array([[1, 0, self.dt, 0],
                          [0, 1, 0, self.dt],
                          [0, 0, 1, 0],
                          [0, 0, 0, 1]])
        
        # Ölçüm matrisi
        self.H = np.array([[1, 0, 0, 0],
                          [0, 1, 0, 0]])
        
        # Gürültü matrisleri
        self.Q *= 0.1  # Süreç gürültüsü
        self.R = np.eye(2) * 0.1  # Ölçüm gürültüsü
        
    def predict(self):
        # EKF prediction step
        self.x = np.dot(self.F, self.x)
        self.P = np.dot(self.F, np.dot(self.P, self.F.T)) + self.Q
        
    def update(self, gps_data, imu_data):
        # GPS ve IMU verilerini birleştir
        z = np.array([gps_data['x'], gps_data['y']])
        
        # EKF update step
        y = z - np.dot(self.H, self.x)
        S = np.dot(self.H, np.dot(self.P, self.H.T)) + self.R
        K = np.dot(self.P, np.dot(self.H.T, np.linalg.inv(S)))
        
        self.x = self.x + np.dot(K, y)
        self.P = self.P - np.dot(K, np.dot(self.H, self.P))
Teknofest Deneyimi: Projemizde GPS, IMU ve odometri verilerini EKF ile birleştirerek cm hassasiyetinde lokalizasyon elde ettik.
Sensör Füzyon Avantajları:
  • Redundancy: Bir sensör arızalandığında diğerleri devreye girer
  • Accuracy: Birden fazla kaynak daha doğru sonuç verir
  • Robustness: Çevresel koşullara karşı dayanıklılık artar
  • Coverage: Her sensörün güçlü olduğu alanlar birleştirilir
Sensör Karakteristikleri
Kamera: Yüksek çözünürlük, renk bilgisi, düşük maliyet | Işık bağımlı
LiDAR: 3D veri, hassas mesafe, ışık bağımsız | Yüksek maliyet, hava koşulları
Radar: Hava koşullarından etkilenmez, hız ölçer | Düşük çözünürlük
GPS: Global referans, mutlak konum | Sinyal kesintileri, multipath

Yol Planlama ve Navigasyon

Yol planlama, otonom araçların başlangıç noktasından hedefe güvenli ve verimli bir şekilde ulaşması için rota oluşturma sürecidir. Bu süreç üç ana seviyede gerçekleşir: Global, lokal ve motion planning.

# D* Lite Algoritması - Dinamik Yol Planlama
import heapq
from dataclasses import dataclass

@dataclass
class Node:
    x: int
    y: int
    g: float = float('inf')
    rhs: float = float('inf')
    
    def __lt__(self, other):
        return False

class DStarLite:
    def __init__(self, start, goal, grid):
        self.start = start
        self.goal = goal
        self.grid = grid
        self.U = []  # Priority queue
        self.nodes = {}
        self.km = 0
    
    def heuristic(self, a, b):
        return abs(a.x - b.x) + abs(a.y - b.y)
    
    def get_node(self, x, y):
        if (x, y) not in self.nodes:
            self.nodes[(x, y)] = Node(x, y)
        return self.nodes[(x, y)]
    
    def calculate_key(self, s):
        return [
            min(s.g, s.rhs) + self.heuristic(self.start, s) + self.km,
            min(s.g, s.rhs)
        ]
    
    def update_vertex(self, u):
        if u != self.goal:
            u.rhs = min([
                self.get_node(x, y).g + 1
                for (x, y) in self.neighbors(u)
                if self.is_free(x, y)
            ])
        
        # Priority queue'dan çıkar
        self.U = [item for item in self.U if item[1] != u]
        
        if u.g != u.rhs:
            heapq.heappush(self.U, (self.calculate_key(u), u))
    
    def compute_shortest_path(self):
        while self.U and (
            self.U[0][0] < self.calculate_key(self.start) or
            self.start.rhs != self.start.g
        ):
            k_old, u = heapq.heappop(self.U)
            
            if k_old > self.calculate_key(u):
                heapq.heappush(self.U, (self.calculate_key(u), u))
            elif u.g > u.rhs:
                u.g = u.rhs
                for (x, y) in self.neighbors(u):
                    self.update_vertex(self.get_node(x, y))
            else:
                u.g = float('inf')
                self.update_vertex(u)
                for (x, y) in self.neighbors(u):
                    self.update_vertex(self.get_node(x, y))
Hesaplama Karmaşıklığı: D* Lite gibi algoritmalar NP-hard problemlerdir. Gerçek zamanlı uygulamalarda heuristikler ve optimizasyonlar kritiktir.
Global Path Planning
A*, Dijkstra, D* gibi algoritmalarla coğrafi harita üzerinde optimal rota planlaması.
Local Path Planning
Dynamic Window Approach (DWA), Potential Fields ile yerel engel sakınma.
Motion Planning
RRT, PRM gibi sampling-based algoritmalarla kinematik kısıtlar altında hareket planlaması.
Behavioral Planning
Üst seviye karar verme. Şerit değiştirme, sollama, durakta bekleme gibi davranışlar.

Kontrol Algoritmaları ve Araç Dinamiği

Kontrol algoritmaları, planlanan rotanın fiziksel araç tarafından takip edilmesini sağlar. Bu süreç, araç kinematik ve dinamik modellerini dikkate alarak aktuatörlere (direksiyon, gaz, fren) komut gönderir.

# Pure Pursuit Algoritması ve Ackermann Kinematik
import math
from dataclasses import dataclass

@dataclass
class VehicleParams:
    L: float  # Dingil mesafesi (m)
    track: float  # İz genişliği (m)
    max_steer: float  # Max direksiyon açısı (rad)

def pure_pursuit_steer(px, py, yaw, gx, gy, params, Ld):
    """
    Pure Pursuit yönlendirme açısı hesaplama
    (px,py,yaw): araç pozisyonu ve yaw açısı  
    (gx,gy): hedef nokta
    Ld: look-ahead mesafesi
    """
    # Araca göre hedef nokta
    dx, dy = gx - px, gy - py
    
    # Gövde çerçevesine döndür
    x_l = math.cos(yaw) * dx + math.sin(yaw) * dy
    y_l = -math.sin(yaw) * dx + math.cos(yaw) * dy
    
    # Alpha açısı (hedef noktaya olan açı)
    alpha = math.atan2(y_l, x_l)
    
    # Pure Pursuit formülü
    delta = math.atan2(2.0 * params.L * math.sin(alpha), 
                      max(1e-6, Ld))
    
    # Direk