9 alat sumber terbuka yang luar biasa untuk mengelola rosbag Anda

Nov 24 2022
Pilihan yang dibuat oleh insinyur Evocargo Apakah Anda baru memulai dengan ROS atau sudah menjadi pengembang yang mendalam, Anda mungkin merasa bahwa hal-hal dan pengoperasian tertentu dapat dilakukan dengan lebih mudah, lebih cepat, atau lebih nyaman. Anda bahkan mungkin berpikir untuk membuat beberapa alat untuk ROS sekarang, misalnya alat yang akan menampilkan metadata tas Anda dalam tampilan yang bagus.

Pilihan yang dibuat oleh para insinyur Evocargo

Apakah Anda baru memulai dengan ROS atau sudah menjadi pengembang yang mendalam, Anda mungkin merasa bahwa hal-hal dan operasi tertentu dapat dilakukan dengan lebih mudah, lebih cepat, atau lebih nyaman. Anda bahkan mungkin berpikir untuk membuat beberapa alat untuk ROS sekarang, misalnya alat yang akan menampilkan metadata tas Anda dalam tampilan yang bagus. Sebelum melakukannya, periksa pilihan paket ROS sumber terbuka kami — Anda mungkin menemukan solusi siap pakai yang akan menghemat banyak waktu dan tenaga.

Dalam postingan ini, kami fokus pada paket untuk tas ROS yang membantu Anda memvisualisasikan dan mengedit data tas. Dengan beberapa paket kami melangkah lebih jauh dan mendemonstrasikan bagaimana Anda dapat memutakhirkannya untuk kebutuhan produk spesifik Anda.

Kendaraan otonom menghasilkan sejumlah besar data yang diperlukan untuk persepsi, lokalisasi, penghindaran tabrakan, diagnostik mandiri, dan tugas penting lainnya dalam mobil otonom. Data tersebut merupakan aset yang sangat berharga karena digunakan untuk pelatihan jaringan saraf dan penyelidikan insiden. Misalnya, Administrasi Keselamatan Lalu Lintas Jalan Raya Nasional AS telah mewajibkan beberapa pabrikan dan operator untuk melaporkan kecelakaan tertentu yang melibatkan kendaraan yang dilengkapi dengan SAE Level 2 -5 Advanced Driver Assistance Systems (ADAS) untuk menginvestigasi keselamatan sistem otonom dan meringkas hasilnya dalam sebuah laporan kerusakan . Ini bisa menjadi praktik umum di negara lain juga.

Estimasi data yang dihasilkan dapat bervariasi untuk kendaraan yang berbeda karena peralatan di kapal dan skenario aplikasi. Dengan beberapa kamera beresolusi tinggi, lidar, radar, dan sensor lainnya, satu mobil otonom dapat menghasilkan data hingga 15TB untuk perjalanan beberapa jam. Artinya, robotaxis yang membuat perjalanan penumpang tanpa henti disinyalir bisa mencapai 450 TB per hari (cari lebih lanjut di sini dan di sini ).

Jika Anda menggunakan ROS, semua data ditulis ke file tas yang direkam dan disimpan sehingga nanti Anda dapat mengindeks, membuat anotasi, dan memutarnya.

Gambar 1. Daftar file tas ROS

Jadi, Anda berakhir dengan daftar file yang mengesankan yang perlu Anda navigasikan dan analisis. Untuk mengatasinya, Anda dapat menggunakan paket ROS gratis yang telah kami pilih untuk dijelaskan di artikel ini. Beberapa di antaranya termasuk dalam Indeks ROS , beberapa tidak. Dan beberapa di antaranya dirancang hanya untuk ROS 1 — kami akan mencatatnya.

Melihat tas di UI yang bagus

