ROS (Robot Operating System) Robot işletim Sistemi anlamına gelmektedir. Bilgisayar üzerinden  robot ve robotlarımızı  kontrol etmemizi sağlayan BDS lisanslı, açık kaynak kodlu bir yazılım sistemidir. ROS ‘u kullanabilmeniz için Linux tabanlı bir işletim sistemine ihtiyacınız olacaktır. Açık kaynak kodlu Ubuntu işletim sistemini kullanabilirsiniz.

İşletim sistemi ve çerçeve, ROS’un arkasında olan kavramlardır ve pek çok işe yaramaktadırlar. Bir hayli karmaşık olan bu kavramların ne olduğu, ne zaman ve nasıl kullanıldığını sizlere aktaracağız.

Neden ROS?

Bir mühendislik öğrencisi, bir gün yeni bir robot projesine başladı. Proje üzerinde planlama ve çalışmalar yaparken, bu işin aslında hiç de basit olmadığını fark etti.İyi bir robot için iyi bir yazılımın geliştirilmesi gerekiyordu ve robotik öğrenmek oldukça zordu. Bu sebeple, tüm programlar arasında nasıl iletişim kurulacağı, robotun 3B simülasyonunun nasıl uygulanabileceği üzerinde çalışmaya başladı. Projesinin sonuna geldiğinde hiçbir ilerleme kaydedemedi ve inancını da kaybetmeye başladı. Tüm enerjisini robotik çerçeve üzerine harcadı ve bu yüzden asıl proje üzerinde az çalışmış oldu.

Birkaç hafta sonra, bir başkası yeni bir proje üzerinde çalışmaya başlayıp çalışmasını başarısızlıkla sonlandırır. Ve bu hep böyle devam eder. Dolayısı ile; robot yazılımı geliştirme işinde çalışan kişiler aslında robotik uygulamalar geliştirmiyor. Bu durum, robotik araştırma ve geliştirmeyi yavaşlatan ana etkenlerden biridir ve ROS bu sorun üzerinde çözümler sunmaktadır.

ROS wiki sitesinde bulunan bir çok dökümalardan faydalanarak kendinizde bir proje gerçekleştirebilirisiniz.

Robot İşletim Sistemi Ana Hedefi

ROS, deyim yerinde ise tekerleğin yeniden icat edilmesine izin vermez. Tekerleği yeniden icat etmek, yenilikçi uygulamaların ortaya çıkmasına karşı en büyük engellerden bir tanesidir.

ROS’un hedefi, herhangi bir robotta kullanılabilecek olan robot yazılım geliştirme için standartları belirlemektedir.  İster mobil bir robot olsun, ister robot bir kol olsun, ister bir drone, tekne, otomat ya da bir programlama makinesi olsun, robot işletim sistemi kullanılabilmektedir.

Her yeni bir uygulamaya başlandığında, ROS yeniden öğrenilmek zorunda değildir ve ayrıca başka birileri tarafından geliştirilen mevcut olan bir ROS projesine kolaylıkla geçilebilmektedir. Her robotik uygulamanın en baştan; sıfırdan geliştirildiği ve her defasında farklı bir kod tabanına sahip olduğu zamanlar nihayet sona ermiş bulunmaktadır. Bu standart, her şeyin kişiler tarafından kendi kendine yapılmasının yanında mevcut olan temellerin kullanılmasına olanak sağlar ve geliştirilecek olan uygulamanın temel özelliklerine odaklanılmasına yardımcı olur.

ROS Nedir?

İlk olarak ROS’un ne olmadığı anlatmak ile başlayalım:

Robot İşletim Sistemi ismine rağmen bir işletim sistemi değildir ve de gerçekten bir çerçeve değildir. ROS; mevcut olan bir işletim sistemine dayanmakta olan düşük seviyeli, çerçeve gibi bir katman yazılımdır. ROS için desteklenen ana işletim sistemi Ubuntu’dur. Kullanılabilmesi için ROS3un işletim sistemine kurulması gerekmektedir.

