Özgür Adem Işıklı Özgür Adem Işıklı Software Developer Resume Contact

Software Developer

ROS - Robot Operating System Nedir?

Öncelikle ROS’u kısaca tanımlamaya çalışacağım;

  • Robotlar için bir işletim sistemidir.
  • Paketler için bir koleksiyondur ve yazılım derleme aracı olarak kullanılmaktadır.
  • Dağıtılmış işlemler/makineler arası iletişim ve yapılandırma için bir mimaridir.
  • Sistemin çalışma ve analiz aşamaları için geliştirme aracı olarak kullanılabilir.
  • Dil bağımsız bir mimariye sahiptir. Aynı robot üzerinden birçok farklı dil kullanılabilir. (c++, python, lisp, java)

ROS Ne Değildir?

  • Gerçek bir işletim sistemi değildir.
  • Bir programlama dili değildir.
  • Geliştirme ortamı/IDE değildir.

ROS Dağıtımları

  • ROS Fuerte Turtle
  • ROS Electric Emys
  • ROS Diamondback
  • ROS C Turtle
  • ROS Box Turtle

ROS ve Komponentleri

ROS Core

ROS Master,

  • Merkezi XML-RPC sunucusudur.
  • Bağlantıların iletişimi sağlamaktadır.
  • Sabit konfigürasyon parametreleri ya da diğer keyfi verileri kaydeder.
  • Aslında, insanların anlayabileceği dilde mesajları barındırran ağ tabanlı bir yapıdır.

ROS Stacks & Packages

ROS kodu iki farklı seviye içerisinde gruplanmıştır;

  • Packages
  • Stacks

Packages, ROS’a çok küçük bir bağımlılıklar bağlanmış yazılım koleksiyonlarıdır. Stacks ise bu ufak parçaların bir araya gelerek oluşturduğu dağıtıma verilen isimdir.

Packages

  • Kodlarınızı, build yapılandırmasınızı ve launch dosyalarınızı barındıran bir dizindir.
  • Birden fazla node içerebilir.
  • İçerisinde manifest.xml adında bağımlılıkların tanımlandığı bir konfigürasyon dosyası barındırır.
  • Sadece paketin amacı ile ilgili kodları içerir.

Nodes

  • Bazı fonksyionları yerine getiren yapılardır.
  • Diğer Topic ve Servicesler ile haberleşebilir.
  • Node isimleri benzersizdir.
  • Node yapısı, iyi ayrılmış, skale edilebilir bir yapının oluşturulması için vardır.

Build System

  • Kodların nasıl derleneceğinin belirtildiği CMakelist.txt dosyasına ihtiyaç duymaktadır.
  • rosmake komutu paket ve bağımlılıkları derler.
  • Eğer bağımlılıklar indirilmemişse, indirilir ve kurulur.
  • Aynı anda birden fazla paket derlenebilir. ROS önce bağımlılıkları çözer.

Komut Satırı

ROS aşağıdaki bazı komutları içerisinde barındırır;

  • roscd: ROS paketi dizinine geçer.
  • rosls: Paket içeriğini listeler.
  • rosmake: Paketi derler.
  • roscreate-pkg: Yeni bir paket oluşturur.
  • rosdep: Paket bağımlılıklarını listeler.
  • roscp: Paketler arası kopyalama işlemi gerçekleştirir.
  • rostest: Test dosyalarını çalıştırır.

İletişim Yolları

Topic (Pub/Sub)

  • Asenkron iletişimler için kullanılır.
  • İçerisinde güçlü mesaj tipleri barındırır.
  • Callback fonksyionlara sahiptir, bu sayede mutli-thread çalışabilir.
  • İstek/cevap etkileşimleri için uygun değildir.
  • Çoktan-Çoka bağlantılar için uygundur.

Service (Higher Priority)

  • Standart fonksiyonlar gibi, senkron olarak kullanılır.
  • Güçlü mesaj tiplerini içerisinde barındırır.
  • Bire-bir iletişim için uygundur.
  • Birden fazla istemciler olabilir.
  • Servis çağrıları boyunca Topic Callback fonksyionları herhangi bir sorun teşkil etmez.

Actions

  • Topic yapısının üzerine inşaa edilmiştir.
  • Uzun işlemler gerçekleştirilmesi için kullanılır.
  • İptal edilebilir.

Messages

  • Node iletişimi mesaj gönderimi üzerine kuruludur.
  • Mesajlar, özel tipli alanlardan oluşan bir veri yapısından ibarettir.
  • ROS içerisinde birçok hazır mesaj standartı vardır ve özel olarak buna yenileri eklenebilir.

What About Comments?

I do not use any comment system such as Disqus because of user's privacy. If you want to discuss something about this post, you may open an issue on the repo.

You may check what is the problem with Disqus;