İÇİNDEKİLER
İçindekiler
Önsöz 5
Teşekkür 7
Sözlük 15
1. Giriş: Robotik ve ROS 17
2. Ubuntu İşletim Sistemi ve Linux Temelleri 25
2.1. Linux Nedir? Linux’un Kısa Bir Tarihçesi 25
2.2. Linux Dağıtımları 25
2.3. Ubuntu İşletim Sisteminin Kurulumu 26
2.4. Kullanıcı Arayüzleri 32
2.5. Sistemle İlgili Temel Bilgileri Edinme 33
2.5.1. whoami 33
2.5.2. hostname 33
2.5.3. lscpu 33
2.5.4. uname 34
2.5.5. lsb_release 34
2.5.6. pwd 34
2.5.7. printenv 34
2.6. Linux Dosya Yapısı 35
2.7. Linux’te Dosya İşlemleri 36
2.7.1. Klasör Oluşturmak ve Klasör Değiştirmek 36
2.7.2. Boş Dosya Oluşturmak: Touch 36
2.7.3. Dosya Listeleme: ls 36
2.8. Metin Dosyalarını Oluşturma ve Görüntüleme 37
2.8.1. nano Metin Editörü 37
2.8.2. cat 37
2.8.3. more ve less 38
2.8.4. head ve tail 38
2.8.5. echo 38
2.9. Standart Akışlar 39
2.9.1. tee 39
2.9.2. Yönlendirme (Redirection) 40
2.10. Düzenli İfadeler (Regular Expressions) 42
2.10.1. tr 42
2.10.2. grep 43
2.11. Yardımcı Komutlar ve Programlar 43
2.11.1. Dosya Aramak: find 44
2.11.2. cut 44
2.11.3. Komutlar ve Programlar ile İlgili Bilgi Edinme: man ve info 44
2.11.4. alias 45
2.11.5. history 45
2.12. Bash’te Değişkenler 46
2.12.1. export 47
2.12.2. .bashrc Dosyası 47
2.13. Bash’te Programlama 48
2.13.1. source 49
2.14. Ubuntu’da Kullanıcı İşlemleri 49
2.14.1. Süper Kullanıcı (root) 49
2.14.2. Yeni Kullanıcılar Eklemek 50
2.14.3. Başka Bir Kullanıcıya Geçmek 50
2.14.4. Kullanıcıları Silmek 51
2.15. Dosya ve Kullanıcı İzinleri 51
2.15.1. chgrp 51
2.15.2. chown 52
2.15.3. chmod 52
2.16. Ubuntu’da Prosesler (Süreçler) 54
2.16.1. ps ve top komutları 55
2.16.2. kill 56
2.17. Ubuntu’da Paket İşlemleri 58
2.18. XML ve YAML İşaretleme Dilleri 59
2.18.1. XML 59
2.18.2. YAML 60
3. Python Programlama Diline Giriş 63
3.1. Programlama Dilleri Nedir? Python Programlama Dilinin Özellikleri Nelerdir? 63
3.2. rospy Kütüphanesi 64
3.3. Python Betiklerinin Linux Ortamında Geliştirilmesi 64
3.4. Python’da Operatörler, Data Türleri ve Değişkenler 65
3.5. Python’da Birleşik Data Türleri 67
3.6. Boolean Operatörler ve Kıyaslamalar 70
3.7. Koşul (if) İfadeleri 70
3.8. Döngüler (for ve while ifadeleri) 71
3.9. Fonksiyonlar 73
3.10. Python’da Hatalar 73
3.11. Python’da Nesne Yönelimli Programlama 75
3.12. Python’da Modüller 77
3.13. Python Paketlerinin Kurulması 79
3.14. Python içim Sanal Ortamlar 80
4. ROS, ROS Dağıtımları ve ROS Kinetic Kame Kurulumu 83
4.1. ROS dağıtımları ve Kinetic Tanıtım 83
4.1.1. Sürüm Yayımlanma Çizelgesi 85
4.1.2. Hangi Dağıtımı Kullanmalıyım? 85
4.1.3. Topluluk – Community Level 85
4.1.4. ROS Kinetic 86
4.1.5. ROS Kurulumu 86
4.2. ROS Kurulumu 88
4.2.1. Kurulum 88
4.3. Robot Operating System (ROS) 89
4.3.1. ROS Dosya Yapısı 90
4.3.2. ROS Kavramlarının Anlaşılması 91
4.3.3. Roscore 93
4.4. ROS Ortamının Hazırlanması 94
4.4.1. ROS Çalışma Alanı Yaratma Ve Ortamın Yönetilmesi 94
4.4.2. catkin_make Kullanma 96
4.4.3. Bir Catkin Paketini Ne Oluşturur? 97
4.4.4. Bir Catkin Çalışma Alanındaki Paketler 97
5. ROS Paketi Oluşturma, Yayıncı–Abone Örneği ve Yardımcı Komutlar 99
5.1. ROS Paketinin Yaratılması 99
5.1.1. Paketin Özelleştirilmesi 102
5.1.2. Yeni Paketin Derlenmesi ve Oluşturulması 104
5.2. Basit Bir Yayıncı ve Abone Düğümünün Yazılması 107
5.2.1. Hazırlık 107
5.2.2. Yayıncı Düğümünün Yaratılması 107
5.2.3. Abone Düğümünün Yaratılması 112
5.3. Yardımcı ROS Komutları 114
5.3.1. rosnode 114
5.3.2. rosrun 115
5.3.3. Roslaunch 117
5.4. Düğümlerin Çalıştırılması 119
5.5. ROS msg Yaratılması 122
5.5.1. Özel Mesaj Yaratma 123
6. ROS Paketi Oluşturma, Servis–İstemci Örneği ve Yardımcı Komutlar 125
6.1. Basit Bir Servis ve İstemci Düğümünün Yazılması 125
6.1.1. Ön Şartlar 125
6.1.2. Servis Düğümünün Oluşturulması 127
6.1.3. İstemci Düğümünün Oluşturulması 134
6.1.4. Düğümlerin Çalıştırılması 139
6.2. rosservice ve rosparam Araçları 140
6.2.1. rosservice Kullanımı 141
6.2.2. rosparam Kullanımı 142
6.3. Özel Servis Yaratılması 144
7. ROS Dosya Sistemi, ROS QT Arayüzü, ROSBag, Rviz 147
7.1. Ros Dosya Sisteminde Gezinme 147
7.1.1. Dosya Sistemi Kavramları 147
7.1.2. Dosya Sistemi Komutları 147
7.2. ROS'ta Dosyaları Düzenlemek Için Rosed Kullanımı 150
7.3. ROS QT arayüzü RQT 151
7.3.1. rqt_console ve rqt_logger_level 152
7.3.2. rqt_graph 154
7.3.3. rqt_plot Kullanma 155
7.4. rosbag ile Verileri Kaydetme ve Oynatma 157
7.4.1. Tüm Yayınlanan Konuları Kaydetme (bag Dosyası Oluşturma) 157
7.4.2. bag Dosyasını Inceleme ve Oynatma 159
7.4.3. Sadece İstenilen Konuları Kaydetme 160
7.4.4. Rosbag Kayıt / Oynatma Sınırlamaları 161
7.5. ROS Görselleştirme Arayüzü – rviz 161
8. Gezgin Robot Alan Süpürme Senaryosunun Kodlanması 165
8.1. Temizlik Robotu Simülasyon Ortamının Oluşturulması 166
8.1.1. Ön Şartlar 166
8.1.2. Temizlik Robotu Simülasyon Ortamının Çalıştırılması 167
8.2. Temizlik Robotu Paketinin Oluşturulması 170
8.2.1. Temizlik Robotu Mesafe Hesaplama Düğümünün Oluşturulması 174
8.2.2. Temizlik Robotu Engelden Sakınma Düğümünün Oluşturulması 183
8.2.3. Temizlik Robotu Bilgi Servisi Düğümünün Oluşturulması 192
8.2.4. Temizlik Robotu Süpürme Düğümünün Oluşturulması 197
8.2.5. Paket Launch Dosyasının Oluşturulması 218
8.2.6. Düğümlerin Çalıştırılması 219
8.2.7. Düğümler Üzerinde Uygulamalar 230
Kaynakça 241
Kavramlar Dizini 243 |