Robot işletim sistemi temel olarak iki şeyden oluşur:

  • İletişim araçları ile bir çekirdek (katman yazılım)
  • Bir dizi tak ve çalıştır kitaplığı

Katman Nedir?

Temel olarak bir katman yazılımı, dağıtılmış olan bir sistemdeki programlar arasındaki iletişimi sağlamaktan sorumludur.

Yeni bir yazılım geliştirir iken aşağıdakileri seçebilirsiniz:

  • Her şeyi tek bir blokta derleyen ve çalışan bir kod tabanı geliştirin
  • Uygulamanızın her bir alt görevi / işlevi için alt programlar oluşturun

Hiç şüphesiz, ikinci seçenek bir robotik yazılım geliştirirken en iyisidir. Uygulamanızın bir bölümünü geliştirmeniz ve uygulamanın tamamı olmadan çalıştırmanız gerekmektedir. Yani, şimdi bir çok küçük modül yazıyorsunuz ve birbirleriyle iletişim kurmaları gerekiyor. ROS çekirdek bunu yapmanıza yardımcı olmak için vardır.

ROS Çekirdek ve İşletim Sistemi Araçları

ROS ile kod tabakaları kolaylıkla düğüm adı verilen küçük programlar içeren paketlere ayrılabilmektedir. Bu programların birbirleri ile iletişim kurması ise ROS 3 ana iletişim aracıyla sağlanmaktadır:

  • Başlıklar: bunlar, esas olarak düğümler arasında veri akışı göndermek için kullanılmaktadır. Örneğin; robotun motor sıcaklığını izliyorsunuz, bu motoru izleyen düğüm, sıcaklıkla birlikte bir veri akışı göndermektedir. Artık başka herhangi bir düğüm bu konuya abone olabilir ve verileri alabilir.
  • Hizmetler: düğümler arasında basit bir senkronize istemci yani sunucu iletişimi yaratılmasına izin vermektedir. Robotlardaki bir ayarı değiştirmek için oldukça kullanışlıdır ve belirli bir işlem yapılmak istendiğinde serbest sürüş modu etkinleştirilir ve belirli veriler istenebilir.
  • İşlemler: biraz daha karmaşık konulara dayanmaktadır. Örneğin; robotun yeni bir konuma getirmek için eş zamansız istemci yani sunucu mimarisi sunmaktadırlar. İstemci, sunucunun durumunu eş zamansız olarak izleyebilir ve isteği istediği zaman iptal edebilir.

Bu iletişim araçlarını kullanmak için kodlardaki uygun kitaplıklar kullanılmalıdır ve belirli mesajlar tanımlanmalıdır. ROS ortamında, parametreler adı verilen bazı genel ayarlar da oluşturulabilmektedir. Böylelikle, birden fazla düğüm, robotik uygulamadaki herhangi bir yerden aynı ayar grubuna erişebilmektedir. Aynı zamanda, tam uygulama başlatma dosyası adı verilen tek bir XML dosyası ile başlanabilmektedir.

ROS ayrıca kullanımı oldukça kolay olan eksiksiz bir kayıt sistemi içermektedir. Tüm bu özellikler ile, dağıtık bir sistem geliştirmek için ihtiyaç duyulan her şeye sahip olunmaktadır. Uygulamalar birçok pakete bölünür ve her pakette bazı bağımsız düğümler bulunur. Düğümler oluşturulduktan sonra konuları, hizmetleri ve eylemler kullanılarak birbirleri ile iletişim kurması sağlanır.

ROS yazılım Dilleri

Robot İşletim Sistemi, esas olarak iki dil kullanılarak geliştirilmiştir. Bunlar; C ++ ve Python. Bu diller, robotik uygulamalar geliştirilirken en çok tercih edilmekte olan ve kullanılan dillerdir. C++ kodu yazmak için roscpp kütüphanesini ve python kodu yazmak için rospy kütüphanesini kullanılmaktadır. Java için rosjava ve JavaScript için roslibjs veya rosnodejs gibi diğer dillerle köprü yapmak için bazı kütüphaneler de bulunmaktadır.

