SKRIPSI
Disusun oleh:
Bambang Gunawan Tanjung
NIM: 185150300111051
PROGRAM STUDI TEKNIK KOMPUTER
JURUSAN TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
MALANG
2021
PERSETUJUAN
Disusun Oleh :
Bambang Gunawan Tanjung
NIM: 185150300111051
Penulis
bambanggunawan887@gmail.com
ABSTRAK
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
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.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.
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.
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
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).
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.
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.
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.
35
B.2.2 Autonomous Mobile Robot (AMR)
36
B.2.2.1 Autonomous Mobile Robot Dibidang Pergudangan
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.
( 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)
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.
41
membantu pengguna berinteraksi dengan sistem dan memberikan instruksi
kepada pengguna.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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.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.
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.
70
Gambar 2.36 Frame Transformasi Robot Beroda
Sumber : (wiki.ros.org, 2022)
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.
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.
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.
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
75
BAB C METODOLOGI PENELITIAN
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.
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.
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
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
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
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
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
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)
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
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.
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.
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.
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
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.
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.
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
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
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
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.
114
Gambar 5.56 Assembling Semua Bagian Chassis Belakang Robot
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
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.
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
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.
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.
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.
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.
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.
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
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.
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
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
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.
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.
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.
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
160
Gambar 5.91 Implementasi Prototype Sistem Robot Tampak Samping
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.
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.
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.
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 ############
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.
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
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.
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
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
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.
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.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.
196
LAMPIRAN B PERSYARATAN FISIK DAN TATA LETAK
B.1 Margin
Batas pengetikan naskah adalah 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.
197
LAMPIRAN C PERSYARATAN FISIK DAN TATA LETAK
C.1 Margin
Batas pengetikan naskah adalah 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.
198
LAMPIRAN D PERSYARATAN FISIK DAN TATA LETAK
D.1 Margin
Batas pengetikan naskah adalah 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.
199
LAMPIRAN E PERSYARATAN FISIK DAN TATA LETAK
E.1 Margin
Batas pengetikan naskah adalah 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.
200