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
type: Bu 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.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ı |
Yorumlar
Yorum Gönder