ros yazılımları

Peki ROS kullanmak için hangi diller kullanılmalıdır? Ve birkaç dil var ise hangileri birbirleri ile uyumludur?

ROS’un dille agnostik olduğu bilinmelidir. Bu yazılan alt programlar yani düğümler herhangi bir dilde yazılabileceği anlamını taşımaktadır. Böylelikle, başvuru python yazılmış bir düğüme C++ ile yazılmış bir düğümle iletişim kurulabilmektedir. Bunun nedeni ise; iletişim katmanının dil seviyesinin altında olmasıdır. Bir katman yazılımı olarak çalıştığı için ROS, düğümler arasında iletişim kurmak için standart TCP/IP soketlerini kullanır.

ROS Kütüphaneleri

ROS, bir dizi temel özellik ve iletişim araçları ile bitmiyor. Bundan çok daha fazlası bulunmaktadır. Aslında, büyük miktarda mevcut ROS kitaplığı, doğrudan kodlarda kullanılabilmektedir. Bu kütüphaneler, kullanıcılarını pek çok yönden yardımcı olmaktadır.

Bir mobil robot için bir yazılım geliştirildiğini hayal edin. Bu robotta ne geliştirileceği planlanırken aşağıdakiler listelenebilir:

  • Motor sürücüsü
  • Hareket planlama
  • Kamara sürücü
  • PID kontrol döngüsü
  • 3B görselleştirme

Çok fazla işlev eklenmek istendiğinde, liste oldukça uzayabilir ve bu listedeki her öğe çok fazla zaman gerektirebilir. Kalabalık bir ortamda, hareketli engelleri olan bir hareket planlama algoritması nasıl geliştirilir? Kısa bir süre için, kameranın donanım sürücüsü geliştirilirken 3B simülasyon aracı nasıl geliştirilir?

Tüm sorunlar Robot İşletim Sistemi ile yüzde 90 çözülmektedir. Robot bilimindeki yaygın geliştirme bloklarının çoğu için açık kaynaklı bir ROS paketi bulunabilmektedir. Bu, açık kaynaklı yazılım büyüsü! Birileri güzel bir paket geliştirdiğinde, onu yayınlayabilir ve toplulukla paylaşabilir. Ve sonrasında, başkaları da kullanabilir ve erdemli bir çevre oluşturarak onu geliştirebilir.

Şimdi paketlere yani kütüphanelere geri dönelim:

  • Birçok motorda ve kamerada mevcut bir ROS sürücüsü veya en azından sıfırdan başlamayı önlemek için kullanılabilecek bir şey bulunmaktadır.
  • Robotun ana kontrol döngüsü için ros_control kullanın.
  • Robotun 3B modelini temsil etmek için basitçe URDF formatı ile XML kullanarak tanımlayın.
  • Yol ve hareket planlaması için Moveit kullanın. Moveit önceden oluşturulan URDF dosyasını yeniden kullanmaktadır.
  • Bir mobil robotu taşımak için eksiksiz bir gezinme yığını bulunabilmektedir.
  • 3D görselleştirme için Rviz kullanın.
  • Daha güçlü bir simülasyon aracı istiyor iseniz, fiziksel kısıtlamalara sahipseniz, Gazebo’yu inceleyin. Böylelikle, dronenun yer çekimi ve rüzgarla uçması bile sağlanabilmektedir. Gazebo’da uçarsa, gerçekten de uçma ihtimali yüksektir.
  • Rosbridge paketi sayesinde ROS ile ROS olmayan bir ortam arasında da iletişim kurulabilmektedir.

ROS kullanılacağı zaman, yeni bir paket yani özellik geliştirmeye çalışıldığında, birisinin sizden önce bunu yapıp yapmadığını ve internette kodu yayınlayıp yayınlamadığını mutlaka kontrol edin.

