Veri Kaydı ve Kayıtlı Veri Oynatma
Veri Kaydetme (.bag Dosyası Oluşturma)
Bu kısımda, çalışmakta olan ROS sistemindeki konularda geçen verilerin nasıl kaydedileceği açıklanmıştır. Bu konu verileri ‘bag’ dosyasında tutulur. Kayıt aşamaları aşağıda sıralandığı gibidir.
Terminal 1: |
$ roscore
Terminal 2: |
$ rosrun turtlesim turtlesim_node
Terminal 3: |
$ rosrun turtlesim turtle_teleop_key
- Çalıştırılan iki düğümde turtlesim düğümünün görüntülenmesi ve klavyeden hareketinin kontrol edilmesi sağlanır. Bu örnekte, turtle hareketlerinin kaydı tutulacak. Bu hareket verileri, konular içinde geçmektedir.
- Çalışan,yayın yapmakta ve takip etmekte olan sistemde aktif konuların tam listesinin görüntülenmesi sağlanır.
$ rostopic list –v
Konu listesi aşağıdaki şekildeki gibidir.
-- published_subscribed_topics
Yayınlanan konuların listesi, yalnızca yayınlanan mesajlar kaydedildiği için veri kaydı dosyasına kaydedilebilecek tek mesaj türleridir. Konu “/ turtle1 / cmd_vel”, turtlesim işlemi tarafından alınan “teleop_turtle” tarafından yayınlanan komut mesajdır. Mesajlar ise “/ turtle1 / color_sensor” ve “/ turtle1 / pose” turtlesim tarafından yayınlanan çıktı mesajlarıdır. Şimdi bu konular üzerinde akışı sağlanan (published) mesajların kayıtları tutulabilir.Yeni bir terminalde aşağıdaki kodların yazılması gerekir.
$ mkdir ~/bagfiles
$ cd ~/bagfiles
$ rosbag record –a
Bu işlemlerle açılan geçici “bagfiles” kütüphanesine “rosbag record” komutu ile (-a opsiyonuyla ) yayın yapılan konular kaydedilir.
Bag Kayıt Dosyalarını İnceleme ve Oynatma
“rosbag record” komutu ile kayıt tutulan bag dosyaları “rosbag play” ve “rosbag info” komutları ile incelenir. Bununla ilgili örnek kodlar aşağıda verilmiştir.
- Öncelikle “rosbag info” ile kayıtlar incelenir.
$ rosbag info <your bagfile>
- Bu komutla ekrana aşağıdaki şekildeki bilgi ekranı gelmektedir.
-- rosbag_logs
- Bu info ekranı bize konu adları, mesaj sayıları gibi “rostopic” kullanarak elde edebileceğimiz çıktıları toplu halde verir.
- Bu işlemden sonra kaydı tekrar oynatmak için “rosbag play” kullanılır.
$ rosbag play <your bagfile>
- Ekrana aşağıdaki şekile benzer bir bilgi ekranı gelecektir.
Alt Veri Küme (Subset of Data) Kaydını Alma
Komplike bir sistem çalıştırılırken, yayınlanan konu sayısı yüzleri bulabilir. Kamera görüntü sistemleri gibi bazı konular yüksek veri yayınlama potansiyeli olan konulardır. Bu gibi sistemlerin kayıtları tutulurken, bu kayıtları tek bir bag dosyası içinde tutmak pek de pratik bir uygulama olmayacaktır.Bu noktada “rosbag record” komutu, kaydı tutulacak konunun seçilebilmesini mümkün kılar. Bu sayede kullanıcı, sadece ilgilendiği konu hakkındaki verileri bag dosyasına kaydedecektir.
Örneğin, herhangi bir turtlesim düğümünden çıkıldıktan sonra, klavye kontrol launch dosyası yeniden çalıştırılırsa, daha önceki klavye verilerinin (kaydı tutulan) kullanılarak aynı hareket işlemlerini klavyeden yeniden yapmak yükümlülüğünden kurtulunmuş olacaktır. Bu noktada teleop_key komutunun kaydının tutulduğu bag dosyasından sadece bu hareket komutunu yeniden oynatmak için “rosbag record” kullanılır.Kullanımı aşağıdaki gibidir.
$ rosbag record –O subset /turtle1/cmd_vel /turtle1/pose
Komutta yer alan –O argümanı, rosbag record komutunun subset.bag adındaki dosyanın kaydını çağırdığını ve konunun sadece bu kayıttaki iki konuyu takip edeceğini belirtir. Turtle’ın birkaç saniye hareket ettirilmesi sonucu elde edilen subset.bag kaydı aşağıdaki şekildeki gibi olacaktır.
Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags. |
Veri Kaydı ve Kayıtlı Veri Oynatma
Description: Bu aşamada ROS sistemi içindeki veri akış kaydının “.bag” dosyasına nasıl tutulacağı ve bu verilerin çalışan bir sistemde nasıl oynatılacağı açıklanmaktadır.Tutorial Level:
Contents