Anda di halaman 1dari 200

IMPLEMENTASI PEMETAAN PADA ROBOT BERGERAK

OTONOM UNTUK NAVIGASI DALAM RUANGAN


MENGGUNAKAN SENSOR RPLIDAR, ALGORITME HECTOR
SLAM, DAN ALGORITME DIJKSTRA

IMPLEMENTASI PEMETAAN DAN NAVIGASI DALAM


RUANGAN PADA AUTONOMOUS MOBILE ROBOT
MENGGUNAKAN SENSOR RPLIDAR, ALGORITMA HECTOR
SLAM DAN ALGORITME DIJKSTRA PADA PLATFORM ROBOT
OPERATING SYSTEM

PURWARUPA ROBOT BERGERAK OTONOM UNTUK


MAPPING DAN INDOOR NAVIGATION PADA PLATFORM
ROBOT OPERATING SYSTEM (ROS)

IMPLEMENTASI SISTEM NAVIGASI OTOMATIS DALAM


RUANGAN PADA ROBOT BERODA MENGGUNAKAN
PLATFORM ROBOT OPERATING SYSTEM (ROS)

IMPLEMENTASI SISTEM NAVIGASI OTOMATIS DALAM


RUANGAN PADA ROBOT BERODA MENGGUNAKAN MULTI-
SENSOR DAN MULTI-ALGORITHM

SKRIPSI

Untuk memenuhi sebagai persyaratan


memperoleh gelar Sarjana Teknik

Disusun oleh:
Bambang Gunawan Tanjung
NIM: 185150300111051
PROGRAM STUDI TEKNIK KOMPUTER
JURUSAN TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
MALANG
2021
PERSETUJUAN

IMPLEMENTASI PEMETAAN DAN NAVIGASI DALAM RUANGAN PADA


AUTONOMOUS MOBILE ROBOT MENGGUNAKAN SENSOR RPLIDAR, ALGORITMA
HECTOR SLAM DAN ALGORITME DIJKSTRA PADA PLATFORM ROBOT OPERATING
SYSTEM
SKRIPSI

Diajukan untuk memenuhi sebagian persyaratan


memperoleh gelar Sarjana Teknik

Disusun Oleh :
Bambang Gunawan Tanjung
NIM: 185150300111051

Dosen Pembimbing I Dosen Pembimbing 2

Rizal Maulana, S.T., M.T., M.Sc. Rakhmadhany Primananda, S.T., M.Kom.


NIK: 2016078910091001 NIK: 2016098604061001
PERNYATAAN ORISINALITAS

Saya menyatakan dengan sebenar-benarnya bahwa sepanjang pengetahuan


saya, di dalam naskah skripsi ini tidak terdapat karya ilmiah yang pernah
diajukan oleh orang lain untuk memperoleh gelar akademik di suatu perguruan
tinggi, dan tidak terdapat karya atau pendapat yang pernah ditulis atau
diterbitkan oleh orang lain, kecuali yang secara tertulis disitasi dalam naskah ini
dan disebutkan dalam daftar referensi.
Apabila ternyata di dalam naskah skripsi ini dapat dibuktikan terdapat unsur-
unsur plagiasi, saya bersedia skripsi ini digugurkan dan gelar akademik yang telah
saya peroleh (sarjana) dibatalkan, serta diproses sesuai dengan peraturan
perundang-undangan yang berlaku (UU No. 20 Tahun 2003, Pasal 25 ayat 2 dan
Pasal 70).

Malang, 20 Maret 2022

Bambang Gunawan Tanjung


NIM: 185150300111051
PRAKATA

Syukur Alhamdulillah penulis panjatkan ke hadirat Allah SWT atas berkat


rahmat, hidayah dan ridho-Nya sehingga penulis dapat menyelesaikan tugas
akhir “skripsi” sebagai salah satu syarat yang diperlukan untuk menyelesaikan
Program Sarjana (S1) Program Studi Teknik Komputer Fakultas Ilmu Komputer
Universitas Brawijaya. Dalam ke penulisan skripsi ini, penulis telah menempuh
mata kuliah pendukung embedded system (CCE62204), sistem kendali
(CCE62160) dan sistem cerdas (CCE61151), guna mengimplementasikan topik
pada riset ini. Selain itu dalam penyusunan skripsi ini, tidak akan terselesaikan
tanpa adanya bantuan serta kemurahan hati dari berbagai pihak. Maka dari itu
tidak lupa penulis panjatkan terima kasih kepada seluruh pihak yang telah
memberikan inspirasi, bantuan, dan dukungan moral ataupun finansial. Ucapan
terima kasih juga penulis sampaikan kepada Bapak Rizal Maulana, S.T., M.T.,
M.Sc. selaku dosen pembimbing pertama dan Bapak Rakhmadhany Primananda,
S.T., M.Kom. selaku dosen pembimbing kedua atas bimbingan motivasi, saran
dan diskusi yang diberikan kepada penulis, mulai dari persiapan usulan penelitian
hingga penulis mampu menyelesaikan skripsi ini dengan baik.
Selanjutnya dengan penuh rasa hormat penulis mengucapkan terima kasih
kepada kedua orang tua tercinta, Syukri Amsyah Tanjung dan Misnawati, karena
semua keberhasilan ini tidak luput dari jasa, pengorbanan, limpahan cinta kasih
sayang, dukungan moral dan finansial serta doa beliau yang selalu dipanjatkan
setiap hari.
Dalam kesempatan ini penulis juga mengucapkan terima kasih sebesar-
besarnya kepada:
1. Bapak Achmad Basuki, S.T., M.M.G., Ph.D. selaku ketua Jurusan Teknik
Informatika Fakultas Ilmu Komputer Universitas Brawijaya.
2. Bapak Barlian Henryranu Prasetio, S.T., M.T., Ph.D. selaku ketua Program
Studi Teknik Komputer Fakultas Ilmu Komputer Universitas Brawijaya.
3. Bapak Gembong Edhi Setyawan, S.T., M.T. dan Bapak Dahnial Syauqy,
S.T., M.T., M.Sc. selaku dosen yang pernah menjadi dosen penasihat
akademik saya selama melaksanakan perkuliahan di Universitas
Brawijaya.
4. Bapak dan Ibu dosen yang telah mengajarkan saya mata kuliah selama di
teknik komputer maupun memberikan dukungan selama perkuliahan
saya.
5. Teman-teman terdekat saya yang selalu memberikan dukungan selama
perkuliahan dan mendorong saya untuk cepat menyelesaikan skripsi.
6. Teman-teman seperjuangan teknik komputer baik dari angkatan 2016,
2017, 2018, 2019, dan 2020 yang juga membantu saya pada pengerjaan
skripsi ini maupun selama perkuliahan saya.
7. Hamdan Zuhdi Dewa yang telah menjadi sahabat karib saya sekaligus
partner skripsi yang mengerjakan proyek robot bersama-sama.
8. Seluruh anggota Komunitas Hoverboard Hack dan Robaka Internasional
yang senantiasa membantu menjawab pertanyaan ketika penulis sedang
mengalami kesulitan.
9. Seluruh tim pengembang ROS yang senantiasa mempublikasikan library
dan dokumentasi ROS secara open source.
Akhir kata, penulis menyadari bahwasanya dalam penyusunan skripsi ini
terdapat banyak kekurangan, baik berupa tata ke penulisan ataupun aspek
lainnya di dalam skripsi ini. Untuk itu, penulis menerima dengan lapang dada atas
segala kritikan ataupun saran yang diberikan oleh pihak pembaca ataupun
peneliti lainnya agar ke depannya penulis dapat memperbaiki karya tulis ini
ataupun karya tulis selanjutnya menjadi lebih baik lagi.

Malang, 20 Maret 2021

Penulis
bambanggunawan887@gmail.com
ABSTRAK

Bambang Gunawan Tanjung, Implementasi Pemetaan Dan Navigasi Dalam


Ruangan Pada Autonomous Mobile Robot Menggunakan Sensor RPLidar,
Algoritma Hector SLAM Dan Algoritme Dijkstra Dengan Platform Robot
Operating System.
Pembimbing: Rizal Maulana, S.T., M.T., M.Sc. dan Rakhmadhany Primananda,
S.T., M. Kom.
Bagian ini diisi dengan abstrak dalam Bahasa Indonesia. Abstrak adalah
uraian singkat (umumnya 200-300 kata) yang merupakan inti sari dari sebuah
skripsi. Abstrak membantu pembaca untuk mendapatkan gambaran secara cepat
dan akurat tentang isi dari sebuah skripsi. Melalui abstrak, pembaca juga dapat
menentukan apakah akan membaca skripsi lebih lanjut. Oleh karena itu, abstrak
sebaiknya memberikan gambaran yang padat tetapi tetap jelas dan akurat
tentang (1) apa dan mengapa penelitian dikerjakan: sedikit latar belakang,
pertanyaan atau masalah penelitian, dan/atau tujuan penelitian; (2) bagaimana
penelitian dikerjakan: rancangan penelitian dan metodologi/metode dasar yang
digunakan dalam penelitian; (3) hasil penting yang diperoleh: temuan utama,
karakteristik artefak, atau hasil evaluasi artefak yang dibangun; (4) hasil
pembahasan dan kesimpulan: hasil dari analisis dan pembahasan temuan atau
evaluasi artefak yang dibangun, yang dikaitkan dengan pertanyaan/tujuan
penelitian.
Yang harus dihindari dalam sebuah abstrak diantarnya (1) penjelasan latar
belakang yang terlalu panjang; (2) sitasi ke pustaka lainnya; (3) kalimat yang tidak
lengkap; (3) singkatan, jargon, atau istilah yang membingungkan pembaca,
kecuali telah dijelaskan dengan baik; (4) gambar atau tabel; (5) angka-angka yang
terlalu banyak.
Di akhir abstrak ditampilkan beberapa kata kunci (normalnya 5-7) untuk
membantu pembaca memosisikan isi skripsi dengan area studi dan masalah
penelitian. Kata kunci, beserta judul, nama penulis, dan abstrak biasanya
dimasukkan dalam basis data perpustakaan. Kata kunci juga dapat di indeks
dalam basis data sehingga dapat digunakan untuk proses pencarian tulisan ilmiah
yang relevan. Oleh karena itu pemilihan kata kunci yang sesuai dengan area
penelitian dan masalah penelitian cukup penting. Pemilihan kata kunci juga bisa
didapatkan dari referensi yang dirujuk.

Kata kunci: abstrak, skripsi, inti sari, kata kunci, artefak


ABSTRACT

Bambang Gunawan Tanjung, Implementation of Mapping and Indoor Naviga-


tion on Autonomous Mobile Robot Using RPLidar Sensor, Hector SLAM Algo-
rithm and Dijkstra Algorithm with Robot Operating System Platform.
Supervisor: Rizal Maulana, S.T., M.T., M.Sc. dan Rakhmadhany Primananda,
S.T., M. Kom.
This section is filled with abstracts in Indonesian. Abstract is a short
description (usually 200-300 words) which is the essence of a thesis. Abstract
helps readers to get a quick and accurate picture of the contents of a thesis.
Through the abstract, the reader can also determine whether to read the thesis
further. Therefore, the abstract should provide a concise but clear and accurate
description of (1) what and why the research was carried out: a little background,
research questions or problems, and/or research objectives; (2) how the research
is carried out: the research design and the basic methodology/methods used in
the research; (3) important results obtained: main findings, characteristics of
artifacts, or evaluation results of built artifacts; (4) the results of the discussion
and conclusions: the results of the analysis and discussion of the findings or
evaluation of the built artifacts, which are related to the research
questions/objectives.
Things to avoid in an abstract include (1) a background explanation that is
too long; (2) citation to other libraries; (3) incomplete sentences; (3)
abbreviations, jargon, or terms that confuse the reader, unless they are well
explained; (4) pictures or tables; (5) the numbers are too many.
At the end of the abstract, several keywords are displayed (normally 5-7) to
help the reader position the content of the thesis with the area of study and
research problem. Keywords, along with title, author name, and abstract are
usually entered in the library database. Keywords can also be indexed in the
database so that they can be used for the process of searching for relevant
scientific papers. Therefore, the selection of keywords that are appropriate to the
research area and research problem is quite important. Selection of keywords
can also be obtained from referenced references.

Keywords: abstract, thesis, essence, keywords, artifact


DAFTAR ISI

PERSETUJUAN..........................................................................................................
PERNYATAAN ORISINALITAS...................................................................................
PRAKATA...................................................................................................................
ABSTRAK.................................................................................................................
ABSTRACT..............................................................................................................
DAFTAR ISI...............................................................................................................
DAFTAR TABEL.......................................................................................................
DAFTAR GAMBAR...................................................................................................
DAFTAR LAMPIRAN................................................................................................
BAB 1 PENDAHULUAN..............................................................................................
1.1 Latar Belakang........................................................................................
1.2 Rumusan Masalah..................................................................................
1.3 Tujuan.....................................................................................................
1.4 Manfaat..................................................................................................
1.5 Batasan Masalah.....................................................................................
1.6 Sistematika Pembahasan........................................................................
BAB 2 LANDASAN KEPUSTAKAAN............................................................................
2.1 Tinjauan Pustaka.....................................................................................
2.1.1 Autonomous Mobile Robot Berbasis Landmark
Menggunakan Particle Filter Dan Occupancy Grid Maps Untuk
Navigasi, Penentuan Posisi, Dan Pemetaan..........................................
2.1.2 2D LIDAR-Based SLAM and Path Planning for Indoor
Rescue Using Mobile Robots.................................................................
2.1.3 A Review of Visual-LIDAR Fusion based Simultaneous
Localization and Mapping.....................................................................
2.1.4 Navigasi Indoor Berbasis Peta Pada Robot Beroda
Dengan Platform Robot Operating System...........................................
2.1.5 Sistem Navigasi Mobile Robot Dalam Ruangan Berbasis
Autonomous Navigation.......................................................................
2.1.6 Path Planning for Smart Car Based on Dijkstra Algorithm
and Dynamic Window Approach..........................................................
2.2 Dasar Teori............................................................................................
2.2.1 Autonomous Robot......................................................................
2.2.2 Autonomous Mobile Robot (AMR)...............................................
2.2.3 Mekanisme Kemudi Robot Beroda..............................................
2.2.4 Autonomous Navigation..............................................................
2.2.5 Metode Simultaneous Localization And Mapping (SLAM)..........
2.2.6 Algoritme Hector Simultaneous Localization and
Mapping................................................................................................
2.2.7 Algoritme Extended Kalman Filter (EKF)......................................
2.2.8 Navigasi........................................................................................
2.2.9 Path Planning...............................................................................
2.2.10 Algoritme Dijkstra......................................................................
2.2.11 Algoritma Dynamic Window Approach (DWA)..........................
2.2.12 Komponen Utama Robot Pengantar Barang.............................
2.2.13 Light Detection and Ranging (LIDAR).........................................
2.2.14 Odometry...................................................................................
2.2.15 Inertial Measurement Unit (IMU)..............................................
2.2.16 Firmware....................................................................................
2.2.17 Robot Operating System (ROS)..................................................
2.2.18 Transformer (tf)..........................................................................
2.2.19 Catkin workspace.......................................................................
2.2.20 ROS User Interface.....................................................................
2.2.21 Komunikasi Serial.......................................................................
2.2.22 Virtual Network Computing (VNC).............................................
2.2.23 Terminator (Terminal Command Application)...........................
2.2.24 Hoverboard Firmware................................................................
2.2.25 Metode Statistik.........................................................................
BAB 3 METODOLOGI PENELITIAN..........................................................................
3.1 Tipe Penelitian......................................................................................
3.2 Strategi dan Rencana Penelitian...........................................................
3.3 Metode Penelitian................................................................................
3.4 Subjek Penelitian..................................................................................
3.5 Lokasi Penelitian...................................................................................
3.6 Teknik Pengumpulan Data....................................................................
3.7 Teknik Analisis Data..............................................................................
3.8 Peralatan Pendukung............................................................................
BAB 4 Rekayasa Kebutuhan...................................................................................
4.1 Gambaran Umum Sistem.....................................................................
4.2 Analisis Kebutuhan Sistem....................................................................
4.2.1 Kebutuhan Fungsional.................................................................
4.2.2 Kebutuhan Non-Fungsional.........................................................
BAB 5 Perancangan dan implementasi..................................................................
5.1 Perancangan Sistem.............................................................................
5.1.1 Perancangan Skematis Prototype Sistem....................................
5.1.2 Perancangan Perangkat Keras Sistem..........................................
5.1.3 Perancangan Perangkat Lunak...................................................
5.2 Implementasi Sistem..........................................................................
5.2.1 Implementasi Skematis Prototype Sistem.................................
5.2.2 Implementasi Perangkat Keras..................................................
5.2.3 Implementasi Perangkat Lunak.................................................
BAB 6 Pengujian...................................................................................................
6.1 Metode Pengujian..............................................................................
6.2 Pengujian Fungsional..........................................................................
6.2.1 Pengujian Fungsional Mainboard Robot...................................
6.3 Pengujian Kinerja................................................................................
6.3.1 Pengujian Delay Pengiriman......................................................
BAB 7 Penutup.....................................................................................................
7.1 Kesimpulan.........................................................................................
7.2 Saran...................................................................................................
DAFTAR REFERENSI..............................................................................................
LAMPIRAN A PERSYARATAN FISIK DAN TATA LETAK...........................................
LAMPIRAN B PERSYARATAN FISIK DAN TATA LETAK...........................................
LAMPIRAN C PERSYARATAN FISIK DAN TATA LETAK...........................................
LAMPIRAN D PERSYARATAN FISIK DAN TATA LETAK...........................................
LAMPIRAN E PERSYARATAN FISIK DAN TATA LETAK...........................................
DAFTAR TABEL

Tabel 2.1 Tinjauan Penelitian Sebelumnya..............................................................7


Tabel 2.2 Pseudocode Algoritme Dijkstra..............................................................37
Tabel 2.3 Pseudocode Dynamic Window Approach..............................................38
Tabel 4.1 Kebutuhan Fungsional Sistem................................................................62
Tabel 4.2 Spesifikasi Motherboard Hoverboard....................................................64
Tabel 4.3 Spesifikasi Mikrokontroler Jetson Nano 3B...........................................66
Tabel 4.4 Spesifikasi Motor DC Brushless..............................................................67
Tabel 4.5 Spesifikasi Catu Daya untuk Suplai Motherboard Hoverboard..............68
Tabel 4.6 Spesifikasi Catu Daya untuk Suplai Jetson Nano....................................69
Tabel 4.7 Spesifikasi RPLIDAR A1...........................................................................70
Tabel 4.8 Spesifikasi Sensor IMU GY-521 MPU6050..............................................71
Tabel 4.9 Datasheet STLink V2 mini USB...............................................................72
Tabel 4.10 Parameter Hoverboard Driver..............................................................78
Tabel 4.11 Parameter RPLIDAR ROS Driver............................................................79
Tabel 4.12 Parameter MPU6050 Driver.................................................................80
Tabel 4.13 Parameter Hector Mapping.................................................................80
Tabel 4.14 Parameter EKF Localization..................................................................82
Tabel 4.15 Parameter AMCL Localization..............................................................83
Tabel 4.16 Parameter Move Base..........................................................................84
Tabel 4.17 Parameter Konfigurasi Costmap..........................................................85
Tabel 4.18 Parameter Konfigurasi Algoritme Dijkstra Global Planner...................86
Tabel 4.19 Konfigurasi Algoritme DWA Local Planner...........................................87
Tabel 5.1 Penjelasan Konfigurasi Pinout Motherboard Hoverboard.....................97
Tabel 5.2 Penjelasan pinout sensor RPLIDAR........................................................99
Tabel 5.3 Penjelasan pinout sensor GY-521 IMU MPU6050................................100
Tabel 5.4 Daftar Bagian Yang Dicetak..................................................................133
Tabel 5.5 Mur, Baut, Dan Sekrup Yang Digunakan..............................................135
Tabel 5.6 Pemasangan Kabel Untuk Flashing Motherboard...............................138
Tabel 5.7 Pemasangan Kabel Perangkat Keras Sistem Penggerak......................140
Tabel 5.8...............................................................................................................141
Tabel 5.9 Kode Program Konfigurasi Firmware Motherboard Hoverboard........143
Tabel 5.10 Kode Program Konfigurasi Driver Hoverboard..................................152
Tabel 5.11 Kode Program Konfigurasi Launcher Hoverboard.............................153
Tabel 5.12 Kode Program Konfigurasi Launcher RPLIDAR...................................154
Tabel 5.13 Kode Program Konfigurasi Nama Topik Output IMU.........................155
Tabel 5.14 Kode Program Konfigurasi Parameter MPU6050..............................157
Tabel 5.15 Perbandingan Output Sensor IMU Sebelum Dan Sesudah................158
Tabel 5.16 Kode Program Launcher Mapping Default.........................................159
Tabel 5.17 Kode Program Launcher AMR Mapping pada Hector SLAM Launch. 162
Tabel 6.1 Deskripsi Pengujian Mainboard Robot................................................164
Tabel 6.2 Deskripsi Pengujian Mainboard Robot................................................165
DAFTAR GAMBAR

Gambar 2.1 Robot Space Otonom Penjelajah Mars..............................................13


Gambar 2.2 Teknologi Self-Driving Pada Navigasi Mobil.......................................15
Gambar 2.3 Autonomous Mobile Robot................................................................15
Gambar 2.4 Penggunaan Robot Pada Gudang Logistik.........................................16
Gambar 2.5 Robot Membawa Paket Di Gudang Ekspedisi....................................17
Gambar 2.6 Ackerman Steering Geometry............................................................18
Gambar 2.7 Konsep Differential Drive...................................................................19
Gambar 2.8 Mekanisme Kinetik Differential Drive Robot......................................19
Gambar 2.9 Ilustrasi Aplikasi Indoor Navigation Di Dalam Mall............................21
Gambar 2.10 Ilustrasi Permasalahan Komputasi SLAM.........................................22
Gambar 2.11 Ikhtisar Proses Metode Komputasi SLAM........................................22
Gambar 2.12 Lokalisasi Dalam Ruangan................................................................24
Gambar 2.13 2D Mapping Dalam Ruangan...........................................................25
Gambar 2.14 Skema Sistem Hector SLAM.............................................................26
Gambar 2.15 Skema Sistem Hector SLAM.............................................................27
Gambar 2.16 Path Planning Menggunakan GPS Pada Aplikasi Mapbox...............30
Gambar 2.17 Ilustrasi Global Planner....................................................................32
Gambar 2.18 Ilustrasi Local Planner......................................................................32
Gambar 2.19 Perencanaan Jalur Terpendek Menggunakan Algoritme Dijkstra...33
Gambar 2.20 Grid Map Hasil Pemetaan................................................................34
Gambar 2.21 Peta 5x5............................................................................................35
Gambar 2.22 Node Awal Gambar 2.23 Kunjungi Tetangga................................35
Gambar 2.24 Pindah ke Node Lain Gambar 2.25 Sampai di N...........................35
Gambar 2.26 Membangun Jarak Terpendek.........................................................35
Gambar 2.27 Path finding Selesai..........................................................................36
Gambar 2.28 Ilustrasi Pemilihan Jalur Algoritme DWA.........................................38
Gambar 2.29 Motherboard Hoverboard................................................................40
Gambar 2.30 Nvidia Jetson Nano..........................................................................41
Gambar 2.31 Motor BLDC 6.5” 36V 350W dan build in Encoder..........................41
Gambar 2.32 Baterai Litium Ion 42V 10S2P 4400mAh..........................................42
Gambar 2.33 STLink V2..........................................................................................42
Gambar 2.34 Sensor RPLIDAR................................................................................43
Gambar 2.35 Sensor IMU GY-521..........................................................................44
Gambar 2.36 Frame Transformasi Robot Beroda..................................................50
Gambar 2.37 Tampilan Antarmuka Aplikasi Rviz...................................................51
Gambar 2.38 Tampilan Antarmuka Aplikasi rqt....................................................52
Gambar 2.39 Komunikasi Dua Komputer Dengan VNC.........................................53
Gambar 2.40 Tampilan Antarmuka Aplikasi Terminal Terminator........................54
Gambar 3.1 Diagram Alir Penelitian......................................................................58
Gambar 4.1 Blok Diagram Sistem..........................................................................61
Gambar 4.2 Perangkat Motherboard Hoverboard................................................64
Gambar 4.3 Nvidia Jetson Nano.............................................................................65
Gambar 4.4 Perangkat Motor BLDC Hoverboard..................................................67
Gambar 4.5 Baterai Hoverboard............................................................................68
Gambar 4.6 Sensor RPLIDAR A1.............................................................................69
Gambar 4.7 Sensor GY-521 IMU6050....................................................................70
Gambar 4.8 STM32Cube Programmer..................................................................74
Gambar 4.9 Diagram pohon directory catkin workspace....................................74
Gambar 4.10 ROS Melodic.....................................................................................75
Gambar 4.11 Tampilan Antarmuka Rviz................................................................77
Gambar 4.12 Aplikasi rqt Dan Plugins....................................................................77
Gambar 5.1 Desain Chassis Badan Depan Robot...................................................90
Gambar 5.2 Desain Semua Bagian Cetak 3D.........................................................91
Gambar 5.3 Assembling Semua Bagian Chassis Belakang Robot..........................91
Gambar 5.4 Rancangan Sistem Kemudi Utama Robot..........................................92
Gambar 5.5 Grafik Kinematik Sistem Kemudi Diff-drive........................................92
Gambar 5.6 Rancangan Prototype Keseluruhan Sistem Tampak Samping...........93
Gambar 5.7 Rancangan Prototype Keseluruhan Sistem Tampak Atas..................94
Gambar 5.8 Rancangan Prototype Keseluruhan Sistem Tampak Bawah..............94
Gambar 5.9 Rancangan Perangkat Keras Sistem...................................................95
Gambar 5.10 Skema Sistem Penggerak Robot......................................................96
Gambar 5.11 Pinout Sensor RPLIDAR A1...............................................................99
Gambar 5.12 Pinout sensor GY-521 IMU MPU6050............................................100
Gambar 5.13 Arsitektur Keseluruhan Sistem.......................................................101
Gambar 5.14 Diagram Alir Tahap Persiapan Awal Motherboard........................102
Gambar 5.15 Pinout dari Motherboard ke STLink...............................................103
Gambar 5.16 Diagram Alir Persiapan Awal Jetson Nano.....................................104
Gambar 5.17 Diagram Alir Persiapan Awal Jetson Nano.....................................105
Gambar 5.18 Diagram Alir Program Utama.........................................................106
Gambar 5.19 Diagram Alir Sub Proses Kalibrasi Sensor IMU..............................107
Gambar 5.20 Diagram Alir Program Pemetaan...................................................109
Gambar 5.21 Diagram Alir Proses Algoritme Hector SLAM.................................112
Gambar 5.22 Diagram Alir Sub Proses Hector Mapping......................................113
Gambar 5.23 Diagram Alir Sub Proses Estimasi Pose 2D.....................................114
Gambar 5.24 Diagram Alir Sub Proses Occupancy Grid Map..............................116
Gambar 5.25 Diagram Alir Proses Algoritme Extended Kalman Filter (EKF).......117
Gambar 5.26 Diagram Alir Program Navigasi......................................................119
Gambar 5.27 Diagram Alir Algoritme Adaptive Monte Carlo Localization (AMCL)
..............................................................................................................................121
Gambar 5.28 Diagram Alir Sub Proses AMCL: Scan Matching.............................122
Gambar 5.29 Diagram Alir Proses Algoritme Lokalisasi EKF pada Navigasi.........124
Gambar 5.30 Diagram Alir Sub Proses Path Planning..........................................125
Gambar 5.31 Diagram Alir Algoritme Dijkstra.....................................................127
Gambar 5.32 Diagram Alir Algoritme Dynamic Window Approach.....................129
Gambar 5.33 Simulasi Maju Prediksi Pergerakan Robot.....................................130
Gambar 5.34 Dokumentasi Hasil Pembuatan Chassis Badan Robot...................132
Gambar 5.35 Dokumentasi Pencetakan Desain Dengan 3D Printer....................133
Gambar 5.36 Dokumentasi Pemasangan Brass Nut............................................134
Gambar 5.37 Hasil Assembling Chassis Robot.....................................................136
Gambar 5.38 Implementasi Prototype Sistem Robot Tampak Samping.............136
Gambar 5.39 Implementasi Prototype Sistem Robot Tampak Atas....................137
Gambar 5.40 Perangkat Hoverboard Yang Digunakan........................................138
Gambar 5.41 Dokumentasi Pembuatan Sistem Mainboard Robot.....................138
Gambar 5.42 Implementasi Sistem Penggerak Robot.........................................139
Gambar 5.43 Implementasi Sistem Persepsi Robot Dengan Sensor...................141
Gambar 5.44 Pesan Berhasil Melakukan Hapus Penuh Chip...............................142
Gambar 5.45 Implementasi Hasil Compile, Upload, dan Flashing Motherboard
Hoverboard..........................................................................................................145
Gambar 5.46 Koneksi Wi-Fi Jetson Nano dan Komputer Server.........................146
Gambar 5.47 Menghubungkan VNC Client PC Dengan VNC Server Jetson Nano
..............................................................................................................................147
Gambar 5.48 Implementasi Hasil Remote Access Ke Jetson Nano via VNC Berhasil
..............................................................................................................................147
Gambar 5.49 Koneksi Wi-Fi Jetson Nano dan Komputer Server.........................148
Gambar 5.50 Perintah Untuk Melakukan SSH Ke Jetson Nano...........................148
Gambar 5.51 Implementasi Hasil Komunikasi Remote Access Ke Jetson Nano via
SSH Berhasil.........................................................................................................149
Gambar 5.52 Pesan Port USB RPLIDAR Dan FTDI Terbaca..................................150
Gambar 5.53 Pesan Spesifikasi Dan Keterangan USB..........................................150
Gambar 5.54 Implementasi Hasil Konfigurasi Port USB Yang Berhasil................151
Gambar 5.55 Implementasi Hasil Pembuatan Workspace..................................152
Gambar 5.56 Implementasi Pembacaan IMU Sebelum Kalibrasi........................157
DAFTAR LAMPIRAN

LAMPIRAN A PERSYARATAN FISIK DAN TATA LETAK...........................................


A.1 Kertas..................................................................................................
A.2 Margin................................................................................................
A.3 Jenis dan Ukuran Huruf......................................................................
A.4 Spasi....................................................................................................
A.5 Kepala Bab dan Subbab......................................................................
A.6 Nomor Halaman.................................................................................
LAMPIRAN B PERSYARATAN FISIK DAN TATA LETAK...........................................
B.1 Margin................................................................................................
B.2 Jenis dan Ukuran Huruf......................................................................
B.3 Spasi....................................................................................................
B.4 Kepala Bab dan Subbab......................................................................
B.5 Nomor Halaman.................................................................................
LAMPIRAN C PERSYARATAN FISIK DAN TATA LETAK...........................................
C.1 Margin................................................................................................
C.2 Jenis dan Ukuran Huruf......................................................................
C.3 Spasi....................................................................................................
C.4 Kepala Bab dan Subbab......................................................................
C.5 Nomor Halaman.................................................................................
LAMPIRAN D PERSYARATAN FISIK DAN TATA LETAK...........................................
D.1 Margin................................................................................................
D.2 Jenis dan Ukuran Huruf......................................................................
D.3 Spasi...................................................................................................
D.4 Kepala Bab dan Subbab......................................................................
D.5 Nomor Halaman.................................................................................
LAMPIRAN E PERSYARATAN FISIK DAN TATA LETAK...........................................
E.1 Margin.................................................................................................
E.2 Jenis dan Ukuran Huruf......................................................................
E.3 Spasi....................................................................................................
E.4 Kepala Bab dan Subbab......................................................................
E.5 Nomor Halaman..................................................................................
BAB A PENDAHULUAN

Pada bab pendahuluan akan membahas terkait latar belakang penelitian,


rumusan masalah, tujuan penelitian, manfaat penelitian, serta sistematika
penulisan dari penelitian ini.

A.1 Latar Belakang


Menurut Badan Pusat Statistik (BPS, 2019, hal.3), Indonesia merupakan
negara kepulauan yang banyak memanfaatkan jasa transportasi sebagai
penghubung antar wilayah sehingga peluang untuk mengembangkan bisnis
transportasi seperti pos dan kurir modern terbuka lebar. Jasa pos dan kurir
modern pada umumnya memiliki layanan seperti pengiriman paket, dokumen,
dan lain sebagainya. Seiring dengan berkembangnya teknologi, kegiatan
transaksi barang tidak lagi mengharuskan pembeli dan penjual untuk saling
bertatap muka secara langsung, melainkan transaksi tersebut dapat dilakukan
secara online. (BPS, 2021, hal.xix) mengatakan tren E-Commerce setiap tahun
kian meningkat, hal ini berdampak pada keuntungan pelaku usaha dan
peningkatan volume pengiriman barang. Menurut (Databoks, 2021) berdasarkan
data (Statista, 2019), tercatat jumlah pengguna e-commerce di Indonesia pada
2017 mencapai 139 juta pengguna, kemudian naik 10,8% menjadi 154,1 juta
pengguna di tahun 2016 dan diperkirakan akan mencapai 212,2 juta pengguna
pada tahun 2023.
Pada survei yang dilakukan oleh (Parcel Perform dan iPrice Group, 2019),
mengemukakan bahwa 36% konsumen melihat pengiriman sebagai masalah
paling besar dalam e-commerce. Dari 36% pelanggan yang menyatakan
ketidakpuasan, 90% di antaranya mengeluhkan tentang keterlambatan
pengiriman, waktu transit tidak memenuhi harapan, dan kurangnya komunikasi
tentang status pengiriman. Dari kumpulan fakta tersebut, dapat disimpulkan
bahwa setiap tahunnya jumlah permintaan pengiriman barang selalu meningkat,
akan tetapi sistem distribusi dan sortir di gudang penyimpanan/transit
mengalami kendala pada waktu. Peningkatan kebutuhan jasa ekspedisi akan
berdampak pada cepatnya proses masuk dan keluar barang yang terjadi di
gudang penyimpanan ekspedisi. Proses suplai yang cepat ini akan mempengaruhi
waktu, tenaga dan biaya yang digunakan di dalam gudang. Meningkatnya waktu
dan tenaga yang dibutuhkan untuk manajemen persediaan akan mempengaruhi
biaya operasional.
Dalam jurnalnya (Koumanakos, 2008, hal.356) mengatakan bahwa hampir
semua literatur tentang manajemen persediaan yang optimal menggunakan
kriteria biaya minimal dan keuntungan maksimal. Untuk itu, penting untuk
memiliki biaya persediaan yang rendah dan pada saat yang sama dapat
memberikan apa yang diinginkan konsumen. (Koumanakos, 2008, hal.356)
menambahkan diperlukannya solusi yang mampu mengurangi ke tidak efisien
manajemen persediaan tanpa menambah jumlah waktu dan tenaga. Dari
masalah yang ada, sangat diperlukan suatu sistem yang dapat menggantikan
21
peran manusia dalam melakukan distribusi barang di dalam gudang. Penulis
berhipotesis sebuah solusi dari masalah ini berupa pengembangan robot
bergerak otonom dengan sistem yang terintegrasi. Sistem yang terintegrasi
secara wireless dengan server akan membuat proses manajemen persediaan
gudang menjadi lebih mudah dan efisien. Robot bergerak otonom memiliki tugas
utama untuk membawa barang dari proses penyortiran hingga transit di dalam
gudang. Jika proses pergudangan dikerjakan oleh robot-robot secara otomatis
dan saling terintegrasi, maka proses distribusi akan semakin cepat sehingga
dengan kondisi ini pihak ekspedisi bisa berfokus pada manajemen alur logistik
dan penjadwalan.
Akan tetapi solusi dari robot ini memiliki permasalahan pada sistem
navigasinya, hal ini disebabkan sistem navigasi global tidak bisa
diimplementasikan di dalam gudang atau ruangan. Dalam tesisnya (Utomo, 2015,
hal.1) mengatakan bahwa permasalahan utama robot bergerak otonom terletak
pada lokalisasi, pemetaan dan navigasi. Robot membutuhkan perencanaan jalur
untuk navigasi, namun perencanaan jalur hanya bisa dilakukan jika lingkungan
sekitar sudah diketahui. Jadi untuk melakukan navigasi, robot harus mampu
melakukan pemetaan area kerja terlebih dahulu sejauh batas area cakupan di
dalam ruangan gudang. (Galov dan Moschevikin, 2014) mengatakan untuk
melakukan pemetaan diperlukan lokasi robot secara akurat selama proses
pemetaan yang dilakukan secara simultan. Ketika peta sudah dibuat maka robot
baru dapat melakukan penentuan jalur dan akhirnya melakukan navigasi. (Galov
dan Moschevikin, 2014) dan (Takleh, dkk., 2018) mengatakan proses berurut ini
merupakan metode yang dilakukan untuk permasalahan sistem robot di dalam
ruangan yang memerlukan proses simultan dalam waktu yang singkat, metode
komputasi ini disebut dengan Simultaneous Localization and Mapping (SLAM).
Ada beberapa penelitian yang dilakukan sebelumnya, penelitian yang
pertama dilakukan oleh (Utomo, 2015) dengan menggunakan jenis robot HBE
Robocar dan menggunakan Hector SLAM sebagai algoritme pemetaan. Hasil
pemetaan dari penelitian ini yang tidak begitu baik, disebabkan sensor yang
digunakan adalah sensor ultrasonik yang hanya memiliki jangkauan terbatas.
Penelitian kedua dilakukan oleh Penelitian yang dilakukan oleh (Putra, dkk.,
2020) yang mengimplementasikan sistem navigasi indoor berbasis ROS
menggunakan Hector SLAM dan EKF sebagai lokalisasinya. Hasil pemetaan sangat
baik, akan tetapi terdapat banyak noise sehingga pada proses navigasi, terdapat
percobaan yang gagal karena mengira noise tersebut adalah halangan. Penelitian
ketiga yang dilakukan oleh (Liu, dkk., 2021) dengan menggunakan algoritme
Dijkstra dan DWA local planner sebagai perencanaan jalur dengan peta yang
dibuat menggunakan GMapping. Hasil dari pengujian tersebut adalah halangan
diam cenderung mudah untuk dilewati dengan mudah, saat ditambahkan
halangan diam yang lebih banyak hasilnya tetap robot mampu melewati
halangan dengan baik. Keseluruhan penelitian ini berjalan dengan baik dan
kombinasi algoritme navigasi yang digunakan sangat cocok satu dengan yang
lain. Namun kekurangannya adalah proses pengujian tidak mencoba

22
menggunakan halangan yang bergerak jauh lebih dinamis, sehingga tidak
mengoptimalkan penggunaan perencanaan jalur lokal.
Untuk itu dari permasalahan ketiga peneliti sebelumnya, penulis
mengusulkan suatu robot otonom dengan sensor laser yang memiliki pembacaan
luas dan berakurasi tinggi untuk implementasi pemetaan dan navigasi dalam
ruangan menggunakan algoritme Hector SLAM dan algoritme Dijkstra berbasis
pada platform Robot Operating System (ROS). (Utomo, 2015) menyarankan
untuk menggunakan sensor dengan akurasi tinggi dan untuk tidak menggunakan
sensor dengan fokus lebar seperti sensor ultrasonik. Dalam bukunya (Brombach,
2021) juga mengatakan bahwa kualitas sensor yang digunakan dapat menjadi
penentu keberhasilan dalam membangun suatu robot. (Brombach, 2021) juga
menyarankan untuk menggunakan Raspberry Pi 4 atau Jetson Nano 4GB sebagai
kontroler utama robot karena resource pemrosesannya yang cukup besar.
Robot ini diharapkan mampu bergerak dari titik yang menjadi pos awal
pengantaran barang menuju titik pos tujuan. Navigasi robot menggunakan
perencanaan jalur global Dijkstra untuk mengoptimalkan waktu dan resource
komputasi karena area peta yang luas. Kemudian sebagai tambahan, digunakan
perencanaan jalur lokal dengan DWA jika mendeteksi halangan bergerak.
Sebelum melakukan navigasi robot membutuhkan data peta lokal, maka dari itu
Hector SLAM akan berperan sebagai pemetaan dan membuat peta lokal. Selama
proses berlangsung, robot perlu mengetahui lokasi secara simultan, maka dari itu
digunakan beberapa algoritme lokalisasi seperti EKF dan AMCL.
Hasil akhir dari penelitian ini adalah purwarupa robot otonom yang
digunakan di dalam gudang penyimpanan dengan mengimplementasikan proses
navigasi menggunakan peta. Harapan dari penelitian ini, agar kurir jasa ekspedisi
di Indonesia dapat meningkatkan efisiensi waktu, tenaga kerja dan mengurangi
biaya produksi pada proses distribusi/sortir barang dengan memanfaatkan robot
bergerak otonom.

A.2 Rumusan Masalah


Berdasarkan latar belakang yang telah dijelaskan sebelumnya, maka rumusan
masalah dalam penelitian ini adalah sebagai berikut.
1. Bagaimana hasil akurasi dari pembacaan sensor RPLIDAR, sensor IMU dan
sensor Odometry?
2. Bagaimana hasil bentuk peta yang dihasilkan pada proses pemetaan
menggunakan algoritme Hector SLAM?
3. Bagaimana hasil akurasi dan waktu komputasi pada proses navigasi global
menggunakan algoritme Dijkstra?
4. Bagaimana hasil akurasi dan waktu komputasi pada proses navigasi global
dan lokal menggunakan gabungan algoritme Dijkstra dan DWA?
5. Apa konfigurasi parameter yang digunakan untuk mendapatkan hasil
pemetaan dan navigasi yang terbaik?
23
A.3 Tujuan
Berdasarkan rumusan masalah yang telah dijelaskan sebelumnya, maka
tujuan dari penelitian ini adalah sebagai berikut.
1. Menguji hasil akurasi dari pembacaan sensor RPLIDAR, sensor IMU dan
sensor Odometry.
2. Menguji hasil akurasi bentuk peta yang dihasilkan pada proses pemetaan
menggunakan algoritme Hector SLAM.
3. Menguji hasil akurasi dan waktu komputasi pada proses navigasi global
menggunakan algoritme Dijkstra.
4. Menguji hasil akurasi dan waktu komputasi pada proses navigasi global
dan lokal menggunakan gabungan algoritme Dijkstra dan DWA.
5. Mengetahui konfigurasi parameter yang digunakan untuk mendapatkan
hasil pemetaan dan navigasi yang terbaik.

A.4 Manfaat
Pada penelitian ini manfaat yang diharapkan bisa menjadi solusi efisien
dalam proses pendistribusian barang di dalam gudang penyimpanan ekspedisi,
sehingga proses logistik pada sistem ekspedisi pengiriman paket menjadi cepat
dan terotomatisasi. Purwarupa robot bergerak otonom ini juga bisa menjadi
referensi pengembang robot selanjutnya dalam pembuatan robot secara masif
karena biaya pembuatan robot yang cukup terjangkau. Selain itu penelitian ini
juga diharapkan bermanfaat bagi akademik di lingkungan Universitas Brawijaya
sebagai referensi agar penggunaan middleware robot operating system (ROS),
sehingga mampu meningkatkan pengembangan robot mendekati
pengembangan perangkat lunak yang digunakan di Industri.

A.5 Batasan Masalah


Untuk menjawab rumusan masalah dan agar penelitian ini dapat
terselesaikan dengan tenggat waktu yang ada, maka peneliti akan menerapkan
batasan masalah sebagaimana berikut:
1. Penelitian berfokus pada manuver pergerakan robot untuk mampu
menjalankan sistem navigasi otomatis.
2. Robot tidak mampu menaiki tangga dan lift secara mandiri.
3. Robot tidak mampu membuka atau menutup pintu.
4. Robot hanya mampu melakukan navigasi berdasarkan koordinat tujuan
yang dikirimkan dari komputer server.
5. Robot hanya mampu membawa barang tidak lebih dari 60 kg.
6. Robot tidak mampu mendeteksi objek berupa kaca, plastik transparan, air
dan benda-benda lainnya yang mampu membelokkan cahaya infrared.

24
7. Robot tidak mampu mendeteksi halangan yang berada di bawah dan di
atas bidang datar 2 dimensi laser sensor RPLIDAR, termasuk
tanjakan/ganjalan parkir.
8. Robot tidak mampu mendeteksi selokan, lubang besar, anak tangga, dan
permukaan yang tidak rata lainnya.
9. Robot dan komputer server harus terus terhubung dengan tethering
smartphone selama proses navigasi berlangsung.

A.6 Sistematika Pembahasan


Tugas akhir skripsi ini terbagi atas tujuh bagian utama dengan penjabaran
sebagaimana berikut:
1. BAB 1: Pendahuluan
Bab ini berisi penjelasan mengenai beberapa hal yang memberitahukan
hal-hal mendasar dari sebuah penelitian, seperti latar belakang, rumusan
masalah, tujuan, manfaat, batasan masalah, dan sistematika
pembahasan.
2. BAB 2: Landasan Kepustakaan
Bab ini membahas landasan teori yang akan digunakan dalam penelitian
ini yang memiliki keterkaitan dengan robot otonom, autonomous mobile,
robot, metode pemetaan, sistem navigasi, sensor yang digunakan dan
penjelasan beberapa algoritme yang digunakan serta penjelasan
penggunaan middle ware Robot Operating System (ROS) beserta
library/framework yang digunakan sebagai penunjang dalam proses
penelitian, tentunya tidak keluar dari batasan masalah yang sudah
ditetapkan.
3. BAB 3: Metodologi
Bab ini menjelaskan tahapan apa saja yang perlu dilakukan oleh peneliti
untuk menyelesaikan permasalahan yang dibahas dalam penelitian. Bab
ini juga memuat informasi tipe penelitian apa yang diambil oleh penulis
dan juga pembahasan mengenai strategi dari penelitian.
4. BAB 4: Rekayasa Kebutuhan Sistem
Bab ini membahas penguraian kebutuhan pokok baik fungsional maupun
non fungsional mengenai mekanisme dari perancangan perangkat keras
dan perangkat lunak yang akan digunakan dalam penelitian ini.
5. BAB 5: Perancangan dan Implementasi
Bab ini berisi penjelasan mengenai proses perancangan pada sistem dan
cara pengoperasiannya sebagai jawaban dari permasalahan dan rekayasa
kebutuhan yang sudah didefinisikan sebelumnya. Terdiri dari
perancangan dan implementasi perangkat keras maupun perangkat
lunak.

25
6. BAB 6: Pengujian dan Analisis
Bab ini membahas percobaan dari hasil perancangan dan implementasi
mengenai data dari keluaran sistem dengan bentuk pengujian yang
berbeda-beda dan melakukan analisa data dengan parameter yang
berbeda untuk bisa membandingkan tingkat akurasi dan keberhasilan
sistem.
7. BAB 7: Penutup
Bab ini berisi tentang kesimpulan yang ditarik dari hasil dari pengujian
dan analisis yang dilakukan sebelumnya dari sisi perancangan,
implementasi, dan pengujian sehingga mampu dijadikan acuan dalam
pengembangan penelitian sejenis yang terangkum dalam saran.

26
BAB B LANDASAN KEPUSTAKAAN

Dalam bab landasan kepustakaan ini, penulis akan menjabarkan mengenai


tinjauan pustaka yang telah penulis pelajari sebelumnya dan dasar teori yang
berisikan teori pendukung penelitian ini. Adapun tinjauan pustaka adalah
sekumpulan penelitian sebelumnya yang dilakukan oleh peneliti di dunia dalam
lingkup serupa dan bagaimana hasil penelitian tersebut. Lalu mengenai dasar
teori, penulis akan menjabarkan dasar fundamental agar tercapainya tujuan
akhir penelitian ini.

B.1 Tinjauan Pustaka


Penelitian ini merupakan bentuk dari pengembangan dan gabungan dari
penelitian-penelitian sebelumnya yang berhubungan dengan metode komputasi,
pemetaan, lokalisasi, navigasi, sensor-sensor dan algoritme yang digunakan.
Tinjauan pustaka dilakukan untuk memperdalam teori dasar yang akan dibahas
dan sebagai bahan pembelajaran pada penelitian sebelumnya yang terangkum
dan tersusun ke dalam sebuah tabel yang dapat dilihat pada tabel 2.1.
Tabel 2.1 Tinjauan Penelitian Sebelumnya

Perbedaan
Tinjauan
No Persamaan
Pustaka Penelitian Rencana
Terdahulu Penelitian
1 Utomo, Eko Menggunakan Penelitian
Penelitian
Budi.2015. jenis menggunakan
menggunakan
Autonomous algoritme sensor ultrasonik,
sensor RPLIDAR,
Mobile Robot lokalisasi yang PSD,
IMU dan
Berbasis sama akselerometer,
Odometer dari
Landmark Extended sensor kamera
DYI robot beroda
Menggunakan Kalman Filter dari platform
diff-drive yang
Particle Filter (EKF) untuk robot HBE
otonom
Dan Occupancy melakukan Robocar
Grid Maps fusion pada
Pengujian
Untuk Navigasi, sensor Pengujian
dilakukan dengan
Penentuan dilakukan dengan
menunjukkan
Posisi, Dan membandingkan
hasil pemetaan
Pemetaan hasil pemetaan
dan hasil navigasi
Arsitektur akhir Arsitektur akhir
penelitian penelitian
menggunakan menggunakan
pemetaan pemetaan Hector
Occupancy grid SLAM dan
dan navigasi navigasi

27
menggunakan
global planning
dengan Dijkstra
menggunakan dan local
Dynamic A* planning dengan
Dynamic
Windows
Approach (DWA)
Pengujian
berfokus pada
Salah satu mapping saja
Pengujian
algoritme seperti
berfokus pada hal
yang perbandingan
yang lebih luas
digunakan algoritme
seperti pengujian
sebagai mapping
Zhang, dkk. semua sensor
perbandingan menggunakan
2020. 2D LIDAR- yang digunakan
pada GMapping,
Based SLAM and hingga pemetaan,
penelitian Hector SLAM, dan
2 Path Planning navigasi dan
sama, yakni Cartographer
for Indoor lokalisasi.
Hector SLAM untuk mencari
Rescue Using hasil pemetaan
Mobile Robots yang optimal
Menggunakan
Menggunakan
platform
perangkat Menggunakan
perangkat
personal perangkat Jetson
lunak yang
komputer Nano
sama, yakni
notebook intel i5
ROS
Debeunne dan Penelitian Menggunakan
Vivet.2020. A menggunakan sensor RPLIDAR
Review of konsep dan untuk
Menggunakan
Visual-LIDAR metode yang mendapatkan ke
3 sensor kamera
Fusion based sama yakni, jarak dari benda
dan teknik fusion
Simultaneous Pemetaan, sekitar
Localization and lokalisasi dan
Mapping navigasi
4 Tara Anggada Penelitian Pengontrol utama Menggunakan
Putra, dkk. 2020. menggunakan robot adalah Jetson Nano dan
Navigasi Indoor metode ODROID-XU4 dan Motor Driver
Berbasis Peta pemetaan robot dikontrol Hoverboard
Pada Robot yang sama, dengan 4 buah sebagai perangkat
Beroda Dengan yakni Hector roda sebagai keras utamanya
Platform Robot SLAM penggeraknya serta
menggunakan
28
jenis robot
differential drive
pada kemudinya,
yakni hanya
menggunakan 2
buah roda
Operating sebagai
System penggeraknya

Menggunakan
Penelitian ini Menggunakan
algoritme
menggunakan algoritme Dijkstra
Dynamic A-Star
algoritme untuk global path
untuk global path
fusion EKF, planning
planning

Penelitian ini
menggunakan Menggunakan Menggunakan
Dwiky algoritme algoritme g- algoritme Hector
Erlangga.2019. AMCL untuk mapping untuk SLAM untuk
Sistem Navigasi lokalisasi pemetaan pemetaan
Mobile Robot navigasinya
5
Dalam Ruangan
Berbasis Penelitian ini Menggunakan
Autonomous menggunakan sensor RGB-D
Menggunakan
Navigation algoritme untuk
sensor RPLIDAR
DWA untuk mendapatkan
local planner data

Menggunakan Menggunakan
Penelitian ini
robot dengan robot dengan
menggunakan
Li-sang Liu, dkk. jenis kemudi jenis kemudi
sensor
2021. Path Ackerman dengan Differential Drive
RPLIDAR
Planning for 4 roda dengan 3 roda
Smart Car Based
6 on Dijkstra Penelitian ini
Pengujian sistem
Algorithm and menggunakan Pengujian sistem
pemetaan
Dynamic algoritme pemetaan
dilakukan di
Window perencanaan dilakukan di
dalam basemen
Approach jalur yang dalam rumah
parkir dengan
sama, yaitu dengan ruangan
ruangan yang
Dijkstra dan yang sempit
sangat luas
DWA

29
B.1.1 Autonomous Mobile Robot Berbasis Landmark Menggunakan
Particle Filter Dan Occupancy Grid Maps Untuk Navigasi,
Penentuan Posisi, Dan Pemetaan
Penelitian yang dilakukan oleh Eko Budi Utomo, penulis membahas dan
mengimplementasikan mengenai 3 proses utama dalam robot bergerak otonom
yaitu navigasi, posisi dan pemetaan. Kesimpulan yang didapatkan dari penelitian
ini (Utomo, 2015) adalah bahwa sensor yang terbatas seperti kamera dan
ultrasonik bisa digunakan sebagai pemetaan dan menerapkan metode SLAM. Hal
ini didapat setelah melihat hasil dari pengujian, didapati hasil berupa hasil
pemetaan. Dari hasil mapping menunjukkan cell occupied (warna putih) tidak
berada di tepi peta. Hal ini disebabkan karena sensor ultrasonik pada robot
hanya berada di bagian depan robot. Sedangkan di sisi kanan dan kiri pada badan
robot tidak terdapat sensor ultrasonik. Kemudian Semakin kecil jumlah partikel,
diperlukan iterasi yang lebih banyak dalam mencapai konvergen partikel
(estimasi pose (𝑥, 𝑦, θ)). Lalu Semakin banyak jumlah partikel, waktu komputasi
yang diperlukan semakin lama. Hasil dari algoritmenya Penggunaan algoritme A*
dapat membantu robot menemukan jalur terpendek dengan eror pose robot
untuk data arah sebesar 4.34 % dan error jarak tempuh robot sebesar 4.8 %.

B.1.2 2D LIDAR-Based SLAM and Path Planning for Indoor Rescue Using
Mobile Robots
Penelitian yang dilakukan oleh Xuexi Zhang, dkk., penulis
mengimplementasikan 4 algoritme untuk pemetaan yakni GMapping, Hector-
SLAM, Cartografer dan RGB-D. Penelitian ini membahas mengenai pemetaan dan
navigasi akan tetapi yang lebih terlihat dengan detail adalah proses penggunaan
algoritme untuk proses Mapping. Dari pengujian yang dilakukan didapatkan
kesimpulan bahwa algoritme GMapping, Hector-SLAM dan Cartographer
memiliki performa yang baik di dalam ruangan. Sedangkan RGB-D sangat buruk
karena tidak bisa mendeteksi pada kondisi pencahayaan yang redup. Kemudian
pada kompetisi RoboCup yang di ikuti peneliti di China didapatkan data bahwa
GMapping dan Cartographer memiliki potensi yang sangat baik dalam melakukan
pemetaan. Terutama hasil peta yang dibuat dengan Cartographer menghasilkan
peta yang paling akurat dengan bentuk bangunan aslinya (Zhang, dkk., 2020).

B.1.3 A Review of Visual-LIDAR Fusion based Simultaneous Localization


and Mapping
Penelitian yang dilakukan oleh César Debeunne dan Damien Vivet, penelitian
ini (Debeunne dan Vivet, 2020) berupa review yang membahas mengenai
perpaduan Visual kamera dan LIDAR yang berbasis pada SLAM. Peneliti
membahas tentang navigasi otonom yang membutuhkan presisi dan kecepatan
pada pemetaan dan lokalisasi, peneliti juga menambahkan penggunaan
algoritme SLAM banyak digunakan untuk robot bergerak, kendaraan tanpa awak,
drone tanpa awak dan robot kapal selam (Debeunne dan Vivet, 2020). Beberapa
percobaan telah dilakukan untuk memasangkan LIDAR dan sensor visual, tetapi

30
semuanya tetap pada tingkat fusi yang sangat longgar. Teknik fusi sensor,
terutama dilakukan dengan menggunakan hasil dari kedua langkah Odometer,
yang berarti bahwa deteksi LIDAR atau deteksi visual tidak dapat saling
membantu, dan keputusan dibuat pada langkah yang sangat terlambat saat
menggabungkan estimasi perpindahan relatif. Pendekatan lain hanya
menggunakan pengukuran ke dalaman LIDAR untuk menginisialisasi fitur visual
secara langsung. Kesimpulan yang didapat adalah kemampuan LIDAR
menggunakan sensor visual seperti kamera kurang ter manfaatkan dengan baik.

B.1.4 Navigasi Indoor Berbasis Peta Pada Robot Beroda Dengan Platform
Robot Operating System
Penelitian yang dilakukan oleh Tara Anggada Putra, dkk. (Putra, dkk., 2020)
yang mengimplementasikan sistem navigasi indoor berbasis peta pada robot
beroda dengan platform Robot Operating System (ROS) menggunakan algoritme
Hector Mapping untuk pemetaan. Hasilnya adalah robot berhasil melakukan
pemetaan lingkungan indoor dengan eror rata-rata 0.174 meter dan berhasil
melakukan lokalisasi dengan eror rata-rata 0.05 meter pada koordinat x, 0.028
meter pada koordinat y, dan 1.506° pada sudut orientasi. Path planner memiliki
tingkat keberhasilan sebesar 62.5% dalam menghasilkan jalur yang dapat
dilewati robot dan tingkat keberhasilan 75% dalam mengikut jalurnya. Robot
pada penelitian ini memiliki tingkat eror rata-rata 0.046 meter dalam bergerak
menuju koordinat x target 0.072 meter dalam bergerak menuju koordinat y
target, dan 5.163° dalam berputar menuju sudut orientasi target. Kesimpulan
yang didapatkan pada jurnal ini adalah bahwa pemetaan menggunakan Hector
SLAM, lokalisasi data fusion menggunakan Extended Kalman Filter (EKF), path
planning dengan Field Dynamic A-Star dan Trajectory tracking dengan pengontrol
on-off berhasil di implementasikan dengan ROS. Hasil yang didapat berupa
kesimpulan bahwa kecepatan robot berpengaruh terhadap hasil pemetaan.
Lokalisasi Wheel Odometer berhasil menentukan posisi robot dengan tingkat
kesalahan kurang dari 0.05 meter. Untuk navigasi peneliti sebelumnya
menyarankan untuk menggunakan local Path Planner agar robot dapat
beroperasi pada lingkungan dinamis serta menggunakan PID untuk
meningkatkan performa robot.

B.1.5 Sistem Navigasi Mobile Robot Dalam Ruangan Berbasis


Autonomous Navigation
Penelitian yang dilakukan oleh Dwiky Erlangga (Erlangga, dkk., 2019) yang
mengimplementasikan Navigasi Mobile Robot dalam ruangan yang menerapkan
sistem kemudi otonom. Pembuatan peta menggunakan algoritme Simultaneous
Localization and Mapping (SLAM) (Takleh, dkk., 2018) yang mengolah data dari
sensor kamera RGB-D dan bumper yang di konversi ke laser scan dan point cloud
digunakan untuk memperoleh perception. Sedangkan wheel encoder dan
gyroscope digunakan untuk mendapatkan data odometry yang digunakan untuk
membangun peta perjalanan dengan algoritme SLAM, GMapping dan melakukan
autonomous navigation. Sistem terdiri dari tiga sub-sistem yaitu: sensor sebagai

31
input, single board computer untuk proses, dan aktuator sebagai penggerak.
Hasil dari pengujian menunjukkan sistem dapat memberikan data depth yang
dikonversi ke laser scan, data bumper, dan data odometry kepada single board
computer berbasis ROS sehingga mobile robot yang dikendalikan secara Wireless
dari Workstation dapat membangun peta grid 2 dimensi dengan akurasi total
error rate sebesar 0.987%. Dengan menggunakan peta, data dari sensor, dan
odometry tersebut mobile robot dapat melakukan autonomous navigation secara
konsisten dan mampu melakukan path replanning, menghindari rintangan-
rintangan statis dan terus menerus melakukan localization untuk mencapai titik
tujuan.

B.1.6 Path Planning for Smart Car Based on Dijkstra Algorithm and
Dynamic Window Approach
Penelitian ini dilakukan oleh Li-sang Liu dkk. (Liu, dkk., 2021) menjelaskan
mengenai percobaan penggunaan algoritme Dijkstra dan DWA local planner
sebagai perencanaan jalur. Algoritme ini dipilih karena hasil riset yang sudah
dilakukan sebelumnya oleh peneliti. Setelah melakukan perancangan alat dan
perangkat lunak, peneliti melakukan pengujian di dalam rumah dengan kondisi
ruangan yang sempit. Hasil dari pengujian tersebut adalah halangan diam atau
statis cenderung mudah untuk dilewati dengan mudah, bahkan saat
ditambahkan halangan yang lebih banyak untuk menciptakan lingkungan lebih
kompleks, hasilnya tetap robot mampu melewati halangan dengan sangat baik.
Namun sangat disayangkan pada hasil penelitian tersebut tidak disebutkan atau
tidak dilakukan pengujian pada benda yang bergerak secara dinamis. Dari hasil
pengujiannya hanya dijelaskan bahwa benda-benda diam diletakkan di depan
robot, selanjutnya robot yang sedang diam di posisi awal diberikan koordinat
tujuan dan diharapkan mampu melewati halangan statis tersebut. Akan lebih
baik jika pengujian juga dilakukan dengan menggunakan halangan yang bergerak
secara dinamis, baik itu bergerak cepat ataupun lambat.
Berdasarkan ke enam tinjauan pustaka di atas, dapat disimpulkan bahwa
permasalahan komputasi pada robot bergerak otonom terdiri dari 3 proses
utama, yaitu lokalisasi, pemetaan dan navigasi (Utomo, 2015). Proses pemetaan
menjadi satu dengan lokalisasi dan algoritme yang paling tepat adalah algoritme
Hector SLAM (Kohlbrecher, dkk., 2014). Selain itu pada penelitian oleh Tara
Anggada Putra, dkk. dijelaskan bahwa sensor IMU dan Odometer akan
menghasilkan nilai lokalisasi dengan kesalahan yang rendah dengan bantuan
algoritme fusion sensor yaitu Extended Kalman Filter, maka dari itu berdasarkan
pertimbangan hasil penelitian tersebut maka penulis akan menerapkan metode
yang sama untuk mendapatkan nilai lokalisasi yang konsisten dan sedikit
kesalahan. Kemudian pada tinjauan pustaka yang terakhir, yakni pada penelitian
yang dilakukan oleh Li-sang Liu dkk. dapat disimpulkan bahwa algoritme Dijkstra
sebagai perencanaan global dan algoritme DWA sebagai perencanaan lokal dapat
berjalan dengan sangat baik.

32
Kemudian dalam pengimplementasiannya robot yang digunakan pada setiap
referensi penelitian tidak dirancang khusus untuk menjalani tugas tertentu. Pada
penelitian tersebut hanya berfokus pada metode komputasi yang digunakan
sehingga tidak memfokuskan untuk membuat robot yang bekerja secara riil.
Maka dari itu dengan penelitian ini, penulis akan melengkapi kekurangan dari
penelitian sebelumnya. Data-data dari penelitian sebelumnya akan dijadikan
sebagai metode pembanding dari apa yang penulis temukan dalam penelitian.
Penulis akan menggunakan nilai parameter terbaik yang bisa digunakan dan
tetap memperhatikan akurasi dan waktu komputasi serta penggunaan daya CPU.
Dengan demikian, penelitian ini bertujuan untuk membuat purwarupa robot riil
sesuai dengan kebutuhan yang perlukan pada distribusi gudang dibidang
ekspedisi.

B.2 Dasar Teori


Pada subbab dasar teori menjabarkan terkait teori yang digunakan dalam
melakukan penelitian, tujuannya adalah memperjelas sistematika dan kerangka
pemikiran dari fakta yang ada dalam rumusan suatu hubungan konsep dari
masing-masing ilmu pengetahuan.

B.2.1 Autonomous Robot


Autonomous robot atau robot otonom merupakan robot yang mampu
melakukan perilaku atau tugas dengan sistem otonomi tingkat tinggi (tanpa
dipengaruhi input eksternal) dan sistem kontrol diri yang tinggi (Heiserman,
2021). Autonomous robot memiliki beberapa tipe robot, di antaranya adalah
autonomous car, autonomous research robot, autonomous space sport drone
ship, domestic robot, dan humanoid robot. Penelitian ini mencoba untuk
mengembangkan robot autonomous car atau robot mobil otonom, namun fokus
penelitian hanya berfokus pada kendali navigasi otomatisnya. Jadi tidak akan
membahas lebih lanjut mengenai fitur scheduling rumit, pengisian baterai secara
otomatis, atau fitur deteksi barang secara otomatis. Dengan berfokus pada
kendali navigasinya diharapkan penelitian ini akan menjadi fondasi untuk
penelitian selanjutnya. Ilustrasi mengenai robot space otonom dapat dilihat pada
gambar 2.1.

33
Gambar 2.1 Robot Space Otonom Penjelajah Mars
Sumber: (azorobotics.com, 2013)
Robot memiliki banyak tipe dan jenis yang berbeda-beda, banyak jenis robot
yang hanya digunakan untuk proses navigasi saja menggunakan remote control
atau ada pula robot yang hanya digunakan sebagai sistem tertutup yang
memerlukan input dari manusia. Jadi tidak semuanya bisa disebut sebagai robot
otonom. Mengutip dari jurnal penelitian yang dilakukan oleh Behzad Bayad, dkk
(Bayat, dkk., 2016) dan artikel pada website waypointrobotics.com yang ditulis
oleh Jason Walker (Walker, 2017) disimpulkan bahwa robot dikatakan otonom
apabila memenuhi kriteria sebagai berikut:
1. Pemeliharaan diri
Persyaratan pertama untuk physical autonomy adalah kemampuan robot
untuk mengurus dirinya sendiri. Pemeliharaan diri didasarkan pada
"proprioception", atau merasakan status internal seseorang. Dalam contoh
pengisian baterai, robot dapat memberi tahu secara proprioception bahwa
baterainya lemah dan kemudian mencari pengisi daya. Sensor proprioception
umum lainnya adalah untuk pemantauan panas. Peningkatan proprioception
akan diperlukan agar robot dapat bekerja secara mandiri di dekat orang dan di
lingkungan yang keras. Sensor proprioception umum termasuk pengindraan
termal, optik, dan haptic, serta efek Hall (listrik).
2. Merasakan lingkungan
Exteroception adalah pengindraan hal-hal tentang lingkungan. Robot otonom
harus memiliki berbagai sensor lingkungan untuk melakukan tugas mereka dan
menghindari masalah. Sensor exteroceptive umum termasuk spektrum
elektromagnetik, suara, sentuhan, kimia (bau, bau), suhu, jangkauan ke berbagai
objek, dan ketinggian. Beberapa robot pemotong rumput akan menyesuaikan
program mereka dengan mendeteksi kecepatan pertumbuhan rumput sesuai
kebutuhan untuk mempertahankan potongan rumput yang sempurna, dan
beberapa robot pembersih vakum memiliki detektor kotoran yang mendeteksi

34
berapa banyak kotoran yang diambil dan menggunakan informasi ini untuk
memberitahu mereka untuk tinggal di satu daerah lebih lama.
3. Kinerja pengerjaan tugas
Langkah selanjutnya dalam perilaku otonom adalah benar-benar melakukan
tugas fisik. Tingkat kinerja tugas otonom berikutnya membutuhkan robot untuk
melakukan tugas bersyarat. Misalnya, robot keamanan dapat diprogram untuk
mendeteksi penyusup dan merespons dengan cara tertentu tergantung di mana
penyusup itu berada.
4. Navigasi otonom
Robot untuk mengasosiasikan perilaku dengan suatu tempat (lokalisasi)
membutuhkan untuk mengetahui di mana itu dan untuk dapat menavigasi point-
to-point. Pada awalnya, navigasi otonom didasarkan pada sensor planar, seperti
pencari jarak laser yang hanya dapat merasakan pada satu tingkat. Sistem
tercanggih sekarang menggabungkan informasi dari berbagai sensor untuk
lokalisasi (posisi) dan navigasi. Contoh nyata dari penerapan navigasi otonom
adalah teknologi self-driving car yang saat ini sedang mengalami kemajuan
teknologi pada sistem perangkat lunak.

Gambar 2.2 Teknologi Self-Driving Pada Navigasi Mobil


Sumber: (bernardmarr.com, 2022)
Berdasarkan ke empat kriteria di atas dapat disimpulkan bahwa robot
dikatakan otonom apabila minimal memiliki 4 fitur tersebut di antaranya,
mampu memelihara diri, mampu merasakan lingkungan sekitar, mampu
mengerjakan tugas, dan mampu melakukan navigasi secara otonom. Dari 4
kriteria minimal tersebut, 3 di antaranya sudah dipenuhi oleh robot yang akan
dikembangkan pada penelitian ini, yakni merasakan lingkungan, kinerja
pengerjaan tugas, dan navigasi otonom. Untuk poin pertama yaitu pemeliharaan
diri, seperti melakukan pengisian baterai secara otomatis tidak dilakukan. Hal ini
dikarenakan target penelitian yang berfokus pada manuver dalam bernavigasi
secara otonom pada robot atau fitur self-driving seperti yang terlihat pada
gambar ilustrasi pada 2.2.

35
B.2.2 Autonomous Mobile Robot (AMR)

Gambar 2.3 Autonomous Mobile Robot


Sumber : (www.panasonic.com, 2020)
Pada gambar 2.3 dapat dilihat bahwa terdapat robot otonom yang memiliki
tipe robot yang berbeda-beda. Robot yang mampu bergerak sendiri,
menjalankan kinerja tugas, dan mampu memelihara dirinya sendiri disebut
dengan Autonomous Mobile Robot. Dikutip dari website Intel.com, dijelaskan
bahwa Autonomous mobile robot (AMR) adalah jenis robot yang dapat
memahami dan bergerak di sekitar lingkungannya tanpa diawasi langsung oleh
operator atau dibatasi pada jalur yang tetap dan telah ditentukan sebelumnya,
pengertian ini juga ditulis oleh website resmi www.intel.com (Romaine, 2020).
Dikatakan robot bergerak karena mempunyai aktuator berupa roda untuk
menggerakkan keseluruhan badan robot tersebut, sehingga robot tersebut dapat
melakukan perpindahan posisi dari satu titik ke titik yang lain. Robot bergerak
biasanya dianggap sebagai sub bidang robotika dan rekayasa informasi.
Robot bergerak memiliki kemampuan untuk bergerak di lingkungan mereka
dan tidak terpaku pada satu lokasi fisik. Jenis robot ini umumnya berbentuk
seperti mobil dengan permukaan datar di bagian belakang atau atap yang
digunakan sebagai pijakan barang dan memiliki 2 hingga 4 buah roda atau
bahkan lebih. Robot bergerak otonom memiliki serangkaian sensor canggih yang
memungkinkannya memahami dan menafsirkan lingkungan yang membantunya
melakukan tugas dengan cara dan jalur yang paling efisien (Romaine, 2020).
Sebagai perbandingan dengan robot industri, robot bergerak dapat
mengandalkan perangkat pemandu yang memungkinkan untuk melakukan
perjalanan dengan rute navigasi yang telah ditentukan sebelumnya dalam ruang
yang relatif terkendali. Robot bergerak dapat digunakan pada berbagai sektor,
akan tetapi secara masif sektor yang lebih sering menggunakan tenaga robot ini
adalah sektor yang membutuhkan pengangkutan barang dalam jumlah banyak,
misalnya robot bergerak otonom pada bidang pergudangan ekspedisi yang
berhubungan dengan logistik, distribusi ataupun penyortiran paket kiriman atau
dibidang industri untuk proses pengangkutan bahan mentah atau muatan
lainnya di dalam gudang (Erlangga, dkk., 2019).

36
B.2.2.1 Autonomous Mobile Robot Dibidang Pergudangan

Gambar 2.4 Penggunaan Robot Pada Gudang Logistik


Sumber : (www.ttnews.com, 2020)
Dilansir dari website zetes.com dijelaskan bahwa, robot bergerak otonom
bekerja secara kolaboratif dengan operator gudang, baik itu memindahkan stok
selama pemetikan, mengambil pengisian ulang, atau mentransfer stok massal
(Zetes, 2021). Robot ini melakukan tugas dengan mengangkut barang ke tahap
pemrosesan berikutnya, dengan ini memungkinkan pekerja untuk melanjutkan
ke tugas berikutnya sehingga proses distribusi barang menjadi lebih cepat.
Autonomous mobile robot (AMR) memiliki karakteristik dan tugas utama dalam
pekerjaannya, meliputi:
a. Beroperasi secara mandiri, AMR tidak memerlukan infrastruktur khusus
untuk bekerja seperti yang ditunjukkan pada gambar 2.4. Robot
beroperasi dengan mulus dalam tata letak gudang yang ada tanpa
gangguan besar pada operasi yang ada.
b. Sensor, peta, dan sistem pemrosesan terpasang memungkinkan robot
untuk merencanakan rute dan beradaptasi secara dinamis dengan
perubahan di sekitarnya.
c. AMR dapat memindahkan stok di dalam gudang atau antar fasilitas.
Robot ini juga dapat melakukan tugas rutin seperti penghitungan
inventaris dan pengecekan stok barang.

37
Gambar 2.5 Robot Membawa Paket Di Gudang Ekspedisi
Sumber : (www.robotics247.com, 2020)
Penelitian akan mengadaptasi bentuk robot dari pergudangan yang memiliki
bagian atap dengan luas yang lebar sebagai alas atau dudukan barang. Ilustrasi
dari robot pembawa barang di dalam gudang dapat dilihat pada gambar 2.5.

B.2.3 Mekanisme Kemudi Robot Beroda


Robot beroda memiliki beberapa jenis penggerak dengan teknik yang
berbeda. Sistem penggerak yang sering ditemukan pada robot beroda ada dua,
yaitu Ackerman Steering dan Differential Drive.
B.2.3.1 Ackerman Steering Robot

Gambar 2.6 Ackerman Steering Geometry


Sumber : (racecar-engineering.com, 2021)
Ackerman Steering adalah sistem penggerak empat roda dengan susunan dua
roda depan sebagai kemudinya dan dua roda belakang sebagai penggerak
linearnya. Dapat dilihat pada ilustrasi gambar 2.6 bahwa kedua roda depan tidak
bertugas untuk bergerak melainkan melakukan manuver dengan mengubah
posisi roda sehingga mempengaruhi geometry. Kemudi Ackerman mengacu pada
38
konfigurasi geometris yang memungkinkan kedua roda depan dikemudikan pada
sudut yang sesuai untuk menghindari ban selip. Konsep penggerak ini sama
persis dengan kendaraan mobil yang biasanya digunakan, akan tetapi lebih
sederhana dan kemudinya tidak sekompleks kendaraan mobil modern.
B.2.3.2 Differential Drive Robot
Differential drive atau penggerak diferensial adalah sistem penggerak dua
roda dengan aktuator independen untuk setiap roda. Nama ini mengacu pada
fakta bahwa vektor gerakan robot adalah jumlah dari gerakan roda independen,
sesuatu yang juga berlaku untuk diferensial mekanis (namun, sistem penggerak
ini tidak menggunakan diferensial mekanis). Perbedaan atau kesamaan
kecepatan kedua roda menentukan apakah robot tersebut akan bergerak rotasi
atau lurus. Sistem kerja dari mekanisme kemudi ini memanfaatkan gerak
forward kinematic dengan mengandalkan putaran independen kedua roda untuk
mendapatkan manuver yang diinginkan menggunakan perhitungan putaran roda
dari sensor encoder yang ada pada motor. Roda penggerak biasanya
ditempatkan di setiap sisi robot dan mengarah ke depan atau sebaliknya. Pada
gambar 2.7 terdapat diagram dengan bentuk persegi panjang besar berwarna
abu-abu adalah roda penggeraknya. Persegi panjang abu-abu kecil yang menetas
adalah roda yang tidak digerakkan yang membentuk struktur pendukung seperti
tripod untuk badan robot.

Gambar 2.7 Konsep Differential Drive


Pada penelitian ini, penulis akan menggunakan mekanisme kemudi
Differential Drive yang memiliki total roda 3 buah dengan konfigurasi roda
penggerak berada di bagian belakang dan roda caster berada di depan.
Konfigurasi ini dilakukan setelah melihat hasil penelitian yang dilakukan oleh
Carlos Delgado-Mata, dkk. (Delgado-Mata, Velázquez dan Gutiérrez, 2012)
tentang penelitiannya yang menggunakan konfigurasi ini. Dalam jurnalnya beliau
menjelaskan mengenai model matematikanya yang mana konfigurasi ini
menghasilkan kesimpulan bahwa ketika kedua roda di input kan tegangan yang
sama, maka kedua roda penggerak berputar dengan kecepatan sudut dan arah
yang sama, yang menyebabkan gerakan translasi (Delgado-Mata, Velázquez dan
Gutiérrez, 2012). Jika satu tegangan disetel ke nol, salah satu roda berputar
sementara yang lain tetap tidak bergerak, maka robot menggambarkan sebuah
39
lingkaran yang berpusat pada roda yang tidak bergerak. Akan tetapi jika kedua
tegangan sama besarnya tetapi berlawanan arah, roda berputar dengan
kecepatan yang sama tetapi berlawanan arah yang menyebabkan rotasi di
sekitar pusat sumbu yang menghubungkan kedua roda. Hal ini disimpulkan
berdasarkan mekanisme kinetik dari differential drive yang terdapat pada
gambar 2.8 mengenai differential drive robot dan parameternya.

Gambar 2.8 Mekanisme Kinetik Differential Drive Robot


Dimana L adalah jarak dari pusat antara kedua roda, 𝑣𝑙 dan 𝑣𝑟 adalah
kecepatan roda (translasi), R merupakan jarak antara titik tengah L (L/2 jika
diukur dari salah satu roda) dan Instance Center of Curvature (ICC) yang
merupakan titik dimana robot berotasi (Dudek dan Jenkin, 2010).
Jika mengikuti konfigurasi di atas, maka ICC dapat dituliskan sebagai berikut:
ICC=[ x−Rsin (θ), y + Rcos(θ)] (2.1)
Saat vl≠ v r , lintasan robot juga akan berubah (dengan kata lain mengubah
arah gerak) Oleh karena perubahan rotasi 𝜔 di ICC harus sama antara kedua
roda, persamaan (2.2) dan (2.3) berlaku (Dudek dan Jenkin, 2010)

( L2 )=v r
ω R+ (2.2)

ω ( R− )=v l
L
(2.3)
2
Jika Persamaan (2.2) dan (2.3) digabungkan dengan persamaan v=ω R maka

R=( L2 vrvr−v
+vl
l)
(2.4)

ω=(
l )
vr−vl
(2.5)

Dari persamaan-persamaan di atas dapat ditarik beberapa hal, antara lain:


1. Jika 𝑣𝑙 = 𝑣𝑟, maka akan diperoleh gerak lurus linear ke depan. 𝑅 bernilai
tak terhingga dan tidak ada gerak rotasi yang mengakibatkan 𝜔 bernilai 0

40
2. Jika 𝑣𝑙 = −𝑣𝑟, maka 𝑅 bernilai 0, dan akan diperoleh rotasi pada titik 𝐿/2
atau berputar di tempat
3. Jika 𝑣𝑙 = 0, maka akan diperoleh 𝑅 = 𝐿/2 dan gerak rotasi dengan poros
pada roda kiri. Dan sebaliknya untuk roda kanan
Differential drive robot tidak bisa bergerak ke arah sumbu kedua roda atau
dengan kata lain, memiliki non-holonomic constraint. Selain itu, kebanyakan
differential drive robot memiliki sebuah roda tambahan yang pasif sebagai
support wheel agar lebih stabil terhadap variasi yang mungkin ada di lantai.

B.2.4 Autonomous Navigation


Autonomous Navigation atau navigasi otomatis adalah mekanisme untuk
menentukan posisi dari suatu navigasi dalam ruang (Hasan, dkk., 2018). Cakupan
sistem penentuan posisi yang sering digunakan dalam robotika adalah dan
outdoor navigation dan indoor navigation. Namun pada penelitian kali ini, kita
akan mengimplementasikan sistem indoor navigation.
B.2.4.1 Indoor Navigation

Gambar 2.9 Ilustrasi Aplikasi Indoor Navigation Di Dalam Mall


Sumber: (virtualrealitytimes.com, 2019)
Indoor navigation atau navigasi dalam ruangan memiliki banyak aplikasi.
Aplikasi tertentu adalah pencarian jalan bagi manusia di stasiun kereta api,
stasiun bus, pusat perbelanjaan, museum, bandara, dan perpustakaan. Ilustrasi
dari aplikasi indoor navigation di pusat perbelanjaan dapat dilihat pada gambar
2.9. Tidak seperti area outdoor, navigasi melalui area indoor lebih sulit. Area
dalam ruangan berisi berbagai jenis rintangan, yang meningkatkan kesulitan
dalam menerapkan sistem navigasi. Sistem navigasi dalam ruangan utama terdiri
dari tiga modul berikut: (1) modul sistem penentuan posisi dalam ruangan, (2)
modul navigasi, dan (3) modul interaksi manusia-mesin (HMI). Sistem penentuan
posisi dalam ruangan memperkirakan posisi pengguna, modul navigasi
menghitung rute ke tujuan dari lokasi pengguna saat ini, dan modul HMI

41
membantu pengguna berinteraksi dengan sistem dan memberikan instruksi
kepada pengguna.

B.2.5 Metode Simultaneous Localization And Mapping (SLAM)


Simultaneous Localization and Mapping atau SLAM adalah sebuah metode
komputasi yang dipakai untuk pemetaan menggunakan beberapa perangkat
pengindraan atau sensor secara sekaligus. SLAM bukanlah algoritme khusus yang
spesifik pada software tertentu, akan tetapi SLAM adalah sebuah konsep
komputasi yang menggabungkan beberapa perangkat keras dan perangkat lunak
secara sekaligus untuk pemetaan lingkungan dan navigasi. Masalah SLAM
mencoba mencari solusi untuk sebuah mobile robot untuk melokalisasi dirinya di
lingkungan yang tidak diketahui tanpa posisi awal dan sekaligus membangun
peta untuk lingkungan ini. Hasil akhir pemetaan sekitar dapat dibuat
menggunakan pengolahan beberapa algoritme dan menggunakan sensor sebagai
alat indra, proses ini dilakukan pada middleware Robot Operating System (ROS).
Pada umumnya robot dengan metode SLAM dilengkapi dengan berbagai sensor
sebagai indra pembaca, seperti LIDAR atau SONAR, PID, Deep Sensing Camera
dan sebagainya. Tidak menutup kemungkinan sensor yang lebih canggih akan
digunakan di masa depan untuk mencetak peta area sekitar untuk kebutuhan
selain robot. **sitasi
Pada pengembangan robot beroda untuk kasus pembacaan lingkungan
dengan kondisi ideal, biasanya SLAM menjadi metode yang paling banyak
digunakan dengan pembacaan yang dilakukan pada bidang yang rata. Akan
tetapi metode SLAM memiliki permasalahan pada proses lokalisasinya, SLAM
terdiri dari 2 proses utama yaitu localization dan mapping, berikut ini
penjelasannya.

Gambar 2.10 Ilustrasi Permasalahan Komputasi SLAM


Sumber: (arreverie.com, 2018)
Permasalahan ini datang dari komputasi SLAM itu sendiri, yaitu untuk
melakukan pemetaan dibutuhkan pembaharuan lokasi robot terkini secara
simultan. Sedangkan untuk melakukan pembaharuan lokasi dibutuhkan data
peta dari hasil pemetaan. Permasalahan ini seperti pertanyaan lebih dulu mana
ayam atau telur, seperti yang di ilustrasikan pada gambar 2.10. Artinya, untuk
memetakan suatu lingkungan secara akurat, teknologi harus mengetahui

42
orientasi dan posisi di dalam peta. Namun, informasi orientasi dan posisi hanya
dapat diambil dari peta lingkungan yang sudah ada sebelumnya. Solusi dari
permasalahan ini adalah melakukan dua hal ini, yaitu lokalisasi dan pemetaan
secara bersamaan dengan jeda selang-seling. Penjelasan lebih lanjut dapat dilihat
pada gambar 2.12.

Gambar 2.11 Ikhtisar Proses Metode Komputasi SLAM

Setelah mengetahui permasalahan dari metode komputasi SLAM, penulis


akan sedikit menjelaskan mengenai ikhtisar dari proses metode komputasi SLAM
yang terangkum ke dalam blok diagram yang dapat dilihat pada gambar 2.11.
Pada gambar tersebut kita dapat melihat bahwa awal mula, proses dilakukan
dengan melakukan scan data laser pada waktu t=0. Selanjutnya adalah
melakukan registrasi hasil pemindaian peta dan dilanjutkan dengan melakukan
perubahan waktu atau posisi. Setelah memperbarui waktu, langkah selanjutnya
adalah pemindaian laser di waktu berikutnya. Dilanjutkan dengan melakukan
perkiraan perubahan pose dari transformasi pemindaian data laser baru.
Kemudian sejajarkan pemindaian laser dengan perkiraan pose baru, sehingga
menciptakan pose robot yang tepat. Akhirnya proses akan mencapai pembaruan
peta dan kembali ke perubahan waktu atau posisi. Namun dari proses ini
terdapat permasalahan yang perlu diselesaikan yaitu cara untuk mendapatkan
perubahan waktu atau posisi di awal dan melakukan perkiraan perubahan pose
dari transformasi. Bagaimana bisa melakukan perkiraan posisi hanya dengan
mengandalkan data laser dan menggunakan data sebelumnya, jika terjadi
pergerakan maka laser akan membutuhkan posisi dimasa depan untuk
memperkirakan posisinya dalam 1 detik ke depan. Untuk melakukan ini
diperlukan data peta untuk bisa memperkirakan posisi robot. Namun karena
pemetaan sedang dilakukan sehingga belum ada peta yang dibuat maka
diperlukan metode yang mampu melakukan pemindaian laser sekaligus
menyimpan hasil tersebut ke dalam peta sementara yang nantinya digunakan
untuk melakukan lokalisasi untuk mengetahui posisi robot. Proses ini harus
berjalan secara simultan dan bergantian selang-seling. Dari hasil riset pada
penelitian sebelumnya cara ini dapat ditemukan pada algoritme Hector SLAM.
**referensi
43
B.2.5.1 Localization
Localization atau lokalisasi adalah menentukan letak dan orientasi (pose)
dari robot di sebuah lingkungan. Lokalisasi merupakan bagian dari metode SLAM
ini dikarenakan untuk melakukan pemetaan dibutuhkan data lokasi robot dengan
tepat agar hasil peta sesuai dengan bentuk lokasi aslinya. Untuk melakukan
lokalisasi diperlukan sensor yang mampu mendeteksi akselerasi dari robot, yaitu
sensor IMU dan encoder. Sensor IMU adalah gabungan dari gyroscope dan
akselerometer di dalam komponen elektronik. Sensor encoder atau Odometer
memberikan data odometry yang nantinya bisa digunakan sebagai variabel untuk
lokalisasi. Perhitungan odometry digunakan untuk menangkap ulang lokasi dan
orientasi robot menggunakan kalkulasi dari sensor rotary encoder pada roda
robot yang bekerja secara real time untuk memandu lokasi robot. Namun kita
juga bisa menggunakan gabungan dari keduanya, dengan tetap menyesuaikan
dari metode algoritme yang ingin digunakan untuk mendapatkan hasil yang
paling optimal.

Gambar 2.12 Lokalisasi Dalam Ruangan


Sumber : (research.qut.edu.au, 2019)
Seperti yang terlihat pada gambar 2.13 setiap posisi dari robot diikuti
dengan object landmark sehingga orientasi robot akan terus terpantau.
Penentuan kondisi robot dalam sekala dalam localization terbagi menjadi tiga
jenis permasalahan yaitu lokal, global, dan terlokalisasi. Lokalisasi lokal
diterapkan pada kondisi ketika robot mengetahui posisi dan orientasi awal.
Metode ini dapat mengestimasi posisi robot dengan menggunakan hasil
pembacaan sensor robot secara terus menerus meskipun terdapat kesalahan
Odometer dan kesalahan pada observasi sensor. Sementara itu lokalisasi global
diterapkan ketika robot tidak mengetahui posisi dan orientasi awalnya sehingga
robot harus melakukan observasi pada lingkungannya agar dapat menentukan
posisi. Kondisi relokalisasi merupakan salah satu permasalahan yang lebih
kompleks, dimana kondisi ini terjadi ketika robot menyadari bahwa hasil
observasi lingkungan robot berbeda dengan hasil pengukuran yang dilakukan

44
pada sampel robot dalam peta tidak sesuai, sehingga menyebabkan kesalahan
perhitungan. Kesalahan perhitungan ini akan dihindari menggunakan estimator
yang tergabung ke dalam paket robot localization.
B.2.5.2 Mapping
Mapping atau pemetaan adalah proses pengumpulan data dari dunia fisik
dengan banyak sensor untuk membangun sebuah peta, atau proses pencocokan
di mana titik-titik suatu himpunan dicocokkan dengan titik-titik himpunan lainnya
sehingga membentuk sebuah peta. Pada masalah komputasi SLAM, mapping
digunakan sebagai salah satu metode yang menjadi bagian dari algoritme.
Metode ini merepresentasikan lingkungan yang ditangkap kemudian membuat
peta geometris yang akurat. Bentuk dari pemrosesan peta ini bervariasi, salah
satunya adalah dengan cara grid map menggunakan array (biasanya persegi atau
heksagonal) dari yang didiskritkan untuk mewakili peta skala global dan
membuat kesimpulan tentang sel mana yang bisa ditempati dan mana yang tidak
bisa (terhalang). Biasanya sel diasumsikan independen secara statistik untuk
menyederhanakan perhitungan. Di bawah asumsi seperti ini pada Ρ ¿) disetel
nilainya menjadi 1 jika sel peta baru konsisten dengan observasi Ot pada lokasi x t
dan nilai 0 jika data tidak konsisten. Data 1 dan 0 bisa dimengerti oleh komputer
sehingga bisa dimanfaatkan untuk konversi ke dalam bentuk peta visualisasi.
Proses ini terus berjalan secara berulang-ulang dan didapatkan bentuk peta
dengan 2 warna dasar yaitu warna hitam yang berarti halangan terdeteksi dan
putih yang berarti area tidak terdeteksi adanya halangan apa pun. Ilustrasi visual
dari proses mapping dapat dilihat pada gambar 2.13.

Gambar 2.13 2D Mapping Dalam Ruangan


Sumber : (www.sifrobot.com, 2018)
Dari gambar 2.9 dapat dilihat bahwa proses mapping menggunakan
occupancy grid sebagai koordinat alasnya. Saat ini pengembangan permasalahan
komputasi pemetaan sudah mampu mencapai hasil yang luar biasa. Kita dapat
memvisualisasikan area sekitar secara 3D dengan menggunakan sensor 3D
LIDAR. Hal ini sudah bisa banyak ditemukan pada pengembangan self-driving car
yang terus dikembangkan secara masif di dunia. Namun hingga pada tahun 2021,
harga dari sensor 3D LIDAR sangat mahal berkisar antara 30-60 juta di pasaran.
Pengembangan sensor ini terus dilakukan demi memperoleh bahan produksi
45
yang lebih murah agar sensor dapat digunakan dan dikembangkan oleh
masyarakat umum. Pada penelitian ini, penggunaan sensor 2D LIDAR dirasa
sudah sangat cukup untuk jenis permasalahan robot dalam ruangan.

B.2.6 Algoritme Hector Simultaneous Localization and Mapping


Hector adalah singkatan dari Heterogeneous Cooperating Team of Robots.
Pendekatan ini telah diterbitkan pada tahun 2008. Ini adalah algoritma SLAM
open source berdasarkan data pemindaian laser untuk memperkirakan peta dan
pose robot tanpa odometri. Hector SLAM berisi sekumpulan paket ROS yang
digunakan untuk melakukan komputasi SLAM dengan mengkorelasikan perkiraan
posisi robot dan peta di lingkungan yang tidak terstruktur (Kohlbrecher, dkk.,
2014). Nama hector berasal dari nama tim pengembang yang menciptakannya
yaitu tim hector dari Technical University Darmstats, Jerman. Team Hector
adalah tim campuran mahasiswa dan kandidat Ph.D. di Technical University of
Darmstadt yang mendukung human first responders dalam bencana dengan
meneliti dan mengembangkan robot cerdas pencari dan penyelamat korban
bencana. Jika diteliti lebih lanjut Hector SLAM bukanlah suatu kesatuan algoritme
tunggal, melainkan kumpulan dari algoritme yang memiliki satu tujuan, yaitu
pemetaan. Jadi secara prinsip Hector SLAM bisa saja disamakan dengan suatu
metode, akan tetapi karena berisikan algoritme-algoritme penyusun pemetaan.

Gambar 2.14 Skema Sistem Hector SLAM


Sumber : (joshvillbrandt.com, 2016)
Seperti yang terlihat pada gambar 2.14, Hector SLAM dibuat untuk
menyelesaikan masalah pada pembuatan peta dilingkungan yang tidak
terstruktur dan belum pernah dilalui. Permasalahan tersebut kurang lebih
seperti, untuk melakukan lokalisasi atau pemosisian diperlukan data peta,
dengan begitu posisi robot dapat terbaca dengan memperkirakannya
menggunakan data sensor. Akan tetapi bagaimana caranya mendapatkan data
peta, jika peta tersebut belum ada dan lingkungan sekitar tidak mendukung
untuk membuat peta terlebih dahulu. Misalnya saja pada lingkungan kebakaran
atau bencana lainnya, akan sulit untuk menunggu robot melakukan pemetaan
dengan teknik GMapping menggunakan data odometry dan lidar terlebih dahulu,

46
setelah itu baru melakukan navigasi. Maka akan sulit melakukan lokalisasi
terlebih jika tidak memiliki sensor akselerometer. Selain itu, juga tidak sesuai
dengan tujuan awal algoritme ini diciptakan yaitu untuk robot penyelaman
korban bencana. Dengan menggunakan metode hector ini, kita dapat melakukan
navigasi sekaligus membuat peta secara langsung tanpa perlu menggunakan data
odometry atau akselerometer. Hector SLAM hanya mengandalkan data dari lidar
kemudian melakukan lokalisasi menggunakan perhitungan posisi sumber laser
terhadap area sekitar, tanpa perlu data odometry atau IMU.

Gambar 2.15 Skema Sistem Hector SLAM


Seperti yang dapat dilihat pada gambar 2.15, bahwa skema Hector SLAM
selalu melakukan reset pada awalnya. Diagram persegi panjang melambangkan
semua node yang memegang semacam informasi status berlangganan topik
perintah yang terutama digunakan untuk mengatur ulang sistem kapan pun
diperlukan. Fokus penelitian ini menggunakan Hector SLAM hanyalah pada
proses mapping saja, maka dari itu akan dijelaskan alur mapping tersebut. Pada
proses mapping terdapat tiga masukkan berupa tf (transformation), laser scan
dan reset. Data laser scan didapat dari sensor laser lidar, misalnya sensor
RPLIDAR, sedangkan tf didapat dari node tf yang terdapat pada file launch atau
konfigurasi EKF. Output dari mapping menghasilkan 2D map yang langsung di
proses oleh map server. Output yang disimpan dari map server akan disimpan
pada geotiff dan menghasilkan object tracker. Hasil dari mapping juga
menghasilkan 2D pose yang dikirimkan ke proses pose estimation yang nantinya
digunakan trajectory server untuk menyimpan jalur path yang sudah dilalui
robot. Jika ingin melakukan navigasi, bisa dengan menambahkan paket
move_base yang nantinya membuat robot memperhitungkan cost mapping dan
mampu membuat exploration planner sehingga akhirnya pendapat kan path
yang bebas dari halangan dan memerintahkan motor untuk berputar.
Node yang terpenting pada proses ini adalah mapping dan geotiff yang mana
dua node ini merupakan proses utama untuk membuat peta menggunakan
Hector SLAM. Maka dari itu pada sub bab selanjutnya akan dijelaskan hector
mapping dan hector geotiff.

47
B.2.6.1 Hector Mapping
Hector Mapping adalah pendekatan SLAM yang dapat digunakan tanpa
odometry serta pada platform yang menunjukkan gerakan roll/pitch (dari sensor,
platform, atau keduanya). Dikombinasikan dengan attitude estimation system
dan opsi unit pitch/roll untuk menstabilkan pemindai laser, sistem ini dapat
menyediakan peta lingkungan bahkan jika tanahnya tidak datar seperti yang
ditemui di arena Penyelamatan RoboCup (Kohlbrecher, dkk., 2014). Pada
penelitian ini algoritme memanfaatkan sistem Light Detection and Ranging
(LIDAR) dengan frekuensi tinggi dengan menggunakan informasi Odometer
sebagai validasi posisinya. Hector Mapping menggunakan algoritme scan
matching yang dikembangkan dengan cara menyelaraskan data dari sensor
untuk membangun peta. Scan matching adalah proses menyelaraskan hasil
pemindaian (pengukuran jarak) pada waktu t dengan LIDAR dengan hasil
pemindaian pada waktu t - 1 yang bertujuan untuk memperoleh posisi robot
untuk kemudian memperbarui peta. Metode scan matching pada Hector
Mapping berbasis pada pendekatan Gauss-Newton. Jadi walaupun dalam
teorinya hector mapping hanya memerlukan data laser, untuk memvalidasi posisi
robot tetap diperlukan data odometry dan IMU yang di fusi dengan algoritme
EKF.
B.2.6.2 Hector Geotiff
Hector Geotiff adalah node yang dapat digunakan untuk menyimpan peta
jaringan hunian, lintasan robot, dan data objek yang diinginkan ke peta format
Geotiff dengan informasi georeferencing. Sedangkan peta Geotiff adalah gambar
peta dengan bentuk berupa data occupancy grid berisikan data free space dan
obstacle. Dalam ROS Geotiff digunakan sebagai format standar untuk peta, jadi
bukan format gambar biasa seperti JPEG atau PNG melainkan Geotiff dengan
extensi format .pgm. Node ini dapat berjalan di atas sistem robot dan
menyimpan peta ke penyimpanan permanen berdasarkan pengatur waktu,
mengurangi kemungkinan hilangnya peta jika terjadi masalah konektivitas.

B.2.7 Algoritme Extended Kalman Filter (EKF)


Extended Kalman Filter (EKF) adalah versi non linier dari filter Kalman yang
terlinear mengenai perkiraan rata-rata dan kovarians saat ini. Dalam kasus model
transisi, EKF dipertimbangkan dalam penggunaan dalam teori estimasi keadaan
non linier. Sistem navigasi robot dan GPS sering digunakan sebagai salah satu
pengimplementasian dari algoritme ini. EKF sering disebut sebagai algoritme
fusion sensor karena dalam penggunaannya EKF digunakan untuk
menggabungkan dua buah atau lebih sensor, seperti sensor IMU, GPS, kompas
dan odometry menjadi satu output. Hasil dari algoritme ini menghasilkan
keluaran sensor fusion yang mampu melacak posisi suatu robot dengan
mengalkulasi nilai dari setiap keluaran sensor yang dimasukkan ke dalam
parameter EKF. Algoritme lokalisasi ini bertujuan untuk mencapai tingkat akurasi
yang tinggi dan cakupan yang lebih luas.

48
EKF Localization tergabung ke dalam paket robot localization yang tersedia
pada paket driver ROS dengan node paketnya bernama ekf_localization_node.
Node ekf_localization_node adalah implementasi dari filter Kalman yang
diperluas. Cara ini menggunakan suatu model gerakan omnidirectional untuk
memproyeksikan keadaan dimasa depan dengan mengoreksi hasil perkiraan
menggunakan masukkan data sensor yang diperoleh. Jumlah parameter pada
paket relatif banyak tergantung dengan jumlah sensor yang digunakan. Paket ini
berisi template launcher dan file konfigurasi untuk membantu pengguna dalam
melakukan lokalisasi. Untuk penggunaannya, paket lokalisasi ini dapat digunakan
pada file launch secara langsung atau dengan membuat file config dengan
extensi .yaml yang nantinya juga di impor pada file launch. Rumus dari algoritme
EKF sudah banyak digunakan dalam berbagai macam permasalahan komputasi,
untuk detail rumus yang digunakan dan mengetahui model matematika yang
terjadi dibalik layar dapat dilihat pada penelitian Thomas Moore (Moore dan
Stouch, 2016). Pada intinya penelitian tersebut menjelaskan bahwa dalam setiap
perubahan translasi, maka akan mengalkulasi tiap nilai yang berubah
menggunakan persamaan x new=x old +vx∗t+ 0.5∗a∗t 2 yang akan tetapi nilai v dan
a diberikan dalam rangka tubuh robot jadi kita harus menerapkan rotasi 3D pada
robot dan orientasinya memiliki logika yang sama. Kecepatan (v) menggunakan
persamaan vx new =vx old + at . Setiap baris dalam matriks adalah fungsi transisi.
Kita kemudian perlu menurunkan rumus Jacobian secara analitis. Tujuan
utamanya adalah memperkirakan pose 3D (6 DOF) dan kecepatan robot bergerak
dari waktu ke waktu. Semua node estimasi melacak 15 status dimensi: (X, Y, Z,
roll, pitch, yaw, X˙, Y˙, Z˙, roll˙, pitch˙, yaw˙, X¨, Y¨, Z¨).
Fitur-fitur yang dimiliki oleh paket driver ROS ini antara lain:
1. Penggabungan sejumlah sensor yang berubah-ubah. Node tidak
membatasi jumlah sumber input. Jika, misalnya, robot Anda memiliki
beberapa IMU atau beberapa sumber informasi odometri, node estimasi
status dalam robot_localization dapat mendukung semuanya.
2. Dukungan untuk beberapa jenis pesan ROS. Semua node estimasi status
di robot_localization dapat menerima pesan nav_msgs/Odometer,
sensor_msgs/Imu, geometric_msgs/PoseWithCovarianceStamped, atau
geometric_msgs/TwistWithCovarianceStamped.
3. Customization input per-sensor. Jika pesan sensor tertentu berisi data
yang tidak ingin Anda sertakan dalam perkiraan status Anda, node
estimasi status di robot_localization memungkinkan Anda
mengecualikan data tersebut berdasarkan per-sensor.
4. Estimasi terus menerus. Setiap node estimasi status di robot_localization
mulai memperkirakan status kendaraan segera setelah menerima satu
pengukuran. Jika ada jeda dalam data sensor (yaitu, periode lama di
mana tidak ada data yang diterima), filter akan terus memperkirakan
status robot melalui model gerakan internal.

49
B.2.8 Navigasi
Menurut Montello, D.R. dalam bukunya yang berjudul “Navigation”,
dijelaskan bahwa navigasi dikoordinasikan dan gerakan yang diarahkan pada
tujuan melalui lingkungan oleh organisme atau mesin cerdas. Beliau juga
menjelaskan bahwa Ilmu saraf telah menunjukkan peran struktur otak tertentu
dalam pemeliharaan orientasi dan telah menemukan bukti untuk neuron yang
menyala secara istimewa sebagai respons terhadap lokasi atau arah hewan.
Peneliti kecerdasan buatan mengembangkan model komputer yang menguji
teori kognisi navigasi atau hanya membuat robot yang kompeten (Montello,
2009). Sedangkan untuk pengertian navigasi pada SLAM dikutip dari penelitian
lain (Utomo, 2015) dalam tesisnya mengatakan navigasi diartikan sebagai proses
atau aktivitas untuk merencanakan atau menuju jalur secara langsung dalam
sebuah misi yang diberikan pada sebuah autonomous mobile robot dari satu
tempat ke tempat yang lain tanpa kehilangan arah atau mengalami tabrakan
dengan objek yang. Dalam navigasi, terdapat suatu sistem perencanaan jalur
(path planning) untuk mencari jalur terpendek dari posisi saat ini menuju posisi
tujuan.

B.2.9 Path Planning


Path planning atau perencanaan jalur adalah metode komputasi untuk
menemukan urutan konfigurasi yang valid yang bisa memindahkan objek dari
titik sumber ke titik tujuan. Metode ini berbasis pada path problem dan juga
digunakan pada masalah komputasi geometri. Contoh algoritme yang berbasis
metode ini adalah A*, Dynamic Window Approach, Dijkstra, dan Backtrack free
planning. Pengaplikasian metode komputasi ini cocok digunakan pada navigasi
robot automation, self-driving car, drone, dan lain sebagainya. Metode ini
memiliki keunggulan utama terletak pada pemindaian jalur secara dinamis dan
kontinu. Terdapat 2 perangkat yang dapat digunakan dalam proses navigasi,
yakni Odometer dan inertial measurement unit (IMU). Odometer
memperhitungkan rotasi roda robot untuk membantu mengukur seberapa jauh
jaraknya menggunakan pembacaan sensor rotary encoder. IMU juga digunakan
untuk mengukur kecepatan dan akselerasi sebagai cara untuk melacak posisi
robot menggunakan pembacaan gyroscope dan akselerometer.

50
Gambar 2.16 Path Planning Menggunakan GPS Pada Aplikasi Mapbox
Sumber : (www.mapbox.com, 2022)
Konsep dasarnya path planning adalah dengan menghitung jalur kontinu
yang menghubungkan konfigurasi awal dan konfigurasi tujuan, sambil
menghindari tabrakan dengan rintangan yang diketahui. Geometri robot dan
rintangan dideskripsikan dalam ruang kerja 2D atau 3D, sedangkan gerakan
direpresentasikan sebagai jalur dalam. Di dalam motion planning terdapat 2 hal
yang akan selalu dibahas dalam penelitian ini, yaitu global planner dan local
planner. Global planner bekerja dengan informasi yang didapat pada keseluruhan
peta, jadi semua data yang ter visualisasi pada peta disebut sebagai global
planner. Sedangkan local planner hanya bekerja dengan informasi yang
didapatnya saat ini dari sensor dan merencanakan jalur yang panjangnya hanya
sekitar 1 meter.
Terdapat 4 konsep pada proses memahami ruang dan pengambilan jalur
pada permasalahan motion planning antara lain:
1. Configuration space, yaitu melakukan konversi dari dimensi 3 ke dimensi
2 (datar) dan merepresentasikan warna abu-abu sebagai halangan yang
telah di konfirmasi atau di atur sedari awal atau sudah dilakukan
pemetaan.
2. Free space, yaitu proses menghindari segala jenis tabrakan terhadap
himpunan konfigurasi dari rintangan yang ada. Forward kinematic
menentukan posisi geometri robot, dan pengujian deteksi tabrakan
apakah geometri robot bertabrakan dengan geometri lingkungan.
3. Target space, bagian ruang kosong yang menunjukkan ke mana robot
ingin bergerak. Pada global planning target dapat diamati oleh sensor
robot, namun di dalam local planning robot tidak bisa melakukan
pengamatan secara langsung karena keterbatasan data jarak demi proses
optimal, untuk menyelesaikan permasalahan ini, robot dicoba untuk
melewati beberapa ruang target virtual yang masing-masing terletak di

51
dalam area yang dapat diamati di sekitar robot, ruang pada target disebut
sub-goal.
4. Obstacle space, bagian ruang yang tidak bisa dimasuki robot. Ruang ini
berlawanan dengan ruang bebas
Konsep dasar ini mendasari algoritme-algoritme seperti Grid-based search,
Interval-based search, Geometric algorithm, Artificial potential fields dan
Sampling-based algorithm.

B.2.9.1 Global Planner


Perencana global merencanakan jalur global di sekitar rintangan dan
rintangan baru apa pun berdasarkan frekuensi yang ditentukan oleh parameter
frequency planner. Penghindaran rintangan (pemeriksaan tabrakan) terjadi di
perencana lokal tempat cmd_vel diproduksi dan didasarkan pada parameter
controller frequency. Local planner mencoba mengikuti global planner sedekat
mungkin yang berarti mempertimbangkan bagian dari perencana global pada
suatu waktu. Ilustrasi mengenai global planner dapat dilihat pada gambar 2.17.

Gambar 2.17 Ilustrasi Global Planner


Sumber : (www. mushr.io, 2021)
B.2.9.2 Local Planner
Local planner atau perencana lokal merupakan metode untuk mengubah
jalur global menjadi titik jalan yang sesuai (Marin-Plaza, dkk., 2018). Jadi, untuk
menghitung ulang jalur pada titik tertentu tingkat, peta direduksi menjadi
lingkungan kendaraan dan diperbarui saat kendaraan bergerak. Hal ini tidak
mungkin untuk gunakan seluruh peta karena sensor tidak dapat memperbarui
peta di semua wilayah dan sejumlah besar sel akan meningkat biaya komputasi.
Oleh karena itu, dengan lokal yang diperbarui peta dan titik arah global,
perencanaan lokal menghasilkan strategi penghindaran untuk rintangan dinamis
dan mencoba untuk mencocokkan lintasan sebanyak mungkin ke titik jalan yang
disediakan dari perencana global. Ilustrasi mengenai local planner dapat dilihat
pada gambar 2.18.

52
Gambar 2.18 Ilustrasi Local Planner
Sumber : (www. nswers.ros, 2021)
Berikut adalah tiga pendekatan umum yang digunakan untuk perencanaan
lintasan lokal:
1. Potensi-medan berbasis, di mana setiap rintangan memiliki 'medan gaya'
rintangan untuk memukul mundur robot, dan gawang memiliki medan
tarik-menarik. (Pendekatan serupa adalah 'Vector-fields', dan Virtual
Force Field)
2. Berbasis dinamis, dimana algoritma mempertimbangkan dinamika robot
dalam menghitung solusi. (Hambatan Kecepatan dan Pendekatan
Jendela Dinamis)
3. Berbasis pengambilan sampel, di mana berbagai keadaan bebas
tumbukan diambil sampelnya dan kemudian digabungkan. (Grafik
jangkauan, peta jalan Probabilistic)
Local planner atau perencana lokal merupakan metode untuk mengubah
jalur global menjadi titik jalan yang sesuai (Marin-Plaza, dkk., 2018). Jadi, untuk
menghitung ulang jalur pada titik tertentu tingkat, peta direduksi menjadi
lingkungan kendaraan dan diperbarui saat kendaraan bergerak. Hal ini tidak
mungkin untuk gunakan seluruh peta karena sensor tidak dapat memperbarui
peta di semua wilayah dan sejumlah besar sel akan meningkat biaya komputasi.
Oleh karena itu, dengan lokal yang diperbarui peta dan titik arah global,
perencanaan lokal menghasilkan strategi penghindaran untuk rintangan dinamis
dan mencoba untuk mencocokkan lintasan sebanyak mungkin ke titik jalan yang
disediakan dari perencana global.

B.2.10 Algoritme Dijkstra


Algoritme Dijkstra adalah algoritme untuk menemukan jalur terpendek
antara node dalam grafik, yang dapat mewakili suatu jaringan. Dengan Algoritme
Dijkstra, kita dapat menemukan jalur terpendek antara node dalam grafik.
Khususnya dapat menemukan jalur terpendek dari sebuah simpul ke semua
53
simpul lain dalam grafik, menghasilkan pohon jalur terpendek. Algoritme ini
digunakan dalam perangkat GPS untuk menemukan jalur terpendek antara lokasi
saat ini dan tujuan.

Gambar 2.19 Perencanaan Jalur Terpendek Menggunakan Algoritme Dijkstra


Sumber : (www.programiz.com, 2020)
Pada gambar 2.19 dapat dilihat bahwa algoritme Dijkstra biasanya
digunakan pada perencanaan jalur menggunakan GPS atau Global Positioning
System. Pada penelitian ini, Dijkstra dijadikan algoritme perencanaan jalur
menggunakan sistem global, akan tetapi batas global yang digunakan adalah
hasil dari pemetaan yang dilakukan sebelumnya. Data peta semesta GPS sudah
dibuat sebelumnya dengan seluas bumi dan melakukan lokalisasi dengan
menggunakan satelit. Sehingga proses tracking bisa berjalan dengan mudah.

Gambar 2.20 Grid Map Hasil Pemetaan


Tidak seperti layaknya GPS, sistem lokalisasi indoor tidak memiliki peta
semesta seukuran bumi. Maka dari itu perlu dibuat sebuah peta semesta dengan
ukuran terbatas sesuai dengan area kerja robot. Peta ini merupakan bentuk dari
proses mapping dan menghasilkan berupa file Geotiff dengan bentuk Grid Map.
Pada gambar 2.20 terlihat ilustrasi dari proses path planning dari kotak biru
menuju kotak merah. Terdapat banyak kemungkinan jalur yang akan dituju,
robot tidak mengetahui mana jalur terpendek dan bagaimana mengambil
keputusan untuk melewati suatu jalur. Maka dari itu diperlukan sebuah
54
perencanaan global yang menghitung dimana jarak terpendek dari titik awal
menuju titik tujuan.
B.2.10.1 Dijkstra Algorithm Fundamental
Untuk memahami Dijkstra kita harus mengerti fundamental dan proses
kunci pada Algoritme Dijkstra. Untuk itu mari kita telusuri algoritma jalur
terpendek Dijkstra dengan contoh pada gambar 2.21 berupa peta kisi 5 × 5,
dengan huruf yang mengidentifikasi setiap selnya. Kita akan mencari jalur
terpendek yang dimulai dari titik awal Q, ditandai dengan garis biru, ke tujuan N,
ditandai dengan garis merah. Sel hitam dianggap sebagai sel yang ditempati dan
tidak dapat dilalui.

Gambar 2.21 Peta 5x5


Sebuah komponen kunci dari algoritma Dijkstra adalah bahwa ia selalu
melacak jarak terpendek dari node awal ke setiap sel individu. Kita akan merujuk
ke nilai ini sebagai g_cost dari sebuah node dan menampilkannya di sudut kanan
bawah setiap sel grid. Sebelum proses pencarian dimulai, titik awal (simpul Q)
mendapat g_cost sebesar 0 (karena jaraknya ke dirinya sendiri adalah 0).
Kemudian, seiring berjalannya algoritma, nilai-nilai ini akan diperbarui ke jarak
terpendek yang sebenarnya dari node awal (lebih lanjut akan segera menyusul).

Gambar 2.22 Node Awal Gambar 2.23 Kunjungi Tetangga


Iterasi dimulai dari pengambilan node paling terdekat yaitu Q karena dimulai
dari titik awalnya dan diberikan g_cost 0 dan statusnya adalah parent node.
Selanjutnya memilih ke empat tetangganya terdekat dari parent node saat ini
untuk dikunjungi.

55
Gambar 2.24 Pindah ke Node Lain Gambar 2.25 Sampai di N
Setelah itu iterasi dimulai dari child node setelah Q = 0 yaitu L, P, Q = 1,
proses ini terus berulang hingga saat parent node mengunjungi tetangga dengan
node tujuan target, seperti yang tertera pada gambar 2.24 dan 2.25.

Gambar 2.26 Membangun Jarak Terpendek


Setelah kita mencapai simpul target, kami dapat mengekstrak rute
terpendek dengan mengikuti setiap simpul induk simpul hingga kami mencapai
simpul awal, seperti yang terlihat pada gambar 2.26. Setelah pelacakan mundur
selesai, daftar yang baru dibuat akan berisi jalur terpendek sebagai urutan sel kisi
yang harus dikunjungi, tetapi dalam urutan yang salah. Untuk memiliki jalur dari
awal hingga akhir, yang perlu kita lakukan hanyalah membalikkannya.

Gambar 2.27 Path finding Selesai


Sekarang kita sudah selesai dengan proses pencarian jalur, maka selanjutnya
adalah tinggal memandu robot dengan memberikan posisi koordinat map secara
perlahan dari kotak Q menuju kotak N seperti yang terlihat pada gambar 2.27.
B.2.10.2 Implementasi algoritme Dijkstra
Algoritme Dijkstra terdiri dari beberapa tahapan berupa langkah-langkah
secara sistematis, antara lain sebagai berikut:

56
1. Tandai simpul awal Anda dengan g_cost 0, tambahkan simpul awal Anda
ke open_list
Fase pertama:
Ulangi yang berikut ini saat open_list tidak kosong:
2. Ekstrak node dengan g_cost terkecil dari open_list dan beri nama
current_node.
3. Tandai sebagai dikunjungi dengan menambahkannya ke closed_list.
4. Periksa apakah current_node adalah node target, jika demikian lanjutkan
ke fase II, jika tidak lanjutkan dengan langkah 5
5. Temukan tetangga dari current_node
For each untuk setiap node dalam daftar tetangga current_node:
6. Jika tetangga ada di dalam closed_list, lewati dan pilih tetangga
berikutnya
7. Jika tetangga ada di dalam open_list:
o Jika nilai g_cost baru lebih kecil dari nilai g_cost saat ini:
 Perbarui g_cost tersebut
 Perbarui simpul induknya
8. Jika tetangga tidak ada di dalam open_list:
o Setel g_cost
o Setel node induknya
o Tambahkan ke open_list
Ketika kita selesai mempertimbangkan semua tetangga dari current_node
lanjutkan ke langkah 2.
Fase kedua:
Membangun jalan dari awal sampai akhir.
1. Telusuri kembali dari node target ke node awal, menggunakan node induk
setiap node
Bentuk sederhana dari hasil implementasi ini adalah berupa pseudocode pada
tabel 2.2
Tabel 2.2 Pseudocode Algoritme Dijkstra
BEGIN dijkstra(G, S)
for each vertex V in G
distance[V] <- infinite
previous[V] <- NULL
If V != S, add V to Priority Queue Q
distance[S] <- 0

57
while Q IS NOT EMPTY
U <- Extract MIN from Q
for each unvisited neighbour V of U
tempDistance <- distance[U] + edge_weight(U, V)
if tempDistance < distance[V]
distance[V] <- tempDistance
previous[V] <- U
return distance[], previous[]
END

Setelah melakukan perencanaan jalur maka robot sudah dapat melakukan


navigasi. Dengan memanfaatkan data dari peta dan tangkapan sensor maka
robot bisa bernavigasi dengan lancar dan mampu menghindari halangan.

B.2.11 Algoritma Dynamic Window Approach (DWA)


Dynamic Window Approach adalah perencana lokal berbasis kecepatan yang
menghitung kecepatan optimal bebas tabrakan untuk robot yang diperlukan
untuk mencapai tujuannya. Kata “Window Approach” memiliki arti untuk
mempertimbangkan percepatan terbatas oleh motor, ruang pencarian
keseluruhan direduksi menjadi "jendela dinamis" yang hanya berisi kecepatan
yang dapat dicapai dalam interval waktu berikutnya. Ini menerjemahkan tujuan
Cartesius (x, y) menjadi perintah kecepatan (v, w) untuk robot bergerak. Ada dua
tujuan utama, menghitung ruang pencarian kecepatan yang valid, dan memilih
kecepatan yang optimal. Ruang pencarian dibangun dari himpunan kecepatan
yang menghasilkan lintasan yang aman (yaitu memungkinkan robot berhenti
sebelum bertabrakan), mengingat himpunan kecepatan yang dapat dicapai robot
dalam irisan waktu berikutnya berdasarkan dinamikanya. Kecepatan optimal
dipilih untuk memaksimalkan jarak bebas robot, memaksimalkan kecepatan dan
mendapatkan heading yang paling dekat dengan gawang. Ilustrasi mengenai
algoritme DWA dapat dilihat pada gambar 2.28.

Gambar 2.28 Ilustrasi Pemilihan Jalur Algoritme DWA


Akan lebih mudah untuk menjelaskan alur proses algoritma ini jika kita
melihat kodenya terlebih dahulu dalam pseudocode DWA pada tabel 2.3 sebagai
berikut:
58
Tabel 2.3 Pseudocode Dynamic Window Approach
BEGIN DWA(robotPose,robotGoal,robotModel)
desiredV = calculateV(robotPose,robotGoal)
laserscan = readScanner()
allowable_v = generateWindow(robotV, robotModel)
allowable_w = generateWindow(robotW, robotModel)
for each v in allowable_v
for each w in allowable_w
dist = find_dist(v,w,laserscan,robotModel)
breakDist = calculateBreakingDistance(v)
if (dist > breakDist) //can stop in time
heading = hDiff(robotPose,goalPose, v,w)
clearance = (dist-breakDist)/(dmax - breakDist)
cost = costFunction(heading,clearance, abs(desired_v -
v))
if (cost > optimal)
best_v = v
best_w = w
optimal = cost
set robot trajectory to best_v, best_w
END
Penjelasan dari pseudocode di atas sebagaimana berikut:
1. Pertama, kita dapat menghitung kecepatan yang diinginkan ke tujuan
berdasarkan posisi kita saat ini, dan tujuan. (misalnya cepat jika kita
jauh, lambat jika kita dekat. Gunakan Persamaan Gerak, lihat Gerakan
melingkar untuk robot bergerak).
2. Pilih kecepatan yang diizinkan (linier v, dan sudut w) dengan dinamika
kendaraan, misalnya ‘kecepatan yang diperbolehkan’ berkisar dari
kecepatan saat ini kurangi perlambatan maksimum robot * irisan waktu
ke kecepatan saat ini ditambah percepatan maksimum robot * irisan
waktu, atau lebih ringkas: [v – a.t , v + a.t], juga untuk kecepatan sudut.
3. Cari melalui semua kecepatan yang diizinkan
4. Untuk setiap kecepatan, tentukan hambatan terdekat untuk kecepatan
robot yang diusulkan (yaitu deteksi tabrakan di sepanjang lintasan)
5. Tentukan apakah jarak ke rintangan terdekat berada dalam jarak putus
robot. Jika robot tidak dapat berhenti tepat waktu, abaikan kecepatan
robot yang diusulkan ini.
6. Jika tidak, kecepatannya 'diterima', jadi sekarang kita dapat menghitung
nilai yang diperlukan untuk fungsi tujuan. Dalam kasus kami, robot
heading dan clearance.
7. Hitung 'biaya' untuk kecepatan yang diusulkan. Jika biayanya lebih baik
dari apa pun sejauh ini, tetapkan ini sebagai opsi terbaik kami.
8. Terakhir, atur lintasan yang diinginkan robot ke kecepatan terbaik yang
diusulkan.
59
B.2.12 Komponen Utama Robot Pengantar Barang
Komponen utama robot pengantar barang berisikan alat-alat yang
digunakan guna membangun sistem robot ini. Pada sub bab ini akan dijelaskan
spesifikasi dan pengertian dari setiap komponen yang digunakan. Berikut ini
adalah komponen utama yang dibutuhkan dalam membuat robot pengantar
barang.
B.2.12.1 Motherboard Hoverboard
Motherboard adalah papan logika utamanya yang berisi unit pemrosesan
pusat dan chip memori. Pada komputer yang menggunakan arsitektur terbuka,
motherboard telah memasang selot di mana kartu logika tambahan khusus dapat
dimasukkan untuk menambah fungsi primitif yang didukung oleh konfigurasi
minimum sistem komputer (Reilly, 2003). Pada penelitian ini, motherboard
hoverboard digunakan sebagai mainboard atau papan pemrosesan utama dari
robot sekaligus sebagai driver motor dc. Di dalam motherboard terdapat chip
mikroprosesor dengan seri GD32F103RCT6 yang digunakan sebagai otak dari
kontroler sekaligus sebagai driver untuk mengontrol kecepatan dan arah putaran
roda. Motherboard ini terdiri dari berbagai regulator, input/output, converter
tegangan, dan berbagai komponen elektronik lainnya seperti transistor,
kapasitor serta MOSFET. Gambar 2.29 merupakan gambar motherboard
hoverboard.

Gambar 2.29 Motherboard Hoverboard


Sumber : (github.com/EFeru/hoverboard-firmware-hack-FOC, 2021)
Perlu diperhatikan bahwa motherboard hoverboard memiliki tipe dan
bentuk yang berbeda-beda. Pada penelitian ini digunakan motherboard
hoverboard dengan tipe single motherboard dan berbentuk seperti pada
gambar 2.29. Hal ini perlu diperhatikan karena penggunaan selain single
motherboard akan sangat menyulitkan proses flashing firmware karena
perbedaan port dan fabrikasi. Misalnya saja dual board motherboard yang

60
memiliki port flashing di kedua board, jadi selalu gunakan single
motherboard.
B.2.12.2 Nvidia Jetson Nano
Mikro komputer adalah komputer kecil yang relatif murah dengan
mikroprosesor sebagai unit pemrosesan pusat (CPU). Ini termasuk
mikroprosesor, memori dan sirkuit input/output (I/O) yang dipasang pada
satu papan sirkuit tercetak (PCB) dan Jetson Nano termasuk salah satu
mikrokomputer. Pada penelitian ini menggunakan mikrokontroler Jetson
Nano sebagai pemrosesan utama kedua setelah mikrokontroler hoverboard.
Jetson Nano Developer Kit adalah komputer kecil dan kuat yang
memungkinkan Anda menjalankan beberapa jaringan saraf secara paralel
untuk aplikasi seperti klasifikasi gambar, deteksi objek, segmentasi, dan
pemrosesan ucapan (Williman dan Jelinek, 1976). Bentuk fisik dari Nvidia
Jetson Nano dapat dilihat pada gambar 2.30.

Gambar 2.30 Nvidia Jetson Nano


Sumber: (www.nvidia.com, 2021)
B.2.12.3 Motor BLDC Hoverboard 6.5 Inch 350 Watt
Brushless DC Motor atau motor BLDC adalah motor sinkron yang
menggunakan catu daya listrik arus searah (DC). Ini menggunakan pengontrol
loop tertutup elektronik untuk mengalihkan arus DC ke putaran kawat motor
yang menghasilkan medan magnet yang secara efektif berputar di ruang angkasa
dan yang diikuti oleh rotor magnet permanen. Kontroler menyesuaikan fase dan
amplitudo pulsa arus DC untuk mengontrol kecepatan dan torsi motor. Sistem
kontrol ini merupakan alternatif dari komutator mekanis (sikat) yang digunakan
di banyak motor listrik konvensional (Wang, 2012).

61
Gambar 2.31 Motor BLDC 6.5” 36V 350W dan build in Encoder
Sumber : (www.hoverboardforlife.blogspot.com, 2016)
Pada gambar 2.31 dapat dilihat bahwa di dalam motor BLDC terdapat sensor
encoder yang berfungsi untuk mengetahui posisi motor berdasarkan data yang
dikirimkan dari HALL sensor. Sensor Encoder ini akan mengirimkan data berupa
odometry yang nantinya akan digunakan sebagai input pada sistem. Pembahasan
lebih lanjut mengenai odometry akan dibahas pada bagian selanjutnya.
B.2.12.4 Baterai 18650 Litium Ion 42V 10S2P 4400mAh
Baterai litium-ion atau baterai Li-ion adalah jenis baterai isi ulang di mana ion
litium bergerak dari elektroda negatif melalui elektrolit ke elektroda positif
selama pelepasan, dan kembali saat pengisian. Baterai Li-ion menggunakan
senyawa litium sebagai bahan pada elektroda positif dan biasanya grafit pada
elektroda negatif (Lain, Brandon dan Kendrick, 2019). Baterai Li-ion memiliki
kepadatan energi yang tinggi dan self-discharge rendah, ilustrasi dari baterai
yang digunakan pada penelitian ini seperti yang terlihat pada gambar 2.32.

Gambar 2.32 Baterai Litium Ion 42V 10S2P 4400mAh


Sumber : (www.streetsaw.com, 2021)

62
B.2.12.5 STLink V2
STLink bukanlah bagian dari komponen utama robot, alat ini digunakan
dalam proses flashing motherboard hoverboard. Tepatnya STlink berfungsi
sebagai perantara USB Flashing antara komputer dengan motherboard. Flashing
dilakukan untuk reset semua kode pabrik yang ada di motherboard sekaligus
menuliskan ulang motherboard dengan kode baru yang sudah di modifikasi.
Gambar 2.33 merupakan bentuk dari STLink V2 Programmer.

Gambar 2.33 STLink V2


Sumber: (indonesia.alibaba.com, 2021)
B.2.12.6 Sensor RPLIDAR A1

Gambar 2.34 Sensor RPLIDAR


Sumber: (www.RoboPeak.com, 2013)
RPLIDAR (RoboPeak Light Distance and Ranging) adalah solusi pemindai laser
2D (LIDAR) 360 derajat berbiaya rendah yang dikembangkan oleh RoboPeak.
Sistem dapat melakukan pemindaian 360 derajat dalam jarak 6 meter. Metode
yang digunakan adalah LIDAR, LIDAR (Light detection and ranging) merupakan
teknologi sensor jarak jauh yang menggunakan laser untuk memindai halangan
atau dinding dan menghitung jaraknya. Data titik 2D yang dihasilkan dapat
digunakan dalam pemetaan, pelokalan, dan permodelan objek/lingkungan. Pada

63
gambar 2.34 dapat dilihat bentuk fisik dari RPLidar dengan keterangan berupa
fitur utama dan nilai tegangannya.
Frekuensi pemindaian RPLIDAR mencapai 5,5 hz saat pengambilan sampel
360 titik setiap putaran. Dan dapat dikonfigurasi hingga maksimum 10 hz.
RPLIDAR pada dasarnya adalah sistem pengukuran triangulasi laser. Sistem ini
dapat bekerja dengan sangat baik di semua jenis lingkungan dalam dan luar
ruangan tanpa sinar matahari. Pada LIDAR 360 derajat, proses ini berlangsung
secara berkesinambungan. Hasil scan atau pemindaian LIDAR ini berupa titik-titik
awan (point clouds) dalam bidang 2 dimensi, karena sensor ini hanya memindai
bidang horizontal. Jika LIDAR memindai bidang vertikal dan horizontal maka
point clouds yang dihasilkan berupa ruang 3 dimensi. Point clouds 3 dimensi
memungkinkan pemetaan lebih detail tentang lingkungan robot tapi
membutuhkan komputasi yang lebih powerful.
RPLIDAR berisi sistem pemindai jangkauan dan sistem motor. Setelah
menyalakan setiap sub-sistem, RPLIDAR mulai berputar dan memindai searah
jarum jam. Pengguna bisa mendapatkan data pemindaian jarak jauh melalui
antarmuka komunikasi (Port serial/USB). RPLIDAR didasarkan pada prinsip
rentang triangulasi laser dan menggunakan akuisisi penglihatan berkecepatan
tinggi dan perangkat keras pemrosesan yang dikembangkan oleh RoboPeak.
Sistem mengukur data jarak lebih dari 2000 kali per detik dan dengan output
jarak resolusi tinggi (<1% dari jarak). RPLIDAR memancarkan sinyal laser
inframerah termodulasi dan sinyal laser tersebut kemudian dipantulkan oleh
objek yang akan dideteksi. Sinyal kembali di sampel oleh sistem akuisisi visi di
RPLIDAR dan DSP yang tertanam di RPLIDAR mulai memproses data sampel dan
nilai jarak keluaran dan nilai sudut antara objek dan RPLIDAR melalui antarmuka
komunikasi. Sistem pemindai rentang kecepatan tinggi dipasang pada rotator
yang berputar dengan sistem pengkodean sudut bawaan. Selama rotasi,
pemindaian 360 derajat dari lingkungan saat ini akan dilakukan. Hasil dari
pemindaian ini akan dikirimkan melalui komunikasi USART melalui adapter
USART dan dihubungkan ke Jetson Nano menggunakan Port USB. Data yang
didapat berupa koordinat dari setiap titik laser yang terbaca. Teknologi Light
Detection and Ranging (LIDAR) dengan memanfaatkan teknik time-of-flight (TOF)
akan dibahas lebih detail pada bagian selanjutnya.
B.2.12.7 Sensor IMU GY-521 MPU-6050 6DOF

64
Gambar 2.35 Sensor IMU GY-521
Sumber: (www.digiwarestore.com, 2013)
GY-521 MPU-6050 merupakan modul sensor yang berfungsi sebagai
akselerometer dan giroskop yang dikemas dalam bentuk satu modul yang kokoh.
Seperti yang terlihat pada gambar 2.35, alat ini berupa modul dengan banyak pin
yang mampu membaca data pada sudut x, y, dan z dalam satu waktu bersamaan.
Modul ini sudah dilengkapi dengan fitur ADC atau Analog to Digital Converter
dengan resolusi 16-bit sehingga data yang dihasilkan akan lebih teliti dan lebih
bagus. Dengan menggunakan sensor ini, maka perubahan maupun pergerakan
benda pada ruang dapat diamati perubahan nilai dalam sudut x, y, dan z. GY-521
MPU-6050 juga sudah dilengkapi dengan antarmuka I2C sehingga bisa
dihubungkan dengan Arduino Uno, maupun perangkat mikrokontroler lainnya
yang memiliki fitur I2C. Selain itu, modul ini juga dilengkapi dengan Pin Interrupt
(INT) sehingga bisa dimanfaatkan sebagai program interupsi, jika terdapat
banyak baris program.

B.2.13 Light Detection and Ranging (LIDAR)


Light Detection and Ranging atau LIDAR merupakan metode pendeteksian
objek yang menggunakan prinsip pantulan sinar laser untuk mengukur jarak
objek yang ada di permukaan. Lidar juga dapat digunakan untuk membuat
representasi digital 3-D dari area di permukaan bumi dan dasar laut, karena
perbedaan waktu kembali laser, dan dengan memvariasikan panjang gelombang
laser. Ini memiliki aplikasi terrestrial, udara, dan seluler . Adaptasi teknologi ini
pertama kali digunakan untuk keperluan penerbangan yang terjadi pada tahun
1960-an dan baru digunakan sebagai sistem pemetaan pada tahun 1980-an
hingga sekarang. Prinsip kerja dari LIDAR ini sendiri sebetulnya cukup sederhana,
LIDAR melakukan perhitungan jarak dengan cara mengeluarkan sinar laser
transmiter ke suatu permukaan, kemudian dihitung berapa lama waktu yang
dibutuhkan oleh sinar laser untuk kembali ke reseptor (Donager, Sánchez
Meador and Blackburn, 2021).
Jika dianalogikan, ini sama seperti ketika kita mengarahkan cahaya senter ke
suatu permukaan. Sebenarnya yang terjadi adalah kita dapat melihat pantulan
cahaya senter dari suatu permukaan ke retina Anda, namun karena prosesnya
sangat cepat, maka hal tersebut terjadi seolah-olah secara instan. Kecepatan
cahaya sangat tinggi, yaitu sekitar 300.000 KM/detik jadi kita tidak bisa
pergerakannya secara langsung. Untuk menghitung jarak, LIDAR menggunakan
rumus sebagai berikut:
c∗t
d= (2.6)
2
d = jarak antara sensor dan objek yang diukur (m)
c = Kecepatan cahaya (3 x 108 m/s)
t = Waktu tempuh cahaya/sinyal

65
Perangkat LIDAR menembakkan sinar laser secara cepat ke suatu permukaan,
bahkan beberapa perangkat LIDAR menembakkan sekitar 150.000 pulsa laser per
detik. Kemudian komponen sensor pada LIDAR menghitung waktu yang
dibutuhkan dari setiap pulsa laser untuk memantul dari suatu permukaan ke
sensor sehingga didapat hasil penghitungan jarak dengan akurasi tinggi

B.2.14 Odometry
Odometry adalah penggunaan data dari pergerakan aktuator untuk
memperkirakan perubahan posisi dari waktu ke waktu. Odometry merupakan
teknik lokalisasi yang banyak digunakan pada robot beroda, namun teknik ini
biasanya memiliki kesalahan yang cukup besar. Akan tetapi algoritme Extended
Kalman Filter (EKF) dapat digunakan untuk mengurangi kesalahan tersebut
dengan menggabungkan data Wheel Odometry dengan data sensor lainnya
seperti inertial measurement unit (IMU) (Maruf and Hasan, 2017). Wheel
Odometry merupakan teknik lokalisasi yang menghitung posisi robot
berdasarkan perputaran roda (kecepatan putaran roda atau jumlah perputaran
roda). Kecepatan putaran roda atau jumlah perputaran roda dapat diukur
menggunakan rotary encoder.
Odometry digunakan untuk memperkirakan posisi relatif terhadap posisi
awal. Untuk memperkirakan posisi relatif robot, digunakan perhitungan jumlah
pulsa yang dihasilkan oleh sensor rotary encoder setiap satuan ukuran yang
kemudian dikonversi menjadi satuan milimeter. Untuk mendapatkan jumlah
pulsa setiap satu kali putaran roda digunakan rumus sebagai berikut (Utomo,
2015):
keliling roda=2 π r
resolusi encoder
pulsa per mm= (2.7)
keliling roda
Perhitungan ini disebut dengan odometry, data ini nantinya akan di
gabungkan dengan data dari sensor IMU menggunakan EKF yang mana EKF akan
dijelaskan pada subbab selanjutnya.

B.2.15 Inertial Measurement Unit (IMU)


Inertial Measurement Unit (IMU) merupakan alat ukur yang memanfaatkan
sistem pengukuran seperti giroskop dan akselerometer untuk memperkirakan
posisi relatif, kecepatan, dan akselerasi dari suatu benda. Sensor ini terdiri atas
akselerometer dan giroskop.
B.2.15.1 Akselerometer
Akselerometer adalah perangkat electromechanics yang dapat merasakan
gaya statis ataupun dinamis dari percepatan linear, yaitu laju perubahan
kecepatan suatu benda. Percepatan diukur dalam meter per detik kuadrat (m/s).
Kekuatan statis termasuk gravitasi, sementara kekuatan dinamis dapat
mencakup getaran dan gerakan. Akselerometer berisi piring kapasitif internal.
Beberapa di antaranya bersifat tetap, sementara yang lain bergerak secara
66
internal. Selama lempeng ini bergerak dalam hubungan satu sama lain,
kapasitans antara mereka berubah. Dari perubahan-perubahan dalam
kapasitans, percepatan dapat ditentukan.
B.2.15.2 Giroskop
Giroskop adalah perangkat elektro yang berfungsi mengukur perubahan
sudut seputar sumbu tetap terhadap ruang inersia. Satuan kecepatan sudut yang
diukur dalam derajat per detik (° / s) atau rotasi per detik (RPS). Sebuah giroskop,
dapat mengukur rotasi sekitar tiga sumbu yaitu, x, y, dan z. Ketika giroskop
diputar, sensor akan beresonansi kecil yang kemudian diubah menjadi
perubahan kecepatan sudut. Getaran inilah yang akan dikonversikan menjadi
sinyal listrik.

B.2.16 Firmware
Dalam komputasi, Firmware adalah kelas perangkat lunak komputer tertentu
yang menyediakan kontrol tingkat rendah untuk perangkat keras khusus.
Firmware, seperti BIOS komputer pribadi, dapat berisi fungsi dasar perangkat
dan dapat menyediakan layanan abstraksi perangkat keras ke perangkat lunak
tingkat tinggi seperti sistem operasi. Untuk perangkat yang tidak terlalu rumit,
Firmware dapat bertindak sebagai sistem operasi lengkap perangkat, melakukan
semua fungsi kontrol, pemantauan, dan manipulasi data. Contoh umum
perangkat yang berisi Firmware adalah sistem tertanam (menjalankan perangkat
lunak tertanam), peralatan rumah tangga dan penggunaan pribadi, komputer,
dan periferal komputer.

B.2.17 Robot Operating System (ROS)


Robot Operating System (ROS) dikembangkan pada tahun 2007 oleh
Stanford Artificial Intelligence Laboratory (SAIL) dengan dukungan Stanford AI
Robot Project. Pada tahun 2008, pengembangan ROS dilanjutkan oleh Willow
Garage lembaga penelitian robotik dengan dukungan lebih dari 20 lembaga
penelitian. Banyak lembaga penelitian yang mulai menggunakan ROS dengan
menambahkan Hardware dan berbagi contoh source code. Banyak perusahaan
juga mengadopsi untuk menggunakan ROS (Saputro, 2016).
Robot Operating System (ROS) sebenarnya adalah meta-operating system
atau framework yang bersifat open source yang dapat digunakan untuk robot.
ROS mempunyai sebuah service seperti halnya sebuah sistem operasi pada
umumnya, termasuk abstraksi perangkat keras, kendali perangkat tingkat bawah,
implementasi dari fungsi-fungsi yang biasa digunakan, penyampaian pesan/data
di antara proses serta management package. ROS juga menyediakan alat dan
library yang memungkinkan kita untuk mendapatkan, membangun,
memprogram hingga menjalankan program melalui banyak komputer. Dengan
ROS, kita bisa memulai untuk memprogram dan mengendalikan sebuah robot
dengan mudah, dikarenakan ada banyak contoh dan source code yang
disediakan, termasuk sensor dan perangkat yang akan menambahkan
fungsionalitas baru pada robot, seperti navigasi otonom dan persepsi visual. Kita
67
patut berterima kasih kepada Komunitas open source yang mengembangkan
ROS , sehingga menghindarkan kita dalam membuang -buang waktu dan upaya
untuk melakukan riset yang sama berulang – ulang.
ROS menyediakan layanan yang dirancang untuk kluster komputer yang
heterogen seperti abstraksi perangkat keras, kontrol perangkat tingkat rendah,
implementasi fungsionalitas yang umum digunakan, penyampaian pesan antar
proses, dan manajemen paket. Menjalankan set proses berbasis ROS
direpresentasikan dalam arsitektur grafik di mana pemrosesan berlangsung di
node yang dapat menerima, menampilkan dan multipleks data sensor, kontrol,
status, perencanaan, aktuator, dan pesan lainnya. Terlepas dari pentingnya
reaktivitas dan latensi rendah dalam kontrol robot, ROS sendiri bukanlah OS
waktu nyata (RTOS). Namun, dimungkinkan untuk mengintegrasikan ROS dengan
kode waktu nyata. Kurangnya dukungan untuk sistem waktu nyata telah diatasi
dalam pembuatan ROS 2.0 revisi utama dari ROS API yang akan memanfaatkan
perpustakaan dan teknologi modern untuk fungsionalitas inti ROS dan
menambahkan dukungan untuk kode waktu nyata dan perangkat keras yang
disematkan.
ROS memiliki konsep dengan kerumitan yang sangat tinggi. Untuk
menjabarkan dengan detail setiap bagian dari ROS sangat sulit, maka dari itu
peneliti hanya akan menjabarkan beberapa istilah yang akan sering dipakai
dalam penelitian ini. ROS memiliki tiga level konsep: Filesystem Level,
Computation Graph Level, dan Community level. Dari ketiga tingkat dan konsep
ini, peneliti hanya akan membahas konsep Computational Graph Level. Hal ini
dikarenakan konsep ini yang akan lebih penting dan lebih sering digunakan
secara langsung dibandingkan yang lainnya. Bagian selanjutnya akan membahas
mengenai konsep computational graph pada ROS dan Dependensi pada ROS.
B.2.17.1 ROS Computational Graph Level
Grafik Komputasi adalah jaringan peer-to-peer dari proses ROS yang
memproses data bersama-sama. Konsep Grafik Komputasi dasar ROS adalah
node, Master, Server Parameter, pesan, layanan, topik, dan tas, yang semuanya
menyediakan data ke Grafik dengan cara yang berbeda. Konsep-konsep ini
diimplementasikan dalam Repository ros_comm.
1. Node, adalah sebuah atau suatu kelompok I/O yang ditugaskan untuk
melayani sebuah proses yang merupakan bagian dari robot dimana data
diterima untuk diproses dan hasil komputasi dikirimkan ke sub sistem
aktuator untuk melakukan tugasnya.
2. Master, program utama yang berfungsi untuk mempersiapkan koneksi
antara node. Master menyediakan registrasi nama dan pencarian ke
Grafik Komputasi lainnya. Tanpa Master, node tidak akan dapat
menemukan satu sama lain, bertukar pesan, atau memanggil layanan.

68
3. Parameter Server, menyediakan nilai acuan suatu node ketika node
sedang aktif dan melakukan komputasi dengan node lainnya. Parameter
server memungkinkan data disimpan dengan kunci di lokasi pusat.
4. Message, node berkomunikasi satu sama lain dengan mengirimkan
pesan. ROS memiliki banyak tipe message, dan user membuat tipe
message sendiri agar Node dapat berkomunikasi satu dengan lainnya.
Pesan hanyalah struktur data, terdiri dari bidang yang diketik.
5. Topic, adalah nama yang digunakan untuk mengidentifikasi isi pesan.
Sebuah node yang tertarik pada jenis data tertentu akan melakukan
subscribe ke topik yang sesuai. Setiap message memiliki nama topic
(publish topic) yang disiapkan, agar dapat diarahkan oleh ROS untuk
pelaksanaan suatu fungsi. Sebuah node mengirimkan pesan dengan
memublikasikannya ke topik tertentu. Mungkin ada beberapa publisher
dan subscriber secara bersamaan untuk satu topik dan satu node dapat
menerbitkan dan/atau berlangganan beberapa topik.
6. Service, paradigma komunikasi yang sangat fleksibel, tetapi transportasi
satu arah banyak-ke-banyaknya tidak sesuai untuk interaksi
permintaan/balasan, yang sering diperlukan dalam sistem terdistribusi.
pelayanan publish topic dari suatu node ke seluruh node, maupun dari
sebuah node ke node tertentu menggunakan unique name. Request/reply
dilakukan melalui service, yang ditentukan oleh sepasang struktur pesan.
7. Bags, adalah wadah untuk menyimpan dan memutar ulang data ROS
message. Bag digunakan untuk menyimpan data-data sensor, yang
diperlukan untuk mengembangkan dan menguji algoritma. Format bags
dipakai untuk menyimpan dan memutar ulang data pesan ROS. Kantong
adalah mekanisme penting untuk menyimpan data, seperti data sensor,
yang mungkin sulit dikumpulkan tetapi diperlukan untuk
mengembangkan dan menguji algoritme.
B.2.17.2 Operasi Dasar pada ROS
ROS memiliki beberapa perintah operasi dasar yang sering digunakan pada
imbuhan awal setiap perintah yang dilakukan, antara lain sebagai berikut:
*referensi buku operasi ROS
1. roslaunch, merupakan alat untuk dengan mudah meluncurkan beberapa
node ROS secara lokal dan jarak jauh melalui SSH, serta mengatur
parameter pada Server Parameter. Ini mencakup opsi untuk secara
otomatis menghidupkan kembali proses yang telah mati. roslaunch
mengambil satu atau lebih file konfigurasi XML (dengan ekstensi .launch)
yang menentukan parameter yang akan disetel dan node yang akan
diluncurkan, serta mesin tempat mereka harus dijalankan.
2. roscore, merupakan spesialisasi alat roslaunch untuk memunculkan
sistem ROS "inti". Roslaunch akan secara otomatis memulai roscore jika

69
mendeteksi bahwa itu belum berjalan (kecuali argumen --wait diberikan).
Untuk informasi lebih lanjut, silakan lihat dokumentasi roscore. Catatan:
karena kondisi balapan, roslaunch tidak boleh digunakan untuk menjamin
instance roscore tunggal.
3. rosrun, merupakan bagian dari rosbash. rosrun memungkinkan kita untuk
menjalankan executable dalam paket arbitrer dari mana saja tanpa harus
memberikan path lengkapnya atau cd/roscd di sana terlebih dahulu.
4. rostopic, perintah untuk mengakses topik yang ditentukan dalam grafik
komputasi.
5. rosparam, perintah untuk mendapatkan, mengatur, menghapus
parameter dari ROS Parameter Server.
6. rosservice, perintah untuk mengakses layanan yang didefinisikan dalam
grafik komputasi.
B.2.17.3 Sistem Dependensi pada ROS
Pada dasarnya ROS merupakan middleware yang menjadikan tiap proses
menjadi node-node. Hal ini dilakukan untuk menciptakan proses komputasi yang
paralel. Setiap node memiliki dependensinya masing-masing yang terletak pada
internal Linux. Dependensi ini berisi library ataupun driver ROS yang saling
terhubung dengan workspace ROS. Konsep dari ROS sebenarnya sama saja
dengan pemrograman robot sederhana, seperti menggunakan konsep sederhana
dengan Arduino IDE ataupun MCU board pada umumnya. Hanya saja ROS
memisahkan library, kode, model robot, dan konfigurasi pada folder yang
berbeda-beda. Semua dependensi saling terkait dengan workspace karena
terdapat folder build dan devel yang mana ketika dilakukan build maka compiler
akan mengambil semua library yang dibutuhkan dan menyimpannya ke dalam
folder build yang ada di workspace. Dengan begini pengembang hanya perlu
memanggil sub folder dan nama file launch di dalam workspace.
Paket ROS terkadang memerlukan perpustakaan dan alat eksternal yang
harus disediakan oleh sistem operasi. Pustaka dan alat yang diperlukan ini
biasanya disebut sebagai dependensi sistem. Dalam beberapa kasus, dependensi
sistem ini tidak di install secara default. ROS menyediakan alat sederhana,
rosdep, yang digunakan untuk mengunduh dan installing dependensi sistem.

B.2.18 Transformer (tf)


Transformer atau tf adalah paket yang memungkinkan pengguna melacak
beberapa bingkai koordinat dari waktu ke waktu. tf mempertahankan hubungan
antara bingkai koordinat dalam struktur pohon yang disangga dalam waktu, dan
memungkinkan pengguna mengubah titik, vektor antara dua bingkai koordinat
pada titik waktu yang diinginkan. Ada tiga kerangka utama yang digunakan dalam
mobile robot: base_link (terpasang secara kaku pada basis mobile robot), odom
dan map. Bingkai peta adalah induk dari odom, dan odom adalah induk dari
base_link. Gambar 2.37 menunjukkan posisi frame mobile robot.

70
Gambar 2.36 Frame Transformasi Robot Beroda
Sumber : (wiki.ros.org, 2022)

B.2.19 Catkin workspace


Catkin workspace adalah folder tempat memodifikasi, membangun, dan
install paket catkin. Ruang kerja catkin dapat berisi hingga empat ruang berbeda
yang masing-masing memiliki peran berbeda dalam proses pengembangan
perangkat lunak. Paket catkin dapat dibangun sebagai proyek mandiri, dengan
cara yang sama seperti proyek cmake biasa dapat dibangun, tetapi catkin juga
menyediakan konsep ruang kerja, di mana Anda dapat membangun beberapa
paket yang saling bergantung sekaligus.

B.2.20 ROS User Interface


Tampilan antar muka pada robot operating system (ROS) hanya berupa
terminal command, tidak memiliki GUI ataupun perangkat lunak interaksi
lainnya. Untuk menjalankan, monitoring dan melakukan debugging pengembang
harus menggunakannya di dalam terminal. Beruntungnya pada saat ini sudah
banyak aplikasi dengan Graphical User Interface (GUI) yang mendukung ROS dan
memudahkan pengembang dalam memantau hasil kerja. Contohnya untuk
aplikasi simulasi dan visualisasi menggunakan Rviz dan Gazebo, kemudian untuk
plotting, kontrol manual, managing dan visualisasi sistem menggunakan aplikasi
rqt beserta plugin.
B.2.20.1 Rviz
Rviz adalah antarmuka grafis ROS yang memungkinkan kita
memvisualisasikan banyak informasi, menggunakan plugin untuk berbagai jenis
topik yang tersedia. Rviz digunakan untuk 3D visualisasi dalam middle ware ROS.
Untuk dapat memvisualisasikan informasi yang dipublikasikan oleh ROS secara
real time. Untuk menampilkan plugin perlu dilakukan penambahan display atau
bisa dengan mengatur melalui parameter node Rviz pada file launch. Di dalam

71
Rviz kita dapat memanfaatkan fitur 2D pose estimate dan 2D nav goal untuk
melakukan navigasi ROS . Gambar 2.38 merupakan tampilan depan dari Rviz.

Gambar 2.37 Tampilan Antarmuka Aplikasi Rviz


Sumber : (ardupilot.org, 2021)
B.2.20.2 rqt
rqt adalah framework perangkat lunak ROS yang mengimplementasikan
berbagai alat GUI dalam bentuk plugin. rqt memiliki banyak plugin yang berguna
untuk robotika, misalnya seperti rqt robot steering yang mana kita dapat
mengendalikan robot hanya dengan menaikkan kecepatan linier dan angular.
Terdapat pula fitur untuk menampilkan node graph yang sedang terhubung, fitur
ini sangat berguna untuk melakukan debugging jika terdapat kesalahan atau bug.
Tampilan antar muka aplikasi rqt dapat dilihat pada gambar 2.39.

Gambar 2.38 Tampilan Antarmuka Aplikasi rqt


Sumber : (www. ros.guru, 2021)

72
B.2.21 Komunikasi Serial
Komunikasi serial adalah salah satu metode komunikasi data di mana hanya
satu bit data yang dikirimkan melalui seuntai kabel pada suatu waktu tertentu.
Pada dasarnya komunikasi serial adalah kasus khusus komunikasi paralel dengan
nilai n = 1, atau dengan kata lain adalah suatu bentuk komunikasi paralel dengan
jumlah kabel hanya satu dan hanya mengirimkan satu bit data secara simultan.
B.2.21.1 Komunikasi Serial Universal Synchronous and Asynchronous Receiver-
Transmitter (USART)
USART atau Universal Asynchronous Receiver-Transmitter adalah bagian
perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan
bit-bit serial. USART biasanya berupa sirkuit terintegrasi yang digunakan untuk
komunikasi serial pada komputer atau port serial perangkat peripheral. USART
sekarang ini termasuk di dalam beberapa mikrokontroler.
B.2.21.2 Komunikasi Serial Inter-Integrated Circuit (I2C)
I2C adalah bus komunikasi serial yang sinkron, multi-control/multi-target
(pengontrol/target), packet-switched, single-ended, yang ditemukan pada tahun
1982 oleh Philips Semiconductors. Ini banyak digunakan untuk memasang IC
periferal berkecepatan rendah ke prosesor dan mikrokontroler dalam
komunikasi intra-board jarak pendek.

B.2.22 Virtual Network Computing (VNC)


Virtual Network Computing (VNC) atau Komputasi Jaringan Virtual adalah
sistem berbagi desktop grafis yang menggunakan protokol Remote Frame Buffer
(RFB) untuk mengontrol komputer lain dari jarak jauh. Ini mentransmisikan input
keyboard dan mouse dari satu komputer ke komputer lain, menyampaikan
pembaruan layar grafis, melalui jaringan. VNC adalah platform-independen – ada
klien dan server untuk banyak sistem operasi berbasis GUI dan untuk Java.
Beberapa klien dapat terhubung ke server VNC secara bersamaan. Penggunaan
populer untuk teknologi ini termasuk dukungan teknis jarak jauh dan mengakses
file di komputer kerja seseorang dari komputer di rumah, atau sebaliknya.

Gambar 2.39 Komunikasi Dua Komputer Dengan VNC


Sumber : (www.computer.org, 1998)

73
Untuk berkomunikasi dengan mikro komputer dibutuhkan perangkat lunak
yang mendukung GUI, maka dari itu digunakan VNC. Seperti yang terlihat pada
gambar 2.40 terdapat suatu device tertentu, anggap saja Jetson Nano dan
sebuah komputer personal. Di dalam Jetson Nano ter install sebuah VNC Server
dan pada komputer personal ter install VNC viewer. Pada saat pertama kali di
install sebuah operating system untuk Jetson Nano, maka sudah ter install pula
aplikasi VNC Server. Maka dari itu bisa langsung terkoneksi dengan personal
komputer asalkan terhubung dengan jaringan router atau LAN yang sama. Syarat
dari protokol VNC hanyalah terkoneksi di jaringan Wi-Fi public yang sama,
kemudian memasukkan alamat IP VNC server pada VNC Client dan terakhir
memasukkan password dan login pada Jetson Nano.

B.2.23 Terminator (Terminal Command Application)


Terminator adalah terminal alternatif untuk Linux yang hadir dengan sedikit
fitur dan fungsionalitas tambahan yang tidak akan temukan di aplikasi terminal
default. Misalnya di terminator kita dapat membagi layar terminal secara
horizontal dan vertikal sesuai keinginan. Pengguna juga dapat memiliki beberapa
terminal dalam satu windows. Dengan terminator, pengguna juga dapat secara
efisien mengisi area layar yang luas dengan terminal. Dengan begitu
menjalankan robot menjadi efisien karena tab yang baru dibuka akan membelah
tampilan terminal, tidak menutupnya secara keseluruhan. Tampilan dari
terminator dapat dilihat pada gambar 2.41.

Gambar 2.40 Tampilan Antarmuka Aplikasi Terminal Terminator

B.2.24 Hoverboard Firmware


Firmware adalah kelas perangkat lunak komputer tertentu yang
menyediakan kontrol tingkat rendah untuk perangkat keras khusus perangkat.
Firmware, seperti BIOS komputer pribadi, mungkin berisi fungsi dasar perangkat,
dan dapat menyediakan layanan abstraksi perangkat keras ke perangkat lunak
tingkat tinggi seperti sistem operasi. Firmware dapat di download pada link
berikut: https://github.com/EFeru/hoverboard-firmware-hack-
FOC.**berdasarkan referensi

74
B.2.25 Metode Statistik
Metode statistik merupakan prosedur-prosedur yang digunakan dalam
penyajian data yang meliputi pengumpulan, pengorganisasian, peringkasan, dan
penyajian data. Metode statistik digunakan untuk mengukur data dari suatu
metode untuk mengetahui tingkat keberhasilan pengujiannya.
1. Weighted Absolute Percentage Error (WAPE)
(Chase, 2013; Ragnerstam, 2016) menjelaskan bahwa untuk mengukur
kesalahan perkiraan rata-rata di seluruh kelompok item untuk periode
tertentu, gunakan metode yang memperhitungkan bobot setiap item
dalam hubungannya dengan total. Salah satu metode yang
memperhitungkan hal ini adalah WAPE. (Chase, 2013; Ragnerstam, 2016)
menggambarkan bahwa rumus dari WAPE adalah sebagai berikut.
n

∑ ¿ At −F t∨¿
WAPE= t=1n ¿ (2.12)
∑ ¿ A t ∨¿ ¿
t=1

(Chase, 2013; Ragnerstam, 2016) mengatakan bahwa WAPE


memperhitungkan setiap item dengan menimbang permintaan aktual
setiap item dalam kaitannya dengan total permintaan aktual. Dengan
demikian, WAPE menghubungkan perbedaan antara nilai aktual dan nilai
perkiraan. (Louhichi, Jacquet dan Butault, 2012) juga menyebutkan bahwa
WAPE adalah metode yang bermanfaat untuk digunakan untuk
menghitung akurasi ramalan dan paling optimal ketika variabel mendekati
nol.
2. Persentase Keberhasilan
Persentase keberhasilan merupakan metode untuk menghitung nilai
persentase keberhasilan dalam suatu pengujian. Untuk menghitung tingkat
keberhasilan akan digunakan persamaan 2.13.
Keberhasilan
Presentase Keberhasilan= ×100 % (2.13)
Total

75
BAB C METODOLOGI PENELITIAN

Dalam bab metodologi penelitian akan dijelaskan tahapan-tahapan yang akan


dilakukan untuk mendukung penelitian dengan judul “Implementasi Pemetaan
Dan Navigasi Dalam Ruangan Pada Autonomous Mobile Robot Menggunakan
Algoritma Hector SLAM Dan Dijkstra Pada Platform Robot Operating System” dan
pada bagian metodologi akan memaparkan lebih lanjut terkait tipe penelitian,
metode penelitian, subjek penelitian, lokasi penelitian, teknik pengumpulan
data, teknis analisis data, dan peralatan pendukung yang digunakan.

C.1 Tipe Penelitian


Tipe penelitian yang digunakan pada penelitian ini adalah tipe implementatif
pengembangan. Implementatif menunjukkan bahwa penelitian ini memerlukan
pengujian melalui perangkat lunak dan perangkat keras, tidak hanya analisis data
saja. Hasil dari penelitian ini adalah sebuah purwarupa robot bergerak otonom
dari hoverboard yang mampu memetakan area sekitar dan mampu menghindari
halangan.

C.2 Strategi dan Rencana Penelitian


Pada penelitian ini, dibutuhkan strategi dan rencana yang jelas agar
memenuhi tujuan yang hendak dicapai. Untuk memenuhi hal tersebut penulis
akan menjelaskan secara umum setiap perangkat keras dan perangkat lunak
yang digunakan sebagai sistem dari robot bergerak. Untuk memenuhi tujuan
yang telah dirumuskan pada bab sebelumnya maka disusun perancangan sistem
yang menjelaskan peran dari perangkat keras sebagai penyedia sumber
pemrosesan untuk melakukan komputasi dan perangkat lunak yang berperan
sebagai pengolahan data dan pemrosesan mapping, localization and navigation.
Pemecahan masalah pada penelitian ini dilakukan dengan menjalankan 3
tahap, yaitu pengambilan data untuk mapping, pengolahan data untuk
localization, dan hasil pemrosesan peta-lokasi untuk proses navigation. Pada
tahap awal, pengambilan data berdasarkan perhitungan jarak oleh hasil
pembacaan 2 sensor, yakni RPLIDAR dalam bentuk sinar inframerah yang
ditembakkan dan Inertial Measurement Unit atau IMU. Perhitungan dari kedua
sensor ini nantinya akan menghasilnya lokasi robot berupa posisi x, y, z dan
benda di sekitarnya seluas 6-6 meter yang menghasilkan bentuk visual pada
perangkat lunak yang ditampilkan dalam monitor komputer/Jetson Nano berupa
partikel titik merah yang sangat banyak, sehingga membentuk pola berdasarkan
area sekitar seperti air yang di wadah maka air akan berbentuk seperti wadah.
Kemudian setelah peta sudah dibangun, selanjutnya adalah tahap akhir yaitu
navigasi, dengan memanfaatkan sensor RPLIDAR, IMU, peta dan gabungan
algoritme navigasi, kita dapat melakukan proses navigasi dengan memasukkan
titik tujuan pada visualisasi peta. Dengan begitu robot akan berjalan ke dari titik
awal (posisi robot saat ini) menuju titik tujuan (posisi input pengguna).

76
C.3 Metode Penelitian
Demi sepenuhnya mencapai tujuan, maka pada penelitian ini dilakukan
secara struktur dan sistematis dalam metode penelitian. Metode yang digunakan
untuk mengembangkan suatu karya harus sesuai dengan kebutuhan pembuatan
karya. Kebutuhan awal yang diperlukan untuk merancang robot ini yaitu
pendalaman informasi terkait permasalahan, pengumpulan, pengkajian teori,
dan penelitian sebelumnya yang telah dilakukan dengan tujuan mendukung
pengembangan robot ini sehingga dapat ditemukan solusi dari permasalahan
dalam pengembangan karya ini. Jurnal ilmiah, artikel ilmiah, situs web, buku, dan
lain sebagainya digunakan sebagai studi literatur pada penelitian ini. Setelah
melakukan studi literatur, maka langkah selanjutnya adalah melakukan definisi
masalah yang ingin diselesaikan, misalnya seperti perangkat lunak (software),
perangkat keras (hardware), algoritme yang digunakan, dan lain sebagainya.
Setelah itu dirumuskan dasar teori yang berisi penelitian secara ilmiah sangat
diperlukan sebagai referensi penunjang dalam pengembangan robot ini
sehingga menghasilkan karya dari permasalahan yang ada dan bisa
dipertanggungjawabkan. Hasil pengkajian teori dari studi literatur yang relevan
digunakan dalam mengaplikasikan proses rekayasa kebutuhan sistem yang sesuai
lalu melakukan perancangan sistem atau gambaran sistem, implementasi sistem,
dan pengujian sistem. Sistem yang telah dilakukan pengujian kemudian dilakukan
analisis. Dari hasil analisis pengujian akan digunakan untuk menginformasikan
bahwa sistem ini belum atau telah memenuhi kebutuhan dalam permasalahan
yang diajukan. Diagram alir tahapan penelitian dapat dilihat pada gambar 3.1.

77
Gambar 3.41 Diagram Alir Penelitian
Penggunaan diagram alir penelitian seperti gambar 3.1 akan membuat proses
lebih tepat arah dan teratur. Setelah analisis hasil pengujian apabila penulis
merasa bahwa rumusan permasalahan tidak terjawab, maka penulis akan
memperbaiki sistem pada perancangan sistem, kemudian melakukan
implementasi sistem, pengujian sistem, dan kembali melakukan analisis hasil
pengujian. Setelah analisis hasil berhasil menjawab rumusan permasalahan,
maka penulis akan mendapatkan kesimpulan dan saran yang dibutuhkan dalam
penelitian.

C.4 Subjek Penelitian


Subjek dari penelitian ini memiliki hubungan dengan sebuah tempat
penyimpanan paket pengiriman yang merupakan sebuah gudang ekspedisi yang
memiliki tingkat intensitas aktivitas tinggi dalam penyortiran barang dan
membutuhkan sistem yang terotomatisasi untuk meningkatkan efisiensi waktu
dan tenaga kerja.

C.5 Lokasi Penelitian


Lokasi penelitian dilakukan pada basemen gedung G Fakultas Ilmu Komputer
dan ruang lingkup sekitar penulis. Untuk lokasi pengujian dilakukan pada tempat
dengan desain denah bangunan yang bisa diukur.

78
C.6 Teknik Pengumpulan Data
Pengambilan data sensor yang telah di kalibrasi, observasi parameter
berdasarkan dokumentasi dan data dari terminal Linux digunakan sebagai teknik
pengumpulan data dalam penelitian ini. Dengan menggunakan data yang
diperoleh dari hasil proses observasi langsung yang dilakukan pada semua
sensor, diharapkan penulis mengetahui betul bahwa data semua sensor telah
benar berdasarkan pengukuran asli dan dokumentasi datasheet setiap sensor.
Hal ini dilakukan agar pada pengujian, hasil bisa lebih objektif karena sensor
sudah berjalan sebagaimana mestinya dan menghindari kesalahan sehingga
berbeda dari penelitian sebelumnya. Observasi yang dilakukan bertujuan untuk
mengetahui apakah sistem yang dibuat berjalan sesuai dengan fungsi dan
kebutuhannya. Proses observasi meliputi percobaan setiap parameter pada
algoritme yang telah ditentukan dan dicari nilai yang optimal. Pencarian nilai
optimal ini didasari pada hasil riset pada penelitian yang serupa. Hal ini dilakukan
untuk mengetahui apakah parameter sebagai perhitungan dipengaruhi oleh
lingkungan yang dilihat dari hasil log pada terminal Linux dan hasil visualisasi
bentuk peta dan navigasi pada aplikasi Rviz yang merupakan salah satu tool di
dalam ROS. Selanjutnya sampel data hasil observasi digunakan sebagai data
untuk proses analisa lebih lanjut.

C.7 Teknik Analisis Data


Analisa data dilakukan menggunakan data yang telah dikumpulkan
sebelumnya. Hal ini dilakukan untuk menguji kemampuan sistem yang akan
menjawab rumusan permasalahan yang ada untuk dievaluasi agar berguna untuk
penelitian ke depannya. Berikut adalah aspek yang diuji pada sistem.
1. Pengujian tingkat keakuratan data sensor IMU, Odometer, dan RPLIDAR.
2. Pengujian tingkat ketepatan bentuk peta berdasarkan denah bangunan asli
dari hasil pemetaan yang dihasilkan oleh ROS melalui pemindaian dari data
sensor RPLIDAR dan IMU.
3. Pengujian tingkat keakuratan navigasi robot terhadap halangan
menggunakan algoritme Dijkstra dan DWA yang diperoleh dari data
pemetaan yang telah dibuat.
4. Pengujian keakuratan pergerakan robot serta waktu komputasi yang
dibutuhkan sistem untuk berjalan pada posisi awal menuju posisi yang telah
ditentukan yang diperoleh dari masukkan titik koordinat Rviz.

C.8 Peralatan Pendukung


Peralatan pendukung diperlukan untuk menunjang penelitian ini agar bisa
berjalan dengan lancar dan sistem bisa berjalan sesuai kebutuhan. Peralatan ini
terdiri dari perkakas atau peralatan yang berfungsi untuk membantu penulis
dalam pembuatan robot. Di bawah ini akan disebutkan peralatan pendukung

79
terkait perangkat keras serta perangkat lunak yang digunakan pada penelitian ini,
sebagai berikut.
1. Perangkat keras
 Motherboard Hoverboard
 Nvidia Jetson Nano
 Motor Brushless DC dan encoder
 Baterai 10S2P 4000mAh
 Power bank
 Sensor RPLidar
 Sensor IMU GY-521 MPU6050
 Dongle Wi-Fi
 Push button on-off
 Adapter dan port charger hoverboard
 STLink V2 Programmer
 FTDI to mini USB adapter
 Komputer (Personal Komputer)
 Chassis papan kayu
 3D Printer dan filamen
 Keyboard dan Mouse
 Kabel Jumper
 Kabel micro USB
2. Perangkat lunak
 Hoverboard Firmware
 STMCube Programmer
 Catkin workspace
 Makefile
 Robot operating system (ROS)
 Terminator
 Visual Studio Code
 Platform IO
 Virtual Network Computing (VNC)
 Secure Shell Protocol (SSH)
 Rviz
 rqt
 Hoverboard driver
 RPLIDAR driver
 MPU6050 dan I2C driver
 Hector SLAM library
 Robot localization (EKF & AMCL) library
80
 Move base (Global & local planner) library

81
BAB D REKAYASA KEBUTUHAN

Dalam bab rekayasa kebutuhan, penulis akan menjelaskan kebutuhan apa


saja yang diperlukan untuk mengimplementasikan sistem dalam penelitian ini.
Rekayasa kebutuhan mencakup gambaran umum sistem, analisis kebutuhan
fungsional dan kebutuhan non-fungsional, kebutuhan perangkat keras,
kebutuhan perangkat lunak dan batasan desain sistem. Diharapkan dengan
rekayasa kebutuhan ini, sistem yang dibuat bisa berfungsi sesuai dengan tujuan
penelitian.

D.1 Gambaran Umum Sistem


Sistem yang dibuat pada penelitian ini merupakan sistem yang mempunyai
fungsi untuk membawa barang dari titik awal menuju titik tujuan yang bergerak
menggunakan roda serta mendeteksi area sekitar dengan sensor-sensornya.
Barang yang dibawa oleh sistem dianalogikan sebagai paket ekspedisi
pengiriman asli dengan berat beragam yang nantinya akan dibawa mengelilingi
area gudang. Mekanisme yang dilakukan oleh robot dianalogikan sebagai pekerja
penyortiran barang. Barang yang disortir berupa paket yang akan dipindahkan
dari gudang penyimpanan menuju area distribusi. Setiap informasi yang sudah
diselesaikan akan mengirimkan sebuah pesan menuju komputer server.

Gambar 4.42 Blok Diagram Sistem


Dari gambar 4.1 menunjukkan Blok Diagram dari sistem yang memiliki tiga
bagian yaitu input, proses, dan output. Bagian input dari sistem akan
menggunakan sensor RPLIDAR, IMU dan Odometer. Ketiga sensor ini digabung
menjadi satu kesatuan untuk menjalankan proses lokalisasi. Hasil dari sensor
RPLIDAR akan digunakan untuk lokalisasi dengan metode AMCL dimana data
laser dan map akan di fusi sehingga menghasilkan perkiraan pemosisian. Untuk
sensor IMU dan Odometer akan digabungkan sekaligus menggunakan algoritme
EKF sehingga menghasilkan odom_combined yang membuat posisi robot selalu
terkoreksi dan terfilter. Sedangkan input dari komputer server berupa perintah-
perintah command line dan input letak koordinat tujuan melalui Rviz atau
terminal. Semua bagian input ini akan diteruskan ke bagian proses untuk
82
nantinya diolah oleh Jetson Nano sebagai sistem kontrol utama. Pada bagian
proses sistem menggunakan dua alat yaitu Jetson Nano dan Hoverboard
Motherboard. Jetson Nano akan menjadi sistem kendali utama dari sistem yang
bertugas untuk mencakup seluruh proses pengolahan data sensor, data
odometer, dan proses SLAM serta navigasi. Setiap data dari sensor akan
dikirimkan ke Jetson Nano yang kemudian akan diproses untuk lokalisasi robot.
Hanya sensor RPLIDAR yang mengirimkan data berupa laser scan dengan output
yang sudah jadi dan siap digunakan. Jadi tidak perlu melakukan konfigurasi
maupun menghitung manual data raw sensor. Hoverboard motherboard juga
mengirimkan data yang sudah jadi berupa odometry, data ini sudah diolah di
dalam motherboard. Hal ini bisa dilakukan karena kita melakukan custom
firmware dan memproses data odometer menjadi data odometry yang bisa
langsung digunakan tanpa perlu di filtrasi.
Untuk menggerakkan robot, kita hanya perlu memutar motor BLDC. Untuk
memutar motor kita perlu memanipulasi nilai pada variabel cmd_vel. Variabel
cmd_vel merupakan variabel yang digunakan untuk trigger nilai voltase pada
motherboard hoverboard sehingga motor dapat berputar, hal ini terjadi karena
kode biner yang di tanam ke dalam chip motherboard. Untuk memanipulasi
cmd_vel kita perlu membuat kode di dalam Jetson Nano. Setelah Jetson Nano
menentukan nilai cmd_vel maka nilai cmd_vel akan berubah dari kondisi
sebelumnya, hal ini juga berlaku pada variabel cmd_vel motherboard karena
Jetson Nano saling berkomunikasi dengan motherboard melalui serial USART.
Dengan begitu akan menghasilkan output berupa pergerakan motor, sehingga
robot bergerak. Setelah data berubah motherboard juga mengirimkan balik nilai
Odometer yang terdeteksi ke Jetson Nano untuk mengetahui secara simultan
lokasi dari robot. Kemudian Jetson Nano akan mengirimkan semua data pesan
yang diterimanya ke dalam Rviz, sehingga kita dapat melihat perubahan yang
terjadi.

D.2 Analisis Kebutuhan Sistem


Pada sub bab terkait analisis kebutuhan sistem, proses ini bertujuan agar
peneliti tahu segala kebutuhan yang diperlukan oleh sistem pada perangkat
keras dan perangkat lunak, baik secara fungsional dan non-fungsional.

D.2.1 Kebutuhan Fungsional


Kebutuhan fungsional merupakan kebutuhan sistem yang di dalamnya berisi
proses apa saja yang harus disediakan oleh sistem, seperti bagaimana sistem
merespons input dan bagaimana respons sistem pada kondisi tersebut.
Kebutuhan fungsional disajikan ke dalam tabel yang dapat diliat pada tabel 4.1.
Tabel 4.4 Kebutuhan Fungsional Sistem
No Kebutuhan Sistem Skenario Pengujian
1 Sensor RPLIDAR dapat membaca Dapat mengirimkan data ke
jarak benda sekitar robot dengan mikrokontroler dan pengujian hasil

83
pemindaian pada area seluas 360 data berupa pengukuran jarak
derajat. Nilai yang dihasilkan antara robot dengan halangan
berupa nilai distance atau jarak menggunakan alat pengukur
dari range 0.15 meter hingga 6 sebenarnya seperti meter ukur
meter
Sensor Inertial measurement unit Dapat mengirimkan posisi robot
(IMU) dapat membaca nilai derajat pada mikrokontroler terhadap
kemiringan dan gerak akselerasi posisi sebenarnya robot
2 pada robot. Berfungsi untuk menggunakan pemantauan secara
melakukan Sensing proyeksi langsung dan proyeksi melalui 3D
terhadap kemiringan dan gerak visual Rviz
akselerasi robot
Motor DC Brushless atau BLDC Diujinya jumlah putaran motor DC
dapat menggerakkan robot menggunakan odometry dan
berdasarkan nilai PWM yang perhitungan secara manual
3 diberikan dari motherboard sehingga dipastikan data odometry
hoverboard adalah putaran sebenarnya dan
robot bergerak sesuai dengan yang
didesain
Sistem mikrokontroler di dalam Diujinya pengiriman data dan
robot mampu mengirim dan penerimaan data ketika diam dan
4
menerima data sensor IMU untuk bergerak
dilaksanakan
Sistem mikrokontroler di dalam Diujinya pengiriman data ketika
robot mampu mengirim dan robot melakukan proses
5
menerima data sensor RPLIDAR pembuatan peta atau mapping
untuk dilaksanakan
Mikrokontroler dapat memproses Diujinya navigasi robot
data dari sensor menjadi menggunakan data yang diberikan
6 kesimpulan arah gerak dan oleh sensor
kecepatan sistem pada aplikasi
ROS
Sistem Motherboard Hoverboard Diujinya kecepatan berdasarkan
dapat menggerakkan kedua motor perputaran roda melalui encoder
7
serta memberi tegangan pada motor BLDC menggunakan metode
semua komponen elektronik. debugging
Aplikasi Rviz dapat memantau Diujinya penggunaan Rviz untuk
pengontrolan sistem secara melihat hasil pengontrolan otonom
8 otomatis ketika bergerak secara real-time
menggunakan sistem otonom
robot operating system

84
D.2.2 Kebutuhan Non-Fungsional
Kebutuhan non-fungsionalitas pada sistem ini terbagi menjadi dua kebutuhan
yaitu perangkat keras dan perangkat lunak yang diperlukan untuk menunjang
sistem.
D.2.2.1 Kebutuhan Perangkat Keras
1. Motherboard Hoverboard

Gambar 4.43 Perangkat Motherboard Hoverboard


Sumber : (aliexpress.com, 2021)
Pada gambar 4.2 dapat dilihat pinout dari motherboard hoverboard yang
memiliki banyak pin di bagian bawah. Motherboard Hoverboard digunakan
sebagai driver dan controller pada motor BLDC. Hoverboard motherboard
menjadi komponen penting yang menyimpan data firmware yang telah di
flash sebelumnya. Motherboard merupakan komponen wajib yang ada pada
penelitian, ini dikarenakan tanpa adanya motherboard hoverboard maka
tidak akan bisa mengendalikan motor dan akan sangat sulit jika
menggunakan motor BLDC driver eksternal karena permasalahan biaya dan
kompatibilitas dengan firmware yang ada. Berikut adalah spesifikasi yang
diambil dari datasheet motherboard hoverboard yang ditunjukkan pada tabel
4.2.
Tabel 4.5 Spesifikasi Motherboard Hoverboard
Sumber : (beta.ivc.no dan www.st.com, 2021)
Keterangan Spesifikasi
Prosesor GD32F103RCT6 ARM Cortex-M3 32-bit MCU
Flash memory 256 KB sampai 512 KB
SRAM 64 KB
Clock speed 108MHz

85
Flasher ST-Link V2 Programming Unit
Tegangan operasi 36V
Pengisian daya 42V 2A
Port Fast I/O 80 Port (45P, 9ADC, 16PWM, 6RXTX, 4SC, 3.3V,
5V, GND)
Pin Digital I/O motor DC 6 (2xHALL A-C)
Pin Digital I/O sensor 4 (PA2, PA3, PB10, PB11)
Tegangan, arus dan 36V(1000 r.p.m.) 1-25A 350W
kekuatan maksimal pada
Motor DC
Tegangan dan arus DC Pin 5V 100mA
I/O motor
Tegangan dan arus DC Pin 15V 200mA
I/O sensor
A/D converters 3 x 12-bit
D/A converters 2 x 12-bit
Komunikasi USART, SPI, I2C, I2S, USB, CAN

2. Nvidia Jetson Nano


Nvidia Jetson Nano merupakan pemrosesan inti dari sistem pada
penelitian ini, fungsinya sebagai tempat pemrosesan input dari ketiga sensor
dan menjalankan fungsi mulai dari lokalisasi, pemetaan dan perencanaan
jalur serta komunikasi SSH-VNC pada slave (komputer). Semua metode,
algoritme dan komunikasi yang digunakan akan diproses di dalam sini. Alasan
dipilihnya Jetson Nano sebagai mikrokomputer dan pemrosesan utama
adalah pertimbangan kemampuan dari perangkat ini yang memiliki CPU
Quad-core dengan clock speed 1.43 GHz dan RAM sebesar 4 GB LPDDR.
Gambar 4.3 merupakan bentuk fisik dari Nvidia Jetson Nano

86
Gambar 4.44 Nvidia Jetson Nano
Sumber: (www.nvidia.com, 2022)
Dengan spesifikasi seperti ini diharapkan Nvidia Jetson Nano mampu
melakukan pemrosesan mapping dan navigation. Proses pemetaan
menggunakan sumber daya yang cukup banyak karena terdapat banyak
sistem ROS yang berjalan di belakang layar ditambah dengan sistem
perencanaan gerak menggunakan Dijkstra yang banyak menguras CPU untuk
menemukan jalur terpendek. Memori RAM sebesar 4 GB dirasa sudah
mumpuni untuk menjalankan semua proses ini. Walaupun pemrosesan pada
Rviz dilakukan di Slave atau Komputer, akan tetapi untuk melakukan load
data hasil pemetaan juga dibutuhkan sumber daya CPU dan RAM yang besar.
Oleh karena itu, kesimpulannya adalah Nvidia Jetson Nano mampu
menjalankan sistem secara baik pada penelitian ini. Berikut adalah datasheet
dari mikrokontroler Jetson Nano 3B yang ditunjukkan pada tabel 4.3.
Tabel 4.6 Spesifikasi Mikrokontroler Jetson Nano 3B
Sumber : (developer.nvidia.com, 2021)
Keterangan Spesifikasi
CPU Quad-core ARM A57 @ 1.43 GHz
NVIDIA Maxwell architecture with 128 NVIDIA
GPU
CUDA® cores
Memory 4 GB 64-bit LPDDR4, 1600MHz 25.6 GB/s
Storage microSD
4K @ 30 | 4x 1080p @ 30 | 9x 720p @ 30
Video Encode
(H.264/H.265)
4K @ 60 | 2x 4K @ 30 | 8x 1080p @ 30 | 18x
Video Decode
720p @ 30 (H.264/H.265)
Kamera 2x MIPI CSI-2 DPHY
Konektivitas Gigabit Ethernet, M.2 Key E
Display HDMI 2.0 and display port

87
USB 4x USB 3.0, USB 2.0 Micro-B
Lainnya GPIO, I2C, I2S, SPI, USART
Mechanical 69.6 mm x 45 mm 260-pin edge connector
Memory External 64GB Mikro SD
Power Micro USB 5V 2.5A and DC Barrel Jack 5V 4A

88
3. Motor DC Brushless dan build-in encoder

Gambar 4.45 Perangkat Motor BLDC Hoverboard


Sumber : (www.jaxlec.top, 2021)
Motor DC Brushless atau motor BLDC adalah motor sinkron yang
menggunakan catu daya listrik arus searah (DC). Ini menggunakan pengontrol
loop tertutup elektronik untuk mengalihkan arus DC ke putaran kawat motor
yang menghasilkan medan magnet yang secara efektif berputar di ruang angkasa
dan yang diikuti oleh rotor magnet permanen. Kontroler menyesuaikan fase dan
amplitudo pulsa arus DC untuk mengontrol kecepatan dan torsi motor. Sistem
kontrol ini merupakan alternatif dari komutator mekanis (sikat) yang digunakan
di banyak motor listrik konvensional. Berikut adalah datasheet motor dc
brushless yang ditunjukkan pada tabel 4.4 dan bentuk fisik dari motor BLDC
hoverboard ditunjukkan pada gambar 4.4.
Tabel 4.7 Spesifikasi Motor DC Brushless
Sumber : (www.aliexpress.com, 2021)
Keterangan Spesifikasi
Tipe Gear Motor, Motor Skuter
Komunikasi Brushless
Kecepatan 5 - 1500 RPM
Tegangan 36V
Arus 1A - 25A
Power Motor 250 - 350W
Kecepatan Maksimal 26km/h
Kecepatan rata-rata 800rpm
Diameter roda 6.5”
Panjang kabel 26 cm

4. Catu Daya
89
Gambar 4.46 Baterai Hoverboard
Sumber : (ubuy.com, 2020)
Catu daya merupakan hal penting dari sistem yang digunakan untuk penyedia
sumber tegangan untuk mengaktifkan keseluruhan sistem. Selain itu, catu daya
tergolong jenis yang portabel dengan daya tampung energi listrik yang dapat diisi
ulang kembali. Untuk penggunaan catu daya harus dapat menyesuaikan
tegangannya yang dibutuhkan oleh sistem (Cahyadi, et al., 2016). Ada dua catu
daya yang digunakan pada robot ini, pertama yaitu baterai li-ion dengan besar
tegangan 32V dan kuat arus 2A. Catu daya ini digunakan untuk memberikan
power ke motherboard hoverboard dan yang nantinya akan disalurkan lagi ke
motor BLDC. Bentuk fisik dari baterai ini dapat dilihat pada gambar 4.5.
Kemudian catu daya yang kedua adalah power bank ke Jetson Nano dengan
besar tegangan 5V dan kuat arus 1A. Berikut adalah tabel spesifikasi Baterai Li-
ion 10S2P dan Power bank yang masing-masing ditunjukkan pada tabel 4.5 dan
tabel 4.6.
Tabel 4.8 Spesifikasi Catu Daya untuk Suplai Motherboard Hoverboard
Sumber : (www. hovertech.co.za, 2021)
Keterangan Spesifikasi
Teknologi Litium-Ion
Ukuran Cell 18650 Litium Ion
Tegangan ke motherboard 25.2V - 36V
Tegangan maksimal 42V
Arus sistem kerja 1A - 20A
Tenaga 75W hingga 158W
Maksimal pemakaian arus 15A
Arus Pengisian < 5A
Tegangan Pengisian 43.2V
Kapasitas 4400 mAh
Struktur 10S2P & 10S1P

90
Tabel 4.9 Spesifikasi Catu Daya untuk Suplai Jetson Nano
Sumber : (www.shopee.co.id, 2021)
Keterangan Spesifikasi
Teknologi Quick Charge 3.0
Tipe Baterai Lithium Polymer
Output 1 USB A DC 5V/3A, 9V/2A, 12V/1,5A
Output 2 USB A DC 5V/3A, 9V/2A, 12V/1,5A
Output 3 Type C 5V/3A, 9V/2,33A, 12V/1,7A
Total Output 20W
Kapasitas 10000 mAh

5. Sensor RPLIDAR A1

Gambar 4.47 Sensor RPLIDAR A1


Sumber : (amazon.com, 2022)
Pada gambar 4.6 ditunjukkan bentuk fisik dari sensor RPLIDAR yang
digunakan pada penelitian ini. Terdiri dari sensor RPLIDAR, kabel socket, dan
converter port lidar ke mikro USB. RPLIDAR A1 digunakan sebagai input utama
dari sistem berupa tangkapan jarak dari tembakan laser yang nantinya akan
diproses oleh sistem. Penggunaan RPLIDAR didasarkan dari kemampuannya
mendeteksi objek seluas 360 derajat dan sejauh 6 meter. Selain itu RPLIDAR juga
sangat praktis untuk digunakan karena kita tidak perlu menghitung nilai ataupun
kalibrasi data karena RPLIDAR memiliki prosesornya sendiri dan mampu
mengirimkan data setengah jadi berupa koordinat-koordinat data jarak. Atas
semua pertimbangan dan kemampuannya yang powerful maka dari itu RPLIDAR
dipilih menjadi sensor utama pada penelitian ini. Berikut adalah spesifikasi
sensor RPLIDAR yang ditunjukkan pada tabel 4.7.

91
Tabel 4.10 Spesifikasi RPLIDAR A1
Sumber : (www.slamtec.com, 2021)
Keterangan Spesifikasi
Measuring Range 0.15 – 12 meter
Angular Field of View 0 - 360°
Angular Resolution: ≤1°
Sampling frequency 4000 - 8000 Hz
Rotational Speed 5.5Hz
Laser wave length 775 - 795nm
Pulse width 110 us
System Voltage 5V
System Current 100mA
Power Consumption 0.5W
Output USART Serial 3.3 Voltage level
≤1% of the range(≤12m)
Range Resolution
≤2% of the range(12m~16m)
1% of the range(≤3 m)
Accuracy 2% of the range(3-5 m)
2.5% of the range(5-25m)

6. Sensor IMU GY-521

Gambar 4.48 Sensor GY-521 IMU6050


Sumber : (geekbuying.com, 2022)
Sensor GY-521 memiliki 3 DOF akselerometer dan 3 DOF giroskop yang dapat
mendeteksi nilai akselerasi dan gerakan roll, pitch atau yaw pada robot. Sensor
GY-521 digunakan sebagai input dari sistem berupa mendeteksi posisi robot
secara lokal. Hal ini sangat berguna dalam proses lokalisasi, walaupun proses
lokalisasi dapat dilakukan hanya dengan menggunakan data dari Odometer, akan
tetapi masih perlu dilakukan validasi lebih lanjut lagi menggunakan sensor yang
92
mampu membaca akselerasi robot. Ini dikarenakan terkadang ketika motor BLDC
tersangkut atau berputar di tempat maka data yang dikirimkan akan dianggap
sedang melakukan suatu gerakan. Tentunya hal ini tidak diinginkan karena dapat
membuat robot tidak bergerak semestinya dan posisinya akan berbeda ketika di
aplikasi Rviz dan keadaan didunia riil. Maka dari itu atas pertimbangan ini, sensor
GY-521 dipilih karena sangat dibutuhkan untuk memvalidasi nilai dari Odometer
dan membuat robot untuk tetap diposisi semestinya walaupun motor BLDC
berputar di tempat. Berikut adalah spesifikasi sensor IMU GY-512 yang
ditunjukkan pada tabel 4.8 dan bentuk fisik dari sensor GY-521 yang digunakan
ditunjukkan pada gambar 4.7.
Tabel 4.11 Spesifikasi Sensor IMU GY-521 MPU6050
Sumber : (www. berrybase.de, 2022)
Keterangan Spesifikasi
Chipset MPU-5060
Tegangan sistem kerja 3.3 - 5V DC
Jalur Komunikasi I2C up to 400kHz
Range Gyroscope 250, 500, 1000, 2000/s
Range Gyroscope 2, 4, 6, 8, 16g
Pin VCC, RX, TX, GND, RST, B0, SCL, SDA

7. Wi-Fi Dongle
Wi-Fi dongle digunakan sebagai Wi-Fi extension karena Jetson Nano tidak
memiliki modul Wi-Fi setelah pabrik. Wi-Fi dongle akan menjadi komunikasi
utama robot dengan komputer server.
8. Tombol Power On-Off
Tombol power on-off digunakan untuk menyalakan atau mematikan
perangkat robot. Tombol ini berupa push button yang kondisinya hanya 1 dan 0.
9. Adapter dan Port Charger Hoverboard
Adapter charger baterai digunakan untuk mengisi ulang daya dari baterai
hoverboard. Adapter ini merupakan adapter AC ke DC yang nantinya ditancapkan
pada lubang port adapter yang terhubung langsung ke motherboard hoverboard.
10. STLink V2
STLink bukanlah bagian dari komponen utama robot, alat ini digunakan
dalam proses flashing motherboard hoverboard. Tepatnya STlink berfungsi
sebagai perantara USB Flashing antara komputer dengan motherboard. Flashing
dilakukan untuk reset semua kode yang ada di motherboard sekaligus
menuliskan ulang motherboard dengan kode baru yang sudah di modifikasi.
Spesifikasi dari STLink yang digunakan pada penelitian ini dapat dilihat pada tabel
4.9.

93
Tabel 4.12 Datasheet STLink V2 mini USB
Sumber : (www.waveshare.com, 2022)
Keterangan Spesifikasi
SWD voltage range 1.65V - 3.6V
SWIM voltage range 1.65V - 5.5V
Supports SWV No
Debug interfaces 2
LED indicator Dual color LED
Fuse YES

11. FTDI mini USB F23RL


FTDI merupakan kepanjangan dari Future Technology Devices International
yang merupakan nama perusahaan semiconductor yang mengkhususkan diri
dalam teknologi Universal Serial Bus. FTDI digunakan untuk komunikasi serial
Jetson Nano dengan motherboard hoverboard menggunakan protokol serial
USART. FTDI akan terhubung dengan kabel sensor kanan dari hoverboard yang
memiliki pin RX/TX dan akan ditancapkan dengan port USB pada Jetson Nano.
12. Komputer (Personal komputer)
Komputer yang dimaksud merupakan sebuah komputer pribadi fleksibel yang
dapat dijinjing dengan mudah atau dengan kata lain adalah laptop. Pada
penelitian ini, komputer pribadi memiliki peran yang sangat penting dan banyak
berkontribusi pada penelitian ini. Di antaranya adalah berguna sebagai perangkat
dalam memprogram sistem pada tahap percobaan awal, baik dalam
memprogram perangkat keras maupun perangkat lunak. Personal komputer
digunakan sebagai komputer server dan seterusnya penulis akan menggunakan
kata komputer server sebagai maksud dari komputer pribadi penulis. Komputer
server digunakan sebagai setting up Master - Slave pada robot operating system.
Robot bergerak otonom merupakan slave sedangkan komputer berperan sebagai
master. Fungsi master (komputer) adalah menerima semua jenis data feedback
yang dikirim atau di ekspor dari slave (robot) yang kemudian data-data tersebut
dapat digunakan untuk proses visualisasi menggunakan aplikasi third party Rviz.
Dengan begini Mikro komputer pada robot tidak perlu banyak menghabiskan
Resource untuk melakukan pemetaan sekaligus menampilkan visualisasi dari
peta tersebut.
13. Chassis papan kayu
Chassis merupakan rangka penyangga suatu struktur. Rangka penyangga
pada robot AMR terbuat dari gabungan papan kayu berukuran 40x40 cm
sejumlah 4 buah dengan ketebalan 2 cm yang digunakan sebagai bahan
pembuatan chassis robot. Papan kayu ini nantinya akan menjadi tempat
penyimpanan komponen utama seperti Jetson Nano dan bagian atasnya
berperan sebagai tutup sekaligus alas untuk tempat menaruh barang.
94
14. Filamen 3D print
Filamen 3D printer sebagai bahan utama tinta 3D printer. Chassis robot
menggunakan desain custom maka dari nantinya akan ada beberapa bagian yang
hanya bisa dibuat menggunakan mesin 3D printer. Jenis filamen yang digunakan
adalah PETG berwarna hitam sebanyak 2 kilogram.
15. 3D printer
3D Printer digunakan untuk mencetak bagian utama robot. Jenis 3D printer
yang digunakan pada penelitian ini adalah printer dengan jenis FDM bermerek
Creality CR-10S Pro dengan spesifikasi minimal panjang 30 cm, lebar 30 cm dan
tinggi 20 cm.
16. Kabel jumper
Kabel jumper digunakan untuk menghubungkan serial USART sensor kanan
motherboard dengan FTDI yang terhubung pada Jetson Nano melalui USB mini.
17. Kabel micro USB
Kabel micro USB digunakan untuk menghubungkan sensor RPLIDAR dengan
Jetson Nano melalui USB. Selain itu juga digunakan untuk menghubungkan
Jetson Nano ke catu daya, yakni Power bank.
D.2.2.2 Kebutuhan Non-Fungsional Perangkat Lunak
Kebutuhan non-fungsional adalah batasan dari sistem terhadap layanan yang
diberikan. Batasan tersebut dapat berupa waktu, batasan proses pengembangan
dan batasan terhadap standar tertentu.
1. Hoverboard Firmware
Firmware adalah kelas perangkat lunak komputer tertentu yang
menyediakan kontrol tingkat rendah untuk perangkat keras khusus perangkat.
Firmware hoverboard tersimpan di dalam chip GD32 yang menjadi pemrosesan
utama hoverboard. Firmware ini dapat diubah dan dimanipulasi nilainya dengan
mengunggah file ekstensi biner ke dalam chip tersebut.
2. STM32Cube Programmer
STM32CubeProgrammer adalah alat perangkat lunak multi-OS all-in-one
untuk memprogram produk STM32. Aplikasi ini digunakan untuk melakukan
flashing pada motherboard hoverboard. STM32CubeProgrammer dikirimkan
dalam versi GUI (antarmuka pengguna grafis) dan CLI (antarmuka baris perintah).
Gambar 4.8 merupakan tampilan GUI dari aplikasi STM32Cube Programmer.

95
Gambar 4.49 STM32Cube Programmer
3. Catkin workspace
Ruang kerja catkin adalah directory (folder) tempat membuat atau
memodifikasi paket catkin yang ada. Struktur catkin menyederhanakan proses
pembuatan dan pemasangan untuk paket ROS. Ruang kerja catkin dapat berisi
hingga tiga atau lebih subdirectory yang berbeda (/build, /devel, dan /src), yang
masing-masing memiliki peran berbeda dalam proses pengembangan perangkat
lunak. Catkin merupakan salah satu metode workspace yang ada di dalam ROS,
pembuatan workspace ini bertujuan untuk memudahkan proses developing dan
compiling, konsep ini sama dengan konsep webpack yang ada pada web
developing. Kemudahan ini terjadi karena untuk menjalankan middle ware ROS
kita perlu build terlebih dahulu kode ROS yang telah ditulis dan disimpan di
dalam folder /src. Kemudian pindahkan posisi terminal pada directory /catkin_ws
dan ketik $ catkin_make, maka catkin akan bekerja dan melakukan building file
ke folder /build dan /devel. Jika sudah selesai maka perintah ROS sudah dapat
digunakan dan kita dapat menjalankan sistem berdasarkan pemrograman yang
dilakukan di folder /src seperti yang terdapat pada gambar 4.9.

Gambar 4.50 Diagram pohon directory catkin workspace


Sumber : (www.medium.com/swlh, 2021)
4. Makefile
Make adalah utilitas untuk membangun dan memelihara grup program (dan
jenis file lainnya) dari kode sumber. Tujuan dari utilitas make adalah untuk
96
menentukan secara otomatis bagian mana dari program besar yang perlu
dikompilasi ulang, dan mengeluarkan perintah yang diperlukan untuk
mengompilasi ulang (Computer Hope, 2021). Make digunakan untuk men install
aplikasi dan dependensi ROS, melakukan compile firmware, melakukan flash
firmware dan melakukan compiling pada file C lainnya dengan hasil output biner.
5. ROS 1: Melodic Morenia

Gambar 4.51 ROS Melodic


Sumber : (wiki.ros.org, 2018)
Saat ini ROS sudah mempunyai 2 major version dengan arsitektur yang
berbeda, yaitu ada ROS1 dan ROS2. Pada penelitian ini, penulis menggunakan
ROS1 dengan versi Melodic pada mikro komputer Jetson Nano dan
menggunakan versi Noetic pada komputer server. Perbedaan versi ini di karena
kan perbedaan versi Ubuntu pada Jetson Nano dan komputer server, akan tetapi
ROS mampu melakukan komunikasi antar perangkat walaupun memiliki versi
yang berbeda. ROS Melodic Morenia terutama ditargetkan pada rilis Ubuntu
18.04 (Bionic), meskipun sistem Linux lainnya serta Mac OS X, Android, dan
Windows didukung untuk berbagai tingkat.
6. Terminator
Aplikasi ini digunakan sebagai terminal utama dalam melakukan penelitian
ini, hal ini dikarenakan fiturnya lebih kaya dari pada terminal default milik Linux.
Kelebihan terminal ini adalah mampu membelah atau membagi tampilan tabnya
menjadi beberapa bagian. Dikarenakan proses untuk menjalankan file terjadi
lewat terminal, untuk itu dibutuhkan terminal yang mampu membelah diri di
dalam satu tampilan Window.
7. Visual Studio Code
Visual Studio Code atau yang biasa disingkat dengan VSCode merupakan
kode editor yang banyak digunakan oleh developer. Kode editor ini digunakan
karena kemudahan dalam auto koreksi dan kemudahan navigasi antar file. Selain
97
itu fitur debugging dalam melakukan tracking error akan sangat membantu
sekali.
8. Platform IO
PlatformIO merupakan sebuah extension yang bisa diintegrasikan dengan IDE
favorit atau text editor seperti Arduino IDE, Atom, Eclipse, Sublime, VIM, Visual
Studio Code dan lain sebagainya. Penggunaan extension ini dikarenakan
kemudahannya dalam proses compiling dan flash ke motherboard hoverboard.
Dengan cukup melakukan 1 kali klik maka proses compile dan upload akan
sekaligus dilakukan sehingga mempercepat proses pengembangan robot di
dalam penelitian ini.
9. Creality Slicer
Creality Slicer merupakan perangkat lunak pengiris digunakan dalam
pencetakan 3D untuk memotong model 3D menjadi beberapa lapisan (irisan) dan
menggambar jalur pencetakan yang dapat diikuti oleh mesin. Creality Slicer
adalah alat pengiris milik Creality, yang juga memproduksi banyak printer 3D
populer seperti seri Ender 3. Aplikasi ini dipakai sebelum melakukan pencetakan
3D, fungsinya adalah melakukan convert dari file ekstensi umum menjadi gcode,
sehingga 3D printer dapat mengenali file tersebut
10. VNC Viewer & VNC Server
VNC Viewer dan VNC Server merupakan software remote-control yang
memungkinkan untuk mengontrol komputer lain melalui koneksi network.
Komputer server akan di install VNC Viewer sedangkan Jetson Nano sebagai
mikro komputer akan di install VNC Server. Kegunaan perangkat lunak ini adalah
untuk melakukan proses yang membutuhkan tampilan user interface pada Jetson
Nano, di karena kan SSH tidak mampu menjalankan aplikasi GUI. Mekanisme
penggunaannya kurang lebih input dari keyboard dan mouse dikirimkan dari satu
komputer server ke Jetson Nano sehingga kita dapat mengontrol mikro
komputer tanpa harus menancapkan kabel HDMI ataupun kabel LAN, jadi cukup
menggunakan koneksi pada jaringan Wi-Fi yang sama.
11. Secure Shell Protocol (SSH)
SSH digunakan sebagai komunikasi remote dengan tampilan antar muka CLI.
SSH digunakan pada penelitian ini untuk menjalankan perintah-perintah ROS
ataupun sekadar melakukan editing file. SSH digunakan karena kecepatannya
dalam melakukan proses perintah dan hemat penggunaan memory,
dibandingkan dengan VNC yang sedikit lambat dan banyak memakan memory.
SSH hanya digunakan pada saat-saat tertentu ketika VNC tidak memungkinkan
atau sangat sulit untuk dilakukan.
12. Rviz
Rviz merupakan aplikasi Linux berbasis GUI yang mendukung visualisasi dari
Robot Operating System (ROS). Pada penelitian ini Rviz digunakan sebagai
aplikasi untuk melihat sejauh mana pembuatan peta atau mapping bekerja.

98
Hampir setiap pengembangan ROS pasti menggunakan Rviz sebagai aplikasi
visualisasinya. Rviz memiliki fitur pendukung utama untuk melakukan navigasi,
yakni 2D Nav Goal. Fitur ini mengirimkan data koordinat pada peta yang
dijadikan fixed frame, sehingga ketika robot sudah dilengkapi dengan sistem
navigasi maka akan terbuat sebuah path planning sehingga robot akan mengikuti
arahan dari jalur yang sudah dibuat dan di visualisasikan melalui Rviz. Gambar
4.11 merupakan tampilan antar muka aplikasi Rviz.

Gambar 4.52 Tampilan Antarmuka Rviz


13. rqt
rqt adalah framework perangkat lunak ROS yang mengimplementasikan
berbagai alat GUI dalam bentuk plugin. Pengguna dapat menjalankan semua alat
GUI yang ada sebagai jendela yang dapat dipasang di dalam rqt. Tools ini masih
dapat berjalan dalam metode mandiri tradisional, tetapi rqt memudahkan untuk
mengelola semua berbagai jendela di layar pada satu tampilan. Gambar 4.12
merupakan tampilan antar muka aplikasi rqt.

Gambar 4.53 Aplikasi rqt Dan Plugins


14. Hoverboard driver
Hoverboard driver adalah sekumpulan file dengan bahasa C yang
menjembatani antara perangkat lunak dengan firmware hoverboard.
Hoverboard driver berisikan library-library yang dibutuhkan untuk

99
mengendalikan hoverboard melalui node ROS. Driver ini tidaklah ditulis dari awal
oleh penulis, melainkan menggunakan driver dari pengembang lain yang
membuat tim untuk fokus mengembangkan driver hoverboard, link yang
digunakan sebagai berikut: https://github.com/EFeru/hoverboard-firmware-
hack-FOC.
Dengan menggunakan driver ini kita dapat melakukan kontrol pada
hoverboard dengan mudah, hal ini karena driver ini sudah berisikan kode untuk
komunikasi firmware dengan komputer. Hoverboard driver memiliki beberapa
parameter pada paketnya yang digunakan sebagai konfigurasi pada robot. Nilai
dari parameter ini disesuaikan berdasarkan data nyata pada pengukuran robot
sesungguhnya. Tabel parameter yang digunakan paket Hoverboard driver dapat
dilihat pada tabel 4.10.
Tabel 4.13 Parameter Hoverboard Driver
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
left_wheel Nama sambungan roda kiri
right_wheel Nama sambungan roda kanan
pose_covariance_diagonal Diagonal matriks kovarians untuk penerbitan
pose odometri
twist_covariance_diagonal Diagonal matriks kovarians untuk penerbitan
twist odometri
wheel_separation_multiplier Ini digunakan untuk menjelaskan perbedaan
antara model robot dan robot nyata.
cmd_vel_timeout Periode yang diizinkan (dalam s) diperbolehkan
antara dua perintah kecepatan yang berurutan.
base_frame_id Digunakan untuk mengisi child_frame_id dari
pesan Odometry dan TF
enable_odom_tf Publikasikan ke TF secara langsung atau tidak
wheel_radius Jari-jari roda. Diharapkan mereka semua
memiliki ukuran yang sama.
wheel_separation Jarak roda kiri dan kanan.
allow_multiple_cmd Menyetel ini ke true akan mengizinkan lebih
dari satu penerbit pada topik masukan,
_vel_publishers
~/cmd_vel. Menyetel ini ke false akan
menyebabkan pengontrol mengerem jika ada
lebih dari satu penerbit di ~/cmd_vel.
linear/x/min_velocity Kecepatan linier minimum (dalam m/s).
linear/x/max_velocity Kecepatan linier maksimum (dalam m/s)
100
linear/x/max_acceleration Percepatan linier maksimum (dalam m/s^2)
angular/z/min_velocity Kecepatan sudut minimum (dalam rad/s).
Mengatur ini ke 0,0 akan menonaktifkan rotasi
berlawanan arah jarum jam.
angular/z/max_velocity Kecepatan sudut maksimum (dalam rad/s)
angular/z/min_acceleration Percepatan sudut minimum (dalam rad/s^2).
Saat tidak ditentukan, -max_acceleration
digunakan.

15. RPLIDAR ROS driver


RPLIDAR driver adalah sekumpulan file dengan bahasa C, python dan
sebagainya yang menjembatani antara perangkat lunak dengan perangkat
RPLIDAR. Driver ini diciptakan langsung oleh tim riset dari perusahaan yang
menjual produk RPLIDAR A1, yaitu RoboPeak. Untuk melakukan download driver
bisa di download di GitHub resmi RoboPeak, link yang digunakan sebagai berikut:
https://github.com/robopeak/rplidar_ros. Driver ini sudah bisa langsung di
gunakan tanpa harus melakukan pengaturan yang berarti. Tabel parameter yang
digunakan paket RPLIDAR ROS driver dapat dilihat pada tabel 4.11.
Tabel 4.14 Parameter RPLIDAR ROS Driver
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
serial_port nama port serial yang digunakan di sistem
Anda.
serial_baudrate kecepatan baud port serial
frame_id Frame id untuk perangkat rplidar.
inverted menunjukkan apakah LIDAR dipasang terbalik.
angle_compensate menunjukkan apakah pengemudi perlu
melakukan kompensasi sudut.
scan_mode mode pemindaian lidar.

16. MPU6050 dan I2C driver


MPU6050 merupakan driver sensor yang digunakan untuk menjembatani
sensor IMU 6050 dengan mikro komputer atau mikro kontroler. Sedangkan I2C
merupakan library untuk komunikasi jalur serial I2C antara kontroler dengan
sensor IMU. Untuk mendapatkan driver ini, kita bisa mengunduh driver
MPU6050 dan I2C driver pada link berikut:

101
- https://github.com/Brazilian-Institute-of-Robotics/mpu6050_driver
- https://github.com/Brazilian-Institute-of-Robotics/i2c_device_ros
Driver ini bertujuan untuk membaca nilai percepatan dari sensor akselerometer,
giroskop dan magnetometer. Dengan menggunakan driver ini kita mampu
mengakses sensor IMU dengan mudah. Tabel parameter yang digunakan paket
MPU6050 dan I2C driver dapat dilihat pada tabel 4.12.
Tabel 4.15 Parameter MPU6050 Driver
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
bus_uri I2C Bus URI digunakan untuk berkomunikasi
dengan perangkat I2C
mpu_address Alamat I2C dari MPU6050 yang biasanya
memiliki alamat default 0x68
pub_rate Frekuensi dalam Hertz yang data IMU
diterbitkan
frame_id Bingkai jika pesan IMU
axes_offsets Offset untuk memperbaiki nilai yang salah yang
disebabkan oleh misalignment. Nilai ini didapat
setelah melakukan kalibrasi
ki Konstanta PID yang digunakan dalam prosedur
kalibrasi.
kp Konstanta PID yang digunakan dalam prosedur
kalibrasi
delta Proses kalibrasi selesai ketika kesalahan
mendekati nol dengan presisi yang ditetapkan
oleh delta

17. Hector SLAM library


Hector SLAM library merupakan sekumpulan paket fungsi yang dipakai untuk
membuat pemetaan. Library ini bertujuan untuk melakukan pemetaan dan
lokalisasi dengan mengandalkan data dari laser. Library ini memiliki kemampuan
melakukan mapping tanpa harus mengetahui kondisi sekitarnya terlebih dahulu.
Fungsi-fungsi pada paket ini tersedia pada directory GitHub pengembangnya
yaitu Technical University Darmstats, link yang digunakan sebagai berikut:
https://github.com/tu-darmstadt-ros-pkg/hector_slam. Hector SLAM library
memiliki dari beberapa library lagi di dalamnya, terdiri dari library hector
mapping, hector Geotiff, hector Trajectory, hector SLAM dan masih banyak lagi.

102
Tabel parameter yang digunakan paket robot pose EKF dapat dilihat pada tabel
4.13.
Tabel 4.16 Parameter Hector Mapping
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
base_frame Nama rangka dasar robot. Ini adalah frame
yang digunakan untuk pelokalan dan
transformasi data pemindaian laser.
map_frame Nama dari frame peta
odom_frame Nama dari frame odometry
map_resolution Resolusi peta [m]. Ini adalah panjang tepi sel
grid.
map_size Ukuran [jumlah sel per sumbu] peta. Peta
berbentuk persegi dan memiliki sel kisi
(map_size * map_size).
map_start_x Lokasi asal [0.0, 1.0] bingkai /peta pada sumbu
x relatif terhadap peta kisi. 0,5 di tengah.
map_start_y Lokasi asal [0.0, 1.0] bingkai /peta pada sumbu
y relatif terhadap peta kisi. 0,5 di tengah.
map_update Ambang batas untuk melakukan pembaruan
peta.
_distance_thresh
map_update Ambang batas untuk melakukan pembaruan
peta.
_angle_thresh
map_multi_res_levels Jumlah tingkat petak multi-resolusi.
update_factor_free Pengubah pembaruan peta untuk pembaruan
sel gratis dalam kisaran.
update_factor_occupied Pengubah pembaruan peta untuk pembaruan
sel yang ditempati dalam kisaran
laser_z_min_value Tinggi minimum [m] relatif terhadap bingkai
pemindai laser untuk titik akhir pemindaian
laser yang akan digunakan oleh sistem
laser_z_max_value Tinggi maksimum [m] relatif terhadap bingkai
pemindai laser untuk titik akhir pemindaian
laser yang akan digunakan oleh sistem
pub_map_odom_transform Tentukan apakah transformasi map->odom
harus dipublikasikan oleh sistem.

103
tf_map_scanmatch Nama frame saat memublikasikan scanmatcher
ke transformasi peta seperti yang dijelaskan
_transform_frame_name
dalam parameter sebelumnya.

104
18. Robot Pose EKF Localization library
EKF adalah implementasi dari filter Kalman yang diperluas. Ini menggunakan
model gerakan omnidirectional untuk memproyeksikan keadaan ke depan dalam
waktu, dan mengoreksi perkiraan yang diproyeksikan menggunakan data sensor
yang dirasakan. EKF digunakan baik dalam proses mapping ataupun navigasi, hal
ini dikarenakan kedua proses itu membutuhkan metode untuk menggabungkan
sensor agar peta yang dihasilkan menjadi lebih baik. Output dari paket ini adalah
sebuah frame bernama odom_combined yang sudah dilakukan koreksi nilai
kesalahan data odometry dengan menggunakan data IMU. Tabel parameter yang
digunakan paket robot pose EKF dapat dilihat pada tabel 4.14.
Tabel 4.17 Parameter EKF Localization
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
output_frame Nama frame dari odometry, dalam hal ini
adalah /odom
base_footprint_frame Nama frame dari base footprint
freq Frekuensi bernilai nyata dalam Hz, di mana
filter menghasilkan perkiraan keadaan
sensor_timeout Ketika sensor berhenti mengirimkan informasi
ke filter, berapa lama filter harus menunggu
sebelum melanjutkan tanpa sensor itu.
odom_used Aktifkan atau nonaktifkan input sensor
odometry
imu_used Aktifkan atau nonaktifkan input sensor IMU
vo_used Aktifkan atau nonaktifkan input sensor visual
odometry
gps_used Aktifkan atau nonaktifkan input sensor GPS
debug Parameter yang menentukan apakah akan
dijalankan dalam mode debug atau tidak.

19. ROS Navigation Stack: AMCL library


ROS navigation library merupakan sekumpulan paket fungsi yang dipakai
untuk proses path planning robot. Library termasuk ke dalam paket eksternal
dari ROS yang dapat langsung di install menggunakan perintah $ sudo apt install
ros-melodic-navigation. Sedangkan AMCL atau Adaptive Monte Carlo
Localization adalah sistem lokalisasi probabilistik untuk robot yang bergerak
dalam 2D. Ini menerapkan pendekatan lokalisasi Monte Carlo adaptif yang
menggunakan filter partikel untuk melacak pose robot terhadap peta yang

105
diketahui. AMCL digunakan pada lokalisasi proses navigasi robot, yaitu dengan
memanfaatkan data lidar dan hasil pemetaan untuk mendapatkan lokasi dan
pose terkini dari robot. Tabel parameter yang digunakan paket AMCL dapat
dilihat pada tabel 4.15.
Tabel 4.18 Parameter AMCL Localization
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
odom_frame_id Frame mana yang digunakan untuk odometri.
odom_model_type Model mana yang akan digunakan, baik "diff",
"omni", "diff-corrected" atau "omni-corrected".
base_frame_id Bingkai mana yang digunakan untuk basis robot
update_min_d Jumlah partikel minimum yang diizinkan
update_min_a Jumlah partikel maksimum yang diizinkan
global_frame_id Nama kerangka koordinat yang diterbitkan oleh
sistem lokalisasi
tf_broadcast Setel ini ke false untuk mencegah amcl
memublikasikan transformasi antara frame
global dan frame odometri.
initial_pose_x Mean pose awal (x), digunakan untuk
menginisialisasi filter dengan distribusi
Gaussian.
initial_pose_y Pose awal mean (y), digunakan untuk
menginisialisasi filter dengan distribusi
Gaussian.
initial_pose_a Pose mean awal (yaw), digunakan untuk
menginisialisasi filter dengan distribusi
Gaussian.

20. ROS Navigation Stack: Move base library


Di dalam paket ROS navigation stack terdapat paket move base yang
merupakan paket utama untuk mengirimkan pesan twist yang nantinya di
konversi. Di dalam paket ini juga terdapat base global planner untuk path
planning secara global, DWA local planner untuk path planning local serta dan
masih banyak lagi. Semua ini tentunya berisikan fungsi-fungsi yang bertujuan
untuk menunjang sistem navigasi robot. Paket move base melakukan subscribe
pada beberapa topik antara lain, move_base/goal yang merupakan sebuah
koordinat tujuan untuk di capai robot dan move_base/cancel yang merupakan
permintaan untuk membatalkan tujuan tertentu. Output dari paket ini adalah

106
sebuah topic yang digunakan untuk menggerakkan robot, yaitu cmd_vel.
Parameter yang digunakan pada paket ini dapat dilihat pada tabel 4.16
Tabel 4.19 Parameter Move Base
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
base_global_planner Nama plugin untuk perencana global untuk
digunakan dengan move_base
base_local_planner Nama plugin untuk perencana lokal untuk
digunakan dengan move_base
recovery_behaviors Daftar plugin perilaku pemulihan untuk
digunakan dengan move_base
controller_frequency Laju dalam Hz untuk menjalankan loop kontrol
dan mengirim perintah kecepatan ke
pangkalan.
planner_patience Berapa lama perencana akan menunggu dalam
hitungan detik dalam upaya untuk menemukan
rencana yang valid sebelum operasi
pembersihan ruang dilakukan.
controller_patience Berapa lama pengontrol akan menunggu dalam
hitungan detik tanpa menerima kontrol yang
valid sebelum operasi pembersihan ruang
dilakukan.
conservative_reset_dist Jarak dari robot dalam meter di mana
rintangan akan dibersihkan dari peta biaya saat
mencoba mengosongkan ruang di peta
recovery_behavior_enabled Apakah akan mengaktifkan perilaku pemulihan
move_base atau tidak untuk mencoba
mengosongkan ruang
clearing_rotation_allowed Menentukan apakah robot akan mencoba
melakukan rotasi di tempat atau tidak saat
mencoba mengosongkan ruang
shutdown_costmaps Menentukan apakah akan mematikan peta
biaya node atau tidak saat move_base dalam
keadaan tidak aktif
oscillation_timeout Berapa lama dalam detik untuk memungkinkan
osilasi sebelum menjalankan perilaku
pemulihan
oscillation_distance Berapa jauh dalam meter robot harus bergerak

107
agar dianggap tidak berosilasi
planner_frequency Laju dalam Hz untuk menjalankan loop
perencanaan global
max_planning_retries Berapa kali untuk memungkinkan perencanaan
ulang sebelum menjalankan perilaku
pemulihan

Parameter paket move base hanya berisikan variabel untuk menentukan


plugin dari perencanaan jalur global dan lokal. Terdapat beberapa parameter
penting yang menjadi konfigurasi pada proses navigasi. Pada dokumentasi ROS
hal ini disebut dengan Component APIs. Node move_base berisi komponen yang
memiliki ROS API sendiri. Komponen ini dapat bervariasi berdasarkan nilai
masing-masing yang terdiri dari global costmap, local costmap, global planner,
local planner, dan recovery behaviors. Global costmap adalah semua yang
diketahui robot dari kunjungan sebelumnya dan pengetahuan yang tersimpan
misalnya peta. Sedangkan Local costmap adalah segala sesuatu yang dapat
diketahui dari posisi saat ini dengan sensor yang tepat. Misalnya. orang berjalan
dan benda bergerak lainnya, serta setiap dinding yang dapat dilihat.
Parameter yang ada pada costmap memiliki kesamaan hanya berbeda di
penggunaan dan topik yang akan di subscribe, maka dari itu penjelasan
mengenai parameter global costmap dan local costmap akan dijadikan satu tabel
saja. Berikut ini akan dijelaskan parameter-parameter apa saja yang ada pada
setiap komponen yang sudah disebutkan sebelumnya. Untuk parameter
komponen global dan local costmap dapat dilihat pada tabel 4.17, sedangkan
untuk komponen global planner dapat dilihat pada tabel 4.18 dan local planner
4.19.
Tabel 4.20 Parameter Konfigurasi Costmap
Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
global_frame Frame global dari costmap yang mau di
digunakan. Costmap merupakan halangan
pada peta maka dari itu value dari parameter
ini adalah /map
robot_base_frame Nama frame dari base link robot
transform_tolerance menentukan penundaan dalam transformasi
(tf) data yang dapat ditoleransi dalam
hitungan detik.
update_frequency Frekuensi dalam Hz untuk peta yang akan
diperbarui
publish_frequency Frekuensi dalam Hz untuk peta yang akan
108
mempublikasikan informasi tampilan.
max_obstacle_height Ketinggian maksimum rintangan apa pun yang
akan dimasukkan ke dalam peta biaya dalam
meter.
obstacle_range Jarak maksimum default dari robot tempat
rintangan akan dimasukkan ke dalam costmap
dalam meter.
raytrace_range Rentang default dalam meter untuk
menelusuri rintangan dari peta menggunakan
data sensor
inflation_radius Lebar jari-jari (meter) yang mengembangkan
nilai costmap pada peta
<name>/observation_sources Daftar nama sumber observasi yang
dipisahkan dengan spasi.
<name>/ Topik di mana data sensor masuk untuk
sumber ini.
<source_name>/topic
<name>/ Jenis data yang terkait dengan topik, saat ini
hanya "PointCloud" dan "LaserScan" yang
<source_name>/data_type
didukung.
<name>/ Apakah pengamatan ini harus digunakan
untuk mengosongkan ruang kosong atau tidak.
<source_name>/clearing
map_topic Topik yang menjadi langganan costmap untuk
peta statis.
rolling_window Apakah akan menggunakan versi rolling
windows pada costmap. Jika parameter
static_map disetel ke true, parameter ini harus
disetel ke false.
track_unknown_space Menentukan apakah akan melacak ruang apa
di peta biaya yang tidak diketahui, artinya
tidak ada pengamatan tentang sel yang
terlihat dari sumber sensor mana pun.

Tabel 4.21 Parameter Konfigurasi Algoritme Dijkstra Global Planner


Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
allow_unknown Menentukan apakah akan mengizinkan
perencana membuat rencana yang melintasi

109
ruang yang tidak diketahui atau tidak
default_tolerance Sebuah toleransi pada titik tujuan untuk
perencana. Path planner akan mencoba
membuat rencana yang sedekat mungkin
dengan tujuan yang ditentukan tetapi tidak
lebih jauh dari default_tolerance.
visualize_potential Menentukan apakah akan memvisualisasikan
area potensial yang dihitung melalui
PointCloud2 atau tidak.
use_dijkstra Jika benar, gunakan algoritma dijkstra. Jika
tidak, A*.
old_navfn_behavior Jika karena alasan tertentu, kita ingin
global_planner benar-benar mencerminkan
perilaku navfn, setel ini ke true (dan gunakan
default untuk parameter boolean lainnya)
lethal_cost Biaya dari lethal area pada konfigurasi ulang
secara dinamis
neutral_cost Biaya dari netral area pada konfigurasi ulang
secara dinamis
cost_factor Faktor yang mengalikan beberapa biaya dari
biaya peta pada konfigurasi ulang secara
dinamis
publish_potential Publikasikan Peta Biaya Potensial pada
konfigurasi ulang dinamis
orientation_mod Cara mengatur orientasi setiap titik
orientation_window_size Window mana yang digunakan untuk
menentukan orientasi berdasarkan turunan
posisi yang ditentukan oleh mode orientasi
outline_map Menguraikan peta biaya global dengan
rintangan mematikan. Untuk penggunaan peta
biaya global non-statis (jendela bergulir), ini
perlu disetel ke false

Tabel 4.22 Konfigurasi Algoritme DWA Local Planner


Sumber: (wiki.ros.org, 2022)
Parameter Keterangan
acc_lim_x Batas percepatan x robot dalam meter/detik^2
acc_lim_y Batas percepatan y robot dalam
110
meter/detik^2
acc_lim_th batas percepatan rotasi robot dalam
radian/detik^2
max_vel_trans Nilai absolut dari kecepatan translasi
maksimum untuk robot dalam m/s
min_vel_trans Nilai absolut dari kecepatan translasi minimum
untuk robot dalam m/s
max_vel_x Kecepatan x maksimum untuk robot dalam
m/s.
min_vel_x Kecepatan x minimum untuk robot dalam m/s,
negatif untuk gerak mundur.
max_vel_y Kecepatan y maksimum untuk robot dalam
m/s
min_vel_y Kecepatan y minimum untuk robot dalam m/s
max_rot_vel Nilai mutlak kecepatan putar maksimum robot
dalam rad/s
min_rot_vel Nilai mutlak kecepatan putar minimum robot
dalam rad/s
yaw_goal_tolerance Toleransi dalam radian untuk pengontrol
dalam yaw/rotasi saat mencapai tujuannya
xy_goal_tolerance Toleransi dalam meter untuk pengontrol
dalam jarak x & y saat mencapai tujuan
latch_xy_goal_tolerance Jika toleransi tujuan terkunci, jika robot
pernah mencapai lokasi tujuan xy, ia hanya
akan berputar di tempatnya, bahkan jika itu
berakhir di luar toleransi tujuan saat
melakukannya.
sim_time Parameter untuk simulasi. Jumlah waktu untuk
meneruskan simulasi lintasan dalam hitungan
detik
sim_granularity Parameter untuk simulasi. Ukuran langkah,
dalam meter, untuk mengambil antara titik
pada lintasan tertentu
vx_samples Parameter untuk simulasi. Jumlah sampel yang
akan digunakan saat menjelajahi ruang
kecepatan x
vy_samples Parameter untuk simulasi. Jumlah sampel yang
akan digunakan saat menjelajahi ruang

111
kecepatan y
vth_samples Parameter untuk simulasi. Jumlah sampel yang
akan digunakan saat menjelajahi ruang
kecepatan theta
controller_frequency Parameter untuk simulasi. Frekuensi di mana
pengontrol ini akan dipanggil dalam Hz.
Menggunakan “searchParam” untuk membaca
parameter dari ruang nama induk jika tidak
disetel di ruang nama pengontrol.
path_distance_bias Pembobotan untuk seberapa banyak
pengontrol harus tetap dekat dengan jalur
yang diberikan
goal_distance_bias dia menimbang berapa banyak pengontrol
harus berusaha mencapai tujuan lokalnya, juga
mengontrol kecepatan
occdist_scale Pembobotan untuk seberapa banyak
pengontrol harus berusaha menghindari
rintangan
forward_point_distance Jarak dari titik pusat robot untuk
menempatkan titik penilaian tambahan, dalam
meter
stop_time_buffer Jumlah waktu robot harus berhenti sebelum
tabrakan agar lintasan dianggap valid dalam
hitungan detik
scaling_speed Nilai absolut dari kecepatan untuk mulai
menskalakan jejak robot, dalam m/s
max_scaling_factor Faktor maksimum untuk menskalakan jejak
robot
publish_cost_grid Apakah akan mempublikasikan kisi biaya yang
akan digunakan perencana saat merencanakan
atau tidak
oscillation_reset_dist Seberapa jauh robot harus berjalan dalam
meter sebelum tanda osilasi direset
prune_plan Menentukan apakah akan memakan rencana
saat robot bergerak di sepanjang jalan. Jika
disetel ke true, poin akan jatuh dari akhir
rencana setelah robot bergerak 1 meter
melewatinya.

112
BAB E PERANCANGAN DAN IMPLEMENTASI

Dalam bab perancangan dan implementasi, penulis akan menjabarkan


tahapan perancangan dari sistem secara skematis hingga
pengimplementasiannya secara riil. Di dalam bab ini penulis akan menjelaskan
mengenai perancangan dan implementasi dari sistem yang digunakan pada
penelitian. Perancangan di sini mencakup perancangan secara fisik yang berupa
wiring dan assembling, serta perancangan secara perangkat lunak dengan
perancangan arsitektur dibangunnya sistem robot dan komunikasi. Sementara
itu implementasi terfokus pada aspek bagaimana sistem tersebut berhasil
dibentuk di dunia riil dan bagaimana pemrograman sistem ini bekerja. Hasil dari
perancangan sistem kemudian direalisasikan dan dijelaskan pada implementasi
sistem. Oleh karena itu disusunlah proses bagaimana merancang sistem dan
mengimplementasikannya sebagai berikut.

E.1 Perancangan Sistem


Perancangan sistem bertujuan untuk memahami cara kerja beserta alur kerja
sistem, seperti apa yang nantinya akan dibuat sehingga dalam penjelasannya
dalam perancangan sistem nantinya akan lebih terstruktur dan lebih sistematis.
Perancangan sistem dibagi menjadi tiga bagian yaitu perancangan skematis
arsitektur sistem, perancangan perangkat keras, dan perancangan perangkat
lunak.

E.1.1 Perancangan Skematis Prototype Sistem

Gambar 5.54 Desain Chassis Badan Depan Robot


Prototype dari autonomous mobile robot dirancang dengan menggabungkan
3 komponen utama, yaitu chassis robot, robot beroda, dan sensor robot. Chassis
robot dibuat dengan ukuran 40x40 cm berbahan kayu dengan ketebalan 2 cm.
Pembuatan chassis ini cukup mudah, dari ke-4 papan kayu yang sudah disiapkan
dipilih 1 papan sebagai alas. Kemudian papan ke-2 digunakan sebagai pembatas
sisi dengan memotong papan tersebut menjadi 4 buah bagian dengan lebar
masing-masing 10 cm. Lalu papan ke-3 dipotong dengan lebar 20 cm yang akan

113
dijadikan sebagai penghubung sisi bagian belakang. Terakhir, papan ke-4
dibiarkan utuh yang nantinya digunakan sebagai penutup chassis. Untuk detail
bentuk dari chassis ini dapat dilihat pada gambar 5.1. Selanjutnya untuk bagian
chassis robot beroda yang merupakan komponen utama robot sebagai
penggerak dan dudukan motor. Terdiri dari gabungan hasil 3D print dan
komponen elektronik hoverboard. Keseluruhan desain 3D ini dapat dilihat pada
gambar 5.2.

Gambar 5.55 Desain Semua Bagian Cetak 3D


Desain dari komponen ini menggunakan desain dari proyek Hover Mower,
yang merupakan robot pemotong rumput. Didesain oleh Patrick Weber dan
dapat di download pada link berikut:
https://github.com/HoverMower/hovermower-chassis. Desain ini dapat
digunakan bebas karena menggunakan lisensi GPL 3, jadi diperbolehkan
menggunakan dan mengubah desain tersebut. Lisensi ini memperbolehkan untuk
keperluan pembelajaran, riset, dan keperluan komersial. Akan tetapi desain ini
tidak boleh diperjual belikan tanpa izin pembuatnya yakni Patrick Weber
(https://hobby.weberpatrick.de). Pada bagian kedua sepatbor dijepit
menggunakan baut M4, sedangkan bagian tutup cukup dijepit menggunakan
baut M3. Semua komponen yang akan diberikan baut dipasangkan terlebih
dahulu brass knurled sebagai dudukan untuk baut. Hasil dari gabungan semua
desain ini dapat dilihat pada gambar 5.3.

114
Gambar 5.56 Assembling Semua Bagian Chassis Belakang Robot

Komponen utama kedua adalah robot beroda yang menjadi penggerak


utama dan tempat pemrosesan gerak robot. Bagian ini di isi oleh motherboard
hoverboard, motor BLDC, baterai 10S2P, power button, dan kabel-kabel yang
terhubung langsung dengan motor DC. Untuk lebar dari mainboard itu sendiri
sekitar 40 cm dengan panjang 25 cm yang detailnya dapat dilihat pada gambar
5.4.

Gambar 5.57 Rancangan Sistem Kemudi Utama Robot


Sistem kemudi yang digunakan pada robot ini menggunakan kemudi dua
buah roda berputar independen yang dikenal sebagai Differential Drive. Metode
kemudi ini memanipulasi nilai RPM tiap rodanya untuk mendapatkan gerak maju
atau berputar. Metode ini disediakan pada paket ROS navigation, sehingga kita
tidak perlu melakukan pemrograman atau perhitungan secara manual
berdasarkan rumus Kinematik seperti yang dapat dilihat pada gambar 5.5.

115
Gambar 5.58 Grafik Kinematik Sistem Kemudi Diff-drive
Untuk menggerakkan atau mengemudikan robot kita hanya perlu
memublikasikan pesan geometric_msgs/Twist ke topik cmd_vel. Cmd_vel
merupakan topik yang digunakan oleh paket move_base untuk mengirim
perintah navigasi. Twist message menggunakan m/s untuk satuan kecepatan
linier dan radian/s untuk satuan kecepatan sudut. Untuk melakukan gerak linier
adalah dengan mengalikan kecepatan linier dengan rasio linier dan atur setiap
roda ke kecepatan ini. Dengan menyamakan putaran tiap rasio roda maka akan
mendapatkan gerak lurus. Untuk melakukan gerakan sudut putar, caranya
hampir persis seperti gerak linier hanya saja kita perlu menemukan rasio yang
berbeda, antara radian per sekon dan output kontrol dan pastikan roda berputar
ke arah yang berlawanan. Untuk mendapatkan gerakan berbelok sedikit atau
gerak non-holonomic maka dibutuhkan sedikit kecepatan rasio disalah satu
rodanya. Gerakan ini sebenarnya merupakan gerakan linier dengan sedikit gerak
angular. Cukup tambahkan kecepatan sudut dan linier untuk setiap roda
bersama-sama untuk mendapatkan kecepatan akhir. Pada akhirnya, jelas
terdapat kecepatan maksimum yang dapat diputar oleh roda robot dan twist
message bisa melakukan ini dengan mudah. Jika kita menurunkan kecepatan
kedua roda dengan rasio yang sama sehingga berada dalam kisaran yang mampu
dilakukan motor, maka robot akan mengikuti lintasan yang sama seperti yang
diperintahkan oleh twist message tetapi pada kecepatan yang rendah.
Komponen utama ketiga adalah sensor robot yang terletak pada bagian
depan robot. Sensor terdiri dari sensor utama RPLIDAR, dan dua sensor untuk
lokalisasi yaitu sensor IMU dan build-in Odometer. Sensor ini berfungsi agar
robot mengetahui kondisi sekitarnya dan mampu mengambil keputusan path
planning. Gambar 5.6, gambar 5.7 dan gambar 5.8 merupakan gambar
Rancangan Prototype Keseluruhan Sistem yang terdiri dari bagian mainboard
robot beroda sebagai penggerak, chassis robot sebagai kerangka dan sensor
robot sebagai penglihatan dari robot. Semua desain ini dibuat menggunakan
aplikasi Autodesk Fusion 360 yang merupakan aplikasi untuk desain 3D yang
dikembangkan oleh Autodesk.

116
Gambar 5.59 Rancangan Prototype Keseluruhan Sistem Tampak Samping

117
Gambar 5.60 Rancangan Prototype Keseluruhan Sistem Tampak Atas

Gambar 5.61 Rancangan Prototype Keseluruhan Sistem Tampak Bawah


Sistem ini merupakan implementasi pengembangan dari penelitian
sebelumnya yang dibahas pada bab 2 yang hanya berfokus pada mapping saja
atau navigasi saja. Fokus utama dari penelitian ini adalah menciptakan prototype
autonomous mobile robot yang mampu bergerak dari titik awal menuju titik
tujuan dengan menggabungkan mapping dan navigasi. Proses input titik
koordinat tujuan dapat dilakukan baik secara otomatis maupun manual. Proses
secara otomatis menggunakan metode penjadwalan dengan melakukan perintah
terminal dengan memanfaatkan fungsi waktu. Untuk proses manual
menggunakan tampilan antar muka Rviz dan meletakkan 2D Nav Goal pada
aplikasi Rviz. Pada penelitian ini, penulis akan menerapkan kedua metode ini
pada pengujian sistem. Navigasi menggunakan global dan lokal path planning,
sehingga sistem dapat bergerak pada lintasan dengan halangan statis dan
dinamis.

E.1.2 Perancangan Perangkat Keras Sistem


Subbab ini akan menjelaskan mengenai rancangan perangkat keras yang
digunakan pada penelitian ini. Pada subbab sebelumnya, penulis telah
menganalisis kebutuhan sistem yang selanjutnya akan dijelaskan proses kerja
dari perangkat keras menggunakan blok diagram. Blok diagram digunakan
sebagai alat untuk membantu pembaca dalam mengenali titik masalah atau
fokus perhatian secara cepat pada perangkat keras keseluruhan sistem.
Pembahasan dari sistem ini akan dibagi menjadi 2 fokus, antara lain sistem
kendali utama dan sistem robot hoverboard yang masing-masing tergabung
menjadi satu, hal ini dapat dilihat pada gambar 5.7.

118
Gambar 5.62 Rancangan Perangkat Keras Sistem
Pada gambar 5.9 dapat diperhatikan bahwa sistem akan menggunakan
perangkat utama yang saling terintegrasi satu sama lain menggunakan beberapa
protokol komunikasi sebagai penghubung. Perangkat utama yang dimaksud
adalah Jetson Nano, personal komputer dan hoverboard motherboard,
sedangkan protokol komunikasi penghubung yang dimaksud adalah serial
protocol dengan FTDI mini USB dan VNC dengan jaringan Wi-Fi. Namun karena
Jetson Nano tidak memiliki modul Wi-Fi pada komponen utamanya, maka kita
perlu menambahkan modul berupa Wi-Fi dongle yang ditancapkan pada salah
satu port USB Jetson Nano. Berikut ini merupakan penjelasan mengenai sistem
kendali utama robot. Personal komputer atau komputer server berkomunikasi
dengan Jetson Nano menggunakan protokol komunikasi Virtual Network
Computing (VNC) pada jaringan yang saling terhubung dengan Wi-Fi yang sama.
Sedangkan untuk Jetson Nano dengan hoverboard motherboard menggunakan
119
komunikasi data serial USART melalui perangkat elektronik bernama FTDI mini
USB converter. Jetson Nano merupakan komponen utama penyusun sistem
penggerak.
Sistem penggerak berperan sebagai aktuator yang sekaligus mengirimkan
data berupa data odometry. Sistem ini terdiri dari motherboard hoverboard,
motor BLDC, baterai, power on/off dan Jetson Nano yang terhubung dengan FTDI
melalui komunikasi USART. Motherboard di sini berfungsi sebagai motor driver
utama yang mengatur arah putar dan kecepatan putar motor BLDC. Dengan
menggunakan 3 kabel phase di tiap sisi motor, motherboard hoverboard dapat
dengan mudah mengatur kecepatan dengan memanipulasi nilai voltase yang
dialirkan melalui 3 kabel phase ini. Berbeda dengan motor DC biasa yang
menggunakan VCC dan ground saja, motor BLDC memerlukan 3 kabel phase
untuk mengatur tegangan yang masuk di tiap phase magnetnya. Selain itu
dibutuhkan juga 5 pin hall sensor yang digunakan untuk mengetahui posisi
putaran robot sehingga didapatkan data Odometry pada motor BLDC. Untuk
mendeskripsikan rancangan keseluruhan sistem penggerak ini, dapat dilihat pada
gambar 5.10.

Gambar 5.63 Skema Sistem Penggerak Robot

Pada gambar 5.10 terdapat diagram skematis dari sistem gerak robot dimana
motherboard hoverboard yang berfungsi sebagai driver motor BLDC, terhubung
langsung dengan kabel phase, hall, on/off, charger dan supply. Kabel phase dan
kabel hall sudah dijelaskan sebelumnya, yakni untuk mengendalikan dan
mendapatkan data odometry dari motor BLDC. Kabel on/off power button
terhubung dengan soket yang sudah tersedia pada motherboard begitu pula
dengan kabel charger port. Kemudian untuk dapat berkomunikasi dengan Jetson

120
Nano, kita perlu menghubungkan motherboard dengan kabel sensor yang ada di
sisi bawah motherboard hoverboard.
Kedua sisi sensor motherboard hoverboard memiliki total 8 buah kabel yang
masing-masing terdiri dari VCC, RX, TX, dan ground. Kedua kabel ini seharusnya
terhubung dengan sensor giroskop pada hoverboard, namun kita bisa membuang
bagian sensor tersebut dan mengambil bagian motherboard saja. Namun secara
pabrikan, hoverboard tidak dibuat untuk tujuan ini maka diperlukan proses
flashing firmware pada motherboard hoverboard. Dari kedua port sensor ini, kita
hanya akan menggunakan kabel sensor sebelah kanan. Kabel sebelah kanan
digunakan karena tegangannya dapat mentoleransi komunikasi data dengan
tegangan maksimal 5V. Konfigurasi ini dapat dilihat pada datasheet jenis
motherboard hoverboard yang digunakan.
Hal ini dilakukan untuk menghindari kerusakan pada Jetson Nano yang mana
jika kita menggunakan kabel sensor sebelah kiri maka motherboard bisa saja
mengirimkan data dengan voltase sebesar 15V. Voltase sebesar itu tidak akan
bisa diterima oleh Jetson Nano dan hal ini akan memicu terjadi short aliran listrik
sehingga Jetson Nano bisa saja terjadi hubungan arus pendek atau lebih
parahnya adalah terbakar. Kemudian perlu diperhatikan juga, dari ke-4 kabel
sensor kanan (VCC MCU, RX MCU, TX MCU, GND MCU) hanya menggunakan 3
dari 4, jadi bagian pin yang digunakan hanyalah RX, TX, dan GND. Pin VCC tidak
digunakan karena akan mengakibatkan short circuit dan membuat rusak
motherboard. Dengan menghubungkan pin VCC berarti sama saja kita
menabrakkan dua tegangan dengan voltase yang jauh berbeda. Output dari pin
VCC pada sensor kanan motherboard memiliki nilai tegangan yang tinggi yaitu
15V, maka dari itu pin ini akan digunting dan di isolasi agar tidak membahayakan
jikalau lupa bahwa pin VCC ini tidak boleh digunakan.
Selanjutnya untuk terhubung dengan Jetson Nano melalui USB port,
dibutuhkan sebuah adapter yang mampu menjembatani komunikasi antar
perangkat. Dalam penelitian ini digunakan FTDI mini USB untuk menjembatani
kabel RX/TX sensor kanan dengan RX/TX Jetson Nano. Dari perangkat FTDI akan
dilanjutkan dengan kabel mini USB menuju port USB Jetson Nano. Untuk
penjelasan lebih lanjut mengenai apa saja pin-pin yang digunakan dari
motherboard dapat dilihat pada tabel 5.1.
Tabel 5.23 Penjelasan Konfigurasi Pinout Motherboard Hoverboard
Sumber : (github.com/EFeru/hoverboard-firmware-hack-FOC, 2018)
Pin motherboard Pin tujuan Deskripsi
XT60 VCC 36V Pin daya motherboard
XT60 GND GND Pin ground motherboard
Button Pin Button Pin Pin tombol power kondisi on
Latch Pin Latch Pin Pin tombol power kondisi off
Charger Charger Konektor charger baterai
121
Connector Connector
Phase A LEFT Phase A Pin daya untuk kutub A pada motor kiri
Phase B LEFT Phase B Pin daya untuk kutub B pada motor kiri
Phase C LEFT Phase C Pin daya untuk kutub C pada motor kiri
HALL A LEFT HALL A Pin data encoder pada motor kiri
HALL B LEFT HALL B Pin data encoder pada motor kiri
HALL C LEFT HALL C Pin data encoder pada motor kiri
GND LEFT GND Pin ground encoder motor kiri
VCC LEFT VCC Pin daya encoder motor kiri
Phase A RIGHT Phase A Pin daya untuk kutub A pada motor kanan
Phase B RIGHT Phase B Pin daya untuk kutub B pada motor kanan
Phase C RIGHT Phase C Pin daya untuk kutub C pada motor kanan
HALL A RIGHT HALL A Pin data encoder pada motor kanan
HALL B RIGHT HALL B Pin data encoder pada motor kanan
HALL C RIGHT HALL C Pin data encoder pada motor kanan
GND RIGHT GND Pin ground encoder motor kanan
VCC RIGHT VCC Pin daya encoder motor kanan
Pin USART untuk data yang terhubung
TX/USART3 RX
dengan FTDI ke Jetson Nano
Pin USART untuk data yang terhubung
PB11/RX/USART3 TX
dengan FTDI ke Jetson Nano
GND GND Pin ground USART3
3.3V MCU 3.3V Pin daya STLink untuk flashing
SWCLK MCU SWCLK Pin clock STLink untuk flashing
GND MCU GND Pin ground STLink untuk flashing
SWDIO MCU SWDIO Pin data input dan output untuk flashing
Jetson Nano menerima catu daya pada power bank dengan tegangan sebesar
5V dan kuat arus sebesar 1A melalui kabel USB to micro USB. Daya ini juga akan
dipergunakan untuk menenagai sensor RPLIDAR dan GY-521 IMU MPU6050.
Wiring dari Jetson Nano ke RPLIDAR dapat dilihat pada gambar 5.11.

122
Gambar 5.64 Pinout Sensor RPLIDAR A1
Sensor RPLIDAR bekerja dengan ideal pada tegangan sebesar 5V yang
bersumber dari Jetson Nano yang terhubung melalui kabel USB 2.0 to micro USB,
sehingga dengan kabel ini kita dapat mendapatkan memberikan masukkan
tegangan sekaligus mengirim dan menerima data. Data yang diterima oleh Jetson
Nano dari sensor RPLIDAR merupakan mentah berupa point cloud yang diproses
oleh driver. Untuk menghubungkan RPLIDAR dengan kabel mikro USB diperlukan
sebuah adapter dengan nama RPLIDAR A1 UART Bridge. Adapter ini berfungsi
untuk menjembatani komunikasi sekaligus mengubah pin dari kabel kecil pada
input dan output RPLIDAR menjadi port mikro USB. Sensor ini memiliki 7 buah
pin yang memiliki fungsi seperti supply daya laser, data laser, supply daya motor,
dan sinyal untuk motor. Untuk melihat penjelasan lebih lanjut mengenai pin dari
RPLIDAR dapat dilihat pada tabel 5.2 dan untuk perangkat RPLIDAR dapat dilihat
pada gambar 5.11.
Tabel 5.24 Penjelasan pinout sensor RPLIDAR
Sumber : (www.slamtec.com, 2016)
Pin modul Pin tujuan Deskripsi
GND GND Pin ground laser
TX RX Pin data dengan komunikasi serial USART
RX TX Pin data dengan komunikasi serial USART
V5 VCC Pin daya pada laser
GND GND Pin ground motor
MOTOCLT DTR Pin sinyal motor
VMOTO VCC Pin daya pada motor

Sedangkan pada sensor GY-521 menggunakan tegangan sebesar 3.3V yang


terhubung dengan pin Jetson Nano. Sensor GY-521 ini memiliki port dengan
jumlah 8 pin, namun pin yang digunakan hanya berjumlah 4 buah yakni VCC &
Ground, yang memiliki fungsi masukan daya dan pin SCL & SDA, yang berfungsi
sebagai pengirim data dengan protokol komunikasi I2C. Untuk melihat
123
penjelasan lebih lanjut mengenai pin dari GY-521 dapat dilihat pada tabel 5.3 dan
untuk perangkat GY-521 dapat dilihat pada gambar 5.12.

Gambar 5.65 Pinout sensor GY-521 IMU MPU6050


Tabel 5.25 Penjelasan pinout sensor GY-521 IMU MPU6050
Sumber : (xtcomp.co.za, 2022)
Pin modul Pin tujuan Deskripsi
VCC 3.3V Pin daya
GND GND Pin ground
SCL GPIO 5 (SCL) Pin data dengan komunikasi serial I2C
SDA GPIO 3 (SDA) Pin data dengan komunikasi serial I2C

Dari penjelasan keseluruhan sistem kita sudah mengetahui konfigurasi yang


akan di implementasikan pada penelitian ini. Baik konfigurasi pin maupun
konfigurasi komunikasi, semua hal ini menghasilkan arsitektur sistem secara
keseluruhan. Untuk memberikan gambaran mengenai arsitektur yang mencakup
keseluruhan sistem maka dibuat blok diagram yang dapat dilihat pada gambar
5.13. Arsitektur ini merupakan sentuhan akhir dari rancangan perangkat keras,
dimaksudkan untuk memberikan penjelasan lebih lanjut kepada pembaca
tentang mengapa perangkat-perangkat keras ini dibutuhkan. Jadi sebelum masuk
ke subbab perangkat lunak, minimal pembaca sudah mengerti hubungan
perangkat keras yang digunakan dan hubungannya dengan perangkat lunak yang
akan dirancang nanti.

124
Gambar 5.66 Arsitektur Keseluruhan Sistem
Pada gambar 5.13 dapat diperhatikan bahwa semua perangkat keras
digunakan sebagai sistem persepsi, yakni sistem yang mampu mengetahui
kondisi sekitar dan mengetahui lokasi presisi dari sistem. Terdiri dari data-data
yang dihasilkan oleh sensor-sensor yang sudah dijelaskan sebelumnya. Kemudian
ada pula sistem gerak, yakni sistem yang bertugas untuk memproses data
masukan PWM yang kemudian diteruskan ke motor BLDC dalam sebuah nilai
tegangan. Kemudian yang terakhir adalah sistem kontrol, yakni sistem yang
mengendalikan keseluruhan kinerja sistem mulai dari pembacaan data dari
sensor persepsi maupun perencanaan gerak untuk sistem gerak. Ada pula sistem
interaksi manusia-komputer yang akan dijelaskan pada subbab perancangan
perangkat lunak.

E.1.3 Perancangan Perangkat Lunak


Pada subbab ini, penulis akan menjelaskan mengenai rancangan perangkat
lunak yang digunakan pada penelitian ini. Perangkat lunak merupakan komponen
penting dalam sistem guna menentukan bagaimana cara sistem bekerja.
125
Penelitian ini memiliki fokus untuk menciptakan sistem otomatis untuk robot
beroda yang mampu bergerak secara mandiri dari titik awal menuju titik tujuan
menggunakan gabungan beberapa sensor dan algoritme. Perancangan dari
sistem ini terbagi menjadi tiga proses besar yakni proses persiapan awal, proses
utama dan proses bagian. Proses persiapan awal merupakan proses yang
pertama kali harus dijalankan sebelum memasuki proses utama maupun proses
bagian. Sedangkan proses utama merupakan proses yang mencakup keseluruhan
sistem. Proses utama terdiri dari 2 hal utama yang menjadi pokok penelitian ini,
yakni proses pemetaan dan proses navigasi. Sedangkan proses bagian atau sub
proses merupakan pecahan proses utama atau penjelasan lebih lanjut mengenai
bagian-bagian yang memiliki algoritme lagi di dalam proses utama yang
tujuannya adalah untuk memperjelas beberapa fungsi pada proses tertentu.
E.1.3.1 Perancangan Persiapan Awal Motherboard

Gambar 5.67 Diagram Alir Tahap Persiapan Awal Motherboard


Pada gambar 5.14 ditunjukkan bahwa perancangan persiapan awal
motherboard terdiri dari beberapa proses-proses persiapan sebelum merancang
perangkat lunak sistem. Jadi tahap persiapan awal bukanlah proses atau alur
algoritme sistem, melainkan tahap-tahap yang harus dijalankan sebelum
membuat perangkat lunak sistem. Hal ini penting dikarenakan sistem perangkat
lunak yang tidak biasa. Perangkat lunak pada robot ini terdiri dari banyak sekali
dependensi dan paket-paket. Selain itu robot pada penelitian ini menggunakan
robot dari komponen hoverboard yang di modifikasi sedemikian rupa sehingga

126
proses persiapan awal ini sangat penting dilakukan untuk menciptakan robot
modifikasi ini.
Hal yang pertama dilakukan adalah menghubungkan komputer personal
dengan motherboard. Ini merupakan tahap “connecting” untuk nantinya
dilakukan proses flashing. Proses ini dimulai dengan memberikan kabel jumper
pada perangkat STLink yang kemudian dihubungkan dengan 4 buah pin yang ada
di motherboard. Proses ini dijelaskan lebih lanjut pada sub bab implementasi.
Untuk detail mengenai pin ini dapat dilihat pada gambar 5.16.

Gambar 5.68 Pinout dari Motherboard ke STLink


Pada gambar 5.16 dapat dilihat bahwa secara berurutan posisi pin flash
firmware terdiri dari VCC, SWCLK, GND, SWDIO. Port ini dihubungkan dengan
kabel jumper male to female menuju STLink untuk selanjutnya ditancapkan ke
port USB ke personal komputer. Selanjutnya untuk motherboard hoverboard
proses ini dimulai dengan menghapus seluruh data yang ada di dalam chip
motherboard. Hal ini bertujuan untuk menghapus kode program pabrik yang
ditulis oleh pembuat hoverboard. Langkah selanjutnya adalah melakukan
konfigurasi firmware yang merupakan proses utama dalam tahap persiapan awal
motherboard. Konfigurasi firmware dibutuhkan untuk menyesuaikan jenis board
yang digunakan berdasarkan kebutuhannya pengembang. Proses konfigurasi ini
dimulai dengan melakukan download firmware hoverboard hack FOC. Firmware
hoverboard ini sudah selesai ditulis, maka dari itu kita hanya perlu melakukan
konfigurasi pada beberapa baris kode untuk menyesuaikan dengan kebutuhan
penelitian. File yang menjadi fokus modifikasi adalah file config maka dari itu
pada proses selanjutnya adalah dengan melakukan edit beberapa baris pada file
config.h yang akan dijelaskan lebih lanjut pada sub bab implementasi.
Tahap selanjutnya adalah melakukan flashing motherboard, jadi setelah
firmware sudah siap dan file config sudah di edit, langkah selanjutnya adalah
dengan melakukan building code menjadi sebuah file dengan ekstensi biner
dengan melakukan proses compile dengan klik ikon centang atau “PlatformIO:
build”. Maka langkah selanjutnya adalah dengan melakukan proses upload file
firmware.bin dengan klik ikon panah atau “PlatformIO: upload” maka terjadi
proses penyalinan data biner pada file firmware.bin ke motherboard dan pesan
127
berhasil akan muncul. Maka dengan begini proses persiapan awal motherboard
telah selesai. Motherboard sudah berada dalam kondisi siap digunakan dan
sudah bisa dikendalikan menggunakan kabel sensor motherboard bagian kanan.
Setelah proses ini maka berlanjut pada tahap persiapan awal perangkat Jetson
Nano.
E.1.3.2 Perancangan Persiapan Awal Jetson Nano

Gambar 5.69 Diagram Alir Persiapan Awal Jetson Nano


Pada gambar 5.20 dapat dilihat bahwa diagram alir dimulai dengan sub-
proses komunikasi antara Jetson Nano dengan komputer server melalui Virtual
Network Computing (VNC). Proses ini sangat berguna karena untuk melakukan
mapping dibutuhkan sebuah kendali remote yang mampu menampilkan aplikasi
GUI, metode yang paling mudah adalah dengan menggunakan VNC viewer.
Tahap selanjutnya setelah koneksi remote melalui VNC adalah melakukan
koneksi remote melalui SSH. Selain menggunakan protokol VNC untuk koneksi
dengan komputer server, pada penelitian ini dilakukan juga koneksi
menggunakan protokol SSH. Hal ini dikarenakan pada proses yang tidak terlalu
membutuhkan tampilan GUI, misalnya melakukan pengujian pada sensor,
menampilkan output melalui terminal, dan sebagainya.

128
Gambar 5.70 Diagram Alir Persiapan Awal Jetson Nano
Pada gambar 5.23 yang merupakan lanjutan dari proses sebelumnya, dapat
dilihat bahwa setelah perangkat komputer server terhubung secara remote
dengan Jetson Nano melalui VNC dan SSH, langkah selanjutnya adalah
melakukan konfigurasi port USB. Hal ini dilakukan untuk mengubah konfigurasi
default pada Linux dan membuat port USB yang terhubung ke RPLIDAR dan FTDI
menjadi lebih fleksibel dan mudah untuk dikenali. Langkah selanjutnya setelah
melakukan konfigurasi port USB adalah melakukan pembuatan workspace catkin
dengan membuat folder catkin_ws di dalam folder home Linux dan membuat
folder src di dalam folder catkin_ws. Workspace ini yang nantinya akan menjadi
directory parent yang mewadahi src, build, dan devel pada development software
robot. Langkah selanjutnya adalah melakukan konfigurasi semua paket ROS yang
akan digunakan. Semua paket ini disimpan ke dalam folder src di dalam folder
catkin_ws, hal ini dilakukan agar semua paket dapat di build menjadi satu. Detail
mengenai konfigurasi ini akan dijelaskan pada sub bab implementasi. Jika sudah
seperti ini maka proses persiapan tahap awal Jetson Nano sudah selesai.
E.1.3.3 Perancangan Program Utama
Perancangan program utama akan mencakup program utama pada penelitian
ini, mulai dari melakukan kalibrasi sensor IMU, pemetaan, dan navigasi robot.
Kalibrasi hanya dilakukan pada sensor IMU karena sensor lainnya seperti

129
RPLIDAR dan encoder di dalam motor BLDD sudah memiliki nilai raw yang presisi,
hal ini juga akan di uji pada pengujian. Namun berdasarkan hasil riset,
disimpulkan bahwa yang membutuhkan kalibrasi hanyalah sensor IMU,
sedangkan sensor RPLIDAR tidak memerlukan kalibrasi sama sekali. Begitu pula
dengan sensor encoder, kalibrasi dilakukan menggunakan firmware dari
motherboard bukan dari mikrokomputer. Semua proses ini sesuai dengan tujuan
penelitian maka dari itu di klasifikasikan sebagai program utama sistem. Diagram
alir yang menjelaskan proses dari program utama dapat dilihat pada gambar
5.24.

Gambar 5.71 Diagram Alir Program Utama


Pada gambar 5.24 merupakan diagram alir perancangan program utama akan
berisi poin-poin penting dari sebuah program secara keseluruhan. Semua urutan
program ini sudah mencakup hal-hal atau kriteria yang dibutuhkan untuk
membuat robot dengan sistem Autonomous Mobile Robot yaitu pemetaan dan
navigasi. Hal pertama yang dilakukan dalam program ini adalah melakukan
kalibrasi pada sensor IMU. Proses kalibrasi yang hanya dilakukan pada sensor
IMU dikarenakan sensor IMU membutuhkan nilai kalibrasi pada setiap kondisi
peletakannya. Jadi jika sensor IMU dipindahkan ke tempat lain, maka perlu
dilakukan kalibrasi ulang. Hal ini tidak diperlukan kedua sensor lainnya, yaitu
RPLIDAR dan encoder pada motor BLDC dikarenakan data raw yang konsisten
dan perangkat dilengkapi dengan mikrokontroler masing-masing. Detail lebih
lanjut mengenai alur dari kalibrasi ini dapat dilihat pada gambar 5.25.
130
Gambar 5.72 Diagram Alir Sub Proses Kalibrasi Sensor IMU
Pada diagram alir yang di tunjukkan pada gambar 5.25 menjelaskan bahwa
proses awal melakukan kalibrasi adalah dengan menjalankan perintah pada $
roslaunch mpu6050_driver mpu6050_calibration.launch pada terminal. Setelah
menjalankan perintah tersebut maka terminal akan menjalankan proses kalibrasi
dan menghasilkan output berupa topik baru dengan nama /imu/data dan
/imu_offsets. Lihat nilai dari output tersebut dengan mencetaknya pada terminal
dengan perintah $ rostopic echo /imu_offsets kemudian simpan nilai tersebut
pada text editor. Langkah selanjutnya adalah mengubah file setting dari driver
MPU pada directory /config/mpu_setting.yaml, kemudian perhatikan baris ke 15
dimana terdapat data angka dalam array yang berisi input nilai ax, ay, az, gx, gy,
dan gz milik variabel dengan nama axes_offset. Ubah nilai tersebut secara

131
berurutan berdasarkan nilai topik /imu_offsets yang sudah disimpan
sebelumnya.
Setelah proses edit selesai, langkah selanjutnya adalah menjalankan file
launcher driver IMU dengan mengetikkan perintah $ roslaunch mpu6050_driver
mpu6050_driver.launch pada terminal. Maka setelah itu terminal akan
menjalankan semua node yang ada di file launcher tersebut, untuk dapat melihat
output yang dihasilkan dari sensor, jalankan perintah $ rostopic echo /imu pada
terminal. Output yang ditampilkan terminal merupakan nilai raw dari sensor IMU
yang sudah dilakukan kalibrasi, jika nilai x,y,z pada akselerometer tidak
mendekati 0 m/s, 0 m/s, dan 9.8 m/s maka proses kalibrasi perlu di ulang. Akan
tetapi jika sudah mendekati nilai tersebut maka proses kalibrasi IMU sudah
selesai.
E.1.3.4 Perancangan Program Pemetaan
Proses selanjutnya adalah mapping atau pemetaan, proses ini merupakan
sub proses dari program utama, jadi penjelasan lebih lanjut mengenai pemetaan
ini akan di bahas pada sub nomor berikutnya. Proses mapping ini kurang lebih
berguna untuk mendapatkan data “map” pada suatu area di dalam ruangan.
Map ini nantinya akan berguna untuk proses navigasi, hal ini dikarenakan untuk
melakukan navigasi diperlukan proses path planning atau perencanaan jalur.
Sehingga untuk mendapatkan data koordinat tujuan dan melakukan
perencanaan jalur dibutuhkan data peta 2D, agar koordinat dapat di inisialisasi.
Setelah map berhasil dibuat, maka langkah selanjutnya adalah menyimpan map
tersebut ke dalam folder yang sudah disiapkan khusus untuk file-file map.
Perancangan program pemetaan akan mencakup proses pembacaan sensor,
lokalisasi, dan hector mapping. Program pemetaan merupakan salah satu
program utama yang harus dijalankan terlebih dahulu sebelum melakukan
program navigasi. Diagram alir dari perancangan program pemetaan akan
ditunjukkan pada gambar 5.26.

132
Gambar 5.73 Diagram Alir Program Pemetaan
Pada gambar 5.26 merupakan diagram alir program pemetaan dengan proses
yang saling berkaitan satu paket dengan paket lainnya. Diagram ini menjelaskan
133
mengenai node-node yang dibutuhkan dalam proses mapping, seperti
menjalankan semua driver sensor, fusion sensor, lokalisasi, transform frame, dan
parameter-parameter yang digunakan. Semua hal ini dijadikan satu proses besar
yang dinama kan mapping dan perencanaan dari proses-proses ini digabungkan
ke dalam file dengan ekstensi .launch yang diberi nama mapping.launch.
Semua proses ini bermula dari perintah terminal yang di input oleh komputer
server yang terhubung dengan VNC client. Seperti yang sudah dijelaskan pada
bab 2 mengenai ROS dan perintah-perintah yang ada di dalamnya, terdapat
prefix perintah “roslaunch” yang akan sering digunakan pada penelitian ini.
Prefix ini memiliki arti, jalankan sebuah ros system core yang melakukan
launching dengan file yang memiliki ekstensi “. launch” kemudian jalankan
semua perintah-perintah di dalamnya. Jadi isi dari file launch ini adalah
kumpulan perintah untuk menjalankan node-node beserta parameternya. File ini
juga dapat memanggil file launch lainnya sehingga terjadi sinkronisasi karena
tidak perlu memanggil file launch secara berulang-ulang. Setelah kita
menjalankan file launch mapping, maka yang terjadi selanjutnya adalah terminal
Linux akan berperan sebagai aplikasi berbasis konsol yang menampilkan hasil log
berupa sistem mapping. Terminal tidak bisa di terminate atau dihentikan, karena
akan berakibat pada node-node yang sedang dijalankan pada terminal tersebut.
Saat terminal menjalankan file launch, maka hal yang pertama kali dilakukan
adalah melakukan pengecekan driver dan paket yang digunakan. Pengecekan ini
hanya berlaku pada node yang disebutkan di dalam file launch tersebut, apabila
terdapat dependency yang kurang atau ada beberapa paket pendukung node
tersebut yang belum di install maka terminal akan menampilkan pesan error dan
meminta untuk memasang paket tersebut. Selain menampilkan error karena
paket yang belum terpasang, terkadang terminal juga menampilkan pesan
warning jika terdapat kekurangan pada kode program. Selanjutnya jika semua
driver dan paket sudah tersedia di dalam dependency ROS maka langkah
selanjutnya adalah mengirimkan input dari ketiga sensor, yaitu pemindaian laser
oleh RPLIDAR, akselerasi pergerakan robot oleh IMU, dan putaran odometry roda
oleh encoder motor.
Perlu diperhatikan juga bahwa selagi proses ini berlangsung, secara paralel
terminal juga menjalankan aplikasi Rviz dan juga menampilkan aplikasi rqt robot
steering. Kedua aplikasi ini merupakan aplikasi pendukung yang memiliki
tugasnya masing-masing. Aplikasi Rviz digunakan sebagai visualisasi proses untuk
monitoring hasil dari mapping. Hasil pemosisian robot akan terus di perbaharui
secara simultan, sehingga kita dapat melihat posisi robot pada saat itu .
Sedangkan aplikasi rqt robot steering digunakan menjadi remote control untuk
mengendali robot selama proses mapping terjadi. Aplikasi ini melakukan
subscribe pada topik hoverboard_velocity_controller/cmd_vel yang mana topik
ini akan publish topik geometry/pose untuk menggerakkan motor, sehingga
robot dapat bergerak dan sekaligus memberikan input data sensor odometry
untuk digunakan pada proses selanjutnya.

134
Melanjutkan proses sebelumnya yaitu mengirimkan input sensor ke
mikrokomputer, proses ini dilakukan oleh driver pada masing-masing sensor.
Driver ini memiliki library untuk melakukan pembacaan data sensor, pengolahan
data, dan mengirimkan pesan catatan jika terjadi error. Pada input sensor
pemindaian laser, driver rplidar_ros berperan untuk membaca data dari
tembakan laser dan mengubahnya ke dalam data point cloud. Point cloud
merupakan setumpuk data array yang terdiri dari ribuan data per detiknya,
dalam implementasinya point cloud ini berupa data jarak yang berhasil di scan.
Pada umumnya sensor yang menggunakan teknik laser hanya mampu
mengirimkan jarak pada satu titik fokus, namun sensor RPLIDAR memiliki
kemampuan untuk melakukan pemindaian secara 360 derajat dengan hasil 2000
sampel per satu putaran penuh. Untuk memproses semua data tersebut
dibutuhkan driver khusus yang sudah disediakan oleh RoboPeak yang bisa di
download langsung pada website atau repository GitHub.
Selagi proses pemindaian laser dilakukan, sistem ROS di dalam OS Linux juga
melakukan pembacaan data akselerasi dari sensor IMU. Sensor ini akan
memberikan data berupa percepatan pada sumbu x, y, dan z. X merupakan
sumbu horizontal, jadi nilai akselerasi sumbu x akan berubah jika robot bergerak
secara horizontal seperti berbelok kiri atau kanan. Sedangkan sumbu Y
merupakan sumbu vertikal, jadi nilai akselerasi dari sumbu y akan berubah jika
robot bergerak secara linier seperti maju atau mundur. Sedangkan nilai Z secara
default akan bernilai 9.8 m/s mengikuti percepatan gravitasi bumi. Kemudian
masih di proses paralel yang sama sistem ROS akan menjalankan node odometry
dimana driver hoverboard akan melakukan pembacaan sensor encoder. Data
yang didapatkan adalah sebuah pose dan orientasi dari roda, jadi perubahan
orientasi dari posisi sebelumnya dapat terlihat langsung. Nilai dari orientasi dan
posisi ini dihitung berdasarkan nilai putaran tiap rodanya yang dikonversi ke
dalam radian per sekon.
Proses selanjutnya mulai menggunakan algoritme yang digunakan pada
penelitian ini. Setelah mendapatkan data dari sensor, sistem pada program
mapping akan menggunakan dua algoritme yakni algoritme Hector SLAM dan
algoritme EKF. Pada data sensor laser yang sudah menjadi data jarak ke dalam
point cloud, langkah selanjutnya adalah memberikan data tersebut ke algoritme
Hector SLAM.
E.1.3.5 Perancangan Proses Algoritme Hector SLAM
Hector adalah singkatan dari Heterogeneous Cooperating Team of Robots
yang pada penelitian ini digunakan hanya untuk proses mapping. Maka dari itu
sub proses yang terjadi pada algoritme hanya berfokus pada hector mapping.
Diagram alir mengenai algoritme ini dapat dilihat pada gambar 5.27.

135
Gambar 5.74 Diagram Alir Proses Algoritme Hector SLAM
Pada gambar 5.27 dapat dilihat bahwa proses dimulai dengan mengambil
input dari scanning sensor laser dengan data berupa point cloud dan input dari
transformation pose robot. Setelah itu input scan di olah ke dalam sub proses
Hector Mapping dan menghasilkan 2D map serta pose, sedangkan

136
transformation akan diolah oleh proses Hector Trajectory Server. Detail lebih
lanjut mengenai sub proses Hector Mapping dapat dilihat pada gambar 5.28.

Gambar 5.75 Diagram Alir Sub Proses Hector Mapping

137
Pada gambar 5.28 dapat dilihat bahwa diagram alir terdiri dari beberapa
proses konfigurasi dan terdapat proses inti berupa estimasi pose 2D. Diagram alir
Hector Mapping dikutip dari jurnal peneliti yang dilakukan oleh Aya Souliman
(Souliman, 2019). Dimulai dengan mendapatkan data informasi atau data dari
pemindaian laser, kemudian proses beralir ke konfigurasi Hector Mapping
berdasarkan konfigurasi pada file mapping_default.launch yakni berupa posisi
scanning pada frame /base_link dan posisi odom menjadi frame /odom.
Selanjutnya lakukan proses pengaturan laser value pada parameter
laser_z_min_value, laser_z_max_value, laser_min_dist, laser_max_dist. Setelah
konfigurasi dijalankan oleh program maka selanjutnya adalah menjalankan sub-
proses, yaitu estimasi pose 2D yang diagram alirnya dapat dilihat pada gambar
5.29.

Gambar 5.76 Diagram Alir Sub Proses Estimasi Pose 2D

138
Pada gambar 5.29 dapat dilihat bahwa sub proses dimulai dengan sebuah
proses yang mengatur pose estimate, selanjutnya proses terbagi menjadi 2 yaitu
pose dari iterasi sebelumnya dan pose menggunakan perkiraan awal
transformation. Setelah itu dilanjutkan dengan proses titik akhir proyek ke peta
berdasarkan pose saat ini dan dilanjutkan dengan melakukan perkiraan peta
occupancy probability di titik akhir pemindaian laser. Selanjutnya dilakukan
proses iterasi menggunakan metode Gauss-Newton untuk memperbaiki nilai
estimasi pose yang salah dengan rumus

[ ][ ]
T
∂ S i (ξ ) ∂ Si ( ξ)
H = ∇ M (Si ( ξ) ) ∇ M (S i (ξ) ) (5.1)
∂ξ ∂ξ
Rumus ini akan digunakan untuk melakukan koreksi nilai estimasi pose
menggunakan iterasi. Iterasi ini nantinya akan digunakan sebagai perhitungan
pergerakan robot berdasarkan banyaknya jumlah iterasi yang menghasilkan titik
proyeksi pose robot untuk selanjutnya akan proses akan dikembalikan ke titik
akhir proyek ke peta berdasarkan perkiraan pose. Proses estimasi pose berakhir
di sini yang kemudian akan kembali ke proses di dalam diagram alir pada gambar
5.28.
Sub proses selanjutnya adalah occupancy grid map yang merupakan
tambahan dari diagram alir yang dibuat oleh Aya Souliman. Proses ini akan
memanfaatkan output yang dihasilkan proses estimasi pose 2D. Diagram alir
algoritme occupancy grid diambil dari penelitian Xu, Lichao, dkk (Xu, dkk., 2019).
Berdasarkan gambar 5.30, diagram alir menunjukkan proses dimulai dari
melakukan subscribe topik Pose dan Laser Scan, kemudian lakukan seleksi kondisi
apakah pesan topik tersebut dapat diambil atau tidak. Jika tidak maka lakukan
subscribe topik kembali dan lakukan proses yang sama, namun jika ya maka akan
mendapatkan pesan output Pose dan Laser scan. Proses dilanjutkan dengan
melintasi pose 2D dan pemindaian laser secara berurutan dan akhirnya bisa
memperbaharui peta. Jika pose sudah mencapai titik akhir dari pemindaian laser,
dalam arti laser ditembakkan kemudian bergerak mencapai posisi robot kembali
maka dilakukan proses set dan publish transformasi laser pose, laser scan, dan
grid map. Namun jika tidak maka proses akan dikembalikan ke pelintasan pose
2D dan pemindaian laser secara berurutan untuk nantinya bisa memperbaharui
peta.
Setelah melakukan set dan publish topik, maka akan didapatkan output
berupa pesan laser pose, laser scan, dan grid map. Output ini akan digunakan
kembali ke proses awal yaitu subscribe pose dan laser scan topik sehingga
algoritme akan terus berulang menciptakan proses recursive. Diagram alir proses
ini dapat dilihat pada gambar 5.30.

139
Gambar 5.77 Diagram Alir Sub Proses Occupancy Grid Map
Setelah proses occupancy selesai, maka kita sudah mendapatkan data grid
map yang menjadi output dari proses occupancy grid map. Map ini digunakan
sementara untuk nantinya disimpan dan digunakan pada proses navigasi.
Kembali mengacu pada gambar 5.28, ketika proses mapping di akhiri maka
proses selesai, namun jika belum maka proses akan terus berlanjut hingga
nantinya di terminate paksa melalui terminal.
E.1.3.6 Perancangan Proses Algoritme Extended Kalman Filter (EKF)
Proses algoritme EKF digunakan untuk melakukan koreksi terhadap lokalisasi
robot. Pada penelitian sebelumnya, algoritme Hector SLAM saja tidak akan
mencukup untuk membaca posisi terkini robot dikarenakan area pengujian yang
sangat luas, yaitu gudang sehingga pada saat laser tidak mendeteksi halangan
sama sekali maka bisa menghasilkan pose estimate yang keliru. Maka dari itu

140
digunakan algoritme EKF sekaligus untuk menggabungkan 2 buah input dari
sensor IMU dan odometry. Diagram alir dari algoritme EKF dapat dilihat pada
gambar 5.31.

Gambar 5.78 Diagram Alir Proses Algoritme Extended Kalman Filter (EKF)
Pada gambar 5.31 dapat dilihat bahwa proses dari algoritme EKF melakukan
proses secara bersamaan dengan asinkron. Dimulai dari melakukan perkiraan
kesalahan asli, perkiraan asli, pengambilan input dari data IMU dan data
odometry. Semua ini dilakukan secara bersamaan sehingga pada proses
perkiraan kesalahan asli didapatkan nilai kesalahan dalam perkiraan dan
kesalahan dalam data di dapatkan dari perkiraan sebelumnya. Untuk proses
perkiraan asli data diambil dari hasil pembaharuan perkiraan yang secara default
pada awal mula proses dimulai perkiraan asli diambil dari nilai perkiraan awal
berupa covariant sensor. Langkah selanjutnya adalah mendapatkan input dari
data sensor IMU dan data odometry melalui topik yang dihasilkan oleh masing-
masing driver, lalu kemudian dilakukan proses pengukuran nilai.
Setelah itu proses berlanjut ke menghitung nilai dengan Kalman Gain untuk
memprediksi posisi dan kesalahan perkiraan dengan input kesalahan dalam
perkiraan dan kesalahan dalam data. Nilai prediksi ini dilanjutkan ke proses
menghitung perkiraan saat ini yang juga mendapatkan input dari perkiraan
sebelumnya. Setelah menghitung perkiraan saat ini, proses dilanjutkan dengan
proses memperbaharui perkiraan yang hasil akhirnya berupa output frame
transformasi EKF dan topik baru berupa /odom_combined yang didapat
141
berdasarkan posisi odometry dan IMU pada robot. Proses memperbaharui
perkiraan dikembalikan ke proses perkiraan asli sehingga terjadi proses recursive.
Setelah melakukan proses algoritme Hector SLAM dan EKF maka dari masing-
masing algoritme akan menghasilkan output. Algoritme hector SLAM
memperbaharui topik /scan sehingga bisa digunakan untuk proses occupancy
grid pada aplikasi Rviz, selain itu algoritme ini juga menghasilkan frame
penggabungan transformasi map dengan odometry yang diberi nama
“map_to_odom”. Selain itu juga menghasilkan frame hector_mapping dan
hector_trajectory yang dimanfaatkan untuk membuat map. Sedangkan algoritme
EKF menghasilkan topik baru dengan nama /odom_combined, begitu pula
dengan frame transformasinya dengan nama odom_combined. Semua hasil
lokalisasi yang berupa posisi robot dan transformasinya digunakan untuk
melakukan update posisi terkini yang pada akhirnya dikirimkan ke Rviz dan
output topik /map. Dengan gabungan dua algoritme ini akan menghasilkan
transformasi robot yang lebih akurat dan proses mapping akan berjalan dengan
lancar. Output topik /map tadi yang berupa peta dalam bentuk sementara akan
disimpan menjadi output file baru dengan ekstensi .yaml dan .pgm yang nantinya
digunakan pada proses navigasi. Namun hal ini berlaku jika proses map sudah
selesai, jika belum maka proses akan dikembalikan ke algoritme Hector SLAM
hingga semua area sudah di mapping. Selama proses berlangsung posisi robot
dan hasil map sementara dikirimkan ke Rviz sehingga kita dapat melihat hasil dari
mapping.
Ini adalah keseluruhan dari proses mapping, secara garis besar dapat
diperhatikan kembali pada gambar 5.26. Output dari proses ini yang berupa file
map akan digunakan pada program selanjutnya yaitu navigasi. Pada program
navigasi terdapat pula algoritme EKF dengan proses yang sama persis, maka dari
itu pada sub proses Algoritme EKF di program navigasi tidak akan dijelaskan
karena sudah dijelaskan pada proses mapping. Metode dan alur yang digunakan
juga sama persis, hanya perlu mengganti algoritme Hector SLAM menjadi AMCL.
AMCL digunakan untuk proses lokalisasi robot berdasarkan bentuk peta yang
sudah dihasilkan proses mapping. Sub proses selanjutnya akan membahas
mengenai perancangan navigasi sebagai bentuk lanjutan dari program utama.

142
E.1.3.7 Perancangan Program Navigasi

Gambar 5.79 Diagram Alir Program Navigasi

143
Diagram alir dari perancangan keseluruhan program ditunjukkan pada
gambar 5.32. Pada gambar tersebut kita dapat melihat bahwa terdapat banyak
proses yang saling terkait satu dengan yang lain. Diagram alir ini menjelaskan
mengenai node-node yang dibutuhkan dalam proses navigasi, seperti
menjalankan semua driver sensor kemudian membaca sensor, penggabungan
sensor teknik fusion sensor, lokalisasi, transform frame, dan parameter-
parameter yang digunakan. Semua hal ini dijadikan satu proses besar yang diberi
nama autonomous_nav. Semua proses yang terjadi di dalam program ini
digabungkan ke dalam file dengan ekstensi launch. Proses awal pada navigasi
kurang lebih sama seperti proses mapping, yakni dimulai dari melakukan input
pada terminal berupa perintah $ roslaunch autonomous_nav.launch. Maka
selanjutnya proses berpindah ke terminal dengan menjalankan semua node dan
parameter pada file launcher tersebut. Dilanjutkan dengan membuka program
Rviz dan melakukan pengecekan pada semua driver dan paket yang digunakan,
jika didapati adanya kesalahan maka akan mengirimkan pesan error dan program
di terminate untuk nantinya dievaluasi kembali mengenai pesan error tersebut.
Namun jika semua driver dan paket sudah tersedia maka dilanjutkan dengan
proses paralel dengan melakukan pembacaan pada masing-masing sensor yang
nantinya digunakan untuk proses subscribe.
Pada aplikasi Rviz terdapat dua tool utama yang digunakan untuk melakukan
navigasi, yaitu 2D Pose Estimate dan 2D Nav Goal. 2D Pose estimate digunakan
untuk mengkonfirmasi ulang posisi robot berdasarkan posisi robot sebenarnya di
dunia nyata. Sedangkan untuk 2D Nav Goal berguna untuk memberikan input
berupa koordinat tujuan robot yang digunakan untuk input awal proses path
planning. Untuk melakukan navigasi diperlukan 2 input ini, terutama input dari
2D Nav Goal. Kembali ke proses pembacaan data sensor, nilai pemindaian laser
akan diolah oleh driver RPLIDAR sehingga didapatkan output topik baru
berupa /scan yang merupakan data point cloud. Selanjutnya pada input
akselerasi robot akan dibaca oleh sensor IMU yang di proses menggunakan
driver IMU sehingga menghasilkan output topik baru berupa /imu. Selanjutnya
pada input nilai putaran roda akan dibaca oleh driver hoverboard yang
menghasilkan topik baru berupa /odom yang merupakan data posisi roda dan
orientasinya. Terdapat tambahan berupa input dari file map yang disimpan di
folder tertentu dengan nama maps. File ini akan di generate oleh paket map
server dan dikirimkan ke dalam sub proses algoritme AMCL sebagai input
awalnya begitu pula dengan data yang didapat dari sensor RPLIDAR
menggunakan topik /scan. Sedangkan data dari sensor IMU dan odometry akan
di kirimkan ke sub proses Fusion Sensor EKF menggunakan topik /imu/data
dan /odom. Diagram alir dari sub proses AMCL dapat dilihat pada gambar 5.33
sedangkan untuk diagram alir dari sub proses EKF dapat dilihat pada gambar
5.35.

144
E.1.3.8 Perancangan Proses Algoritme Adaptive Monte Carlo Localization
(AMCL)
Proses algoritme AMCL digunakan untuk melakukan koreksi terhadap
lokalisasi robot. AMCL memanfaatkan file map yang sudah dibuat di program
mapping sebelumnya. Detail mengenai algoritme ini dirangkum ke dalam
diagram alir yang dapat dilihat pada gambar 5.33.

Gambar 5.80 Diagram Alir Algoritme Adaptive Monte Carlo Localization (AMCL)
Pada gambar 5.33 dapat dilihat bahwa proses diagram alir terdiri dari
beberapa proses dan seleksi kondisi. Diagram alir ini dikutip dari penelitian yang
dilakukan oleh Gang Peng dan kawan-kawan (Peng, dkk., 2018). Dalam penelitian
tersebut disebutkan bahwa untuk memecahkan masalah selama algoritma AMCL
untuk memperkirakan pose robot sebagai deviasi pusat tertimbang dari kawanan
partikel di lingkungan tidak terstruktur yang kompleks, penelitian ini
menambahkan pencocokan pemindaian yang cocok dengan pemindaian laser
dengan peta, seperti yang ditunjukkan pada Gambar 5.33. Proses yang terjadi
dalam algoritme AMCL adalah yang pertama kumpulan partikel (point cloud)
yang didapat dari data laser. Kemudian dilakukan simulasi pergerakan partikel
sebagai bentuk pose estimate. Selanjutnya dilakukan perhitungan nilai skor tiap
partikel. Setelah dilakukan perhitungan skor tiap partikel, dilakukan proses scan
matching, proses ini menggunakan rumus matriks Hessian dan gabungan dari
metode Gaussian-Newton iteration untuk melakukan kira-kira menggantikan
model regresi non-linier. Detail mengenai proses ini dapat dilihat pada gambar
5.34.

145
Gambar 5.81 Diagram Alir Sub Proses AMCL: Scan Matching
Pada gambar 5.34 dapat dilihat bahwa setelah memasuki proses scan
matching, pertama akan dilakukan seleksi kondisi terlebih dahulu untuk
mengetahui apakah gerombolan partikel (particle cloud) sedang dalam posisi
terpusat atau terkonsentrasi (solusi dari estimasi pose konvergen). Jika
kondisinya adalah tidak, maka akan proses akan langsung di terminate dan
proses scan matching sudah selesai, sehingga berlanjut ke proses sampel ulang

146
partikel. Hal ini dikarenakan algoritme scan matching digunakan untuk lebih
mengoptimalkan pose. Sehingga hanya akan memproses data-data point cloud
yang terkonsentrasi saja. Metode ini merupakan bentuk dari koreksi data laser
yang error dan tidak bisa digunakan untuk menentukan posisi.
Setelah menginisialisasi nilai dari scan match, maka langkah selanjutnya
adalah dengan melakukan kalkulasi iterasi Gaussian-Newton dilakukan layer per
layer dari resolusi rendah hingga ke resolusi tinggi pada peta multiresolution.
Kemudian dilakukan seleksi kondisi, jika Jumlah maksimum iterasi tercapai, atau
kurang dari kesalahan maksimum maka didapatkan output berupa solusi yang
cocok. Setelah sebelumnya melakukan iterasi dan mendapatkan pose yang lebih
akurat dari sebelumnya. Dilakukan seleksi kondisi untuk menyeleksi apakah hasil
dari perhitungan sudah merupakan hasil dari peta resolusi tertinggi, jika belum
maka artinya error yang dihasilkan lebih besar dari threshold yang didapat, ini
berarti terdapat solusi scan matching yang error dan itu harus di batalkan.
Setelah dibatalkan maka akan dikembalikan ke proses awal yaitu inisialisasi nilai
awal dari scan match. Namun jika peta sudah memiliki resolusi tertinggi maka,
dilakukan solusi pencocokan pemindaian untuk memenuhi persyaratan. Hal ini
dikarenakan pencocokan pemindaian menggunakan solusi AMCL sebagai nilai
awal, jika solusi AMCL sangat berbeda dari pose sebenarnya, pencocokan
pemindaian akan gagal. Jadi jika hasil sangat berbeda dari pose sebelumnya
maka hasil perhitungan akan diabaikan dan proses scan matching di terminate ke
selesai. Namun jika persyaratan sudah memenuhi kriteria dan tidak terlalu
melebihi nilai sebelumnya, maka data dimasukkan ke dalam gerombolan particle
AMCL dan hasil dari proses filtrasi data point cloud akan dikembalikan ke seleksi
kondisi awal, jika terdapat gerombolan partikel yang terpusat kembali, maka
lakukan kalkulasi ulang, begitu seterusnya hingga terbentuk proses yang
recursive.
E.1.3.9 Perancangan Proses Algoritme Lokalisasi EKF pada Navigasi
Proses algoritme EKF digunakan untuk melakukan koreksi terhadap lokalisasi
robot. Untuk dapat melakukan lokalisasi dengan baik diperlukan gabungan dari
banyak transformasi yang membangun kesatuan robot. Dalam penelitian ini
penulis menggunakan sensor IMU dan odometry sebagai validitas data
pergerakan robot dalam melakukan navigasi, selain dari menggunakan data
laser. Untuk menggabungkan kedua sensor ini dibutuhkan algoritme fusion,
maka dari itu digunakan algoritme EKF sekaligus sebagai filter untuk memvalidasi
data yang didapat dari data odometer raw. Secara garis besar proses EKF pada
pemetaan dan navigasi tidaklah berbeda. Diagram alir dari algoritme EKF dapat
dilihat pada gambar 5.35.

147
Gambar 5.82 Diagram Alir Proses Algoritme Lokalisasi EKF pada Navigasi
Pada gambar 5.35 dapat dilihat bahwa proses dari algoritme EKF melakukan
proses secara bersamaan dengan asinkron. Dimulai dari melakukan perkiraan
kesalahan asli, perkiraan asli, pengambilan input dari data IMU dan data
odometry. Semua ini dilakukan secara bersamaan sehingga pada proses
perkiraan kesalahan asli didapatkan nilai kesalahan dalam perkiraan dan
kesalahan dalam data di dapatkan dari perkiraan sebelumnya. Untuk proses
perkiraan asli data diambil dari hasil pembaharuan perkiraan yang secara default
pada awal mula proses dimulai perkiraan asli diambil dari nilai perkiraan awal
berupa covariant sensor. Langkah selanjutnya adalah mendapatkan input dari
data sensor IMU dan data odometry melalui topik yang dihasilkan oleh masing-
masing driver, lalu kemudian dilakukan proses pengukuran nilai.
Setelah itu proses berlanjut ke menghitung nilai dengan Kalman Gain untuk
memprediksi posisi dan kesalahan perkiraan dengan input kesalahan dalam
perkiraan dan kesalahan dalam data. Nilai prediksi ini dilanjutkan ke proses
menghitung perkiraan saat ini yang juga mendapatkan input dari perkiraan
sebelumnya. Setelah menghitung perkiraan saat ini, proses dilanjutkan dengan
proses memperbaharui perkiraan yang hasil akhirnya berupa output frame
transformasi EKF dan topik baru berupa /odom_combined yang didapat
berdasarkan posisi odometry dan IMU pada robot. Proses memperbaharui
perkiraan dikembalikan ke proses perkiraan asli sehingga terjadi proses recursive.
148
Output yang dihasilkan dari algoritme lokalisasi ini adalah robot position dan
transformasi. Output ini digunakan untuk melakukan update posisi yang
dikirimkan ke aplikasi Rviz dan proses perencanaan jalur. Di dalam proses path
planning atau perencanaan jalur terdapat beberapa input dari berbagai hal,
seperti input koordinat tujuan 2D Nav Goal dari aplikasi Rviz, input deteksi
halangan dari topik /scan, dan input pembaharuan posisi robot terkini. Input ini
akan dikirimkan ke proses path planning yang diagram alirnya dapat dilihat pada
gambar 5.36.

Gambar 5.83 Diagram Alir Sub Proses Path Planning

149
Pada gambar 5.36 kita dapat melihat bahwa tahap awal pada diagram alir
dimulai dengan menampilkan input-input yang diterima pada proses ini, dimulai
dari input lokalisasi berupa robot pose dan transformasi, input topik /map, input
koordinat tujuan, dan input topik /scan. Setiap input ini diproses masing-masing
menjadi cost map dan robot pose pada node move base. Misalnya input dari
robot pose & transformation yang merupakan frame dari lokalisasi robot akan
digunakan pada proses update posisi. Kemudian topik /map digunakan pada
proses Global Cost Map, cost map di sini mengacu pada proses yang terdapat
pada paket move base, di dalam move base kita bisa mengatur parameter
costmap yang digunakan. Cost map sangat penting karena menjadi variabel
halangan untuk proses path planning, baik itu halangan diam ataupun halangan
bergerak. Pada input topik /scan juga digunakan pada proses Local Cost Map,
kurang lebih sama seperti Global Cost Map bedanya cost map ini digunakan
dalam jarak pendek dan terbaca ketika topik /scan mendeteksi halangan.
Kemudian yang terakhir adalah input dari koordinat tujuan yang berasal dari 2D
Nav Goal Rviz, input ini digunakan pada proses Move Base Goal, dimana nilai dari
koordinat akan di publish ke move base goal, sehingga move base akan meminta
global path planning untuk membuatkan jalur terpendek dari posisi robot saat ini
menuju titik koordinat yang di masukkan.
Kemudian dilakukan seleksi kondisi jika koordinat tujuan sudah ditentukan
maka akan memberikan pesan global path planning ke move base, namun jika
tidak maka proses akan kembali di ulang ke awal sampai nantinya koordinat
tujuan sudah ditentukan. Ketika koordinat tujuan sudah ditentukan maka akan
mengirimkan pesan global path planning ke move base, sehingga akan
memerintahkan global path planning untuk menentukan jalur terpendek
menggunakan Algoritme Dijkstra. Algoritme Dijkstra mendapatkan 3 input
sekaligus dan mengolahnya ke dalam sub proses Algoritme Dijkstra. Sebagai
tambahan, penggunaan algoritme global dapat diubah dengan mengganti node
global planner di dalam kode paket move base. Penjelasan lebih detail dan
diagram alir mengenai sub proses algoritme Dijkstra dapat dilihat pada gambar
5.37.

150
E.1.3.10 Perancangan Proses Algoritme Dijkstra

Gambar 5.84 Diagram Alir Algoritme Dijkstra


Pada gambar 5.37 dapat dilihat bahwa berdasarkan diagram alir, algoritme
Dijkstra dimulai dari memasukkan input awal, tujuan, cost map, dan resolusi ke
dalam parameter fungsi ini. Kemudian terdapat inisialisasi variabel yang

151
dibutuhkan dalam fungsi seperti, variabel open_list, close_list, parents, g_costs,
shortest_path, dan path_found. Lalu terdapat pula inisialisasi fungsi
find_neighbors yang berisikan fungsi untuk melakukan kunjungan ke delapan sisi
tetangga dan inisialisasi variabel array neighbor dan lethal_cost. Tidak lupa untuk
melakukan inisialisasi bahwa nilai free space pada cost map = open_list,
sedangkan obstacle = lethal_cost. Kemudian melakukan inisialisasi pada titik
awal atau node awal berupa indeks awal = parent node dan node awal = g_cost =
0. Selanjutnya semua inisialisasi fungsi dan variabel digabungkan ke dalam fungsi
Dijkstra.
Hal pertama yang dilakukan adalah melakukan looping dengan kondisi, hanya
akan berhenti jika array open_list bernilai kosong. Logika ini digunakan untuk
melakukan pencarian ke seluruh area free space yang ada, jadi selama masih
terdapat nilai pada array open_list maka proses pencarian akan terus berlanjut
hingga target ditemukan. Jika hasilnya true maka program akan mengubah status
node baru menjadi current_node, setelah itu dilakukan seleksi kondisi apakah
current_node merupakan titik koordinat target. Jika true maka status
path_found akan diubah menjadi True dan mengirimkan break untuk
menghentikan looping. Namun jika tidak maka akan dilakukan pencarian ke
seluruh tetangga terdekat dari current_node sebanyak 8 node berdasarkan
maksimal sisi yang bisa diraih dalam 1 node.
Setelah melakukan kunjungan ke node tetangga, maka lakukan seleksi
kondisi untuk memeriksa apakah tetangga sudah pernah dikunjungi. Jika hasilnya
true, maka akan masuk ke proses penambahan jumlah close_list berdasarkan
indeks current_node untuk mencegah mengunjungi node ini lagi dan ubah grid
peta berdasarkan indeks current_node menjadi orange. Jika hasilnya false, maka
akan lakukan proses untuk update nilai g_cost baru dengan menambahkan
g_cost tetangga + 1. Selanjutnya lakukan seleksi kondisi untuk mengetahui
apakah status neighbor atau tetangga adalah open_list, jika hasilnya false maka
nilai g_cost dan parent pada current_node akan tetap atau tidak berubah dan
node akan dimasukkan ke dalam daftar open_list yang kemudian dilanjutkan
dengan proses penambahan array indeks close_list berdasarkan posisi
current_node dan grid peta menjadi orange. Setelah itu proses akan
dikembalikan ke open_list lagi untuk melakukan pengulangan selama masih
terdapat data pada open_list.
Namun jika neighbor yang baru merupakan open_list (indeksnya open_list)
maka akan memasuki seleksi kondisi lagi, yakni jika g_cost saat ini kurang dari (<)
g_cost tetangga, maka semua tetangga akan diberikan nilai g_cost yang beru
dengan melakukan update nilai g_cost tetangga = g_cost yang sudah ditambah 1.
Dengan begini tetangga yang baru dikunjungi akan mendapatkan cost+1 dan
parent status dari current_node. Setelah itu proses dilanjutkan dengan
memasukkan tetangga yang sudah di update tadi ke close_list dan ubah grid peta
menjadi orange kemudian proses kembali lagi ke pengulangan open_list. Proses
ini terus berlangsung hingga current_node mencapai titik koordinat tujuan, titik
diketahui karena pada parameter Dijkstra terdapat variabel goal yang berisi letak

152
koordinat dalam matriks 2 dimensi, yaitu berupa nilai koordinat x dan y. Jika hal
ini terjadi maka akan memasuki proses penemuan jalur dengan melakukan
perubahan status pada variabel path_found = True dan fungsi break yang mampu
menghentikan looping atau pengulangan. Perubahan status pada variabel
path_found ditujukan untuk fase rekonstruksi jalur dengan proses backtracking
atau penelusuran jalur secara terbalik dari titik awal menuju titik tujuan
berdasarkan data yang ada di close_list. Jika status path_found == false yang
artinya jalur tidak ditemukan sama sekali, maka akan melakukan skip pada fase
rekonstruksi dan mengembalikan nilai berupa output dengan pesan “path not
found”. Adapun hasil yang didapatkan akan mengembalikan nilai output berupa
variabel shortest_path proses algoritme Dijkstra telah selesai.
E.1.3.11 Perancangan Proses Algoritme Dynamic Local Approach (DWA)

153
Gambar 5.85 Diagram Alir Algoritme Dynamic Window Approach

Pada gambar 5.38 ditunjukkan diagram alir algoritme dynamic window


approach yang dikutip dari penelitian yang dilakukan oleh Li-sang Liu (Liu, dkk.,
2021), dalam penelitiannya Li-sang Liu menjelaskan diagram alir ini dengan
keterangan rumus yang terjadi di dalam setiap prosesnya. Algoritme ini dimulai
dengan melakukan analisis data posisi robot yang didapat dari data localization
AMCL dan EKF. Kemudian ada juga data dari halangan bergerak yang didapat dari
topik /scan yang mengenai halangan dan dianggap sebagai cost map. Proses
dilanjutkan dengan melakukan sampel kecepatan pada robot saat sedang
bergerak, proses ini menggunakan kisaran dari kecepatan robot maksimum dan
minimumnya menggunakan rumus:
V m ={ ν ∈ [V min , V max ] , ω ∈ [ ω min , ω max ] }. (5.2)

Untuk setiap kecepatan sampel, lakukan simulasi maju dari kondisi robot saat
ini untuk memprediksi apa yang akan terjadi jika kecepatan sampel diterapkan
untuk beberapa waktu (pendek). Setelah melakukan pengambilan sampel
kecepatan, dilakukan proses untuk menghasilkan jalur lintasan. Dilakukan
pemantauan dengan seleksi kondisi, apakah akan terjadi tabrakan dengan
rintangan. Jika hasilnya true, maka diperlukan hasil jalur lintasan yang baru
menggunakan fungsi hasilkan jalur lintasan. Fungsi ini menggunakan fungsi
standar DWA dengan rumus:
G ( ν , ω )=γ × vel ( ν , ω ) +α ×h eading ( ν , ω ) + β × distant ( ν ,ω ) (5.3)
Fungsi ini melakukan perhitungan kemungkinan ke setiap sudut dengan arah
lintasan yang berbeda-beda. Proses ini melakukan evaluasi (skor) setiap lintasan
yang dihasilkan dari simulasi ke depan, menggunakan metrik yang
menggabungkan karakteristik seperti: kedekatan dengan rintangan, kedekatan
dengan tujuan, kedekatan dengan jalur global, dan kecepatan. Ilustrasi mengenai
proses ini dapat dilihat pada gambar 5.39.

154
Gambar 5.86 Simulasi Maju Prediksi Pergerakan Robot
Namun jika hasilnya adalah false, yang artinya robot tidak akan bertabrakan
dengan rintangan. Maka akan melakukan proses pemilihan lintasan yang optimal
dari jalur lintasan sebelumnya. Proses ini memilih lintasan dengan skor tertinggi
dan mengirim kecepatan terkait ke base robot. Jika proses telah selesai lakukan
seleksi kondisi, jika jalan jalur lintasan telah selesai maka proses algoritme DWA
dapat diselesaikan, namun jika tidak maka lakukan pengulangan dari proses
menghasilkan jalur lintasan.
Setelah melakukan tahapan algoritme DWA maka proses akan kembali ke
diagram perencanaan jalur. Dihasilkan output berupa perencanaan jalur terdekat
lokal dan melakukan proses pembaharuan jalur lintasan yang ada pada output
perencanaan jalur utama dari titik koordinat awal hingga koordinat tujuan.
Setelah itu maka proses perencanaan jalur telah selesai.
Kembali ke program utama navigasi, alir terhenti pada sub proses path
planning dengan Dijkstra dan DWA, setelah jalur dibuat maka akan mengirimkan
jalur tersebut ke geometry_msgs/Twist dan mengubah nilai menjadi kecepatan,
vector, dan pose. Selama proses ini robot akan mulai bergerak hingga terjadi
beberapa perubahan kondisi. Jika koordinat tujuan sudah tercapai, maka akan
mengirimkan pesan “goal reached” dan program navigasi telah selesai. Namun
jika tidak maka akan dilakukan seleksi kondisi kembali, apakah navigasi
dibatalkan paksa, jika ya maka mengirimkan pesan navigasi selesai dan robot
berhenti. Namun jika tidak, maka akan memberikan input topik cmd_vel berupa
nilai kecepatan dalam m/s dan motor pun akan berputar sehingga robot
bergerak. Output dari motor akan menghasilkan putaran roda yang nantinya
digunakan untuk data odometry. Proses ini terus berulang hingga robot
mencapai titik tujuan dan akhirnya program utama navigasi selesai.
Tahapan perancangan telah selesai, kini memasuki tahapan implementasi
sistem untuk diimplementasikan secara riil. Pada tahapan ini penulis akan
mendokumentasikan bagaimana sistem tersebut berbentuk dan bagaimana
pemrograman dari sistem ini bekerja.

E.2 Implementasi Sistem


Implementasi sistem merupakan realisasi dari tahapan perancangan yang
telah disusun sebelumnya untuk diimplementasikan secara riil. Dalam
implementasi sistem ini akan terbagi menjadi 3 bagian yaitu implementasi
prototype sistem, implementasi perangkat keras, dan implementasi perangkat
lunak. Pada tiap proses implementasi akan dijelaskan terkait proses untuk
pengaplikasian secara langsung menjadi sebuah satu sistem yang utuh.

E.2.1 Implementasi Skematis Prototype Sistem


Implementasi skematis prototype sistem merupakan bentuk implementasi
dari desain yang telah dirancang sebelumnya, mulai dari chassis kayu, chassis 3D,
dan prototype keseluruhan sistem. Pada perancangan chassis badan robot dari

155
kayu sebelumnya pada dapat dilihat gambar 5.1, digunakan bahan dengan dasar
papan kayu sebagai badan robot bagian depan untuk menyimpan beberapa
komponen sekaligus tempat barang akan ditaruh. Dokumentasi mengenai hasil
pembuatan chassis badan robot dari kayu dapat dilihat pada gambar 5.40.

Gambar 5.87 Dokumentasi Hasil Pembuatan Chassis Badan Robot


Pada gambar 5.40 diperlihatkan hasil dari pembuatan chassis bagian robot
yang terbuat dari kayu. Pada implementasinya dibutuhkan 4 buah papan kayu
dengan ukuran minimal 40 cm x 40 cm. Papan kayu pertama dijadikan sebagai
alas dan papan kedua lagi dijadikan sebagai penahan bagian samping. Penahan
bagian samping ini berasal dari 1 papan 40 cm x 40 cm yang di potong
menggunakan gergaji menjadi 4 bagian yang masing-masing berukuran 10 cm x
40 cm. Bagian penahan ini hanya digunakan untuk sisi kiri, kanan, dan belakang.
Bagian sisi depan akan di isi dengan papan kayu yang ketiga yang di potong
berukuran 30 cm x 40 cm. Kemudian papan yang ke empat digunakan sebagai
penutup atas tanpa perlu di potong. Penutup ini berfungsi sebagai dudukan dari
barang yang akan dibawa oleh robot dan sekaligus sebagai pelindung komponen
di dalamnya dari tetesan air.
Setelah membuat chassis badan robot, langkah selanjutnya adalah membuat
chassis untuk menyimpan motherboard dan baterai yang kita sebut sebagai
chassis mainboard. Chassis ini dibuat menggunakan cetakan 3D print yang
mencetak beberapa bagian dari semua desain yang ada pada gambar 5.2 dan
menggabungkannya menjadi satu. Gambar 5.41 merupakan dokumentasi dari
proses pencetakan desain menggunakan 3D printer.

156
Gambar 5.88 Dokumentasi Pencetakan Desain Dengan 3D Printer
Semua bagian dirancang untuk dicetak pada printer 3D dengan teknologi
FFM/FDM. Volume cetak setidaknya minimal harus berukuran 300mm x 300mm
x 200mm. Gambar 5.41 merupakan gambar mesin 3D print yang digunakan
untuk mencetak bagian mainboard robot. Bahan yang digunakan untuk
mencetak adalah filamen 3D dengan tipe PETG sebanyak 2 kilogram. PETG
memiliki titik leleh reaksi lebih tinggi dari PLA sehingga dapat digunakan di
bawah terik matahari (titik leleh terendah 70-80 derajat Celsius) dan titik leleh
hingga ke bentuk cairan juga cukup tinggi walau tidak setinggi ABS (titik leleh
bentuk cair berada pada 230-240 derajat Celsius. Titik ini digunakan sebagai
acuan minimal panas yang dibutuhkan oleh 3D print untuk mencairkan PETG.
Penggunaan PETG juga ramah lingkungan dan tidak beracun serta aman jika
tertelan (tidak mengandung toxic, murni plastik dan campuran bahan penguat
lainnya akan tetapi tetap tidak boleh dimakan). ABS memiliki sifat beracun dan
berbahaya saat melakukan 3D print tanpa penutup karena menghasilkan gas
buang yang berbahaya jika terhirup. Detail mengenai bagian yang dicetak dapat
dilihat pada tabel 5.
Tabel 5.26 Daftar Bagian Yang Dicetak
Nama bagian Berat Durasi Jumlah
Motor lower 800 gram 96 jam 1
Motor upper 486 gram 52 jam 1
Wheel arch 406 gram 36 jam 2
Sensor base 90 gram 8 jam 1
Upper cover 80 gram 7 jam 1
Motor clamp 25 gram 2 jam 2
Motor cover 48 gram 5 jam 1

157
Sebelum melakukan cetak, desain yang sudah dibuat harus di konversi ke file
yang dapat dibaca oleh 3D printer menggunakan aplikasi Creality Slicer. Di dalam
aplikasi Creality Slicer terdapat banyak pengaturan yang dapat diubah
sedemikian rupa mengikuti jenis filamen yang digunakan. Pengaturan yang
digunakan untuk mencetak daftar bagian pada tabel 5.5 menggunakan aturan
sebagai berikut:
 0.2 mm Layer Height
 0.4 mm Nozzle
 4 Bottom and 4 Top Layer
 4 Perimeter
 18% Infill
 Suhu Nozzle 240o C
 Suhu Plat/Alas 70o C
 Speed printing 100%
Hasil cetak 3D print digabungkan satu sama lainnya menggunakan brass nut.
Lubang brass nut sudah tersedia pada desain 3D dan semua lubang yang ada
harus dipasangi brass nut sebagai dudukan yang mengunci baut. Untuk
memasang brass nut diperlukan tambahan mesin bor listrik dan solder. Brass nut
sering digunakan pada kayu sebagai dudukan dari baut agar tidak merusak
sekaligus mengunci baut. Teknik memasangnya adalah dengan menambahkan
area permukaan lubang dengan mata bor yang ukurannya sebesar lubang, ini
dilakukan agar ketika solder memanaskan brass nut dan dimasukkan ke dalam,
sisa filamen yang terjebak di dalam lubang tidak keluar dari lubang brass nut, hal
ini dapat merusak brass nut karena disusupi oleh filamen. Dokumentasi dari
pemasangan brass nut dapat dilihat pada gambar 5.42.

Gambar 5.89 Dokumentasi Pemasangan Brass Nut


Setelah semua komponen cetak di pasang dengan brass nut, langkah
selanjutnya adalah menggabungkan chassis mainboard dengan chassis badan

158
kayu menggunakan baut dan mur lock. Terkait jumlah baut dan mur yang
dibutuhkan dapat dilihat pada tabel 5.6.
Tabel 5.27 Mur, Baut, Dan Sekrup Yang Digunakan
Nama Jumlah Keterangan
Knurled brass nut M3 - tinggi 4mm min. 20 dudukan baut M3 di dalam
bagian 3D
Knurled brass nut M4 - tinggi 8mm min. 20 dudukan yang sambung
wheel arch dengan motor
lower
Cylinder screw M2 x 5 4 mengunci sensor RPLIDAR
dengan bagian sensor_base
Cylinder screw M3 x 10 2 mengunci bagian depan mow
upper
Cylinder screw M3 x 32 2 mengunci bagian belakang
mow upper
Cylinder screw M4 x 16 8 mengunci arch wheel ke
motor lower
Cylinder screw M5 x 25 10 mengunci motor lower
dengan chassis kayu
Cylinder screw M5 x 40 8 mengunci caster wheel
dengan chassis kayu
Cylinder screw M8 x 30 4 mengunci motor hoverboard
di dalam motor lower
Bolt Screw M3 x 16 2 mengunci bagian motor
upper ke motor lower sisi
depan
Bolt Screw M3 x 20 4 mengunci bagian upper cover
dengan motor upper
Bolt Screw M3 x 30 1 mengunci bagian motor
upper ke motor lower sisi
belakang
Bolt Screw M3 x 40 2 mengunci bagian motor
upper ke motor lower sisi
belakang
Angle Bracket Clips 3 menahan bagian bawah
chassis kayu bagian tengah
Bolt Screw Stainless 6 mengunci bracket dengan

159
chassis kayu
Lock Nuts M4 8 menjepit motor clamp
Lock Nuts M5 30 menjepit bagian baut M5
Washers M5 20 alas dari screw dan nuts

Gambar 5.90 Hasil Assembling Chassis Robot


Daftar kebutuhan baut, mur, sekrup, dan brass nut yang digunakan,
merupakan bentuk implementasi dari penelitian ini. Hasil dari proses assembling
ini dapat dilihat pada gambar 5.43, dimana robot sudah berhasil terpasang
dengan sedikit penambahan tampilan.
Setelah komponen dan chassis telah siap, tahap selanjutnya kita perlu
melakukan assembling komponen menjadi satu kesatuan robot. Hal ini
merupakan akhir dari perancangan skematis prototype sistem. Hasil
implementasi robot dapat dilihat pada gambar 5.44 dan 5.45.

160
Gambar 5.91 Implementasi Prototype Sistem Robot Tampak Samping

Gambar 5.92 Implementasi Prototype Sistem Robot Tampak Atas


Hasil akhir dari implementasi sistem adalah sebuah prototype robot
pengantar barang dengan dua roda penggerak dan satu roda statis. Seperti
dalam perancangannya bahwa semua komponen ditelakan di dalam chassis
badan yang terbuat dari kayu. Kemudian bagian depan robot ditambahkan
dudukan untuk menaruh sensor RPLIDAR. Dokumentasi mengenai hasil dari
implementasi prototype sistem dapat dilihat pada gambar 5.46 untuk bagian
yang tampak samping dan gambar 5.47 untuk bagian yang tampak atas.

E.2.2 Implementasi Perangkat Keras


Implementasi perangkat keras merupakan bagian dari merealisasikan hasil
dari perancangan perangkat keras sebelumnya. Semua komponen perangkat

161
keras yang telah dirancang dipastikan berfungsi atau tidaknya dalam mencapai
tujuan yang diinginkan. Implementasi pada perangkat keras akan menggunakan
mikro komputer dan personal komputer sebagai media pendukung dalam
pembuatan. Personal komputer juga dijadikan sebagai komputer server yang
memantau dan menampilkan output dari sistem. Hal pertama yang ditunjukkan
pengimplementasiannya adalah proses pembuatan sistem mainboard/penggerak
robot.
Sesuai dengan perancangan, komponen mainboard/penggerak pada
penelitian tidak menggunakan bagian yang terpisah, melainkan menggunakan
perangkat elektronik yang dijual secara masal yaitu hoverboard. Komponen
motherboard, baterai Li-ion, dan motor BLDC diambil dari perangkat hoverboard
tersebut. Jenis hoverboard yang dipakai adalah hoverboard dengan lebar roda
6.5 inch dan memiliki single motherboard. Untuk melihat dokumentasi dan
perangkat hoverboard yang dipakai dapat dilihat pada gambar 5.46.

Gambar 5.93 Perangkat Hoverboard Yang Digunakan


Pembuatan sistem ini dimulai dengan melakukan percobaan menggunakan
motherboard dengan komputer personal terlebih dahulu tanpa menggunakan
mikro komputer, Jetson Nano. Tujuan dari percobaan ini adalah untuk
memastikan bahwa roda dapat berputar dengan kendali dari output komputer.
Selain memastikan roda dapat berputar, dalam implementasinya proses ini
digunakan untuk memasangkan firmware baru ke dalam motherboard.

162
Gambar 5.94 Dokumentasi Pembuatan Sistem Mainboard Robot
Pada gambar 5.47 ditunjukkan bahwa kita dapat melihat roda berputar dan
motherboard sudah dalam keadaan flashing firmware, diperlihatkan dengan
STLink yang sudah terlepas dari motherboard. Pemasangan kabel untuk
melakukan flashing motherboard ditunjukkan pada tabel 5.7.
Tabel 5.28 Pemasangan Kabel Untuk Flashing Motherboard
Perangkat Keras Pin Motherboard Komputer
3.3 V 3.3 V MCU
SWCLK SWCLK MCU
STLink V2 mini Port USB
GND GND MCU
SWDIO SWDIO MCU
Seperti yang sudah dijelaskan dalam perancangan perangkat keras sistem,
bahwa sistem mainboard/penggerak robot terdiri dari motherboard dan baterai
yang terhubung dengan komputer menggunakan FTDI mini USB. Hasil akhir dari
implementasi sistem penggerak robot dapat dilihat pada gambar 5.48.

Gambar 5.95 Implementasi Sistem Penggerak Robot


Gambar 5.47 merupakan hasil pengimplementasian dari sistem penggerak
robot pada prototype autonomous mobile robot. Sistem penggerak ini terdiri dari
beberapa komponen elektronik yang diletakkan di dalam chassis mainboard
robot. Dengan menggunakan 2 buah roda aktif sebagai aktuator penggeraknya
yang dihubungkan dengan motherboard hoverboard. Sebenarnya sistem ini
sudah dapat di operasikan dengan menggunakan remote kontrol karena sudah
terhubung dengan komputer. Komponen yang digunakan dalam sistem ini
merupakan komponen penyusun utama yang terdiri dari mikro komputer Jetson
Nano, motherboard hoverboard, baterai li-ion 10S2P, dan juga komponen
pendukung lainnya seperti FTDI mini USB, kabel mikro USB, power button,

163
charger port, power bank, dan banyak kabel lainnya. Semua komponen ini tidak
ditaruh menjadi satu di dalam chassis hitam ini saja karena sistem penggerak
robot memerlukan tutup pada chassis untuk menghindari percikan air. Jika
menggunakan tutup maka chassis ini tidak akan bisa di tutup karena tidak muat
terhalang mikro komputer dan power bank, selain itu dikhawatirkan mikro
komputer akan mengalami overheat.
Jetson Nano digunakan sebagai pemrosesan utama dalam sistem ini, semua
jenis pemrosesan seperti pengolahan data sensor dan pengendalian sistem
hoverboard juga dikendalikan oleh perangkat mikro komputer ini. Jetson Nano
mendapatkan sumber daya dari power bank dengan masukan 5 volt. Jetson Nano
juga terhubung dengan motherboard menggunakan kabel sensor sebelah kanan
motherboard. Kabel sensor ini dapat dimanipulasi sehingga mampu
menggerakkan motor BLDC. Motor ini terhubung langsung dengan motherboard
pada pin phase dan socket kabel hall. Motor ditenagai langsung oleh
motherboard yang diambil dari sumber daya baterai lithium ion dengan tipe
baterai 10S2P yang memiliki voltase hingga 42 volt. Penjelasan lebih lanjut
mengenai penyambungan kabel dan port akan dijelaskan pada tabel 5.8.
Tabel 5.29 Pemasangan Kabel Perangkat Keras Sistem Penggerak
Perangkat Keras Pin Tujuan Pin
Phase A Phase A MCU
Phase B Phase B MCU
Phase C Phase C MCU
HALL A HALL A
Motor BLDC Motherboard
HALL B HALL B
HALL C HALL C
GND GND
VCC VCC
PB10/TX/USART3 RX
Motherboard PB11/RX/USART3 FTDI mini USB TX
GND GND
RX
FTDI mini USB TX Jetson Nano Port USB
GND
36 volt VCC XT60 VCC
Baterai Li-Ion Motherboard
GND XT60 GND
Power Bank Port USB Jetson Nano Port Mikro USB

164
Setelah selesai mengimplementasikan sistem penggerak robot, maka
implementasi selanjutnya adalah menghubungkan sensor RPLIDAR dan IMU pada
Jetson Nano sebagai sistem persepsi robot. Berdasarkan perancangan, sensor ini
di pasang setelah kedua chassis terhubung dan posisi robot sudah dalam kondisi
tetap. Sensor RPLIDAR diposisikan pada bagian depan robot, hal ini ditujukan
untuk memudahkan pembacaan ketika terdapat barang di bagian tengah robot.
Jika sensor RPLIDAR ditaruh pada bagian belakang robot, maka ketika ada barang
yang lebih tinggi posisinya dari pada sensor RPLIDAR, maka robot tidak akan bisa
melihat lingkungan bagian depan yang mengakibatkan tidak bisanya dilakukan
perencanaan jalur. Sebaliknya jika di posisi depan maka setidaknya RPLIDAR
masih mampu membaca lingkungan di depan dan posisi halangan membelakangi
gerak maju robot, sehingga perencanaan jalur tidak akan terganggu.
Dokumentasi dari implementasi ini dapat dilihat pada gambar 5.49.

Gambar 5.96 Implementasi Sistem Persepsi Robot Dengan Sensor


Pada gambar 5.49 dapat dilihat bahwa sensor RPLIDAR berdiri di atas
dudukan sensor dan tiang penyangga dengan tinggi 50 cm dari lantai yang
terhubung langsung dengan Jetson Nano menggunakan kabel mikro USB dan
adapter USB yang tergantung di tiang penyangga. Sedangkan sensor IMU persis
terletak di tengah robot yang terhubung langsung dengan Jetson Nano
menggunakan kabel jumper. Sensor RPLIDAR menggunakan protokol komunikasi
serial menggunakan UART, sedangkan sensor IMU menggunakan protokol
komunikasi serial menggunakan I2C. Penjelasan lebih lanjut mengenai
penyambungan kabel dan port akan dijelaskan pada tabel 5.8.
Tabel 5.30
Perangkat Keras Pin Tujuan Pin
RPLIDAR GND UART TTL Adapter GND
TX TX
RX RX
165
V5 V5
GND GND
MOTOCLT DTR
VMOTO VCC
UART Adapter Mikro USB Jetson Nano Port USB
VCC 3.3V
GND GND
GY 521 IMU Jetson Nano
SCL GPIO (SCL)
SDA GPIO 3 (SDA)

E.2.3 Implementasi Perangkat Lunak


Implementasi perangkat lunak merupakan bagian dari merealisasikan
algoritma pada sistem dari bab perancangan perangkat lunak sebelumnya.
Implementasi ini akan meliputi realisasi dari persiapan awal, program utama dan
sub proses dari algoritma yang akan dijelaskan pada sub bab berikut.
E.2.3.1 Implementasi Persiapan Awal Motherboard
Implementasi persiapan awal motherboard ditujukan untuk melakukan
proses flashing firmware yang sudah diubah ke dalam motherboard dengan
menggunakan adapter berupa STLink V2. Urutan untuk melakukan proses ini
sesuai dengan yang sudah dijelaskan sebelumnya pada perancangan perangkat
lunak. Pin firmware pada motherboard dihubungkan terlebih dahulu dengan
STLink menggunakan kabel jumper dengan susunan pin yang diperlihatkan pada
gambar 5.16. Setelah selesai pemasangan kabel, selanjutnya adalah melakukan
koneksi dengan komputer personal via STMCube dengan klik tombol “Connect”
hingga status berubah menjadi “Connected” dan tombol berubah menjadi
“Disconnect” kemudian uncheck value RDP pada tab Option Bytes dan klik apply.
Koneksi berhasil jika pesan yang muncul seperti pada gambar 5.50.

166
Gambar 5.97 Pesan Berhasil Melakukan Hapus Penuh Chip
Setelah selesai melakukan hapus firmware dan unlock protection, langkah
selanjutnya adalah melakukan konfigurasi firmware, tepatnya mengubah file
config.c yang ada pada firmware open source yang sudah di fork pada
https://github.com/bambanggunawanid/hoverboard-firmware-hack-FOC.
Konfigurasi ini bertujuan untuk menyesuaikan varian yang dibutuhkan dengan
mengubah baris kode yang berbeda dari firmware asalnya, dengan uncomment,
comment, atau edit baris kode tertentu. Varian di sini adalah jenis protokol
komunikasi apa yang akan digunakan, apakah menggunakan ADC, USART, PPM,
PWM, IBUS dan masih banyak lagi. Terkait kode program untuk konfigurasi
firmware dapat dilihat pada tabel 5.10.
Tabel 5.31 Kode Program Konfigurasi Firmware Motherboard Hoverboard
Kode Program
No
hoverboard-firmware-hack-FOC/Inc/config.h
322 #if !defined(PLATFORMIO)
323 //#define VARIANT_ADC
324 #define VARIANT_USART
325 //#define VARIANT_NUNCHUK
326 //#define VARIANT_PPM
327 //#define VARIANT_PWM
328 //#define VARIANT_IBUS
329 //#define VARIANT_HOVERCAR
330 //#define VARIANT_HOVERBOARD
331 //#define VARIANT_TRANSPOTTER
332 //#define VARIANT_SKATEBOARD
333 #endif
334 ...
335 #define INACTIVITY_TIMEOUT 30
336 #define BEEPS_BACKWARD 0
337 #define ADC_MARGIN 100
338 #define ADC_PROTECT_TIMEOUT 100
339 #define ADC_PROTECT_THRESH 200
340 //#define AUTO_CALIBRATION_ENA

167
...
// ############ VARIANT_USART SETTINGS ############
#ifdef VARIANT_USART

//#define CONTROL_SERIAL_USART2 0
//#define FEEDBACK_SERIAL_USART2

// #define SIDEBOARD_SERIAL_USART2 0
// #define CONTROL_SERIAL_USART2 0
// #define FEEDBACK_SERIAL_USART2

// #define SIDEBOARD_SERIAL_USART3 0
#define CONTROL_SERIAL_USART3 0
#define FEEDBACK_SERIAL_USART3

// #define DUAL_INPUTS
#define PRI_INPUT1 3, -1000, 0, 1000, 0
#define PRI_INPUT2 3, -1000, 0, 1000, 0
#ifdef DUAL_INPUTS
#define FLASH_WRITE_KEY 0x1102
/// #define SIDEBOARD_SERIAL_USART2 1
/// #define SIDEBOARD_SERIAL_USART3 1
#define AUX_INPUT1 3, -1000, 0, 1000, 0
#define AUX_INPUT2 3, -1000, 0, 1000, 0
#else
#define FLASH_WRITE_KEY 0x1002
#endif

// #define SUPPORT_BUTTONS_LEFT
// #define SUPPORT_BUTTONS_RIGHT
#endif
// ############ END OF VARIANT_USART SETTINGS ############

Tabel 5.10 merupakan kode program untuk mengonfigurasi firmware


motherboard hoverboard yang berisikan potongan-potongan baris yang
pentingnya saja. Jumlah baris kode pada file config.h adalah 772, akan
tetapi hanya beberapa baris kode saja yang diubah tetapi mampu
mempengaruhi keseluruhan kode. File config.c merupakan file library
menggunakan bahasa pemrograman C. Di bawah ini penjelasan mengenai
kode program konfigurasi firmware motherboard hoverboard.
 Baris ke-12, merupakan if preprocessor dengan kondisi jika macro
PLATFORMIO tidak terdefinisi maka kondisi true, jika tidak maka false.
Baris ini bertujuan agar proses flashingdapat menggunakan extensi
PlatformIO, sehingga melakukan upload bisa dilakukan dengan mudah.
 Baris ke-13 (non aktif/dikomentar), merupakan macro define varian
untuk input ADC. Jika ingin melakukan kontrol menggunakan sensor
potensiometer maka baris ini di aktifkan.
 Baris ke-14, merupakan macro define varian untuk input menggunakan
serial control USART. Jika ingin melakukan kontrol menggunakan
komputer melalui RX/TX maka baris ini harus di aktifkan. Penelitian ini

168
menggunakan kontrol dari USART, maka dari itu baris ini di aktifkan
dengan batalkan komentar.
 Baris ke-15 hingga 22 (non aktif/dikomentar), merupakan macro define
varian untuk input dengan mode-mode lainnya, setiap dari setiap baris
kode memiliki sinyalnya masing-masing namun karena Penelitian ini
menggunakan USART maka kita berfokus pada baris ke 14 saja.
 Baris ke-23, merupakan akhir atau penutup dari if preprocessor. Jika #if
preprocessor sudah dilakukan maka wajib mengakhirinya menggunakan
#endif.
 Baris ke-176, merupakan INACTIVITY_TIMEOUT, yaitu ketika motor tidak
bergerak sama define macro sekali setelah motherboard menyala maka
motherboard akan mati. Nilai 30 berarti baru akan shutdown ketika 30
menit tidak bergerak.
 Baris ke-177, merupakan define macro BEEPS_BACKWARD, yaitu ketika
roda mundur maka akan berbunyi. Nilai 0 berarti false, dan beep tidak
akan berbunyi.
 Baris ke-178 - 180, merupakan define macro ADC_MARGIN, yaitu min dan
max menggunakan input ADC.
 Baris ke-179, merupakan define macro ADC_PROTECTED_TIMEOUT, yaitu
timeout yang digunakan untuk proteksi dari kesalahan input ADC.
 Baris ke-180, merupakan define macro ADC_PROTECT_THRESH, yaitu
threshold yang dibutuhkan untuk proteksi input ADC. ADC perlu ada
proteksi karena nilainya yang cepat dan sensitif untuk berubah.
 Baris ke-181 (non aktif/dikomentar), merupakan define
AUTO_CALIBRATION_ENA, yaitu ketika hoverboard baru menyala maka
akan melakukan auto kalibrasi namun sebelumnya harus menekan
tombol power dengan waktu yang lama. Macro ini tidak dibutuhkan jadi
non aktifkan atau dikomentar saja.
 Baris ke-310 hingga 340, merupakan konfigurasi untuk menggunakan
USART3 (kabel sensor motherboard kanan) sebagai input RX/TX.
Komentar semua define yang berhubungan dengan USART2 atau
SIDEBOARD, cukup aktifkan baris CONTROL_SERIAL_USART3 0 dan
FEEDBACK_SERIAL_USART3. Masing-masing fungsinya untuk melakukan
kontrol dan menerima feedback, sehingga mampu menerima sinyal
cmd_vel dan membaca topik odometry.
Setelah melakukan konfigurasi file config.h sesuai dengan proses yang ada
pada perancangan perangkat lunak, langkah selanjutnya adalah melakukan
flashing. Namun sebelum melakukan flashing, kita harus mengonfigurasi file
platformio.ini. Batalkan komentar pada baris ke-13 yang berisi default_envs =
VARIANT_USART, hal Ini agar secara otomatis platform io melakukan compile dan
upload pada varian USART. Jika tidak di batalkan komentar, maka semua varian

169
akan di compile sekaligus. Jika sudah maka langkah selanjutnya adalah compile
keseluruhan firmware dengan klik ikon check pada bagian status bar. Jika sudah
maka hasil compile disimpan pada directory .pio/build/VARIANT_USART. Langkah
selanjutnya adalah melakukan upload file biner dengan klik ikon panah ke kanan
pada status bar, pastikan motherboard masih terkoneksi dengan komputer
personal. Jika sudah maka akan muncul pesan sukses di terminal Visual Studio
Code seperti yang terlihat pada gambar 5.51.

Gambar 5.98 Implementasi Hasil Compile, Upload, dan Flashing Motherboard


Hoverboard
E.2.3.2 Implementasi Persiapan Awal Jetson Nano
Implementasi persiapan awal Jetson Nano terdiri dari beberapa pengaturan
komunikasi dan konfigurasi. Persiapan awal Jetson Nano bertujuan untuk
memudahkan pembaca dalam mengetahui apa saja yang dibutuhkan sebelum
membuat kode untuk program utama. Penelitian ini menggunakan banyak sekali
library dan paket/modul dari berbagai kode sumber untuk menunjang sistem
otomatisasi manuver robot. Sesuai dengan diagram alir perancangan perangkat
lunak pada sub bab sebelumnya, proses awal dari persiapan ini adalah membuat
komunikasi antara Jetson Nano dengan komputer server via Virtual Network
Computing (VNC). Langkah-langkahnya sebagaimana berikut:
1. Hubungkan Jetson Nano dengan jaringan Wi-Fi yang sama dengan komputer
server. Pada implementasinya kedua perangkat ini terhubung pada Wi-Fi
dengan SSID “Redmi” yang merupakan nama hotspot smartphone. Jadi pada
penelitian ini, penulis menggunakan hotspot portable dari smartphone
sebagai media komunikasi Jetson Nano dengan personal komputer/komputer
server.

170
Gambar 5.99 Koneksi Wi-Fi Jetson Nano dan Komputer Server
2. Jalankan perintah pada terminal Jetson Nano untuk mendapatkan alamat
IPv4 yang diberikan Wi-Fi ke Jetson Nano
$ ip addr
Pada pengimplementasiannya alamat IPv4 yang ada di Jetson Nano adalah
192.168.43.133
3. Pada sisi personal komputer/komputer server, masukkan alamat IP Jetson
Nano ke dalam VNC Client, lalu tekan enter. VNC akan meminta password
untuk login ke OS Ubuntu, masukkan password tersebut sesuai dengan
password user.

Gambar 5.100 Menghubungkan VNC Client PC Dengan VNC Server Jetson Nano
4. Jika berhasil maka akan muncul tampilan OS Ubuntu Jetson Nano seperti
halnya tampilan saat melakukan virtual operating system.

171
Gambar 5.101 Implementasi Hasil Remote Access Ke Jetson Nano via VNC
Berhasil
Setelah berhasil melakukan remote access dengan Jetson Nano
menggunakan VNC, maka sesuai dengan perancangan langkah selanjutnya
adalah melakukan remote access menggunakan SSH. Program mapping dan
navigasi tidak menggunakan SSH dalam pengoperasiannya, namun ketika
melakukan pengamatan berupa pengujian sensor, penulis menggunakan SSH
agar mendapatkan data yang cepat dan aktual. Protokol dengan SSH
memungkinkan mengirimkan perintah tanpa perlu melakukan koneksi VNC
sehingga tidak menguras banyak resource CPU dan GPU. SSH juga memudahkan
proses maintenance perangkat lunak di Jetson Nano jika hanya dibutuhkan
interface terminal. Berikut ini langkah-langkah untuk membuat koneksi SSH pada
Jetson Nano:
1. Sama halnya koneksi menggunakan VNC, SSH juga membutuhkan Jetson
Nano terhubung dengan jaringan Wi-Fi yang sama dengan komputer server.
Pada implementasinya kedua perangkat ini terhubung pada Wi-Fi dengan
SSID “Redmi” yang merupakan nama hotspot smartphone. Jadi pada
penelitian ini, penulis menggunakan hotspot portable dari smartphone
sebagai media komunikasi Jetson Nano dengan personal komputer/komputer
server.

172
Gambar 5.102 Koneksi Wi-Fi Jetson Nano dan Komputer Server
2. Jalankan perintah pada terminal Jetson Nano untuk mendapatkan alamat
IPv4 yang diberikan Wi-Fi ke Jetson Nano.
$ ip addr
Pada pengimplementasiannya alamat IPv4 yang ada di Jetson Nano adalah
192.168.43.133
3. Pada sisi personal komputer/komputer server, ketikan pada CMD (Windows)
atau terminal bash (WSL/Linux) perintah:
$ ssh oclone@192.168.43.133

Gambar 5.103 Perintah Untuk Melakukan SSH Ke Jetson Nano


4. Jika berhasil maka nama user di terminal akan berubah menjadi nama user
Jetson Nano, yaitu oclone seperti yang diperlihatkan pada gambar 5.57.

Gambar 5.104 Implementasi Hasil Komunikasi Remote Access Ke Jetson Nano


via SSH Berhasil
Setelah berhasil melakukan remote access ke SSH dan VNC, maka langkah
selanjutnya adalah konfigurasi port USB dan driver sensor. Konfigurasi port USB
berguna untuk memudahkan penamaan dan penggunaannya. Sama halnya
dengan sistem operasi Windows, di Linux setiap USB yang memiliki data di
173
dalamnya akan memiliki nama port masing-masing, yaitu ttyUSB. Namun
permasalahannya jika port yang di masukkan lebih dari satu, maka akan
menyulitkan proses penelitian karena perlu mengubah kode launch ketika USB
FTDI dengan USB RPLIDAR tertukar. Selain itu jika tidak memberikan penamaan
khusus, maka kita harus terus menuliskan ulang hak akses setiap port USB baru
ditancapkan. Dengan memberikan alias pada setiap port USB, maka masalah ini
dapat diselesaikan dan proses penelitian menjadi lebih mudah. Berikut ini
langkah-langkah melakukan konfigurasi port USB:
1. Pertama hubungkan RPLIDAR dan FTDI pada port USB Jetson Nano. Pada
terminal Jetson Nano periksa apakah perangkat terbaca dengan mengetik
perintah:
$ ls /dev/ttyUSB*
Jika RPLIDAR dan FTDI terbaca maka tampilan akan seperti yang diperlihatkan
pada gambar 5.58

Gambar 5.105 Pesan Port USB RPLIDAR Dan FTDI Terbaca


2. Selanjutnya berikan hak akses read, write, dan execute pada kedua port
dengan mengetikan perintah:
$ sudo chmod 666 /dev/ttyUSB*
3. Setelah itu periksa idVender dan idProduct dengan mengetik perintah pada
terminal Jetson Nano
$ udevadm info -a -n /dev/ttyUSB0
$ udevadm info -a -n /dev/ttyUSB1
kemudian catat output tersebut pada text editor.

174
Gambar 5.106 Pesan Spesifikasi Dan Keterangan USB
4. Selanjutnya adalah membuat dan mengedit file udev rules dengan mengetik
perintah:
$ sudo gedit /etc/udev/rules.d/10-local.rules
Kemudian tuliskan konfigurasi berikut pada text editor gedit serta sesuaikan
idVendor dan idProduct dengan output yang sudah disimpan tadi.
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001",
SYMLINK+="ttyRPLIDAR"
ACTION=="add", ATTRS{idVendor}=="1001", ATTRS{idProduct}=="2002",
SYMLINK+="ttyHOVER"
Fungsi dari konfigurasi di atas adalah untuk menambahkan alias dengan
nama ttyRPLIDAR dan ttyHOVER pada rules udev, sehingga setiap port sudah
tetap pemiliknya tanpa perlu tertukar.
5. Jika sudah simpan file tersebut dan restart Jetson Nano. Setelah Jetson Nano
sudah siap, kita bisa melakukan pemeriksaan pembacaan USB lagi untuk
memeriksa apakah proses alias sudah berjalan dengan lancar dengan
mengetik
$ ls /dev/ttyUSB*

175
Gambar 5.107 Implementasi Hasil Konfigurasi Port USB Yang Berhasil
Pada gambar 5.60 jika ttyHOVER dan ttyRPLIDAR sudah muncul, artinya
proses konfigurasi port sudah berhasil dan selesai.
Setelah menyelesaikan konfigurasi VNC, SSH, dan port USB, maka konfigurasi
selanjutnya adalah melakukan perubahan-perubahan kecil pada beberapa file
driver sensor. Namun sebelum itu kita harus melakukan pembuatan workspace
pada Jetson Nano dengan cara membuat baru folder dengan nama “catkin_ws”
di directory /home atau ~. Kemudian dilanjutkan dengan membuat folder dengan
nama “src” di dalam directory /catkin_ws. Hasil dari pembuatan workspace ini
ditunjukkan oleh gambar 5.61.

Gambar 5.108 Implementasi Hasil Pembuatan Workspace


Selanjutnya masuk ke folder src dan buka terminal pada directory tersebut,
atau ketikan perintah:
$ cd ~/catkin_ws/src/
Kemudian download file driver hoverboard driver pada link GitHub berikut
https://github.com/alex-makarov/hoverboard-driver dan letakkan di dalam file
src, atau bisa dengan mengetikan perintah:
$ git clone https://github.com/bambanggunawanid/hoverboard-driver
Ubah nama folder tersebut menjadi “hoverboard_driver” dan ubah juga file
config.h pada path “hoverboard_driver/include/config.h” seperti yang dapat
dilihat pada tabel 5.11.
Tabel 5.32 Kode Program Konfigurasi Driver Hoverboard
Kode Program
No
hoverboard_driver/include/config.h
1 #pragma once
2
3 #define DEFAULT_PORT "/dev/ttyHOVER"
4
5 #define ENCODER_MIN 0
6 #define ENCODER_MAX 9000
176
7 #define ENCODER_LOW_WRAP_FACTOR 0.3
8 #define ENCODER_HIGH_WRAP_FACTOR 0.7
9
10 #define TICKS_PER_ROTATION 90
Tabel 5.11 merupakan kode program untuk mengonfigurasi driver
hoverboard. Berikut ini penjelasan mengenai Kode Program Konfigurasi Driver
Hoverboard.
 Baris ke-1, merupakan preprocessor #pragma yang ditujukan untuk
menyebabkan file sumber saat ini (config.h) disertakan hanya sekali
dalam satu kompilasi. Keuntungan lainnya lebih sedikit kode,
menghindari bentrokan nama, dan meningkatkan kecepatan kompilasi.
 Baris ke-3, merupakan preprocessor define yang menginisialisasi macro
DEFAULT_PORT bernilai “/dev/ttyHOVER” sehingga port ttyHOVER
menjadi default port driver hoverboard.
 Baris ke-5, merupakan macro ENCODER_MIN bernilai 0 yang artinya
pembacaan encoder atau odometry dimulai dari 0
 Baris ke-6, merupakan macro ENCODER_MAX bernilai 9000 yang artinya
pembacaan encoder atau odometry berakhir atau maksimal mencapai
9000.
 Baris ke-7, merupakan macro ENCODER_LOW_WRAP_FACTOR bernilai
0.3 yang artinya pembungkus encoder terkecil bernilai 0.3
 Baris ke-8, merupakan macro ENCODER_HIGH_WRAP_FACTOR bernilai
0.7 yang artinya pembungkus encoder terbesar bernilai 0.7
 Baris ke-10, merupakan macro TICKS_PER_ROTATION bernilai 90 yang
artinya encoder mempunyai 90 tick per 1 revolusi/rotasi roda.
Setelah mengubah file config, langkah selanjutnya adalah mengubah file
hoverboard.launch pada directory “hoverboard_driver/hoverboard.launch”
seperti yang dapat dilihat pada tabel 5.12. Kesimpulan dari konfigurasi ini adalah
mengubah nilai “/dev/ttyTH1” menjadi “/dev/ttyHOVER” sesuai dengan nama
alias yang sebelumnya sudah dibuat.
Tabel 5.33 Kode Program Konfigurasi Launcher Hoverboard
Kode Program
No
hoverboard_driver/hoverboard.launch
1 <launch>
2 <param name="port" type="str" value="/dev/ttyHOVER"/>
3
4 <rosparam file="$(find
hoverboard_driver)/config/hardware.yaml" command="load"/>
5 <rosparam file="$(find
hoverboard_driver)/config/controllers.yaml"
command="load"/>
6 <node name="hoverboard_driver" pkg="hoverboard_driver"
type="hoverboard_driver" output="screen"/>
7 <node name="controller_spawner" pkg="controller_manager"
type="spawner" respawn="false" output="screen"

177
args="hoverboard_joint_publisher
hoverboard_velocity_controller" />
8
9 </launch>
Tabel 5.12 merupakan kode program untuk mengonfigurasi launcher
hoverboard. Berikut ini penjelasan mengenai Kode Program Konfigurasi Launcher
Hoverboard.
 Baris ke-1, merupakan open tag tipe launch file.
 Baris ke-2, merupakan inisialisasi nilai parameter port = /dev/ttyHOVER.
 Baris ke-4 dan ke-5, merupakan inisialisasi parameter ros dengan
pengambil nilai parameter yang ada pada file hardware.yaml dan
controllers.yaml.
 Baris ke-6, merupakan inisialisasi node hoverboard_driver yang diambil
dari paket hoverboard_driver pada sub folder include.
 Baris ke-7, merupakan inisialisasi node controller_spawner pada paket
controller manager dengan nilai argumen di ambil dari controllers.yaml
berupa hoverboard_join_publisher dan hoverboard_velocity_controller.
Di dalam hoverboard_velocity_controller memanggil node
diff_drive_controller untuk mengendalikan roda.
 Baris ke-9, merupakan penutup tak tipe launch file.
Proses selanjutnya adalah install driver RPLIDAR ROS ke dalam workspace.
Caranya adalah dengan download file driver rplidar-ros driver pada link GitHub
berikut https://github.com/robopeak/rplidar_ros dan letakkan di dalam file src,
atau bisa dengan mengetikan perintah:
$ git clone https://github.com/bambanggunawanid/rplidar_ros
Ubah nama folder tersebut menjadi “rplidar_ros” dan ubah juga file
rplidar.launch pada path “rplidar_ros/launch/rplidar.launch” seperti yang dapat
dilihat pada tabel 5.13. Konfigurasi ini untuk mengubah nilai “/dev/ttyUSB0”
menjadi “/dev/tty”RPLIDAR" seperti nama alias yang sudah dibuat sebelumnya
Tabel 5.34 Kode Program Konfigurasi Launcher RPLIDAR
Kode Program
No
rplidar_ros/launch/rplidar.launch
1 <launch>
2 <node name="rplidarNode" pkg="rplidar_ros"
type="rplidarNode" output="screen">
3 <param name="serial_port" type="string"
value="/dev/ttyRPLIDAR"/>
4 <param name="serial_baudrate" type="int"
value="115200"/><!--A1/A2 -->
5 <param name="frame_id" type="string"
value="laser"/>
6 <param name="inverted" type="bool"
value="false"/>
7 <param name="angle_compensate" type="bool"

178
value="true"/>
8 </node>
9 </launch>
Tabel 5.13 merupakan kode program untuk mengonfigurasi launcher driver
RPLIDAR. Berikut ini penjelasan mengenai Kode Program Konfigurasi Launcher
RPLIDAR.
 Baris ke-1, merupakan open tag tipe launch file.
 Baris ke-2, merupakan inisialisasi node rplidarNode pada paket
rplidar_ros
 Baris ke-3, merupakan inisialisasi nilai parameter serial port =
/dev/ttyRPLIDAR.
 Baris ke-4, merupakan inisialisasi parameter serial_baudrate dengan nilai
baud rate sebesar 115200.
 Baris ke-5, merupakan inisialisasi parameter nama frame pada RPLidar,
yaitu “laser”
 Baris ke-6, merupakan parameter inverted yang artinya jika RPLIDAR
dalam kondisi terbalik/digunakan terbalik, maka nilai inverted harus true.
Namun karena posisi RPLIDAR normal maka dari itu value false
 Baris ke-7, merupakan parameter angle_compensate untuk
compensation sudut karena prinsip message pemindaian ros dengan
sudut yang ditingkatkan akan tetap.
 Baris-8 dan ke-9, merupakan tag penutup dari node dan launch
Proses selanjutnya adalah install driver sensor IMU dan melakukan kalibrasi.
Caranya adalah dengan download file driver mpu6050 driver dan i2c driver pada
link GitHub berikut:
https://github.com/Brazilian-Institute-of-Robotics/mpu6050_driver dan
https://github.com/Brazilian-Institute-of-Robotics/i2c_device_ros, letakkan di
dalam file src, atau bisa dengan mengetikan perintah:
$ git clone https://github.com/Brazilian-Institute-of-Robotics/mpu6050_driver
$ git clone https://github.com/Brazilian-Institute-of-Robotics/i2c_device_ros
Kemudian ubah file mpu6050_node.cpp pada path “mpu6050_driver/src/
mpu6050_node.cpp” dan ubah baris ke 39 dari "imu/data_raw" menjadi
"imu/data" seperti yang dapat dilihat pada tabel 5.14
Tabel 5.35 Kode Program Konfigurasi Nama Topik Output IMU
Kode Program
No
mpu6050_driver/src/ mpu6050_node.cpp
38 void MPU6050Node::init() {
39 mpu_data_pub_ =
nh_.advertise<sensor_msgs::Imu>("imu/data", 1);
40
41 this->loadParameters();

179
42
43 mpu6050_.setAddress(static_cast<uint8_t>(mpu6050_addr_));
44 mpu6050_.initialize(i2c_bus_uri_);
45 mpu6050_.setDLPFMode(static_cast<uint8_t>(4));
46 mpu6050_.setIntDataReadyEnabled(true);
47 this->setMPUOffsets();
48
49 ROS_INFO("MPU6050 Node has started");
50 }
Tabel 5.14 merupakan kode program untuk mengonfigurasi Nama Topik
Output IMU. Berikut ini penjelasan mengenai Kode Program Konfigurasi Nama
Topik Output IMU.
 Baris ke-38, merupakan inisialisasi void init() dalam kelas MPU6050Node
 Baris ke-2, merupakan inisialisasi node rplidarNode pada paket
rplidar_ros
 Baris ke-39, merupakan call function advertise dengan parameter
“imu/data dan nilai 1.
 Baris ke-41, merupakan call function loadParameters
 Baris ke-43 hingga ke-50, merupakan inisialisasi objek mpu6050_ seperti
menentukan alamat, inisialisasi alamat i2c, menentukan DLPMode,
inisialisasi fungsi setIntDataReadyEnable bernilai true dan mencetak ke
terminal “MPU6050 Node has started”
Selanjutnya adalah proses kalibrasi sensor IMU, proses kalibrasi merupakan
proses pengecekan dan pengaturan akurasi dari alat ukur dengan cara
membandingkannya dengan standar/tolak ukur. Kalibrasi sensor dilakukan
tersedia di dalam driver mpu6050_driver sehingga kita hanya perlu menjalankan
file launch tersebut. Namun sebelum menjalankan file launcher, kita perlu
mengunduh semua dependensi dan library yang dibutuhkan, caranya adalah
dengan mengetikan perintah pada terminal dan semua dependensi akan
terpasang secara otomatis:
$ rosdep install --from-paths src --ignore-src -r -y
Kemudian setelah semua dependensi dan library terpasang, kita bisa
menjalankan terlebih dahulu file launcher IMU biasa untuk melihat perbedaan
sebelum dan sesudah di kalibrasi. Untuk menjalankan driver IMU caranya adalah
dengan mengetikan perintah pada terminal:
$ roslaunch mpu6050_driver mpu6050_driver.launch
Setelah dikirimkan perintah, terminal akan menjalankan node mpu_node dan
untuk melihat output yang dihasilkan sensor IMU adalah dengan menjalankan
topic echo pada terminal lainnya dan hasilnya dapat dilihat pada gambar 5.62.
$ rostopic echo /imu/data

180
Gambar 5.109 Implementasi Pembacaan IMU Sebelum Kalibrasi
Jika sudah selesai, untuk memulai kalibrasi dapat dengan mengetikan
perintah pada terminal:
$ roslaunch mpu6050_driver mpu6050_calibration.launch
Maka terminal akan menjalankan node mpu_calibration_node dan untuk
menampilkan hasil dari implementasi kalibrasi sensor IMU dapat dilihat
menggunakan perintah:
$ rostopic echo /imu_offsets
Maka akan tampil parameter berupa ax, ay,az dan sebagainya yang
merupakan parameter dari hasil kalibrasi, catat nilai tersebut pada text editor,
dalam hal ini peneliti mendapatkan nilai offsets berkisar di [-1340, -9, 1463, 123,
-42, 42].
Setelah menyimpan hasil kalibrasi, langkah selanjutnya adalah menaruh hasil
kalibrasi tersebut pada file mpu_settings.yaml pada directory
“mpu6050_driver/config/mpu_settings.yaml” dan ubah kode baris 15 pada
variabel axes_offsets sesuai dengan nilai kalibrasi yang sudah disimpan tadi,
seperti yang terlihat pada tabel 5.15.
Tabel 5.36 Kode Program Konfigurasi Parameter MPU6050
Kode Program
No
mpu6050_driver/config/mpu_settings.yaml
1 # I2C Bus URI used to comunicate with I2C devices
(default: "/dev/i2c-1")
2 bus_uri: "/dev/i2c-1"
3
4 # I2C address of MPU6050 (default: 0x68)
5 mpu_address: 0x68
6
7 # Frequency in Hertz wich IMU data is published (default:
30)

181
8 pub_rate: 25
9
10 # Frame if of IMU message (default: "imu")
11 frame_id: "imu"
12
13 # Offsets to fix wrong values caused by misalignment
14 # Sequence is (ax, ay, az, gx, gy, gz) (default: [0, 0, 0,
0, 0, 0])
15 axes_offsets: [-1340, -9, 1463, 123, -42, 42]
16
17 # PID constants used in calibration procedure
18 ki: 0.2 # (default: 0.1)
19 kp: 0.1 # (default: 0.1)
20
21 # The calibration process is finished when the error is
aproximate zero with
22 # the precision set by delta (default: 0.5)
23 delta: 0.5
Tabel 5.15 merupakan kode program untuk mengonfigurasi pengaturan
utama IMU. Berikut ini penjelasan mengenai Kode Program Konfigurasi
Parameter MPU6050.
 Baris ke-2, merupakan inisialisasi variabel bus_uri= “/dev/i2c-1”
 Baris ke-5, merupakan inisialisasi alamat sensor GY 521 pada jalur i2c.
Alamat menggunakan nilai default, yakni 0x68
 Baris ke-8, merupakan inisialisasi kecepatan publish dengan satuan hertz,
nilai yang diberikan = 25 hertz
 Baris ke-11, merupakan inisialisasi nama frame dari pesan IMU,
menggunakan nilai default yaitu “imu”
 Baris ke-15, merupakan nilai offsets untuk membenarkan kesalahan nilai
karena posisi yang tidak sejajar. Nilai offsets ini yang keluar saat
melakukan kalibrasi, ubah nilai offsets berdasarkan data kalibrasi yang
diberikan. Dalam hal ini, nilai kalibrasi sensor pada penelitian ini adalah [-
1340, -9, 1463, 123, -42, 42].
 Baris ke-18 dan ke-19, merupakan nilai PID tetap saat proses kalibrasi
 Baris ke-23, merupakan nilai delta 0.5 yang berarti proses kalibrasi baru
akan berhenti ketika kesalahan mendekati 0 dengan presisi diatur oleh
delta.
Setelah melakukan kalibrasi, nilai dari output sensor di bandingan antara
sebelum dan sesudah melakukan kalibrasi, hasilnya dapat dilihat pada tabel 5.16.
Tabel 5.37 Perbandingan Output Sensor IMU Sebelum Dan Sesudah
Sebelum Kalibrasi Sesudah Kalibrasi Smartphone
ax ay az ax ay az ax ay az
0.152 0.152 9.821 0.06 0.05 9.74

182
0.037 0.151 9.820 0.07 0.04 9.68

0.028 0.029 9.831 0.06 0.04 9.67

0.025 0.014 9.804 0.04 0.07 9.71

0.038 0.152 9.959 0.05 0.07 9.72

0.038 0.017 9.808 0.06 0.06 9.71

0.028 0.018 9.794 0.04 0.07 9.71

0.030 0.012 9.808 0.06 0.09 9.71

0.041 0.022 9.833 0.05 0.08 9.72

0.038 0.018 9.822 0.05 0.09 9.76

Dapat dilihat bahwa proses kalibrasi sangat berpengaruh pada output hasil
pembacaan sensor IMU, perbedaan sekitar 5-10% dapat berdampak pada ke
presisi posisi yang terbaca. Pembahasan mengenai output keluaran sensor IMU
akan dijelaskan detail pada bab pengujian, saat ini penulis hanya menampilkan
perbedaan nilai saat menggunakan kalibrasi dan saat tidak menggunakan
kalibrasi, tetapi kondisi robot dalam kondisi diam dan stagnan.
Jika sudah selesai melakukan kalibrasi pada sensor IMU, maka selanjutnya
kita akan berpindah pada pemasangan modul atau paket yang digunakan pada
program pemetaan, yaitu Hector SLAM. Untuk mendapatkan library ini, penulis
menggunakan library yang dikembangkan oleh Technical University of
Darmstadt, German. Library ini digabungkan ke dalam paket yang diberi nama
Hector. Paket atau modul ini dapat di download pada link GitHub berikut:
https://github.com/tu-darmstadt-ros-pkg/hector_slam untuk menghindari
perbedaan versi dari yang digunakan pada penelitian ini. Copy folder
hector_slam ke dalam folder src atau bisa juga dengan menggunakan git clone:
$ git clone https://github.com/tu-darmstadt-ros-pkg/hector_slam
Setelah itu, lakukan perubahan pada beberapa file yang ada di folder
hector_slam terutama file mapping_default.launch pada directory
“hector_slam/hector_mapping/launch/mapping_default.launch, dengan kode
yang ada pada tabel 5.17.
Tabel 5.38 Kode Program Launcher Mapping Default
Kode Program
No
hector_slam/hector_mapping/launch/mapping_default.launch
1 <?xml version="1.0"?>
2
3 <launch>
4 <arg name="tf_map_scanmatch_transform_frame_name"
default="scanmatcher_frame"/>
5 <arg name="base_frame" default="base_link"/>
6 <arg name="odom_frame" default="odom"/>
7 <arg name="pub_map_odom_transform" default="false"/>
8 <arg name="scan_subscriber_queue_size" default="5"/>

183
9 <arg name="scan_topic" default="scan"/>
10 <arg name="map_size" default="2048"/>
11 <!-- New -->
12 <arg name="pub_odometry" default="true"/>
13
14 <node pkg="hector_mapping" type="hector_mapping"
name="hector_odom" output="screen">
15
16 <!-- Frame names -->
17 <param name="map_frame" value="map" />
18 <param name="base_frame" value="$(arg base_frame)" />
19 <param name="odom_frame" value="$(arg odom_frame)" />
20
21 <!-- Tf use -->
22 <param name="use_tf_scan_transformation"
value="true"/>
23 <param name="use_tf_pose_start_estimate"
value="false"/>
24 <param name="pub_map_odom_transform" value="$(arg
pub_map_odom_transform)"/>
25 <!-- New -->
26 <param name="pub_odometry" value="$(arg
pub_odometry)"/>
27
28 <!-- Map size / start point -->
29 <param name="map_resolution" value="0.050"/>
30 <param name="map_size" value="$(arg map_size)"/>
31 <param name="map_start_x" value="0.5"/>
32 <param name="map_start_y" value="0.5" />
33 <param name="map_multi_res_levels" value="2" />
34
35 <!-- Map update parameters -->
36 <param name="update_factor_free" value="0.4"/>
37 <param name="update_factor_occupied" value="0.9" />
38 <param name="map_update_distance_thresh" value="0.4"/>
39 <param name="map_update_angle_thresh" value="0.06" />
40 <param name="laser_z_min_value" value = "-1.0" />
41 <param name="laser_z_max_value" value = "1.0" />
42
43 <!-- Advertising config -->
44 <param name="advertise_map_service" value="true"/>
45
46 <param name="scan_subscriber_queue_size" value="$(arg
scan_subscriber_queue_size)"/>
47 <param name="scan_topic" value="$(arg scan_topic)"/>
48
49 <param name="tf_map_scanmatch_transform_frame_name"
value="$(arg tf_map_scanmatch_transform_frame_name)" />
50 </node>
51
52 <node pkg="tf" type="static_transform_publisher"
name="scanfram_to_odomcombine" args="0 0 0 0 0 0
scanmatcher_frame odom_combined 100" />
53 </launch>
Tabel 5.17 merupakan kode program untuk mengonfigurasi file mapping
pada hector mapping. Berikut ini penjelasan mengenai Kode Program Launcher
Mapping Default.

184
 Baris ke-1 hingga ke-3, merupakan open tag untuk format launch dengan
define xml version dan open tag <launch>
 Baris ke-4 hingga ke-12, merupakan inisialisasi argumen yang akan
digunakan nantinya pada parameter. Argumen pada launch file persis
seperti sebuah variabel pada bahasa pemrograman, yaitu penyimpanan
sementara yang nilaunya akan digunakan pada baris berikutnya.
Keuntungan menggunakan tag arg atau argumen pada launch file ada
kode yang rapi dan memudahkan jika menginginkan perubahan value
karena tidak perlu mencari setiap parameter pada node atau rosparam.
 Tf_map merupakan parameter yang digunakan untuk penamaan
frame bagi hector mapping.
 Base_frame merupakan parameter yang digunakan untuk
inisialisasi frame mana yang akan menjadi base/dasar. Value yang
biasanya digunakan adalah base_link karena dalam ROS, base_link
merupakan dasar alas dari robot.
 Odom_frame merupakan parameter yang digunakan untuk
inisialisasi frame mana yang akan menjadi frame odom. Value
yang digunakan adalah odom, merujuk pada nama frame
odometry dari hoverboard.
 Pub_map_odom_transform merupakan parameter untuk
mempublikasikan hasil transformasi odom ke map pada hector
mapping, value yang digunakan adalah false karena frame odom
sudah diberikan oleh hoverboard dan dikelola menggunakan EKF,
jadi tidak perlu tambahan transformasi odom buatan lagi.
 Scan_subscriber_queue_size merupakan parameter untuk
menentukan jumlah antrean pada buffer terhadap pesan yang
masuk. Semakin kecil nilai antrean maka semakin cepat pesan
masuk dan nilai yang digunakan adalah 5.
 Scan_topic merupakan parameter untuk inisialisasi topik mana
yang merupakan scan, jadi hanya data laser yang bisa diterima
oleh hector mapping. Maka dari itu nilainya adalah scan, karena
nama topik di paket node rplidar_ros adalah “/scan”
 Map_size merupakan parameter dari besaran map. Peta
berbentuk persegi dan memiliki sel kisi setiap sumbu dengan total
nilai width * height atau (map_size * map_size). Nilai untuk
parameter ini adalah 2048 yang berarti luas grid yang mampu
disanggupi hector mapping adalah 4.194.304 grid karena sumbu x
* sumbu y.
 Pub_odometry merupakan parameter yang digunakan untuk
mempublikasikan topik odometry baru dari node
hector_mapping.

185
 Baris ke-14 hingga ke-50, merupakan inisialisasi node hector_mapping
dengan nilai parameter menggunakan variabel argumen yang sudah
ditentukan sebelumnya.
 Baris ke-52, merupakan inisialisasi node tf atau transformasi untuk
menggabungkan transform menggunakan static transform publisher
sehingga mampu menyambung frame-frame yang masih terpisah. Nilai
name merupakan nama dari transformasinya, ini tidak mempengaruhi
apa pun. Args merupakan nilai argumen yang digunakan sebagai
parameter node tf, dengan format input x y z yaw pitch roll frame_id
child_frame_id period_in_ms. Value args pada node tf adalah 0 0 0 0 0 0
scanmatcher_frame odom_combined 100. Artinya titik koordinat x y z
yaw pitch = 0, lalu frame scanmatcher_frame menjadi parent dari frame
odom_combined (posisi scanmatcher di atas odom_combined).
 Baris ke-53, merupakan penutup tag launch
Setelah selesai dengan konfigurasi file launcher mapping_default.launch,
proses berlanjut pada konfigurasi file tutorial.launch pada directory
“hector_slam/hector_slam_launch/launch/tutorial.launch”. File ini akan
memanggil file mapping_default.launch yang sebelumnya sudah di konfigurasi,
dan mengaktifkan beberapa node pendukung lainnya seperti geotiff mapping
untuk menyimpan secara sementara file map dan pergerakan robot. Di dalam
geotiff juga memanggil node trajectory_server, namun saat ini kita akan berfokus
pada mengubah file amr_robot_mapping.launch dengan kode program yang
terdapat pada tabel 5.18.
Tabel 5.39 Kode Program Launcher AMR Mapping pada Hector SLAM Launch
Kode Program
No
hector_slam/hector_slam_launch/launch/amr_robot_mapping.launch
1 <?xml version="1.0"?>
2
3 <launch>
4 <arg name="geotiff_map_file_path" default="$(find
hector_geotiff)/maps"/>
5
6 <param name="/use_sim_time" value="false"/>
7
8 <node pkg="rviz" type="rviz" name="rviz" args="-d $(find
hector_slam_launch)/rviz_cfg/mapping_demo.rviz"/>
9
10 <include file="$(find
hector_mapping)/launch/mapping_default.launch"/>
11
12 <include file="$(find
hector_geotiff_launch)/launch/geotiff_mapper.launch">
13 <arg name="trajectory_source_frame_name"
value="scanmatcher_frame"/>
14 <arg name="map_file_path" value="$(arg
geotiff_map_file_path)"/>
15 </include>
16

186
17 </launch>
Tabel 5.18 merupakan kode program untuk mengonfigurasi file
amr_robot_mapping.launch pada hector slam launch. Berikut ini penjelasan
mengenai Kode Program Launcher AMR Robot Mapping pada Hector SLAM
Launch.
 Baris ke-1 hingga ke-3, merupakan open tag untuk format launch dengan
define xml version dan open tag <launch>
 Baris ke-4, merupakan argumen dengan nama geotiff_map_file_path
untuk parameter letak map sementara yang dihasilkan oleh hector
mapping.
 Baris ke-6, merupakan parameter jika menggunakan simulasi atau dunia
3D. Berikan value false jika robot berada di dunia nyata dan true jika
bermain dengan simulasi.
 Baris ke-8, merupakan node yang digunakan untuk memanggil aplikasi
Rviz. Node ini diberikan tambahan argumen berupa file
mapping_demo.rviz yang ada di folder rviz_cgf. File ini berisi parameter
untuk mengaktifkan atau mematikan fitur/topik/frame pada aplikasi Rviz.
 Baris ke-10, merupakan pemanggilan file mapping_default.launch. Dalam
format file launch, kita dapat memanggil file lain dengan menggunakan
tag <include file=””>
 Baris ke-12 hingga ke-15, merupakan pemanggilan file
hector_mapper.launch, namun bedanya pemanggilan file ini ditambahkan
dengan 2 argumen tambahan, yaitu trajectory_source_frame_name
dengan nilai frame = frame hasil hector_mapping dan parameter yang
kedua map_file_path yang berisikan path folder dimana map sementara
disimpan.
 Baris ke-17, merupakan penutup tag launch
Selesai melakukan konfigurasi pada semua driver sensor berupa library atau
paket algoritme yang dibutuhkan pada penelitian ini, maka langkah selanjutnya
adalah melakukan konfigurasi pada folder utama penyusun sistem robot yang
diberi nama folder “autonomous_mobile_robot_navigation”. Folder ini tidak
didapatkan dari sumber mana pun, jadi pada kali ini penulis akan benar-benar
membuat kode dari awal hingga akhir. Folder
autonomous_mobile_robot_navigation atau yang nanti akan kita singkat dengan
AMRN.

187
BAB F PENGUJIAN

Dalam bab pengujian, penulis akan menguraikan dan menunjukkan


bagaimana sistem ini dapat diimplementasikan dengan pengujian tertentu.
Adanya pengujian ini dimaksudkan untuk menilai apakah sistem yang dirancang
telah sesuai dengan tujuan maupun rumusan masalah yang penulis ajukan. Hasil
dari pengujian juga digunakan sebagai hasil penarikan kesimpulan pada bab
selanjutnya. Berikut merupakan tahapan pengujian pada penelitian ini:

F.1 Metode Pengujian


Penelitian ini akan diuji dengan menggunakan sebuah purwarupa kereta api
dan purwarupa skala kecil dari sensor yang digunakan. Pengujian di sini nantinya
akan diuji berdasarkan fungsionalitas dan kinerja. Pengujian fungsionalitas
bertujuan menguji fungsi yang telah disampaikan sebelumnya dan pengujian
kinerja bertujuan untuk menguji bagaimana sistem bekerja dalam situasi
tertentu

F.2 Pengujian Fungsional


Penelitian ini akan diuji dengan menggunakan sebuah purwarupa kereta api
dan purwarupa skala kecil dari sensor yang digunakan. Pengujian di sini nantinya
akan diuji berdasarkan fungsionalitas dan kinerja. Pengujian fungsionalitas
bertujuan menguji fungsi yang telah disampaikan sebelumnya dan pengujian
kinerja bertujuan untuk menguji bagaimana sistem bekerja dalam situasi
tertentu

F.2.1 Pengujian Fungsional Mainboard Robot


Pengujian fungsional mainboard robot adalah kebutuhan sistem yang
memastikan bahwa pusat kontrol atau mikrokomputer Jetson Nano Zero W
mampu menerima data dari kereta api ataupun sensor di lintasan. Berikut
merupakan detail dari pengujian nantinya
Tabel 6.40 Deskripsi Pengujian Mainboard Robot
Nama Sistem Mainboard Robot
Nama Kasus Uji Lorem ipsum dolor sit amet, consectetur
adipiscing elit
Tujuan Pengujian Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Prosedur Pengujian Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Harapan Hasil Pengujian Lorem ipsum dolor sit amet, consectetur

188
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Hasil Pengujian Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.

F.3 Pengujian Kinerja


Pengujian kinerja akan menilai performa dari sistem yang telah
diimplementasikan. Oleh karena itu, pengujian ini akan spesifik pada pengujian
delay pada pengiriman dan penerimaan paket MQTT, pengujian stress load dari
MQTT karena adanya kemungkinan lebih banyak kereta api pada kondisi riil, dan
kecepatan pembacaan RFID tags. Berikut merupakan beberapa fungsi yang telah
penulis lakukan

F.3.1 Pengujian Delay Pengiriman


Pengujian delay pengiriman kinerja protokol komunikasi MQTT berguna
untuk memahami seberapa efisienkah protokol komunikasi ini dalam lingkup
sistem yang bergerak dan sistem tetap. Delay disini juga berperan besar dalam
memberikan gambaran penerapan riil nantinya bila menggunakan protokol
serupa. Berikut merupakan detil dari pengujian nantinya
Tabel 6.41 Deskripsi Pengujian Mainboard Robot
Nama Sistem Mainboard Robot
Nama Kasus Uji Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Tujuan Pengujian Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Prosedur Pengujian Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Harapan Hasil Pengujian Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Hasil Pengujian Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.

189
BAB G PENUTUP

Dalam bab penutup, penulis akan menyampaikan hasil yang telah penulis
dapatkan selama melakukan penelitian ini. Hasil yang didapatkan berasal dari
data yang telah penulis terima dari pengujian. Adanya hasil tersebut,
memungkinkan penulis untuk menarik kesimpulan atas rumusan masalah yang
sebelumnya diutarakan. Kemudian karena kondisi penelitian ini yang juga
terbatas pada kemampuan maupun waktu yang ada, akan ada saran kedepannya
guna mengembangkan lebih lanjut sistem atau bahkan diterapkan pada kondisi
rill nantinya.

G.1 Kesimpulan
Atas hasil pengujian yang penulis dapatkan selama melakukan penelitian ini,
maka penulis dapat menarik kesimpulan untuk menjawab rumusan masalah yang
ada. Berikut adalah kesimpulan dari penulis:
1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
2. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
3. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.

G.2 Saran
Selama pelaksanaan penelitian ini, terdapat beberapa kekurangan yang
penulis miliki. Sehingga penulis yakin bahwasannya sistem ini dapat
dikembangkan lebih lanjut secara bersama-sama dengan peneliti lainnya di
Indonesia maupun di dunia. Oleh karena itu penulis telah merangkum beberapa
saran yang mungkin dapat dilanjutkan oleh peneliti selanjutnya
190
1. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
2. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.
3. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
est laborum.

191
DAFTAR REFERENSI

Bayat, B., Bermejo-Alonso, J., Carbonera, J., Facchinetti, T., Fiorini, S., Goncalves,
P., Jorge, V.A.M., Habib, M., Khamis, A., Melo, K., Nguyen, B., Olszewska, J.I.,
Paull, L., Prestes, E., Ragavan, V., Saeedi, S., Sanz, R., Seto, M., Spencer, B.,
Vosughi, A. dan Li, H., 2016. Requirements for building an ontology for
autonomous robots. Industrial Robot, 43(5), hal.469–480.
BPS, 2019. Analisis Hasil SE2016 Lanjutan Analisis Usaha Jasa Aktivitas Pos dan
Kurir Modern. Jakarta: Badan Pusat Statistic.
BPS, 2021. Statistika E-Commerce 2021. Badan Pusat Statistik/BPS-Statistics
Indonesia.
Brombach, L., 2021. Practical Robotics in C++: Build and Program Real
Autonomous Robots Using Raspberry Pi (English Edition). English ed ed. New
Delhi: BPB Publications.
Chase, C.W., 2013. Demand-Driven Forecasting. Second ed. Demand-Driven
Forecasting. Canada: John Wiley & Sons, Inc.
Computer Hope, 2021. Linux make command information and examples. [daring]
Computer Hope. Tersedia pada:
<https://www.computerhope.com/unix/umake.htm> [Diakses 16 Des 2021].
Databoks, 2021. Nilai Transaksi E-Commerce Mencapai Rp 266,3 Triliun pada
2020 Nominal Transaksi E-Commerce (2017-2020). [daring]
Databoks.Katadata.Co.Id. Tersedia pada:
<https://databoks.katadata.co.id/datapublish/2021/01/29/nilai-transaksi-e-
commerce-mencapai-rp-2663-triliun-pada-2020> [Diakses 15 Des 2021].
Debeunne, C. dan Vivet, D., 2020. A review of visual-lidar fusion based
simultaneous localization and mapping. Sensors (Switzerland), .
Delgado-Mata, C., Velázquez, R. dan Gutiérrez, C.A., 2012. A Differential-Drive
Mobile Robot Driven by an Ethology Inspired Behaviour Architecture. Procedia
Technology, [daring] 3, hal.157–166. Tersedia pada: <www.sciencedirect.com>
[Diakses 10 Feb 2022].
Dudek, G. dan Jenkin, M., 2010. Computational Principles of Mobile Robotics.
Computational Principles of Mobile Robotics.
Erlangga, D., D, E., H S, R., Sunarto, S., Rahardjo T.S, K. dan G, F., 2019. SISTEM
NAVIGASI MOBILE ROBOT DALAM RUANGAN BERBASIS AUTONOMOUS
NAVIGATION. Journal of Mechanical Engineering and Mechatronics, 4(2), hal.78.
Galov, A. dan Moschevikin, A., 2014. Simultaneous localization and mapping in
indoor positioning systems based on round trip time-of-flight measurements and
inertial navigation. IPIN 2014 - 2014 International Conference on Indoor
Positioning and Indoor Navigation, hal.457–464.
Hasan, H.S., Hussein, M., Saad, S.M. dan Dzahir, M.A.M., 2018. An overview of
192
local positioning system: Technologies, techniques and applications.
International Journal of Engineering and Technology(UAE), 7(3), hal.1–5.
KataData, 2021. E-Commerce Diminati Pengiriman J&T dan Fedex Hingga 2,5
Juta per hari. [daring] Katadata.Co.Id. Tersedia pada:
<https://katadata.co.id/desysetyowati/digital/61164242ac55d/e-commerce-
diminati-pengiriman-jt-dan-fedex-hingga-2-5-juta-per-hari> [Diakses 9 Mar
2022].
Kohlbrecher, S., Meyer, J., Graber, T., Petersen, K., Klingauf, U. dan Von Stryk, O.,
2014. Hector open source modules for autonomous mapping and navigation with
rescue robots. Lecture Notes in Computer Science (including subseries Lecture
Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), 8371 LNAI,
hal.624–631.
Koumanakos, D.P., 2008. The effect of inventory management on firm
performance. International Journal of Productivity and Performance
Management, 57(5), hal.355–369.
Lain, M.J., Brandon, J. dan Kendrick, E., 2019. Design strategies for high power vs.
High energy lithium ion cells. Batteries, 5(4), hal.64.
Liu, L.S., Lin, J.F., Yao, J.X., He, D.W., Zheng, J.S., Huang, J. dan Shi, P., 2021. Path
Planning for Smart Car Based on Dijkstra Algorithm and Dynamic Window
Approach. Wireless Communications and Mobile Computing, [daring] 2021.
Tersedia pada: <https://doi.org/10.1155/2021/8881684>.
Louhichi, K., Jacquet, F. dan Butault, J.P., 2012. Estimating input allocation from
heterogeneous data sources: A comparison of alternative estimation approaches.
Agricultural Economics Review, .
Marin-Plaza, P., Hussein, A., Martin, D. dan De La Escalera, A., 2018. Global and
Local Path Planning Study in a ROS-Based Research Platform for Autonomous
Vehicles. Journal of Advanced Transportation, 2018.
Moore, T. dan Stouch, D., 2016. A generalized extended Kalman filter
implementation for the robot operating system. In: Advances in Intelligent
Systems and Computing. [daring] hal.335–348. Tersedia pada:
<http://www.cra.com/robot_localization_ias13.zip> [Diakses 11 Feb 2022].
Parcel Perform dan iPrice Group, 2019. Consumers are still not happy with their
e-commerce delivery experience, a new survey by Parcel Perform and iPrice
Group reveals | Mini Me Insights. [daring] Minime Insights. Tersedia pada:
<https://www.minimeinsights.com/2019/06/26/consumers-are-still-not-happy-
with-their-e-commerce-delivery-experience-a-new-survey-by-parcel-perform-
and-iprice-group-reveals/> [Diakses 12 Mar 2022].
Peng, G., Zheng, W., Lu, Z., Liao, J., Hu, L., Zhang, G. dan He, D., 2018. An
improved AMCL algorithm based on laser scanning match in a complex and
unstructured environment. Complexity, 2018.
Putra, T.A., Muliady, M., Setiadikarunia, D. dan .., 2020. Navigasi Indoor Berbasis
193
Peta pada Robot Beroda dengan Platform Robot Operating System. Jetri : Jurnal
Ilmiah Teknik Elektro, [daring] 17(2), hal.121. Tersedia pada:
<https://trijurnal.lemlit.trisakti.ac.id/jetri/article/view/5447> [Diakses 27 Agu
2021].
Ragnerstam, E., 2016. How to calculate forecast accuracy for stocked items with
a lumpy demand-A case study at Alfa Laval. School of Innovation, Design and
Engineering.
Reilly, E.D., 2003. Motherboard. [daring] Encyclopedia of Computer Science.
Tersedia pada: <https://dl.acm.org/doi/10.5555/1074100.1074618> [Diakses 20
Okt 2021].
Romaine, E., 2020. Autonomous Mobile Robot (AMRs) Types and Uses. [daring]
Tersedia pada: <https://www.conveyco.com/types-and-applications-of-amrs/>
[Diakses 6 Feb 2022].
Saputro, T.T., 2016. Pengenalan Robot Operating System. [daring]
Embeddednesia.Com. Tersedia pada:
<https://embeddednesia.com/v1/pengenalan-robot-operating-system/> [Diakses
16 Des 2021].
Souliman, A., 2019. Mapping and Localization for Indoor Mobile Robot Based on
RGB-D Camera. (August 2017).
Statista, 2019. E-commerce in Indonesia - statistics & Facts.
Takleh, T.T.O., Bakar, N.A., Rahman, S.A., Hamzah, R. dan Aziz, Z.A., 2018. A brief
survey on SLAM methods in autonomous vehicle. International Journal of
Engineering and Technology(UAE), 7(4), hal.38–43.
Utomo, E.B., 2015. Autonomous Mobile Robot Berbasis Landmark Menggunakan
Particle Filter Dan Occupancy Grid Maps Untuk Navigasi, Lokalisasi dan Mapping.
[daring] hal.1–93. Tersedia pada: <https://repository.its.ac.id/id/eprint/41577>
[Diakses 25 Agu 2021].
Walker, J., 2017. A Guide to Autonomous Robots & 8 AMR Applications. [daring]
Waypoint Robotics. Tersedia pada: <https://waypointrobotics.com/blog/what-
autonomous-robots/> [Diakses 3 Mar 2022].
Wang, H., 2012. Design and implementation of brushless DC motor drive and
control system. In: Procedia Engineering. No longer published by
Elsevier.hal.2219–2224.
Williman, A.O. dan Jelinek, H.J., 1976. Introduction To LSI Microprocessor
Developments. Computer, 9(6), hal.34–46.
Xu, L., Feng, C., Kamat, V.R. dan Menassa, C.C., 2019. An Occupancy Grid
Mapping enhanced visual SLAM for real-time locating applications in indoor GPS-
denied environments. Automation in Construction, 104, hal.230–245.
Zetes, 2021. Autonomous mobile robots (AMR), latest warehouse technology.
[daring] Zetes. Tersedia pada: <https://www.zetes.com/en/warehouse-

194
solutions/autonomous-mobile-robots> [Diakses 16 Des 2021].
Zhang, X., Lai, J., Xu, D., Li, H. dan Fu, M., 2020. 2D Lidar-Based SLAM and Path
Planning for Indoor Rescue Using Mobile Robots. Journal of Advanced
Transportation, 2020.

195
LAMPIRAN A PERSYARATAN FISIK DAN TATA LETAK

A.1 Kertas
Kertas yang digunakan adalah HVS 70 mg berukuran A4. Apabila terdapat
gambar-gambar yang menggunakan kertas berukuran lebih besar dari A4,
hendaknya dilipat sesuai dengan aturan yang berlaku. Pengetikan hanya
dilakukan pada satu muka kertas, tidak bolak balik.

A.2 Margin
Batas pengetikan naskah adalah sebagai berikut :

A.3 Jenis dan Ukuran Huruf


Jenis huruf yang dipakai dalam skripsi adalah Calibri dengan ketentuan
sebagai berikut:

A.4 Spasi
Jarak standar antar baris dalam badan teks adalah satu spasi. Jarak antar
paragraf, antara judul bab dan judul subbab, antara judul subbab dan badan
teks, dan seterusnya, dapat dilihat pada masing-masing style yang digunakan dan
tersedia dalam template untuk skripsi ini.

A.5 Kepala Bab dan Subbab


Kepala bab terdiri dari kata “BAB” yang diikuti dengan nomor bab dan judul
dari bab tersebut, misalnya “BAB 1 PENDAHULUAN” . Kepala subbab diawali
dengan nomor sesuai tingkat hirarkinya dan diikuti dengan judul subbab,

A.6 Nomor Halaman


Bagian awal skripsi menggunakan nomor halaman berupa angka
Romawi kecil (i, ii, iii, iv, dan seterusnya) yang dimulai dari sampul dalam.

196
LAMPIRAN B PERSYARATAN FISIK DAN TATA LETAK

B.1 Margin
Batas pengetikan naskah adalah sebagai berikut :

B.2 Jenis dan Ukuran Huruf


Jenis huruf yang dipakai dalam skripsi adalah Calibri dengan ketentuan
sebagai berikut:

B.3 Spasi
Jarak standar antar baris dalam badan teks adalah satu spasi. Jarak antar
paragraf, antara judul bab dan judul subbab, antara judul subbab dan badan
teks, dan seterusnya, dapat dilihat pada masing-masing style yang digunakan dan
tersedia dalam template untuk skripsi ini.

B.4 Kepala Bab dan Subbab


Kepala bab terdiri dari kata “BAB” yang diikuti dengan nomor bab dan judul
dari bab tersebut, misalnya “BAB 1 PENDAHULUAN” . Kepala subbab diawali
dengan nomor sesuai tingkat hirarkinya dan diikuti dengan judul subbab,

B.5 Nomor Halaman


Bagian awal skripsi menggunakan nomor halaman berupa angka
Romawi kecil (i, ii, iii, iv, dan seterusnya) yang dimulai dari sampul dalam.

197
LAMPIRAN C PERSYARATAN FISIK DAN TATA LETAK

C.1 Margin
Batas pengetikan naskah adalah sebagai berikut :

C.2 Jenis dan Ukuran Huruf


Jenis huruf yang dipakai dalam skripsi adalah Calibri dengan ketentuan
sebagai berikut:

C.3 Spasi
Jarak standar antar baris dalam badan teks adalah satu spasi. Jarak antar
paragraf, antara judul bab dan judul subbab, antara judul subbab dan badan
teks, dan seterusnya, dapat dilihat pada masing-masing style yang digunakan dan
tersedia dalam template untuk skripsi ini.

C.4 Kepala Bab dan Subbab


Kepala bab terdiri dari kata “BAB” yang diikuti dengan nomor bab dan judul
dari bab tersebut, misalnya “BAB 1 PENDAHULUAN” . Kepala subbab diawali
dengan nomor sesuai tingkat hirarkinya dan diikuti dengan judul subbab,

C.5 Nomor Halaman


Bagian awal skripsi menggunakan nomor halaman berupa angka
Romawi kecil (i, ii, iii, iv, dan seterusnya) yang dimulai dari sampul dalam.

198
LAMPIRAN D PERSYARATAN FISIK DAN TATA LETAK

D.1 Margin
Batas pengetikan naskah adalah sebagai berikut :

D.2 Jenis dan Ukuran Huruf


Jenis huruf yang dipakai dalam skripsi adalah Calibri dengan ketentuan
sebagai berikut:

D.3 Spasi
Jarak standar antar baris dalam badan teks adalah satu spasi. Jarak antar
paragraf, antara judul bab dan judul subbab, antara judul subbab dan badan
teks, dan seterusnya, dapat dilihat pada masing-masing style yang digunakan dan
tersedia dalam template untuk skripsi ini.

D.4 Kepala Bab dan Subbab


Kepala bab terdiri dari kata “BAB” yang diikuti dengan nomor bab dan judul
dari bab tersebut, misalnya “BAB 1 PENDAHULUAN” . Kepala subbab diawali
dengan nomor sesuai tingkat hirarkinya dan diikuti dengan judul subbab,

D.5 Nomor Halaman


Bagian awal skripsi menggunakan nomor halaman berupa angka
Romawi kecil (i, ii, iii, iv, dan seterusnya) yang dimulai dari sampul dalam.

199
LAMPIRAN E PERSYARATAN FISIK DAN TATA LETAK

E.1 Margin
Batas pengetikan naskah adalah sebagai berikut :

E.2 Jenis dan Ukuran Huruf


Jenis huruf yang dipakai dalam skripsi adalah Calibri dengan ketentuan
sebagai berikut:

E.3 Spasi
Jarak standar antar baris dalam badan teks adalah satu spasi. Jarak antar
paragraf, antara judul bab dan judul subbab, antara judul subbab dan badan
teks, dan seterusnya, dapat dilihat pada masing-masing style yang digunakan dan
tersedia dalam template untuk skripsi ini.

E.4 Kepala Bab dan Subbab


Kepala bab terdiri dari kata “BAB” yang diikuti dengan nomor bab dan judul
dari bab tersebut, misalnya “BAB 1 PENDAHULUAN” . Kepala subbab diawali
dengan nomor sesuai tingkat hirarkinya dan diikuti dengan judul subbab,

E.5 Nomor Halaman


Bagian awal skripsi menggunakan nomor halaman berupa angka
Romawi kecil (i, ii, iii, iv, dan seterusnya) yang dimulai dari sampul dalam.

200

Anda mungkin juga menyukai