ROS Topiclerinin Tanıtımı ve Kullanım Örnekleri


Bu kısımda ‘rostopic’ ve ‘rqt_plot’ komut araçlarının kullanımları incelenmektedir.

  • Öncelikle ROS’u başlatmak için yeni terminalde ‘roscore’ komutunu çalıştırın.
  • Bu kısım içinde ‘turtlesim’ düğümü üzerinden araçlar inceleneceğinden aşağıdaki komutlarla bu düğüm çalıştırılır.

$ rosrun turtlesim turtlesim_node

1.turtle keyboard teleoperation: Açılan ‘turtlesim’ düğümü ile ekrana gelen robotun klavye kontrolünü sağlamak için aşağıdaki kodlar kullanılır.

            $ rosrun turtlesim turtle_teleop_key

Gelen terminal üzerindeyken klavyenin yön tuşları kullanılarak turtleSim robotu hareket ettirilebilir.Bu hareket örneği Resim 1’de gösterilmiştir.

Resim 1.Turtlesim robotunun hareket güzergahı

2.ROS Konuları (ROS Topics)Yukarıdaki işlemler sonucunda ‘turtlesim_node’ ile ‘turtle_teleop_key’ düğümleri ROS konuları üzerinden birbirleriyle haberleşmeye başlamışlardır. Açılan konu üzerinden ‘turtle_teleop_key’ düğümü klavye etkileşimlerini yayınlarken (publishing) , ‘turtlesim’ düğümü ise aynı konudaki bu tuş iletimlerini takip eder (subscribing). Bu etkileşim ‘rqt_graph’ düğümü üzerinden aşağıdaki aşamalar uygulanarak izlenebilir.
2.1.rqt_graph düğümünün kullanımı: rqt_graph sistemde o an olup biteni dinamik bir grafik ile gösterir.rqt_graph, ‘rqt’ paketinin bir aracıdır.Bu nedenle öncelikle aşağıdaki kodlar kullanılarak ‘rqt’ paketi kurulmalıdır.

   $ sudo apt-get install ros-kinetic-rqt
   $ sudo apt-get install ros-kinetic-rqt-common-plugins

Bu komutların akabinde yeni bir terminal açılarak aşağıdaki kodlarla ‘rqt_graph’ düğümü çalıştırılır.
  
    $ rosrun rqt_graph rqt_graph

Resim 2.ROS Graph arayüzü

 
2.2.rostopic: ‘rostopic’ aracı ,ROS konuları hakkında bilgi alınmasını sağlar.’rostopic –h’ komutu ile bu aracın alt-komutlarına ulaşılabilir, bu alt-komutların işlevleri hakkında bilgi alınabilir. Bu alt-komutlar aşağıda sıralanmıştır:

rostopic bw: Konunun kullandığı band genişliğini (bandwidth) gösterir.
rostopic echo: Ekrana mesajları yansıtır.
rostopic hz : Konuların yayın yüzdesini (publishing rate) ekrana verir.
rostopic list: Aktif konu hakkında bilgi verir.
rostopic pub: Konuya veri yayınlar:
rostopic type: Konu tipini verir.

2.3.rostopic echo: ‘rostopic echo’ aracının kullanımı turtle_teleop_key düğümünün data alışverişi üzerinden aşağıdaki gibi gösterilmiştir.
·         Turtle_teleop_key düğümünün ,turtlesim düğümüne gönderdiği hız bilgisi aşağıdaki kodlar kullanılarak görüntülenebilir.

$ rostopic echo /turtle1/cmd_vel

·         Eğer bu komut sonrası ekranda hiçbir veri görüntülenemiyorsa ,teleop_key kullanılmamış demektir.Herhangi bir yön tuşuna basıldığı takdirde turtle_teleop_key hareket komutlarını gönderek , rostopic echo üzerinden hız verilerinin görüntülenmesi sağlanacaktır.

·         Bu işlemden sonra ‘rqt_graph’ ile arayüz açılır ,sol üst köşedeki ‘refresh’ tuşuna basılırsa ,aşağıdaki Resim 3’teki gibi yeni bir ‘rqt_graph’ elde edilmiş olacaktır.