Seperti yang Anda lihat pada Gambar 1 , tas pada dasarnya adalah file dalam direktori. Anda harus menggunakan Antarmuka Baris Perintah untuk bekerja dengannya, dan tidak banyak yang dapat Anda lakukan — secara default, ROS memungkinkan Anda memutar file tas, melihat info tentang tas, ukuran dan durasinya, melihat topik, jenis pesan dan jumlahnya. Semakin banyak data yang Anda kumpulkan, semakin sulit untuk menemukan sesuatu yang Anda butuhkan.

Alat Bag Database oleh Southwest Research Institute menawarkan antarmuka web yang ramah untuk memantau direktori Anda untuk file tas ROS. Ini memungkinkan Anda untuk melihat banyak metadata berguna seperti tanggal perekaman, rute, gambar yang sesuai, dan banyak lagi.

Interaksi Anda dengan tas menjadi jauh lebih mudah dan efisien!

Gambar 2. Melihat tas di Bag Database

Selain itu, Bag Database memungkinkan Anda menambahkan berbagai skrip pasca-pemrosesan yang kemudian dapat dijalankan di kontainer Docker yang terisolasi. Misalnya, di Evocargo, kami telah menulis bag_indexerskrip yang menampilkan ringkasan isi tas dalam satu gambar PNG.

Gambar 3. Bag summary dibuat dengan script di Bag Database

Dengan sekilas mata, Anda bisa mendapatkan ide berikut ini:

  • Kualitas jalur, cahaya, dan kondisi cuaca melalui thumbnail
  • Rute referensi dan penyimpangan darinya berdasarkan odometri, GNSS, dan lokalisasi
  • Kecepatan pada waktu atau posisi tertentu
  • Mode kontrol kendaraan, atau berapa lama kendaraan harus dioperasikan secara manual
  • Jarak dan durasi perjalanan
  • Nama tas, dan lainnya

Parameter snapshot, seperti posisi dan warna blok info dan jumlah thumbnail dari gambar kamera, ditentukan dalam file konfigurasi.

Di Bag Database , bag_indexerskripnya terlihat sebagai berikut:

Gambar 4. Jendela untuk menambahkan skrip pasca-pemrosesan

Untuk detail lebih lanjut dan contoh skrip, lihat dokumentasi Bag Database .

Menambahkan metadata

Metadata tas berisi detail tentang kondisi perekaman tas seperti lokasi perekaman, OS dan versi perangkat lunak, perangkat yang terhubung, kondisi cuaca, tugas. Biasanya, Anda menyimpan data tersebut dalam file terpisah. Namun, beberapa visualisator tas, misalnya Bag Database , memerlukan metadata untuk diintegrasikan ke dalam file tas.

Untuk menulis metadata langsung ke file tas ROS1, Anda dapat menggunakan paket rosbag_metadata . Di luar kotak itu menyimpan komentar Anda bersama dengan data sistem seperti versi paket ROS, info tentang repositori git dan hash git-commit, variabel lingkungan, konfigurasi jaringan. Semua data ini ditambahkan sebagai teks dalam file YAML ke topik /metadata.

Anda dapat menggunakan rosbag_metadata apa adanya atau memenuhi kebutuhan produk khusus Anda. Misalnya, untuk layanan logistik Evocargo, kami memerlukan info yang lebih spesifik seperti model dan nomor mobil, info kalibrasi mentah, dan peta. Oleh karena itu, kami membuat paket kami sendiri berdasarkan rosbag_metadata , lebih disesuaikan dengan manajemen kendaraan otonom. Dan kita dapat dengan mudah menambahkan lebih banyak bidang bila diperlukan.

Gambar 8. Menambahkan metadata khusus produk ke tas

Pemutaran dan visualisasi

Salah satu opsi untuk ROS 1 adalah Webviz , alat web pemutaran dan visualisasi tas yang dikembangkan dan bersumber terbuka oleh para insinyur Cruise . Ini memungkinkan Anda untuk menarik dan melepas file tas ROS untuk mendapatkan wawasan visual langsung ke dalam data. Sesimpel itu! Selain itu, ini adalah aplikasi web, jadi Anda tidak perlu menerapkan lingkungan khusus apa pun.

