Skip to content

SUBU-AISET/tetra_workshop

Repository files navigation

ROS2 Kapsamlı Eğitim Workshop

Hoş geldiniz! Bu workshop ROS2 (Robot Operating System 2) öğrenmek için sıfırdan hazırlanmış kapsamlı bir eğitim içeriğidir.

🎯 Eğitimin Amacı

Bu eğitim, ROS2'yi hiç bilmeyenlerden başlayarak, gerçek robotik uygulamalar geliştirebilecek seviyeye ulaşmanızı sağlamayı amaçlar.

📋 Ön Gereksinimler

  • Ubuntu 22.04 (önerilen)
  • ROS2 Humble (veya daha yeni bir dağıtım)
  • Python 3.10+ veya C++ 17
  • Temel Linux komut satırı bilgisi
  • Temel programlama bilgisi (Python veya C++)

🔧 Kurulum

# ROS2 Humble kurulumu (Ubuntu 22.04 için)
sudo apt update && sudo apt install -y software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
sudo apt install -y ros-humble-desktop

# Geliştirme araçları
sudo apt install -y python3-colcon-common-extensions python3-rosdep
sudo rosdep init
rosdep update

# Workspace'i build etme
cd ~/dev_ws/workshop_ws
colcon build
source install/setup.bash

📚 Ders İçeriği

Başlangıç

Ders 0: ROS2 Package Oluşturma 🎁

📁 src/lesson00_create_package

ROS2'de paket oluşturma ve workspace yönetimi.

  • Package nedir?
  • Python ve C++ paket oluşturma
  • package.xml ve setup.py yapısı
  • Build sistemi (colcon)
  • Dependency yönetimi

Bu dersi mutlaka ilk tamamlayın! Diğer dersler için temeldir.


Temel Seviye

Ders 1: ROS2 Temelleri ve İlk Node

📁 src/lesson01_basics

İlk ROS2 node'unuzu oluşturacak, ROS2'nin temel kavramlarını öğreneceksiniz.

  • ROS2 nedir?
  • Node kavramı
  • Package yapısı
  • İlk Python ve C++ node'larınız

Ders 2: Publisher ve Subscriber

📁 src/lesson02_pubsub

ROS2'nin en temel iletişim mekanizması olan topic'leri öğreneceksiniz.

  • Topic nedir?
  • Publisher oluşturma
  • Subscriber oluşturma
  • QoS (Quality of Service) ayarları

Ders 3: Service ve Client

📁 src/lesson03_services

İstek-yanıt (request-response) modeli ile senkron iletişim.

  • Service nedir?
  • Service Server oluşturma
  • Service Client oluşturma
  • Senkron vs Asenkron çağrılar

Ders 4: Action Server ve Client

📁 src/lesson04_actions

Uzun süren görevler için feedback mekanizması.

  • Action nedir?
  • Action Server oluşturma
  • Action Client oluşturma
  • Feedback ve cancel mekanizması

Orta Seviye

Ders 5: Parameters ve Dynamic Reconfigure

📁 src/lesson05_parameters

Node'ların runtime'da yapılandırılması.

  • Parameter nedir?
  • Parameter tanımlama ve kullanma
  • YAML dosyalarından parameter yükleme
  • Dynamic reconfigure

Ders 6: Launch Files

📁 src/lesson06_launch

Birden fazla node'u organize bir şekilde başlatma.

  • Launch file nedir?
  • Python launch dosyaları
  • XML launch dosyaları
  • Parameter, remapping ve namespace kullanımı

Ders 7: Custom Messages

📁 src/lesson07_custom_msgs

Kendi mesaj tiplerinizi oluşturma.

  • Message tanımlama (.msg)
  • Interface package oluşturma
  • Custom message kullanımı

Ders 8: Custom Services

📁 src/lesson08_custom_srvs

Kendi service tiplerinizi oluşturma.

  • Service tanımlama (.srv)
  • Request ve Response yapıları
  • Custom service kullanımı

Ders 9: Custom Actions

📁 src/lesson09_custom_actions

Kendi action tiplerinizi oluşturma.

  • Action tanımlama (.action)
  • Goal, Result ve Feedback yapıları
  • Custom action kullanımı

İleri Seviye

Ders 10: TF2 ve Transform

📁 src/lesson10_tf2

Robot koordinat sistemleri ve dönüşümler.

  • TF2 nedir?
  • Static transform publisher
  • Dynamic transform broadcaster
  • Transform listener
  • Koordinat sistemi ağacı

Ders 11: URDF ve Robot Modelleme

📁 src/lesson11_urdf

Robot modellerinin tanımlanması.

  • URDF nedir?
  • Link ve Joint kavramları
  • Visual ve Collision mesh'leri
  • XACRO kullanımı
  • Robot State Publisher

Ders 12: Gazebo Simülasyon

📁 src/lesson12_gazebo

Robot simülasyonu ve test ortamı.

  • Gazebo entegrasyonu
  • SDF ve World dosyaları
  • Plugin'ler
  • Sensor simülasyonu
  • Spawn ve kontrol

Ders 13: Computer Vision ve OpenCV

📁 src/lesson13_opencv

Görüntü işleme ve computer vision.

  • cv_bridge kullanımı
  • Kamera node'ları
  • Görüntü işleme (filtering, detection)
  • ROS2 ile OpenCV entegrasyonu

Proje

Ders 14: Mobil Robot Projesi

📁 src/lesson14_project

Öğrendiklerinizi birleştirerek gerçek bir proje geliştirme.

  • Mobil robot simülasyonu
  • Autonomous navigation
  • Obstacle avoidance
  • Computer vision entegrasyonu
  • Tüm kavramların entegrasyonu

🚀 Nasıl Kullanılır?

  1. Her dersi sırayla takip edin
  2. Her ders klasöründe bulunan README.md dosyasını okuyun
  3. Verilen egzersizleri çözün
  4. Solution'lar ayrı bir branch'te (solution branch) verilecektir
  5. Kendi çözümünüzü yazdıktan sonra solution ile karşılaştırın

🔐 Solutions Klasörü

# Solution'ları görüntüle
ls solutions/

# Bir egzersizin çözümünü görüntüle
cat solutions/lesson01_basics/exercise_greeting_node.py

# Detaylı kullanım rehberi
cat solutions/README.md
cat solutions/README_USAGE.md

📖 Öğrenme Yöntemi

Her ders için:

  1. 📚 Okuma: Ders README'sini okuyun
  2. 💻 Kod İnceleme: Örnek kodları inceleyin
  3. ✏️ Egzersiz: Verilen egzersizleri çözün
  4. 🧪 Test: Kodunuzu test edin
  5. 🔍 Karşılaştırma: Solution branch'teki çözümle karşılaştırın

🔗 Faydalı Kaynaklar

📝 Notlar

  • Her derste hem Python hem de C++ örnekleri bulunmaktadır (Python ağırlıklı)
  • Solution dosyaları solutions/ klasöründe mevcuttur
  • Egzersiz dosyaları (exercise_*.py) boş bırakılmıştır - siz dolduracaksınız!
  • Sorularınız için issue açabilirsiniz

🎓 Başarılar!

İyi öğrenmeler! ROS2 dünyasına hoş geldiniz! 🤖


Not: Bu eğitim ROS2 Humble dağıtımı için hazırlanmıştır. Diğer dağıtımlarda küçük farklılıklar olabilir.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors