Robot Teknolojisi Nedir ve Robot Operating System

–Robot Teknolojisi Nedir?

robot_ros


Günümüzde teknolojinin gelişmesi ile birçok alanda gelişmeler yaşandı. İletişim, ulaşım, sağlık vb. alanlarda yaşanan kitlesel gelişmeler bizi daha yaşanabiilir ve teknoloji ile iç içe olacağımız bir geleceğe hazırladı. Teknoloji ile yaşamaya başladığımız bu gelecek bize çok yakınken artık sadece bize yardımcı teknolojiler değil birçok alanda bizim yerimizi alacak teknolojiler düşünülmekte ve ilk örneklerini görmekteyiz.

Gelişmekte olan teknoloji ile özellikle robot teknolojisi bizim için önemli bir alan olmaktadır. Robot kelime anlamı olarak “belirli bir işi yerine getirmek için manyetizma ile kendisine çeşitli işler yaptırılabilen otomatik araç” olarak tanımlanmaktadır. Bu terim anlamına baktığımızda robot bizim talimatlarımız ile hareket eden ve sadece kendisine öğretilen bilgiiler ile bize hizmet eden bir varlık olarak görülmektedir. Robot kelimesi ise günümüzde programlanabilen ve belli bir komut ya da öğretilmiş bir öğrenme  modeli ya da öğrenmesi gereken bilgileri kendisi öğrenip kendisi için talimat üreten ve bazı konularda insanın talimatlarına ihtiyaç duymayan bir varlık olarak görülmektedir. Bununla birlikte robotlar hakkında otomasyon, sibernetik ve yapay zeka gündeme gelmiştir.

 Robot ile geçmişten günümüze insanlık, çeşitli faaliyetleri için kolay bir şekilde yönetilebilir bir araç elde etmiş ve bu araçlar ile yaşamı kolaylaştırmıştır. Bu araçları geliştirmeye yönelik çalışmaların oluşması ve devamı ile günümüzdeki ve geleceğimizdeki robot teknolojileri geliştirilmiş ve geliştirilmeye başlanmıştır. Bu gelişmeler ile birlikte günümüzde robotların çalışma mantığı, modern robotlarda kullanılan programlama dilleri, algoritmalar, otomasyon, yapay zeka ve donanımların yanında insan hayatına etkisi ise önemli bir konudur. Robotların bazı durumlarda insanın yerine karar alma ve aldığı kararları uygulamaya başlaması günümüze robotların insanın yerini alabileceği düşüncesi yer almaktadır. Bu düşüncelerin ortaya çıkması ve bu düşünceleri destekleyen bazı robot projelerinin ortaya çıkması ise robot kelimesini yakın gelecekte başka anlamlar içermeye yöneltmektedir. Bun anlamlar arasından en önemlisi ise insansı robotlardır. Bu robotlar insanın vücut yapısı tasarımı kullanılmakta ve insanların yapabileceği çoğu işi yapabilmesi planlanmaktadır. Bu robotların gündeme gelmesinden sonra Sophia isimli bir robotun vatandaşlık alması ise dikkat edilmesi gereken bir durum olup robotların gelişme hızları medeni ile insanlar ile eşit konuma gelmeye başlaması önemli bir konudur.

İnsanlar için en önemli alanlardan birisi olan savunma alanı ise diğer bir konudur. Savunma alanında çeşitli amaçlarda geliştirilen robotlar bazı durumlarda asker kayıplarını önlemek için bir avantaj iken bazı durumlarda aldıkları kararların insanlar için olumsuz sonuçlar oluşturabileceği düşünülmektedir. Örnek olarak Boston Dynamics’in geliştirdiği Spot isimli robotu özellikle askeri ya da diğer alanlarda kullanılabilecek bir robot olarak yapay zeka temelli bir robottur.




–Robotların Tarihi Gelişimi

el-cezeri

Robotların ilk geliştiricisi olarak kabul edilen 12.yy da yaşamış olan Cizreli El-Cezeri ile başlayan süreç aslında insanlık tarihinde ilkel robotlardan günümüze modern robotlara kadar birçok alanda bizi etkiledi. El-Cezeri tarafından yapılan Filli Su Saati, Otomatik Çalışan Su Saati gibi robotlar aslında belli bir komuta göre hareket eden ve bu komutları önceden belirlenmiş olan makineler olarak görülebilir. Daha sonraki süreçlerde kendisi sibernetik biliminin kurucusu olarak kabul edilir. Sibernetik kelimesi ise bir sistemin düzenli bir şekilde çalışması ve çalışma esnasında dışarıdan aldığı bilgileri kendi içinde değerlendirdikten sonra geri bildirim olarak ileten sistemlerin bilimidir. El-Cezeri ile başlayan sibernetik bilimi ile robotlar dışarıdan aldıkları bilgileri kendilerine öğretilmiş komutları kullanarak otomatik bir şekilde yapmaktadır. Bununla birlikte otomasyon sistemi robotlar için önemli bir alan olmuş ve ayrı bir başlık olarak değerlendirmek gerekir.

 



Modern ilk  robot İngiliz William Grey Walter tarafından yapılmıştır. 1948 yılında icat edilen ilk otonom robotlar ilen artık modern robot kavramı ortaya çıkmıştır. Modern robot kavramının ortaya çıkması ile birlikte bu robotların kullanabileceği programlama dilleri, algoritmalar, sensörler vb. teknolojiler geliştirilmeye başlanmıştır. Artık yazılımın daha çok çıktığı bu dönemde bazı kavramlar da ön plana çıkmıştır.

Otomasyon ile robotların kendi faaliyetlerini belirli ölçülerde yapabildikleri ve bu faaliyetleri yaparken belli koşullar içinde insan iradesine ihtiyaç duymayan bir yapıya kavuştukları ve bu özellikleri ile bazı insan faaliyetlerinin kullanılması ihtiyacını ortadan kaldırdıkları ortaya çıkmıştır. Örnek olarak bir otomobil fabrikasında kullanılan robotların, bu fabrikaya örnek olarak TOGG’un fabrikası, insan faaliyetleri ile yapılabilecek faaliyetleri daha profesyonel bir şekilde yapılmasına imkan tanıdığı ve bu faaliyetleri yaparken önceden belli komutlar ile programlandığı görülmektedir. Böylece bir işi otomatik o0larak yapabilmektedirler. Otomasyon kelime anlamı olarak ise “insan ve makine arası görev paylaşımı” olarak tanımlanır. Bu tanımlama ile birlikte bir işte insan gücü daha ağırlıklı ise yarı otomasyon, eğer makineye düşen görev daha fazla ise tam otomasyon kavramı ortaya çıkmaktadır.

Yapay zeka ve makine öğrenimi ise bizim içinde bulunduğumuz dönemin ve gelecek dönemin kaderini belirleyecek bir kavramdır. Artık robotların kendi öğrenmesini yapabileceği ve kendi öğrendiği bilgiler ile karar verme noktasına gelip hiç bir şekilde insana ihtiyaç duymadan faaliyetlerini yerine getirme imkanı olmaktadır. Yapay zeka kelime anlamı olarak ise “makineler tarafından sergilenen zeka” olarak tanımlanır. Bu özelliği ise doğal zekanın taklidi türündedir. İnsan zekası faaliyetlerine benzer bir yapıda olarak geliştirilen yapay zeka insandan tam bağımsız öğrenme ve karar alma mekanizmasına kavuşması planlanmaktadır. Bu  durum ile birlikte yapay zeka ve insanlar arası sorunların oluşacağı düşüncesi ise mevcuttur.

Makine öğrenimi kavramı ise günümüz robotlarının öğrenme yeteneklerini ilgilendiren bir bilim dalıdır. Robotların çeşitli bilgileri öğrenerek kendi kullanımı için uygun düzeye getirme ve bu uygun bilgi düzeyindeki bilgilerin çeşitli faaliyetler için kullanılması esastır. Makine öğrenimi kelime anlamı olarak ise “proglamlanmadan yerine getirmesi gereken görevleri tespit etmesi ve işlenmesi” olarak tanımlanabilir. Yerine getirmesi gereken problemler için bilgileri öğrenmesi gerekir. Bu insan tarafından çeşitli algoritmalar ile yapılabilirken makine öğrenimi ile insana gerek yoktur. Böylece robotlar kendisi problemleri çözebilecek ve kendi algoritmalarını geliştirilecektir.

Açık kaynak olarak paylaşılan robot yazılımları ile isteyen herkes çeşitli yöntemler ile kendi robotunu tasarlayabilir, kodlayıp yönetebilir ve geliştirebilir. Bu yazıda ise Robot Operating System isimli robot yazılım iskeletini esas alacağız.


–Robot ile İlgili Yasalar: Isaac Asimov Yasaları