ROS tarafından sağlanan simülasyon araçları da süper kullanışlı olmaktadır. Robot geliştirilirken ortaya çıkan en büyük zaman kaybı; test yapmak için her zaman fiziksel robotu kurmak ve çalıştırmak zorunda kalınmasından dolayı kaynaklanmaktadır. Simülasyon araçları ile uygulamaların tamamı doğrudan bilgisayarlarda geliştirilebilmektedir.

 

Robot İşletim Sistemi Topluluğu

Aslında ROS, sadece bir iletişim araçları seti ve faydalı kütüphanelerden oluşmamaktadır. Aynı zamanda da büyük ve büyümekte olan bir topluluktur. Burası oldukça önemlidir. Kütüphane, çerçeve, ara katman yazılımı, iyi yazılımla ilgili bir şey kullanırken, topluluğun aktif olup olmadığını ve geliştirmenin etkin olup olmadığını kontrol etmek istersiniz. ROS ile tüm onay kutularını kontrol edebilirsiniz.

ROS ilk olarak 2007 yılında Willow Garage adlı bir şirket tarafından kurulmuştur. ROS şu anda, aktif olarak dünyanın her yerindeki birçok özel insan tarafından geliştirilmektedir. Aynı zamanda, birçok şirket ROS ile ilgili bazı açık kaynaklı gelişmelere sponsorluk yapmaktadır.

Büyük ve açık kaynaklı projeler için sponsorlarla çalışmak oldukça yaygındır ve çoğu zaman pazarın doğrulandığının bir kanıtı olmaktadır. Çünkü şirketler, bunun için ödeme yapmaya isteklidir. Projenin birkaç ay ya da yıl sonra terk edilmesinden endişe duyuyorsanız, bu büyük bir garanti olmaktadır.

Çekirdek gelişimi için izlenmesi gereken küresel yolda, vizyonunu sürdürmekte olan ve karar veren küresel bir ROS komitesi olan Open Robotics vardır. Neler olup bittiği hakkında sık sık bilgi verilmekte ve fikir almak ve de ROS kullanıcıları için neyin önemli olduğunu görmek için küresel topluluktan gerim bildirim almaktadırlar.

Her yıl, ROS komitesi ROSCON adlı dünya çapında bir etkinlik düzenlemektedir. Her yıl, bu etkinlik için ülke ve şehir değişkenlik göstermektedir ve böylelikle herkesin bir gün bunlardan birine katılma şansı olmaktadır. ROSCON etkinliğinde, yeni temel özellikler ve geliştirme süreçleri açıklanmaktadır. Görüşmelerin videolarına da çevrimiçi olarak erişilmektedir. Bazen sunumlarda gerçekten de değerli bilgiler bulunmaktadır.

ROS topluluğu da çevrimiçi olarak oldukça aktif:,

  • ROS Wiki: Farklı paketler için rehberlerin, konsept açıklamalarının ve rehberlerin çoğunu burada bulabilirsiniz. Gerçekten güzel bir web sitesidir ancak bazen bazı yönergelerden yoksundur. Bu nedenle, başka bir yerde daha fazla bilgi bulmanız gerekebilir.
  • ROS Cevapları: soruları ve cevapları web sitesinde bulabilirsiniz. Böylelikle, tüm teknik odaklı sorularınızı sorabilir ve cevaplarını alabilirsiniz. Zaten kontrol edebileceğiniz çok sayıda cevaplanmış sorular bulunmaktadır. Çoğu zaman Wiki’de bir şey bulamazsanız buraya bakabilirsiniz.
  • ROS Söylemi: Bu, gelecekteki olması beklenen gelişmeler, ROS kullanan projeler ve ROS ile ilgili herhangi bir şey hakkında konuşmak için oluşturulmuş bir forumdur. Bu, zaman zaman kontrol etmek için harika bir kaynaktır ve bu nedenle hiçbir şeyin kaçırılmadığına, buraya bakılarak emin olunabilinir.
  • GitHub: ROS paketlerinin çoğu GitHub’da bulunmaktadır. Burada kodlara göz atabilir ve bu kodlara bazı katkılarda bulunabilirsiniz.

