Rosbag'lerinizi yönetmek için 9 harika açık kaynaklı araç

Nov 24 2022
Evocargo mühendisleri tarafından yapılan bir seçim İster ROS'a yeni başlıyor olun, ister derin bir geliştirici olun, bazı şeylerin ve işlemlerin daha kolay, daha hızlı veya daha rahat yapılabileceğini hissedebilirsiniz. Hatta şu anda ROS için bir araç oluşturmayı düşünebilirsiniz, örneğin çantalarınızın meta verilerini güzel bir görünümde gösterecek araç.

Evocargo mühendisleri tarafından yapılan bir seçim

İster ROS ile yeni başlıyor olun, ister derin bir geliştirici olun, belirli şeylerin ve işlemlerin daha kolay, daha hızlı veya daha rahat yapılabileceğini hissedebilirsiniz. Hatta şu anda ROS için bir araç oluşturmayı düşünebilirsiniz, örneğin çantalarınızın meta verilerini güzel bir görünümde gösterecek araç. Bunu yapmadan önce, açık kaynaklı ROS paketleri seçimimize göz atın — size bolca zaman ve emek kazandıracak hazır çözümler bulabilirsiniz.

Bu gönderide, çanta verilerini görselleştirmenize ve düzenlemenize yardımcı olan ROS çantaları için paketlere odaklanıyoruz. Bazı paketlerle daha da ileri gidiyoruz ve bunları özel ürün ihtiyaçlarınız için nasıl yükseltebileceğinizi gösteriyoruz.

Otonom araçlar, otonom bir otomobilde algılama, konum belirleme, çarpışmadan kaçınma, kendi kendine teşhis ve diğer temel görevler için gereken büyük miktarda veri üretir. Bu tür veriler, sinir ağları eğitimi ve olay sorgulama için kullanıldıkları için oldukça değerli bir varlıktır. Örneğin, ABD Ulusal Karayolu Trafik Güvenliği İdaresi , bazı üreticilere ve operatörlere, otonom sistemlerin güvenliğini araştırmak ve sonuçları bir rapor halinde özetlemek için SAE Seviye 2-5 Gelişmiş Sürücü Destek Sistemleri (ADAS) ile donatılmış araçların dahil olduğu belirli kazaları bildirme zorunluluğu getirmiştir. kaza raporu Bu diğer ülkelerde de yaygın bir uygulama haline gelebilir.

Üretilen verilerin tahminleri, araçtaki ekipman ve uygulama senaryoları nedeniyle farklı araçlar için değişiklik gösterebilir. Araçta birden fazla yüksek çözünürlüklü kamera, lidar, radar ve diğer sensörler bulunan otonom bir araba, birkaç saatlik yolculuk için 15 TB'a kadar veri üretebilir. Bu, yolcu yolculuklarını kesintisiz hale getiren robotaksinin iddiaya göre günde 450 TB yapabileceği anlamına gelir ( burada ve burada daha fazlasını arayın ).

ROS kullanıyorsanız, tüm veriler kaydedilen ve saklanan çanta dosyalarına yazılır, böylece daha sonra bunları indeksleyebilir, açıklama ekleyebilir ve oynatabilirsiniz.

Şekil 1. ROS çantası dosyalarının listesi

Böylece, içinde gezinmeniz ve analiz etmeniz gereken etkileyici bir dosya listesi elde edersiniz. Bununla başa çıkmak için, bu makalede açıklamak için seçtiğimiz ücretsiz ROS paketlerini kullanabilirsiniz. Bazıları ROS İndeksine dahil edilir , bazıları edilmez. Ve bazıları yalnızca ROS 1 için tasarlandı — bununla ilgili notlar alacağız.

Çantaları güzel bir kullanıcı arayüzünde görüntüleme

Şekil 1'de görebileceğiniz gibi , çantalar temel olarak bir dizindeki dosyalardır. Onlarla çalışmak için Komut Satırı Arayüzünü kullanmanız gerekir ve yapabileceğiniz fazla bir şey yoktur — varsayılan olarak, ROS bir çanta dosyasını oynatmanıza, çanta hakkındaki bilgileri, boyutunu ve süresini görüntülemenize, konuları, türleri görüntülemenize olanak tanır. mesajların sayısı ve miktarları. Ne kadar çok veri biriktirirseniz, ihtiyacınız olan bir şeyi bulmak o kadar zor olur.