Gambar 5. Ilustrasi ini diambil dari artikel “Webviz: An Open Source Platform for Robotics Data Visualization” oleh Esther S. Weon

Antarmukanya dapat disesuaikan sehingga Anda dapat menambahkan panel dan melihat data yang lebih relevan di satu tempat. Selain itu, Anda dapat mengintegrasikannya dengan alat lain — misalnya, Anda dapat membuka Webviz langsung dari jendela Bag Database . (Pengaturan ini dijelaskan di sini ).

Gambar 6. Membuka aplikasi web Webviz dari menu di Bag Database

Alat lain yang ingin saya sebutkan di sini adalah Foxglove Studio . Ini memiliki tujuan visualisasi dan analisis yang sama dalam robotika, tetapi lebih jauh dengan mendukung ROS 1 dan ROS 2 dan menawarkan dukungan komersial. Ini dimulai sebagai cabang dari proyek Webviz Cruise dan sekarang sedang aktif dikembangkan dan memperluas rangkaian fiturnya. Ini tersedia sebagai aplikasi web lintas platform, dan sebagai aplikasi desktop yang membuka lebih banyak fitur dan ekstensi panel khusus di perangkat Linux, macOS, dan Windows.

Gambar 7. Memainkan tas di antarmuka Foxglove

Anda dapat membaca lebih lanjut tentang pengembangan dan pembaruan Foxglove Studio di blog mereka di Medium atau kunjungi situs web mereka .

Mengedit tas

Jika Anda ingin mengedit file tas di ROS 1, lihat rosbag_editor oleh Davide Faconti . Alat ini tidak memungkinkan Anda menerapkan perubahan batch ke file tas, tetapi mungkin berguna untuk mengedit tas tertentu, misalnya untuk demonstrasi. UI-nya yang sederhana memungkinkan Anda untuk mengganti nama dan menghapus topik secara manual, mengubah durasi tas dengan memotong awal atau akhir file, mengubah jenis kompresi untuk memperkecil ukuran file, dan menghapus transformasi.

Di Evocargo, kami membutuhkan alat yang memungkinkan pengeditan batch tas yang direkam di ROS1, jadi insinyur kami Vladimir Burmistrov telah membuat paket ros_bag_migration . Ini memungkinkan Anda untuk mengubah format pesan dalam tas rekaman — tidak hanya mengganti nama dan menghapus pesan, tetapi juga membagi pesan menjadi dua dan menerapkan aturan yang ditentukan untuk versi pesan tertentu. Paket ini bekerja dengan sempurna untuk situasi ketika Anda memutuskan untuk merekam tas baru dengan serangkaian definisi pesan yang diperbarui, dan Anda ingin mengganti tas lama agar sesuai untuk kompatibilitas.

Membangun grafik

