Cara Manual Membaca Raw Data di Protokol MAVLink v1 [Bagian 1]

Raw Data atau data mentah yang dalam penjelasan kali ini adalah data yang berada di dalam protokol MAVLink merupakan data yang masih berbentuk kode Hexa dan diperlukan teknik tertentu untuk membaca isinya. Kebanyakan artikel yang beredar di internet adalah cara menggunakan library bawaan MAVLink untuk membaca isi data tersebut. Tentunya dengan koding. Cara itu cukup efisien jika kita tidak perlu mengetahui bagaimana data itu diproses agar bisa dibaca. Namun jika kita ingin mengetahui bagaimana sebenarnya data mentah MAVLink dapat dibaca, maka artikel ini diharapkan bisa membantu.

Sebelum kita melanjutkan, ada baiknya kita memahami singkat apa itu MAVLink. Protokol MAVLink merupakan salah satu protokol Open Source yang digunakan pada perangkat kendali wahana tanpa awak. Wahana tanpa awak yang dimaksud adalah seperti Drone, UAV, sistem Autonomous pada mobil, atau kendaraan apapun yang sengaja dibuat memiliki kemampuan kendali otomatis atau tak berawak. Tentunya selain memiliki kemampuan kendali otomatis, juga mengirimkan data kepada pemilik atau pengguna kendaraan itu. Data bisa berupa kondisi wahana atau kendaraan tersebut dan sensor-sensor yang diberikan di sistemnya seperti lokasi, kemiringan, sudut belokan, kecepatan, suhu, objek di sekitar wahana, dll.

Susunan Data MAVLink v1

MAVLink saat ini memiliki dua versi yaitu versi 1 dan versi 2. Perbedaan yang signifikan juga memberikan kemampuan dan fitur yang sangat berbeda, tapi fungsi dasarnya sama yaitu mengirimkan data telemetri kepada pengguna.

Terlihat di atas bahwa MAVLink versi 1 dan 2 sangat jauh berbeda. MAVLink v2 memiliki struktur data yang lebih panjang daripada MAVLink v1 dengan tambahan Signature sebagai keamanan data dengan memanfaatkan algoritma SHA256. Dan beberapa tambahan data seperti MSG ID yang mencapai 3 byte, artinya akan ada banyak varian data yang ditransmisikan. Lebih banyak dari MAVLink v1.

Pada artikel ini hanya akan membahas cara membaca data pada protokol MAVLink v1 saja. Untuk MAVLink v2 mungkin dilain kesempatan.

Struktur Data

Kita tadi sudah mengetahui bagaimana data pada protokol MAVLink tersusun. Kita juga akan mengetahui contoh data MAVLink v1 yang dikirimkan. Cara pengambilan contoh data ini juga terhitung mudah, kita bisa memanfaatkan tool seperti Wireshark jika di OS Windows atau tcpdump jika menggunakan terminal Linux di perangkat terbatas seperti Raspberry. Serta menggunakan tool wajib yaitu mavproxy yang akan dibahas di artikel lain.


Di atas adalah contoh bagaimana Wireshark merekam transmisi data dari protokol MAVLink. Sekarang kita ambil salah satu data secara acak. Misalnya seperti ini:

cc2de038266ab827eb07a49008004500004068e8400040111c79c0a80a056733836bc5b71b58002cb589fe1cad010121351a06009b244afc75768b3fe6a50000daedffffc60062f6f8ffd76b2267

Data itu masih tercampur dengan data dari header UDP yang digunakan saat transmisi berlangsung. Kita akan memisahkannya yakni dengan mengambil bagian payload UDP-nya saja. Maka akan terlihat seperti ini:

fe1cad010121351a06009b244afc75768b3fe6a50000daedffffc60062f6f8ffd76b2267