Southwest Research Institute tarafından sağlanan Çanta Veritabanı aracı , dizininizi ROS çanta dosyaları için izlemek için kullanıcı dostu bir web arayüzü sunar. Kayıt tarihi, rota, ilgili görüntü ve daha fazlası gibi pek çok yararlı meta veriyi görüntülemenize olanak tanır.

Çantalarla etkileşiminiz çok daha kolay ve verimli hale geliyor!

Şekil 2. Çanta Veritabanında çantaların görüntülenmesi

Ayrıca, Çanta Veritabanı , daha sonra yalıtılmış Docker kapsayıcılarında çalıştırılabilen çeşitli işlem sonrası komut dosyaları eklemenize olanak tanır. Örneğin, Evocargo'da, bag_indexerçanta içeriğinin kapsamlı bir özetini tek bir PNG görüntüsünde görüntüleyen bir komut dosyası yazdık.

Şekil 3. Bag Database'de script ile oluşturulan bag özeti

Bir göz atarak, aşağıdakiler hakkında fikir edinebilirsiniz:

  • Küçük resimler aracılığıyla şerit kalitesi, ışık ve hava koşulları
  • Odometri, GNSS ve lokalizasyona dayalı olarak referans rota ve ondan sapma
  • Herhangi bir zamanda veya pozisyonda hız
  • Araç kontrol modu veya aracın ne kadar süreyle manuel olarak çalıştırılması gerektiği
  • Sürüş mesafesi ve süresi
  • Çanta adı ve daha fazlası

Bilgi bloklarının konumu ve renkleri ve kamera görüntülerinden küçük resimlerin sayısı gibi anlık görüntülerin parametreleri bir yapılandırma dosyasında tanımlanır.

Çanta Veritabanında komut bag_indexerdosyası aşağıdaki gibi görünür :

Şekil 4. İşlem sonrası betikleri ekleme penceresi

Daha fazla ayrıntı ve betik örnekleri için Çanta Veritabanı belgelerine bakın .

Meta veri ekleme

Çanta meta verileri, kayıt konumu, işletim sistemi ve yazılım sürümü, bağlı cihazlar, hava koşulları, görev gibi çanta kayıt koşullarına ilişkin ayrıntıları içerir. Normalde, bu tür verileri ayrı bir dosyada saklarsınız. Ancak, bazı çanta görselleştiricileri, örneğin Çanta Veritabanı , çanta dosyalarına entegre edilecek meta verileri gerektirir.

Meta verileri doğrudan ROS1 çanta dosyalarına yazmak için rosbag_metadata paketini kullanabilirsiniz. Kutunun dışında, yorumlarınızı ROS paketi sürümü, git depoları ve git-commit karmaları hakkında bilgi, çevresel değişkenler, ağ yapılandırması gibi sistem verileriyle birlikte kaydeder. Tüm bu veriler, /metadata konusuna bir YAML dosyasında metin olarak eklenir.

rosbag_metadata'yı olduğu gibi kullanabilir veya özel ürün ihtiyaçlarınızı karşılamak için kullanabilirsiniz. Örneğin, Evocargo'nun lojistik hizmeti için araba modeli ve numarası, ham kalibrasyon bilgisi ve haritalar gibi daha spesifik bilgilere ihtiyacımız vardı. Bu nedenle, daha çok otonom araç yönetimine uyarlanmış rosbag_metadata tabanlı kendi paketimizi oluşturduk . Ve gerektiğinde kolayca daha fazla alan ekleyebiliriz.

Şekil 8. Çantalara ürüne özel meta veri ekleme

Oynatma ve görselleştirme

ROS 1 için seçeneklerden biri, Cruise mühendisleri tarafından geliştirilen ve açık kaynaklı bir çanta oynatma ve görselleştirme web aracı olan Webviz olacaktır. Verilere ilişkin anında görsel içgörü elde etmek için ROS çanta dosyalarını sürükleyip bırakmanıza olanak tanır. Kadar basit! Ayrıca, bu bir web uygulamasıdır, dolayısıyla herhangi bir özel ortam dağıtmanıza gerek yoktur.