Resim 3.cmd_vel sonrası yeni rqt_graph

·        
Şekilde görüldüğü üzere rostopic echo, kırmızı renkli, ‘turtle1/command_velocity’ konusunu takip etmektedir.

3.ROS MesajlarıKonular üzerindeki iletişim ,düğümler arasında gidip gelen ROS mesajlarından oluşur.Yayıncı (turtle_teleop_key) ve takipçi (turtlesim_node) birbirleriyle bu tarz mesajlar yoluyla bağlantı kurar.Yayıncı ve takipçi aynı tipte mesajlar gönderip almak zorundadır.Bu şu anlama gelmektedir ki, konu çeşidi yayınlanan mesaj çeşidiyle belirlenir.Konu içinde gönderilen mesajın tipi ‘rostopic type’ ile belirlenir.
            
            3.1.rostopic typeBu komutun örnek kullanımı aşağıda gösterilmiştir.
                       
                        $ rostopic type /turtle1/cmd_vel
                                   Output: geometry_msgs/Twist

Bu çıktının detaylarını ‘rosmsg’ komutu ile öğrenme, aşağıda gösterildiği gibidir.

$ rosmsg show geometry_msgs/Twist
            Output: geometry_msgs/Vector3 linear
                                   float64 x
                                   float64 y
                                   float64 z
                        geometry_msgs/Vector3 angular
                                   float64 x
                                   float64 y
                                   float64 z

            4.rostopic Alt-Komutlarının Kalanları

4.1.rostopic pub: Bu komut konu üzerindeki verileri yayınlar.Örnek bir yayın aşağıdaki örnekle verilmiştir.
           
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’

·         Bu örnek komut ile tek mesaj içinde turtlesim robotuna lineer hızı 2.0 ve açısal hızı 1.8 olacak şekilde bir hareket emri yayınlanmış oldu.Bu hareket Resim 4’te gösterilmiştir.

Resim 4.rostopic pub komutu ile hareket

           Bu karmaşık mesajın parça parça açıklaması aşağıda verilmiştir.

“ rostopic pub ” : Bu komut mesajın yayınlanma emridir.
“ -1 “ : Bu opsiyon rostopic’in tek bir yayın yapıp çıkmasını sağlar.
“ /turtle1/cmd_vel “ : Yayın yapılacak konunun adıdır.
“ geometry_msgs/Twist “ : Konuda yayınlanacak mesajın tipini belirler.
“ – “ : Bu opsiyon,seçenek çözümleyicisine, aşağıdaki bağımsız değişkenlerden hiçbirinin bir seçenek olmadığını söyler.

Yukarıdaki örnek kodla harekete başlayan turtlesim robotunun bir tur sonra durduğu görülecektir.Bu hareketin devam etmesi için aşağıdaki eklemeler yapılmalıdır.

$ rostopic pub /turtle1/cmd_vel geometry_msgs/Twist –r 1 – ‘[2.0, 0.0, 0.0]’ ‘[0.0, 0.0, 1.8]’

·         Bu 1 Hz oranındaki hız komutu hız konusunda yayınlandığında Resim 5'teki gibi bir hareket elde edilir.

Resim 5.Turtlesim hareketi

·        
Bu değişikliklerden sonra rqt_graph tablosundaki değişiklik Resim 6’da gösterilmiştir.

Resim 6.rqt_graph son hali

4.2.rostopic hz
: Yayınlanan verinin hz oranını raporlar.Örnek kullanımı aşağıda verilmiştir.

$ rostopic hz /turtle1/pose
Output:...

            Yukarıdaki verilere bakarak turtlesim’in verilerini yayın hızının 60 Hz olduğu görülmektedir.

5.rqt_plot: Bu komut zaman grafiği üzerinde konu üzerinde yayınlanan verileri gösterir.Örnek kullanımı aşağıda verilmiştir.

$ rosrun rqt_plot rqt_plot

Bu komut sonrası açılan yeni ekran Resim 7’de gösterilmiştir.

Resim 7.rqt_plot ekranı
Sonraki Konu: ROS Servis ve Parametrelerinin Kullanımı

Yorumlar