ROS + OpenCV Şerit Tespiti

USB kamera akışından gerçek zamanlı şerit algılama ve yönlendirme sinyali üretimi — Teknofest Robotaksi prototipi

ROS + OpenCV lane detection — genel görünüm
ROI ve Canny sonrası kenar görüntüsü
Hough çizgileri ve şerit merkez çizgisi
PID’e gönderilen steering açısı overlay

Proje Bilgisi

  • Kategori: Bilgisayarlı Görü / Otonom Sürüş
  • Bağlam: Teknofest Robotaksi için gerçek zamanlı prototip
  • Girdi: USB kamera veya ROS kamera sürücüsü
  • Çıktı: Şerit maskeleme & yönlendirme açısı (PID’e uygun)
  • Platform: ROS (Ubuntu), OpenCV

ROS OpenCV Python C++ Canny Hough PID

Mimari & Algoritma Boru Hattı

Sistem, klasik OpenCV tabanlı bir şerit tespiti yaklaşımıyla gerçek zaman performans hedefler. Tipik akış aşağıdaki adımlardan oluşur:

  1. ROI (Region of Interest): Yolun ilgi bölgesi maskeleme (alt üçgen/poligon).
  2. Ön işleme: Gri tonlama, Gauss bulanıklaştırma, dinamik eşikleme.
  3. Kenar çıkarımı (Canny): Aday çizgi kenarlarının çıkarımı.
  4. HoughLinesP: Sağ/sol şerit adaylarının hat segmentleri olarak bulunması.
  5. Simetri & birleştirme: Çizgilerin filtrelenmesi, eğim/süreklilik ile birleştirme.
  6. Yön açısı tahmini: Şerit merkezine göre sapma ve steering_angle üretimi.
  7. İsteğe bağlı düzeltmeler: Zaman penceresinde yumuşatma, jitter azaltma.
Not: Konu adları (topic), düğüm isimleri ve parametre dosyaları depo içinde tanımlıdır; burada verilenler genel şablondur. Depodaki launch ve/veya param dosyalarıyla özelleştirilebilir.

Örnek ROS Konuları

  • /camera/image_raw – Giriş görüntüsü
  • /lane/overlay – Tespit edilen şerit overlay’i (isteğe bağlı)
  • /lane/steering_angle – Yönlendirme açısı (float)
  • /lane/pid – PID kontrol girdisi (opsiyonel)

Örnek Parametreler

ParametreAçıklamaÖrnek
canny_lowKenar alt eşiği50
canny_highKenar üst eşiği150
hough_thresholdHough oy eşiği30
minLineLengthMinimum çizgi uzunluğu25
maxLineGapÇizgi birleştirme boşluğu20
roi_verticesİlgi bölgesi çokgenialt üçgen
smoothing_windowAçı yumuşatma penceresi5
Kesin parametre isimleri için depo içeriğine bakınız.

Kurulum (Örnek)

# ROS & bağımlılıklar (örnek: Noetic / Ubuntu 20.04)
sudo apt update
sudo apt install ros-noetic-desktop-full python3-opencv

# Çalışma alanı
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src

# Depoyu ekle
git clone https://github.com/mr-ozdemir/Lane-detection-with-Opencv-in-Ros.git

# Derleme (varsa C++ düğümleri için)
cd ..
catkin_make
source devel/setup.bash
              

Çalıştırma (Örnek)

# Kamera sürücünüzü başlatın (örnek)
roslaunch usb_cam usb_cam-test.launch

# Lane tespiti - launch dosyası varsa:
roslaunch lane_detection lane_detection.launch

# veya tek düğüm çalıştırma (depo yapısına göre):
rosrun lane_detection lane_node.py
# ya da
rosrun lane_detection lane_node
              
Komutlar depo yapısına göre değişebilir; depodaki README/launch dosyalarına göre uyarlayın.

Notlar & Olası Geliştirmeler

  • Farklı ışık/zemin koşulları için ROI ve kenar/çizgi eşikleri sahaya göre ayarlanmalıdır.
  • FPS/latency hedefleri çözünürlüğe ve donanıma bağlıdır; 640×480 ile daha stabil gerçek zaman performans alınır.
  • Gelecekte segmentasyon tabanlı yaklaşımlar (örn. U-Net, ENet) ile klasik yöntem hibrit edilebilir.
  • ROS2 portu ve donanım ivmelendirme (GPU/OpenCL) planlanabilir.