Şekil 5. Bu çizim, Esther S. Weon tarafından yazılan "Webviz: An Open Source Platform for Robotics Data Visualization" makalesinden alınmıştır.

Arayüzü, paneller eklemenize ve daha alakalı verileri tek bir yerde görmenize olanak tanıyan özelleştirilebilir. Ayrıca, diğer araçlarla entegre edebilirsiniz - örneğin, Webviz'i doğrudan Çanta Veritabanı penceresinden açabilirsiniz. (Bu kurulum burada açıklanmıştır ).

Şekil 6. Çanta Veritabanındaki menüden Webviz web uygulamasının açılması

Burada bahsetmek istediğim bir diğer araç ise Foxglove Studio . Robotikte aynı görselleştirme ve analiz amacına sahiptir, ancak hem ROS 1 hem de ROS 2'yi destekleyerek ve ticari destek sunarak daha da ileri gider. Cruise'un Webviz projesinin bir çatalı olarak başladı ve şu anda aktif olarak geliştiriliyor ve özellik setini genişletiyor. Hem platformlar arası bir web uygulaması hem de Linux, macOS ve Windows cihazlarında daha fazla özelliğin ve özel panel uzantılarının kilidini açan bir masaüstü uygulaması olarak mevcuttur.

Şekil 7. Yüksükotu arayüzünde çanta oynamak

Foxglove Studio'nun geliştirmesi ve güncellemeleri hakkında daha fazla bilgiyi Medium'daki bloglarında okuyabilir veya web sitelerini ziyaret edebilirsiniz .

Çantaları düzenleme

ROS 1'de çanta dosyalarını düzenlemek istiyorsanız, Davide Faconti tarafından yazılan rosbag_editor'a bakın . Bu araç, toplu değişiklikleri torba dosyalarına uygulamanıza izin vermez, ancak belirli torbaları düzenlemek için, örneğin gösteri için yararlı olabilir. Basit kullanıcı arayüzü, konuları manuel olarak yeniden adlandırmanıza ve kaldırmanıza, dosyanın başlangıcını veya sonunu keserek çantanın süresini değiştirmenize, dosya boyutunu küçültmek için sıkıştırma türünü değiştirmenize ve dönüşümleri kaldırmanıza olanak tanır.

Evocargo'da, ROS1'de kayıtlı çantaların toplu olarak düzenlenmesine izin verecek bir araca ihtiyacımız vardı, bu nedenle mühendisimiz Vladimir Burmistrov, ros_bag_migration paketini yarattı . Kayıtlı çantalardaki mesajların formatını değiştirmenize izin verir — sadece mesajları yeniden adlandırmak ve silmekle kalmaz, aynı zamanda bir mesajı ikiye böler ve tanımlanmış kuralları belirli mesaj sürümlerine uygular. Bu paket, güncellenmiş bir dizi mesaj tanımları ile yeni çantaları kaydetmeye karar verdiğiniz ve uyumluluk için eski çantaları buna göre değiştirmek istediğiniz durumlar için mükemmel bir şekilde çalışır.

Yapı grafikleri