ROS Ne Zaman Kullanılır?

ROS, geliştirilecek olan uygulama için gerçekten uygun mu ya da bu bir fazladan çözüm mü? Bu sorunun cevapları, gerçekten neyi elde etmek istediğinizle doğru orantılıdır. Bazı uygulamalar için özellikle ROS bilginiz yoksa ROS’u kullanmak çok fazla açıktır.

Şimdi, ROS’u ne zaman kullanmaya başlayacağınız hakkında konuşmaya başlayalım. Robotunuz çok basit ise örneğin; insan varlığı dedektörlü bir kapı açın, zeminde bir çizgi boyunca 2 tekerlekli bir robotu hareket ettirin, o zaman bu uygulamalar için basit bir Arduino kartı büyük ölçüde yeterlidir. Ancak robotunuzu başka bir robotla veya daha büyük bir sistem ile bağlamak veya daha fazla başka sensör eklemek istiyor iseniz ROS kullanmanız daha mantıklı olacaktır.

ROS kullanmak istediğiniz zaman:

  • Robotunuzda birçok farklı sensör ve aktüatör varsa, ROS, bakımı ve ölçeklenmesi zor olacak büyük bir monolith kod tabanına sahip olmak yerine, tüm bu bileşenler için dağıtılmış bir sistem oluşturmanıza yardımcı olacaktır.
  • Robotik öğreniyorsanız, ROS hızlı bir şekilde tam bir robot uygulaması çalıştırmanıza ve büyük resmi görmenize olanak sağlar. ROS’a güvendikten sonra birçok farklı robot için hızlıca kod yazılabilmektedir.
  • Robot biliminde araştırma yapıyorsanız, ROS bunun için mükemmeldir. Genellikle araştırmanız tüm odak noktanızı koymanız gereken çok özel bir nokta olacaktır. ROS ile bir robot yazılımı oluşturmak için zaten tüm kodlara, iletişim araçlarına ve kütüphanelere sahip olduğunuzdan tüm sistemi yeniden icat etmeye çalışmak yerine araştırma konusuna odaklanılabilmektedir.
  • Bir robotu prototip ediyorsanız, prototipleme genellikle işleri mümkün olduğunca çabuk halletmek istediğiniz anlamına gelmektedir. ROS’u biliyorsanız ve herhangi bir mobil taban ya da robotik kol için eksiksiz bir prototip yazılımı oluşturmanız yalnızca birkaç gününüzü alabilir. Bu, size aylarca süren sıkı bir çalışma sağlayacaktır.

ROS, robot programcıları için en çok korunan ve geliştirilen robotik çerçevelerden biri olmaktadır. Açık kaynak olduğu için, kodları kolayca burada bulabilir ve programlarınızda direkt olarak kullanabilirsiniz.

ROS’un amacı; robotik yazılım geliştirme için bir standart oluşturmaktır. Ve ayrıca şunları içermektedir:

  • Çekirdek taban
  • Tak çalıştır kütüphaneleri
  • Aktif ve büyüyen bir topluluk

ROS öğrenmek, belki de robot yazılımı geliştirmek konusunda ciddi adımlar atmak istiyor iseniz, alabileceğiniz en iyi kararlar arasında yer alacaktır. ROS’u yalnızca nihai kütüphaneler geliştirmek ya da ürünler için kullanmasanız bile bu robotik hakkında pek çok şeyi anlamına yardım edecektir. Aynı zamanda ROS, kullanıcılarına tutkulu ve çok yetenekli robotik geliştirici ile tanışma fırsatı vermektedir. Aynı zamanda ROS, robotik bir projeye oldukça hızlı başlanmasına yaramakta ve temel sağlamaktadır. Bu durum, yeni bir projenin daha hızlı ilerlemesine yaramakta ve zaman kayıplarının yaşanmasının önüne geçmektedir.

BİR CEVAP BIRAK

Please enter your comment!
Please enter your name here