Hoş geldiniz! Bu workshop ROS2 (Robot Operating System 2) öğrenmek için sıfırdan hazırlanmış kapsamlı bir eğitim içeriğidir.
Bu eğitim, ROS2'yi hiç bilmeyenlerden başlayarak, gerçek robotik uygulamalar geliştirebilecek seviyeye ulaşmanızı sağlamayı amaçlar.
- 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++)
# 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📁 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.
📁 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
📁 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ı
📁 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
📁 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ı
📁 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
📁 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ı
📁 src/lesson07_custom_msgs
Kendi mesaj tiplerinizi oluşturma.
- Message tanımlama (
.msg) - Interface package oluşturma
- Custom message kullanımı
📁 src/lesson08_custom_srvs
Kendi service tiplerinizi oluşturma.
- Service tanımlama (
.srv) - Request ve Response yapıları
- Custom service kullanımı
📁 src/lesson09_custom_actions
Kendi action tiplerinizi oluşturma.
- Action tanımlama (
.action) - Goal, Result ve Feedback yapıları
- Custom action kullanımı
📁 src/lesson10_tf2
Robot koordinat sistemleri ve dönüşümler.
- TF2 nedir?
- Static transform publisher
- Dynamic transform broadcaster
- Transform listener
- Koordinat sistemi ağacı
📁 src/lesson11_urdf
Robot modellerinin tanımlanması.
- URDF nedir?
- Link ve Joint kavramları
- Visual ve Collision mesh'leri
- XACRO kullanımı
- Robot State Publisher
📁 src/lesson12_gazebo
Robot simülasyonu ve test ortamı.
- Gazebo entegrasyonu
- SDF ve World dosyaları
- Plugin'ler
- Sensor simülasyonu
- Spawn ve kontrol
📁 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
📁 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
- Her dersi sırayla takip edin
- Her ders klasöründe bulunan
README.mddosyasını okuyun - Verilen egzersizleri çözün
- Solution'lar ayrı bir branch'te (
solutionbranch) verilecektir - Kendi çözümünüzü yazdıktan sonra solution ile karşılaştırın
# 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.mdHer ders için:
- 📚 Okuma: Ders README'sini okuyun
- 💻 Kod İnceleme: Örnek kodları inceleyin
- ✏️ Egzersiz: Verilen egzersizleri çözün
- 🧪 Test: Kodunuzu test edin
- 🔍 Karşılaştırma: Solution branch'teki çözümle karşılaştırın
- 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
İ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.