Ardından, inanılmaz bir grafik oluşturucu olan PlotJuggler hakkında konuşacağız ( Davide Faconti'nin başka bir paketi ). PlotJuggler , sisteminizin veya robotunuzun içinde akan tüm verileri analiz etmenize olanak tanır. Özellikleri sayesinde hata ayıklama çok daha kolay hale gelir:

  • ROS konularındaki veriler için gerçek zamanlı olarak veya bir veya birkaç .bag dosyasını PlotJuggler'a yükleyerek grafikler oluşturabilirsiniz .
  • Şekil 9. Torba dosyasında kaydırma
  • Birden fazla veri grafiği eklemek ve yönetmek oldukça kullanıcı dostudur. Örneğin, bazı 2B verileri alarak bir XY sekmesi oluşturabilir ve her zaman damgası için 2B konumları görselleştirmek üzere çizebilirsiniz.
  • Grafikler için pek çok yerleşik veri dönüştürme fırsatı vardır; örneğin, veriler için ofseti kaldırabilir, ölçeklendirebilir, entegre edebilir, aykırı değerleri kaldırabilir vb. Farklı kaynaklardan gelen verileri karşılaştırmak için çok yararlı olan dönüşüm kombinasyonları bile oluşturabilirsiniz.
  • Uygun bir dönüştürme işlevi bulamadıysanız, kendi dönüştürme işlevinizi oluşturabilirsiniz. Örneğin, Kuaterniyonlardan Yaw açısını çıkarmak ve görselleştirmek için bir fonksiyon yazabilirsiniz.
  • En son ama en kötü değil! Öldürücü özellik: çantalarla uğraşırken "ROS Konu Yeniden Yayınlayıcı" özelliğini etkinleştirebilirsiniz. Bu, zaman kaydırıcısını istediğiniz ana sürükleyebileceğiniz ve PlotJuggler'ın seçilen bir zaman damgasına karşılık gelen tüm konulardan veri yayınlayacağı anlamına gelir. Bu, belirli bir an için kameralardan gelen görüntüleri görmek, teşhis mesajlarını kontrol etmek ve hatta RVIZ gibi başka bir görselleştirme aracında her bir veri parçasını görselleştirmek istediğinizde çok kullanışlıdır.

Mesaj teslimi

Test etme ve hata ayıklama amaçları için, deneylerinizin sonuçlarının istikrarlı bir şekilde çoğaltılması önemlidir. Örneğin, belirli sensör verilerini içeren bir çanta üzerinde bir yerelleştirme algoritmasını test ettiğinizde, bu algoritmayı her çalıştırdığınızda mutlaka aynı sonucu beklersiniz. Ancak, ROS'daki yayınla-abone ol mantığı %100 mesaj teslimini garanti edemez ve muhtemelen düğümleriniz bir çantadaki tüm mesajları aynı sırayla işlemeyecektir.

ROS 1 için batch_ros paketi , çanta dosyasında göreviniz için kritik olan konuları belirlemenizi sağlar. Batch_ros, bu konulardaki her mesajı yayınladıktan sonra hizmet çağrısının senkronize edilmesini bekleyecektir. Torba dosyasındaki mesajların, node'unuz tarafından tanımlanan sırayla tek tek işlenmesinden sonra yayınlanmasını sağlar.

Şekil 10. Konulardan biri hakkında bir mesaj gönderildikten sonra, oynatma durur ve düğümünüzden oynatıcıya yayınlamaya devam etmesi için sinyal veren bir tetikleme hizmetinin çağrılmasını bekler.

Böylece batch_ros , torbaların deterministik ve tekrarlanabilir şekilde işlenmesini sağlar.

kayıt durumu

Bir çanta kaydedilirken, varsayılan ROS 1 yapılandırması yalnızca “Kaydediliyor…” mesajını gösterir. Bir şeyler ters giderse, bunu yalnızca görev tamamlandığında ve başarısız olduğunda öğrenirsiniz. Kayıt sürecini daha bilgilendirici hale getirmek için ROS 1 için rosbag_fancy terminal arayüzünü deneyin. Kaydedilen konular, bellek kullanımı, çanta dosyası boyutu ve daha fazlası gibi yararlı verileri gerçek zamanlı olarak süper basit bir tabloda görüntüler.

Şekil 11. Bu çizim github'daki rosbag_fancy sayfasından alınmıştır.

Ayrıca , bizi bir sonraki soruna ve olası çözüme götüren bırakılan mesajların (Düşen) sayısını da görebilirsiniz .

Buraya kadar okuduğunuz için teşekkür ederiz — ROS deneyiminizi geliştirmeyi bizim kadar siz de seviyor olmalısınız! Özetleyelim. Bu gönderide şu ROS paketlerine baktık: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy ve batch_ros .

Bu paket seçimini faydalı bulursanız, alkışlayarak ve yorum yaparak bize bildirin. Blogumuzda bu tür genel bakışlardan daha fazlasını memnuniyetle paylaşacağız, örneğin test, simülasyon, dokümantasyon ve diğer amaçlar için kayda değer ROS paketleri var.