Selanjutnya, kita akan berbicara tentang PlotJuggler , pembuat grafik yang luar biasa (paket lain oleh Davide Faconti ). PlotJuggler memungkinkan Anda menganalisis data apa pun yang mengalir di dalam sistem atau robot Anda. Debugging menjadi lebih mudah berkat fitur-fiturnya:

  • Anda dapat membuat grafik untuk data dalam topik ROS baik dalam waktu nyata atau dengan memuat satu atau beberapa file .bag ke dalam PlotJuggler .
  • Gambar 9. Menggeser melalui kikir tas
  • Menambah dan mengelola banyak plot data sangat mudah digunakan. Misalnya, Anda dapat membuat tab XY dengan mengambil beberapa data 2D dan memplotnya untuk memvisualisasikan posisi 2D untuk setiap stempel waktu.
  • Ada banyak peluang transformasi data bawaan untuk plot, misalnya Anda dapat menghapus offset untuk data, menskalakannya, mengintegrasikannya, menghapus outlier, dan sebagainya. Anda bahkan dapat membuat kombinasi transformasi, yang sangat berguna untuk membandingkan data dari berbagai sumber.
  • Jika Anda belum menemukan fungsi transformasi yang sesuai, Anda dapat membuatnya sendiri. Misalnya, Anda dapat menulis fungsi untuk mengekstraksi dan memvisualisasikan sudut Yaw dari angka empat.
  • Terakhir, tetapi tidak kalah penting! Fitur pembunuh: ketika Anda berurusan dengan tas, Anda dapat mengaktifkan "Penerbit Ulang Topik ROS". Itu berarti Anda dapat menyeret penggeser waktu ke momen apa pun yang Anda inginkan dan PlotJuggler akan menerbitkan data dari semua topik yang sesuai dengan stempel waktu yang dipilih. Ini sangat berguna saat Anda ingin melihat gambar dari kamera untuk momen tertentu, memeriksa pesan diagnostik, atau bahkan memvisualisasikan setiap bagian data di beberapa alat visualisasi lain seperti RVIZ.

Pengiriman pesan

Untuk tujuan pengujian dan debug, penting agar hasil eksperimen Anda direproduksi secara stabil. Misalnya, saat Anda menguji algoritme lokalisasi pada tas berisi data sensor tertentu, Anda pasti mengharapkan hasil yang sama setiap kali Anda menjalankan algoritme ini. Namun, logika terbitkan-berlangganan di ROS tidak dapat menjamin pengiriman pesan 100% dan kemungkinan node Anda tidak akan memproses semua pesan di tas dalam urutan yang sama.

Paket batch_ros untuk ROS 1 memungkinkan Anda menentukan topik dalam file tas yang sangat penting untuk tugas Anda. batch_ros akan menunggu panggilan layanan sinkronisasi setelah menerbitkan setiap pesan dari topik ini. Ini memastikan bahwa pesan dari file tas akan dipublikasikan setelah node Anda memprosesnya satu per satu dalam urutan yang ditentukan.

Gambar 10. Setelah pesan dikirim pada salah satu topik, pemutaran berhenti dan menunggu layanan pemicu dipanggil dari node Anda yang menandakan pemutar untuk melanjutkan penerbitan

Dengan demikian batch_ros memastikan pemrosesan tas yang deterministik dan berulang.

Status perekaman

Saat tas sedang direkam, konfigurasi default ROS 1 hanya menampilkan pesan “Merekam…”. Jika ada yang salah, Anda mengetahuinya hanya ketika tugas selesai dan gagal. Untuk membuat proses perekaman lebih informatif, coba antarmuka terminal rosbag_fancy untuk ROS 1. Ini menampilkan data berguna secara real time, seperti topik yang sedang direkam, penggunaan memori, ukuran file tas, dan banyak lagi — semuanya dalam tabel super sederhana.

Gambar 11. Ilustrasi ini diambil dari halaman rosbag_fancy di github

Anda juga dapat melihat jumlah pesan yang dijatuhkan ( Drops ) yang mengarahkan kita ke masalah berikutnya dan kemungkinan solusinya.

Terima kasih telah membaca sejauh ini — Anda pasti ingin meningkatkan pengalaman Anda dengan ROS seperti halnya kami! Mari kita simpulkan. Dalam postingan ini, kita telah melihat paket ROS berikut: Bag Database , rosbag_metadata , Webviz , Foxglove Studio , rosbag_editor , ros_bag_migration , PlotJuggler , rosbag_fancy , dan batch_ros .

Jika menurut Anda pilihan paket ini bermanfaat, beri tahu kami dengan bertepuk tangan dan berkomentar. Kami akan dengan senang hati membagikan lebih banyak ikhtisar seperti itu di blog kami, misalnya, ada paket ROS yang patut diperhatikan untuk pengujian, simulasi, dokumentasi, dan tujuan lainnya.