Isaac Asimov tarafından belirtilen yasalar, robotlar ile insanlar arasında etkileşimin orantılı bir şekilde olması ve insanın kendi varlık yapısının korunmasını esas alır. Bunun nedeni robotların insan hayatında müdahalesinin kaçınılmaz bir gerçek olduğu kabul edilmelidir.

1. yasa: Bir robot , hiçbir şekilde insan türüne zarar veremez veya hareketsiz kalarak zarar görmesine izin veremez.

2. yasa: Bir robot 1. yasa ile çelişmediği sürece, kendisine insanlar tarafından verilen komutlara uymak zorundadır.

3. yasa: Bir robot 1. ve 2. yasalar ile çelişmediği sürece, kendi varlığını korumak zorundadır.

Bu yasaları incelediğimizde robotların belli talimatlara uymak ve insan türünün varlığına tehdit olmadan çalışması gerektiği anlaşılmaktadır. Günümüzde ise çeşitli yöntemler ile geliştirilen(yapay zeka,makine öğrenimi) robotlar için bu yasaların bir yerden sonra yetersiz kalabileceği ve yeni yasaların gündeme geleceği muhtemeldir. Bunu yanında ülkelerin kendi yasal düzenlemeleri ile vatandaşlarını koruma altına alması ya da robotlar ile insanlar arasında adaletli bir yasal düzenlemenin olması gerekir ama esas olan ise insan ırkının robotlardan üstün bir varlık olduğunun kabulünün devamı gerekir.


–Robot Operating System

ros-noetic

Robot Operating System,robot işletim sistemi, robotlar için geliştirilmekte olan açık kaynak bir yazılımdır. İlk geliştirmeye başladığında tarih 2007 yılını göstermekteydi. Stanford Yapay Zeka Laboratuvarı’nda geliştirilmeye başlanan Robot Operating System(kısaca ROS) günümüzde çeşitli robotlarda kullanılmaktadır. Günümüzde birçok geliştiricisi bulunan ROS ayrıca birçok robotik teknolojiler üreten şirket tarafından desteklenmekte ve açık kaynak yazılımı olması ile büyük bir geliştirici kitlesi elde etmiştir.

ROS ile bir robot yazılımı geliştirebileceğiniz gibi içinde gelen Gazebo simülasyon ortamı ile birlikte oluşturduğunuz robotun gerçek hayattaki kullanımından önce test etme ve geliştirme imkanı bulmuş olursunuz. ROS kullanmak için öncelikle hangi sistemlerde sağlıklı çalışması gerektiğini bilmek gerekir. ROS’un kendi internet sitesinde açıklanan bilgilere göre Linux işletim sistemleri için karalı paketler varken Windows için ise deneysel paketler bulunmaktadır. Ayrıca ARM ve AMD64 tabanlı işlemciler için kullanabilme imkanı vardır. Geliştirme için proglama dilleri ise Python ve C++ kullanılabilir. Bu yazımızda ROS Noetic sürümünün kurulumu ve özellikleri ile ROS sistem yapısını konu edinmiş olacağız. Geliştirme ortamımız ise Ubuntu 20.04 olacaktır.


–Robot Operating System Geliştiriciye Sunduğu İmkanlar

ros_comminty


ROS öncelikle açık kaynak kodlu yapısı ile birlikte geliştirme imkanlarını kullanıcıya sonuna kadar vermektedir. Böylece büyük bir kullanıcı kitlesi tarafından kullanılan ROS, hatalar ile karşılaşıldığında çözüm yöntemleri çok kolay bir şekilde paylaşılabilmektedir.

ROS geliştiricileri oluşturdukları paketleri Github vb. yollar ile açık bir şekilde paylaşıp istenilen özellikteki paketlere ulaşılması ve ulaşılan paketlerin geliştirilmesine katkıda bulunmaktadır.

ROS birçokn Linux işletim sistemi yapısına uygun olarak geliştirilmesi ile birlikte isteyen herkesin ücretsiz bir şekilde geliştirme imkanı ve bulunan açıkların ya da daha iyi yöntemlerin kolay bir şekilde paylaşılmasına imkan tanımaktadır.

Günümüz teknolojilerine uygun olan ROS, kendisine uygun olan robotlar üzerinde kolayca kullanılabilmektedir. İstenilen robotun tasarımı ve görev planlanmasından sonra ROS ile çalıştırılan robotlar yönetilmesi daha kolay bir varlık haline gelmektedir. 

–Nesne tabanlı kodlama için Python ile kodlamaya uygun olan ROS bu konuda geliştiricilere uygun bir ortamda programlama imkanı vermektedir.