Dan itu adalah data dari protokol MAVLink v1 yang sebenarnya. Hanya saja, apakah saat ini kita bisa membacanya? Minimal apakah kita bisa mengetahui data apa itu? Informasi apa yang terkandung? Dijamin data tersebut tidak akan berguna bagi kita karena tidak mengetahui informasi apa yang disampaikan.

Manual Parsing

Langkah pertama sudah kita lalui. Sekarang kita perhatikan kembali Susunan Data MAVLink v1 dan dari data yang berhasil kita ambil contohnya, kita cocokkan dengan tabel ini:

Di atas jelas tertera 0xFE adalah data header dari protokol MAVLink v1. Data yang kita ambil juga berawalan FE. Jadi dapat dipastikan urutan data setelah itu akan sama. Apakah dengan begitu saja data sudah dapat dibaca isi informasinya? Belum. Kita pahami dulu sambil kita cocokkan datanya dengan tabel tersebut.

Enam byte pertama yakni fe 1c ad 01 01 21 secara berurutan adalah header atau magic, kemudian len yang menginformasikan berapa byte panjang payloadnya, lalu ada seq alias sequence yang berarti data urutan ke berapa, sysid adalah nomor identitas sistem atau dapat dikatakan nomor urut wahana keberapa. Ini biasa digunakan jika ada banyak wahana atau Unmanned Vehicle yang dikendalikan. Dilanjut dengan compid, hampir sama dengan sysid namun bedanya adalah ini menunjukkan dari perangkat mana data dikirim. Misal kita menggunakan Pixhawk sebagai perangkat kendalinya, maka dalam satu wahana terdapat lebih dari satu perangkat Pixhawk. Terakhir msgid adalah nomor identitas dari data apa yang sebenarnya dimuat oleh protokol MAVLink tersebut. Khususnya dalam satu frame yang kita ambil sebagai contoh. Apakah data kemiringan, lokasi, suhu, atau data yang lain?

Jika kita konversi masing-masing menjadi nilai desimal, maka akan tampak apa yang sebenarnya disampaikan dari 6 byte pertama itu. Untuk FE tidak perlu, cukup dimulai dari len. Baik, mungkin untuk jelasnya begini:

FE    magic atau header yang merupakan identitas dari MAVLink v1. Bukan MAVLink v2.

1C    : panjang payload atau data yang dimuat. Desimal = 28 artinya 28 byte yang dibawa.

AD    : seq atau urutan data saat transmisi. Desimal = 173 atau bertepatan pada urutan ke 173.

01    : sysid nomor identitas dari wahana. Desimal = 1.

01    : compid nomor identitas dari perangkat atau komponen dari satu sistem. Desimal = 1.

21    : msgid adalah identitas data apa yang dikirim. Desimal = 33. Untuk ini kita tidak mungkin menghafalnya. Sebab ada banyak sekali jenis payload MAVLink yang dikirim. Kita harus cari apa itu arti kode 33 dengan melihatnya disini.

Sekarang kita sudah mengetahui apa yang sebenarnya ingin disampaikan dari 6 byte pertama dari data protokol MAVLink v1. Pertanyaan selanjutnya apakah cara tadi bisa diterapkan pada setelah byte pertama? Jawabannya tidak. Byte setelah 6 byte pertama adalah byte payload atau muatan data yang berisi informasi asli dari satu frame tadi. Isi data ini bergantung pada nilai msgid saat dikirimkan.

Sayangnya cara untuk mengetahui isi data payload tidak akan dibahas pada artikel ini, melainkan pada artikel bagian ke-2. Tujuan kami agar satu artikel ini tidak terlalu panjang. Dan kalian bisa memahami bagaimana MAVLink v1 dengan membaca satu artikel ini dahulu. Apabila ada yang belum dimengerti, pertanyaan, masukkan, dsb. silahkan tinggalkan komentar atau kalian dapat hubungi langsung via email atau Telegram kami yang telah kami lampirkan di bawah blog ini.

Bersambung . . .


Referensi:

Posting Komentar

0 Komentar