BAB V HASIL DAN PEMBAHASAN
5.5 Komunikasi Perangkat Marvelmind Menggunakan ROS
Paket ROS marvelmind_nav yang disediakan oleh Marvelmind memungkinkan pengguna untuk berinteraksi dengan beacon mobile atau modem dan menerima data terkait lokasi dan informasi lainnya. Versi terbaru dari paket ini telah dirilis untuk kompatibilitas dengan ROS Melodic di sistem operasi Ubuntu 18.04 serta ROS Noetic di sistem operasi Ubuntu 20.04 Ini menjadi langkah penting dalam mendukung pengembangan dan penelitian di bidang robotika dengan memungkinkan penggunaan perangkat Marvelmind yang lebih efisien dalam lingkungan ROS. Setelah melakukan konfigurasi Indoor GPS di windows selanjutnya adalah menjalankan
ROS Marvelmind pada raspberry untuk menerima data lokasi dari mobile beacon (hedgehog) dengan menghubungkan mobile beacon ke raspberry menggunakan kabel USB Indoor GPS.
Sebelum menjalankan Marvelmind ROS, terlebih dahulu menjalankan ROS server pada terminal berbeda dengan perintah roscore.
Gambar 5.24 Menjalankan ROS Server
Roscore berperan sebagai pusat koordinasi utama yang memfasilitasi komunikasi antara node-node ROS, memungkinkan mereka untuk menemukan satu sama lain, berbagi parameter, dan bertukar data. Selain itu, roscore juga mengelola logging dalam ROS, memungkinkan pencatatan pesan dan data penting yang dihasilkan oleh node-node ROS untuk pengawasan dan analisis. Dengan demikian, roscore membentuk fondasi esensial untuk interaksi dan koordinasi yang efisien dalam ekosistem ROS. Selanjutnya adalah menjalakan node hedge_rcv_bin dari paket ROS Marvelmind untuk menerima data dari mobile beacon seperti yang ditampilkan pada gambar 5.25. Perangkat terhubung ke port /dev/ttyACM1 dengan memeriksa dengan instruksi ls /dev/ttyACM*.
Gambar 5.25 Menjalankan ROS Marvelmind
Setelah paket Indoor GPS telah berhasil dijalankan maka akan muncul beberapa topik yang berisi informasi mengenai data dari mobile beacon. Data dari masing-masing topik ini yang digunakan untuk memberikan instruksi lebih lanjut yang dikirim lewat komunikasi serial ke Arduino. Untuk mengetahui topik-topik yang muncul setelah menjalankan paket Indoor GPS dengan menjalankan instruksi rostopic list pada terminal terpisah sehingga akan muncul informasi mengenai topik-topik dari Indoor GPS seperti yang ditampilkan pada gambar 5.26.
Gambar 5.26 Topik List dari Paket Indoor GPS
Informasi dari setiap topik dapat dilihat pada tabel 5.1.Dari setiap topik, pada penelitian ini topik yang digunakan adalah /hedge_pos_ang. Topik /hedge_pos_ang memiliki informasi yang yang cukup lengkap mengenai data lokasi dari mobile beacon.
Topic Message field Type Description
hedge_pos_ang address uint8 Address of mobile beacon
timestamp_ms uint32 Timestamp of location, milliseconds x_m float64 X coordinate, meters
y_m float64 Y coordinate, meters z_m float64 Z coordinate, meters flags uint8 flags of location
angle float64 Orientation angle of paired beacons, degrees
beacon_pos_a address uint8 Address of stationary beacon
x_m float64 X coordinate, meters
y_m float64 Y coordinate, meters
z_m float64 Z coordinate, meters
beacon_distance address_hedge uint8 Address of mobile beacon address_beacon uint8 Address of stationary beacon
distance_m float64 Raw distance from mobile to stationary
beacon, meters
hedge_imu_fusion timestamp_ms int64 Timestamp of IMU fusion data, milliseconds
x_m float64
(X,Y,Z) coordinates of mobile beacon by IMU fusion. meters.
y_m float64
z_m float64
qw float64 Orientation quaternion of mobile beacon (qw,qx,qy,qz).
Normalized (qw2+qx2+qy2+qz2=1)
qx float64
qy float64
qz float64
vx float64 (vx, vy, vz) – speed vector of mobile beacon calculated by IMU fusion, meters/s
vy float64
vz float64
ax float64 (ax, ay, az) – acceleration of mobile beacon meters/s2
ay float64
az float64
hedge_imu_raw timestamp_ms int64 Timestamp of raw IMU data, milliseconds acc_x int16 (acc_x, acc_y, acc_z) – raw accelerometer
data, 1 mg/LSB
acc_y int16
acc_z int16
gyro_x int16 (gyro_x, gyro_y, gyro_z) – raw gyroscope data, 0.0175 dps/LSB
gyro_y int16
gyro_z int16
compass_x int16 (compass_x, compass_y, compass_z) – raw compass data (only for HW4.9 beacons).
X,Y: 1100 LSB/Gauss Z: 980 LSB/Gauss compass_y int16
compass_z int16
hedge_quality address uint8 Address of the mobile beacon beacon quality_percents uint8 Quality of location, percents
hedge_telemetry battery_voltage float64 Battery voltage of the mobile beacon, volts rssi_dbm int8 RSSI (radio signal strength), dBm marvelmind_w
aypoint
total_items uint8 Total number of waypoint program items (N)
item_index uint8 Index of this waypoint item (0…N-1) movement
_type uint8 Type of action (6 = move to specified point)
param1 int16 Parameter 1 (depends from movement_type)
X coordinate of waypoint, cm if type= 6
param2 int16 Parameter 2 (depends from movement_type)
Y coordinate of waypoint, cm if type= 6
param3 int16 Parameter 3 (depends from movement_type)
Z coordinate of waypoint, cm if type=
6 Tabel 5.1 Informasi dari Setiap Topic
Dari Tabel 5.1 dapat dilihat informasi dari setiap topil, pada topik hedge_pos_ang berisi informasi dari mobile beacon yang terhubung ke raspberry yaitu address dan koordinat x, y dan z dari mobile beacon. Dengan menjalankan topik ini maka kita akan memperoleh informasi yang lengkap dari mobile beacon untuk melakukan navigasi kendaraan. Selanjutnya adalah menjalankan topik hedge_pos_ang sehingga ditampilkan informasi dari beacon pada raspberry. Dengan menjalankan topik hedge_pos_ang akan menampilkan data seperti gambar 5.27
Gambar 5.27 Data yang diperoleh dari Topik Hedge_Pos_Ang
Nilai pertama yang terdapat dalam tanda kurung siku merupakan stempel waktu ROS, yang digunakan untuk mengidentifikasi waktu pengambilan data. Berikutnya adalah stempel waktu hedgehog dalam milidetik, yang mencatat waktu saat data tersebut dihasilkan oleh perangkat hedgehog. Selanjutnya, ada informasi mengenai interval waktu antara sampel posisi, yang diukur dalam milidetik, yang memberikan wawasan tentang seberapa sering data posisi diperbarui. Selain itu, terdapat koordinat X, Y, Z dalam meter, yang memberikan lokasi spesifik dalam sistem tiga dimensi. Terakhir, ada byte yang mengandung bendera atau informasi tambahan yang terkait dengan data tersebut. Selain itu, node ini juga berfungsi sebagai publisher dan mengirimkan data ke topik visualization_marker. Ini memungkinkan untuk melihat posisi dalam perangkat lunak ROS standar 'rviz'. Untuk melakukannya, jalankan 'rviz' di terminal yang berbeda seperti yang ditunjukkan dalam tangkapan layar.
Kemudian, tampilan GUI seperti yang ditampilkan pada gambar 5.28 akan muncul. Untuk melihat hedgehog, pastikan bahwa parameter 'Fixed frame' memiliki nilai 'my_frame', dan marker 'visualization marker' terhubung.
Gambar 5.28 Tampilan posisi pada visualization marker
Pada tahap ini, sistem Robot Operating System (ROS) diinisialisasi, inisialisasi melibatkan konfigurasi awal yang diperlukan untuk menjalankan aplikasi ROS, termasuk mengatur parameter lingkungan dan memastikan bahwa Master ROS berjalan dengan benar.
Setelah ROS diinisialisasi, satu atau lebih nodes dibuat yang berperan sebagai publisher dan subscriber. Node adalah unit dasar dalam arsitektur ROS yang menjalankan tugas-tugas spesifik dalam sistem. Node yang berperan sebagai publisher bertanggung jawab untuk mengirimkan data tersebut ke suatu topik. Topik adalah saluran komunikasi di mana node- node lain dapat berlangganan untuk menerima data. Node-node lain yang memerlukan data tersebut mendaftarkan diri sebagai subscriber ke topik yang sesuai. Program Indoor GPS Marvelmind berperann publisher yang akan mengirimkan data lokasi dari beacon dinamis ke sebuah topik. Node yang yang berperan sebagai subscriber dibuat dalam program python yang akan menerima semua data yang telah dipublish ke sebuah topik. Node subscriber ini akan mengolah data yang diterima kemudian mengirimkan sebuah instruksi ke ardunio melalui komunikasi serial.
Gambar 5.29 Diagram Sistem ROS