–Robot Operating System Yapısı ve Çalışma Yapısı

ros_nodes


ROS sistem yapısı genel olarak bir yayın konusu üzerinden yayınlama işini yapan yayıncı  paketler ile bu yayınları alıp kullanan alıcı paketler üzerine kurulmuştur. Temel olarak bu mantık ile çalışsa da bilmemiz gereken diğer bileşenlerini bilmemiz gerekir.

ROS, Meta Packages olarak isimlendirilen yapı ve bu yapının altında bulunan Packages olarak gruplandırılan yapılardan oluşur. Meta Packages birden çok dosyanın bulunduğu ana dizindir. Packages ise bizim işlem yapacağımız dosyaların bulunduğu bir alt dizindir. Bu dizinin altında ise birden çok dizin ve dosya olup buralarda yapacağımız işlemler ile robot yazılımımızı oluşturmuş olacağız.


package.xml : ilgili paketler ve bağımlılıklarını konu alan dosyadır.

CMakeLists.txt : bu paket ise derleme işlemlerini konu alan dosyadır.

action :  bu dizin içerisinde eylem tanımlarımızı oluştururuz.

msg : bu dizin içerisinde özel mesajlarımızı tanımlarız.

launch : bu dizin içerisinde başlatılacak paketler bulunmaktadır.

src : c++ dosyalarının bulunduğu dizindir.

scripts : bu dizinde python dosyaları bulunmaktadır.

include ve package_name : bu dosya ve dosya dizinleri ile paketler içerisinde kullanılması gereken başlık ve kitaplık dosyaları bulunmaktadır.

confing : yapılandırma için gereken dosyalarının tamamı burada tutulur ve kullanıcı tarafından oluşturulmuştur.

Tüm bu dosya ve dizinler Packages altında bulunmakta olup tüm faaliyetleimizi ilgilendiren bir çalışma alanıdır.



–ROS Noetic Sürümü Ubuntu 20.04 Kurulumu

ubuntu-linux


Öncelikli olarak ROS Noetic sürümü için ROS’un resmi internet sitesinde yer alan sürümler ve desteklenme süreleri ile çalıştığı yazılım ortamlarına dikkat edilmesi gerekecektir. Buna dikkat edilmesi nedenleri ise her ROS sürümünün her yazlım ortamında çalışmamasıdır ve kendine uygun yazılım ortamlarında kararlı bir yapıda çalışılabilir olmasıdır.

http://wiki.ros.org/Distributions bu adrsi kullanarak ROS için sürüm takvimini inceleyiniz ve ROS Noetic sürümünün 2025’e kadar LTS sürümü olarak desteklendiğine dikkat ediniz. Daha sonra ROS Noetic sürümü ile ilgili yazan böülüme tıkladığınızda bu sayfaya (http://wiki.ros.org/noetic ) yönlendirileceksiniz. İnstallation (kurulum sayfasına yönlendirileceksiniz, http://wiki.ros.org/noetic/Installation ) kısmına tıkladığınızda karşınıza gelen ekrandan bulunduğunuz işletim sistemine ve kullandığınız bilgisayarın işlemci mimarisine uygun sürümü seçtikten sonra kuruluma devam edebilirsiniz. Ubuntu(http://wiki.ros.org/noetic/Installation/Ubuntu ) yazan bölüme tıkladığınızda Ubuntu için yükleme talimatları yer almaktadır. Genel olarak bir Linux kullanıcısı olmanız ve Terminal programını kullanmasını biliyorsanız kurulum sizin için kolay olacaktır.

(kullanici_adi yazan yerler sizin cihanızda farklı olabilir ve kendi kullanıcı adınızı bilmeniz gerekmektedir.)


Aşağıda karşılaştığınız sayfadaki kodların açıklaması vardır.

1-) sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

Bu kod satırı ile kaynaklarınızı yapılandırma işlemi yapmış olacaksınız.

2-) sudo apt install curl

Bu satır ise curl komutu eğer Ubuntu’nuzda kurulu değilse çalıştırın ve curl komutunu kurun. Eğer curl komutunun kurulu olduğundan emin değilseniz bu kodu çalıştırın.

3-) curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

Bu kod ile ilgili anahtarların ayarlanmasını yaparsınız.

4-) sudo apt update : bu kod ile sisteminizi güncelleyin.

5-) sudo apt install ros-noetic-desktop-full: bu kod ile ROS kurulumu başlar. isteğe bağlı ya da gereken durumlara bağlı olarak diğer kodları da çalıştırabilirsiniz. sudo apt install ros-noetic-desktop ya da sudo apt install ros-noetic-ros-base kodlarını çalıştırabilirsiniz.

6-) sudo apt install ros-noetic-PACKAGE : bu kod eğer ros-noetic-desktop-full sürümünü kurmadıysanız istediğiniz paket ismini yazarak kurulum yapabilirsiniz.

7-) source /opt/ros/noetic/setup.bash bu kod ile kaynak bağlantınızı yapmış olursunuz. 

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

source ~/.bashrc kodlarını çalıştırın. Her ROS çalıştırılmadan önce kaynak bağlantısı yapmak zorunda kalmamak için Home dizininde yer alan .bashrc dosyasını düzenlemek için gedit .bashrc komutunu çalıştırın.

source /opt/ros/noetic/setup.bash

source /home/kullanici_adi/catkin_ws/devel/setup.bash kodlarını .bashrc dosyasının en altına yapıştırn. kullanici_adi yazan kısımdaki alan sizin Ubuntu kullanıcı adınızdır ve iligili yere kullanıcı adınızı yazın.

8-) sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

bu kod ile kurulması gereken bağımlılıklar yer almaktadır ve bu bağımlılıklar ile Python ile kodlama ortamı oluşacaktır.

9-) sudo apt install python3-rosdep

Bu kod ile sistem kaynaklarınız için gereken rosdep paketi yüklenir ve ROS kurlumuna devam ederiz.

10-) sudo rosdep init 

rosdep update

Bu kodlar ile rosdep çalıştırılır ve ROS kurulumu tamamlanır. Terminal programında roscore komutunu çalıştırdığınızda eğer bir hata mesajı almıyorsanız kurulum bitmiştir.


–ROS Noetic ile Turtlebot Kullanımı

ROS ile bu yazıda Turtlebot isimli bir robotu simülasyon ortamında çalıştıracak ve ROS yazılımını basit bir düzeyde denemiş olacaksınız.

Gelecek yazılarımda bu konu ile ayrıntılı bilgi vereceğim ve daha fazla bilgi almak istiyorsanız aşağıda sizler ile paylaştığım kaynakça bölümüne bakabilirsiniz.


–ROS ile Kullanılabilecek Yazılımlar

opencv


ROS ile OpenCV ve YOLO kullanarak görüntü işlemeye bağlı birçok özellik geliştirebilirsiniz. Ayrıca YOLO ile eğittiğiniz birçok görüntü işleme modeli ile birlikte robotunuza birçok özellik ekleyebilirsiniz.

Diğer yazılarımda ROS ile bir paket oluşturma ve OpenCV ile YOLO kurulumunu anlatacağım.




Bu yazımı okuduğunuz için teşekkürler ve diğer yazılarımda sizlerle tekrar görüşmek için sabırsızlıkla bekliyorum :) Bu sefer daha güncel bir şekilde yazı yazacağım :)


Kaynakça:


https://sozluk.gov.tr/

https://tr.wikipedia.org/wiki/Robot_%C4%B0%C5%9Fletim_Sistemi

https://www.ros.org/

http://wiki.ros.org/tr/ROS/Tutorials

https://tr.wikipedia.org/wiki/Cezer%C3%AE

https://tr.wikipedia.org/wiki/Sibernetik

https://www.bostondynamics.com/products/spot

https://en.wikipedia.org/wiki/William_Grey_Walter

https://www.bostondynamics.com/

https://tr.wikipedia.org/wiki/Otomasyon

http://wiki.ros.org/noetic/Installation

http://wiki.ros.org/Distributions

http://docs.ros.org/en/rolling/index.html

https://emanual.robotis.com/docs/en/platform/turtlebot3/overview/

https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/#pc-setup


Görsel Kaynakça:

https://www.pexels.com/tr-tr/fotograf/biblo-oyuncak-arka-fon-yenilik-8294620/

https://www.ros.org/imgs/noetic-background.png

https://www.ros.org/imgs/ros-equation.png

http://docs.ros.org/en/rolling/_images/Nodes-TopicandService.gif

https://assets.ubuntu.com/v1/8dd99b80-ubuntu-logo14.png

https://opencv.org/wp-content/uploads/2020/07/cropped-OpenCV_logo_white_600x.png


Yorum Gönder

Yorum yaptığınız için teşekkürler :)

Daha yeni Daha eski