3. PERENCANAAN & IMPLEMENTASI SISTEM
Pada bab ini akan dijelaskan mengenai perencanaan dan implementasi sistem modul pembelajaran kinematika robot lengan 3 derajat kebebasan berbasis Raspberry Pi 3 b+. Penjelasan perencanaan dan implementasi sistem akan dibagi menjadi 7 sub-bab yaitu penjelasan desain arena modul pembelajaran, modifikasi desain robot lengan EEZYbot Arm MK2, desain mounting Raspberry Pi camera, perhitungan kinematika robot lengan, desain hardware sistem, desain software sistem, dan workspace area dari sistem modul pembelajaran.
3.1. Desain Arena Modul Pembelajaran
Arena modul pembelajaran yang digunakan pada proyek tugas akhir ini merupakan arena yang telah dibuat dalam rangka penelitian nomor 023/SP2H/LT/PT/LPPM-UKP/III/2018 yang dibiayai Kemenristekdikti. Arena modul pembelajaran ini merupakan sebuah bidang 3 dimensi dengan ukuran panjang x lebar x tinggi = 90 cm x 90 cm x 50 cm. Berikut adalah gambar dari arena modul pembelajaran.
Gambar 3.1. Arena modul pembelajaran
Bidang ini berbahan dasar 2 buah akrilik bening dengan ukuran 90 cm x 50 cm dan sebuah akrilik bening dengan ukuran 90 cm x 90 cm dimana setiap
akrilik memiliki ketebalan 1 cm. Awalnya, pada akrilik akan ditempelkan sebuah kertas yang berbahan dasar banner.
Gambar 3.2. Desain awal arena
Namun penggunaan kertas banner ini akan diganti, karena desain kertas yang digunakan memiliki garis-garis berwarna hitam yang menganggu sistem pembacaan cahaya laser oleh kamera pada sistem modul pembelajaran ini.
Gambar 3.3. Kondisi cahaya laser yang ideal
Gambar 3.4. Kondisi cahaya laser yang kurang ideal
Gambar 3.3 menunjukan kondisi cahaya laser yang ideal, namun apabila cahaya laser ditembakkan ke daerah persimpangan antara dua garis hitam (gambar 3.4), maka cahaya laser akan lebih gelap dan kecil (daerah sebaran cahaya laser berkurang). Hal ini terjadi karena warna hitam bersifat menyerap cahaya. Selain itu, penggunaan kertas banner menyebabkan penempelan tidak sempurna (ada beberapa bagian banner yang menggelembung) karena hanya menggunakan selotip pada bagian-bagian ujung kertas. Dengan alasan-alasan yang telah disebutkan maka penulis memutuskan untuk memperbaharui desain dengan menggunakan latar warna cyan (CMYK: 100, 0, 0, 0) dan hanya terdiri atas garis-garis berwarna abu- abu (CMYK: 0, 0, 0, 20) dan menggunakan kertas berbahan dasar stiker inkjet matte. Berikut adalah desain yang dimaksudkan.
Gambar 3.5. Desain arena untuk akrilik 90 cm x 90 cm (bidang horisontal)
Gambar 3.6. Desain arena untuk akrilik 90 cm x 50 cm (bidang vertikal)
Gambar 3.7. Desain arena untuk akrilik 90 cm x 50 cm (bidang vertikal)
Dalam membantu kamera untuk melakukan pengolahan data pixels posisi cahaya laser menjadi data koordinat end-effector dalam satuan sentimeter (akan dijelaskan lebih lanjut pada sub bab 3.4.) maka pada arena diberikan beberapa penanda berupa stiker dengan bentuk kotak (berjumlah 4 ditempelkan pada bidang horisontal) atau lingkaran berwarna hitam kotak (berjumlah 4 ditempelkan pada bidang vertikal) yang dapat dilihat pada gambar 3.8. Selain itu, terdapat 2 penanda lain yang berupa stiker berbentuk segitiga dengan warna merah (ditempelkan pada bidang horisontal dan vertikal) merupakan penanda garis sumbu y = 0 cm untuk memudahkan pengamatan secara manual.
Gambar 3.8. Beberapa penanda pada arena
3.2. Modifikasi Desain Robot Lengan EEZYbot Arm MK2
Robot lengan yang digunakan pada modul pembelajaran ini dicetak dengan menggunakan 3D printing dengan bahan dasar filamen PLA (polylactic acid). Untuk desain dari robot lengan ini dapat didownload dari www.eezyrobots.it (Franciscone, 2018). Berikut adalah gambar robot EEZYbot Arm MK2 original.
Gambar 3.9. Robot EEZYbot Arm MK2 original
Untuk dapat mendeteksi sudut kemiringan link 2 dan link 3 diperlukan dua buah sensor accelerometer MPU-6050 dan sebuah sensor kompas HMC5883L.
Link 2 (13,5 cm)
Link 3 (14,7 cm)
Link 1 (9,5 cm)
Link 4 (10 cm)
Dengan demikian perlu dilakukan modifikasi desain link 2 dan link 3 agar dapat meletakan sensor accelerometer pada kedua link tersebut dan sensor kompas pada link 3.
Gambar 3.10. Modifikasi link 2
Gambar 3.10 menunjukan modifikasi yang dilakukan pada link 2 dengan memberikan 2 buah lubang lingkaran dengan diameter 3 mm dengan jarak antara pusat lubang sebesar 14,8 mm. Kedua lubang ini ditujukan untuk baut 3 mm penahan sensor MPU-6050. Pemilihan posisi peletakan sensor ini disebabkan karena pada posisi tersebut sensor akan sejajar dengan garis link 2 sehingga akan mempermudah pengolahan data raw accelerometer dari sensor MPU-6050 ini.
Gambar 3.11. Modifikasi link 3
Gambar 3.11 merupakan modifikasi link 3 dengan menambahkan 4 lubang berbentuk lingkaran dengan diameter setiap lubang 3 mm. Dua buah lubang bagian kanan pada gambar 3.11 diperuntukan sensor accelerometer MPU-6050 dengan jarak antara pusat lubang sebesar 14,8 mm. Pemilihan posisi untuk sensor MPU- 6050 adalah karena pada posisi ini sensor akan lebih mudah dipasang dibadingkan pada posisi lain dan pada posisi ini sensor akan hampir sejajar dengan garis link 3.
Walaupun ada perbedaan kemiringan namun hal ini tidak masalah karena pengolahan data accelerometer hanya perlu ditambah sebuah sudut offset yang akan dibahas pada sub-bab 3.6.2.1. Sedangkan untuk dua lubang lainnya diperuntukan sensor kompas HMC5883L dengan jarak antara pusat lubang adalah 8,2 mm.
Alasan yang mendasari peletakan sensor kompas pada posisi ini adalah posisi ini merupakan posisi yang jauh dari motor servo dan rangkaian elektonika lainnya.
Pembacaan sensor kompas akan kacau apabila diletakan dengan sebuah benda yang menghasilkan atau mempengaruhi medan magnet seperti motor servo dan rangkaian elektronika (sensor MPU-6050). Pada link 4 akan dilakukan perubahan total dengan desain sebagai berikut.
Gambar 3.12. Desain link 4 bagian 1
Gambar 3.13. Desain link 4 bagian 2
Gambar 3.14. Desain link 4 bagian 3
Gambar 3.12 merupakan bagian link 4 yang merupakan desain original dari www.eezyrobots.it (Franciscone, 2018) dan dihubungkan dengan bagian lain robot lengan yang menyebabkan link 4 akan selalu sejajar dengan bidang dasar (base) dari robot. Gambar 3.14 merupakan bagian yang digunakan untuk peletakan dua buah laser yang digunakan pada sistem. Lubang yang digunakan memiliki diameter 7,3 mm. Bagian ini kemudian akan dimasukkan ke lubang berbentuk kotak yang terdapat pada gambar 3.13. Dengan demikian panjang link 4 dapat diubah seusai keinginan pengguna. Pada sistem ini, penulis mengatur agar panjang link 4 sebesar 9 cm. Berikut ini hasil akhir dari link 4 yang telah dirakit.
Gambar 3.15. Link 4 yang telah dirakit
Berikut ini adalah gambar keseluruhan dari robot lengan yang telah dimodifikasi.
Gambar 3.16. Robot lengan yang digunakan Link 2
(13,5 cm)
Link 3 (14,7 cm)
Link 1 (9,5 cm)
Link 4 (9 cm)
3.3. Desain Mounting Raspberry Pi Camera
Untuk mounting Raspberry Pi camera dicetak menggunakan 3D printing dengan bahan dasar filamen PLA (polylactic acid) dan menggunakan CNC cutting laser dengan bahan dasar akrilik bening dengan ketebalan 4 mm. Secara garis besar mounting terbagi menjadi 2 bagian, bagian pertama adalah bagian mount yang menjadi tempat peletakan kamera yang dicetak menggunakan 3D printing. Bagian ini merupakan modifikasi desain Raspberry Pi camera mount yang diambil dari https://cdn.thingiverse.com/ (“Raspberry Pi Camera Mount,” n.d.). Berikut adalah desain bagian mount dari mounting kamera.
Gambar 3.17. Desain mounting kamera bagian mount (1)
Gambar 3.18. Desain mounting kamera bagian mount (1) tampak atas
Gambar 3.17 merupakan bagian yang menjadi tempat peletakan Raspberry Pi camera dimana pada bagian ini disediakan sebuah lubang berbentuk persegi panjang untuk kabel dari Raspberry Pi camera (tampak pada gambar 3.18). Di bagian dasar merupakan bidang berbentuk bola dengan sebuah lubang lingkaran berdiameter 2 mm pada pusatnya yang berfungsi untuk menghubungkan bagian ini dengan bagian berikut.
Gambar 3.19. Desain mounting kamera bagian mount (2)
Pada bagian atas Gambar 3.19 3.19 terdapat lubang lingkaran dengan diameter 2 mm yang difungsikan untuk baut dan mur yang menghubungkan bagian ini dengan bagian yang ditunjukan gambar 3.17. Sedangkan pada bagian bawah terdapat sebuah lubang lingkaran berdiameter 6 mm yang difungsikan untuk tiang besi screw (tinggi sebesar 13,2 cm) yang menghubungkan bagian mount dengan bagian kedua yaitu bagian base. Alasan penggunaan tiang dengan tinggi 13,2 cm ini adalah agar kamera dapat menjangkau arena dengan maksimal, hal ini akan dijelakan lebih lanjut pada sub-bab 3.7.2. Bagian base dicetak menggunakan mesin CNC cutting laser dengan desain sebagai berikut.
Gambar 3.20. Desain mounting kamera bagian base
Pada sisi kiri gambar 3.20 merupakan bagian yang berfungsi untuk menopang mounting pada rel alumunium yang terdapat pada bagian ujung arena.
Bagian inilah yang menyebabkan mounting dapat bergeser sepanjang rel alumunium. Sedangkan pada sisi kanan gambar merupakan bagian base yang terhubung dengan tiang besi. Terdapat tiga lubang pada bagian ini, lubang bagian tengah berdiameter 6 mm (untuk tiang besi) sementara dua lubang lainnya berdiameter 4 mm yang difungsikan sebagai mekanisme penguncian mounting agar tidak dapat bergeser pada rel aluminium. Berikut adalah gambar dari keseluruhan mounting kamera yang telah disatukan.
Gambar 3.21. Mounting raspberry pi camera
3.4. Perhitungan Kinematika Robot Lengan
Pada sub-bab ini akan dijelaskan perhitungan kinematika dari robot lengan yang digunakan pada sistem modul pembelajaran ini. Sebelum melakukan perhitungan kinematika maka ditentukan sumbu-sumbu pada base terlebih dahulu.
Gambar 3.22. Penentuan sumbu-sumbu pada base robot X+
Y+ Z+
13,2 cm
Gambar 3.23. Penentuan sumbu-sumbu pada base robot (arena)
Pada sistem modul pembelajaran ini akan tersedia dua mode yaitu forward kinematics dan inverse kinematics. Perhitungan forward kinematics memiliki tujuan untuk mengetahui posisi koordinat end-effector robot dari base robot (gambar 3.23) berdasarkan data input berupa sudut kemiringan link-link robot.
Sedangkan perhitungan inverse kinematics memiliki tujuan untuk mengetahui sudut kemiringan pada setiap link robot berdasarkan data input berupa posisi koordinat end-effector robot dari base robot (gambar 3.23). Dengan demikian, pada projek ini posisi koordinat end-effector akan diukur berdasarkan sumbu-sumbu base robot lengan.
3.4.1. Forward Kinematics
Berikut adalah gambar dari penentuan joint dan sumbu-sumbu pada setiap joint pada robot lengan yang digunakan.
Gambar 3.24. Sumbu pada setiap joint robot lengan
Gambar 3.25. Sumbu pada setiap joint robot lengan tampak atas
X2 Z3
X3
Z4 X4
X0 X1 Z1 Z2
θ2
θ3
θ4
θ4
Z0
X1
θ
1 X0Dengan mengutip persamaan (2.1), maka didapatkan parameter-parameter Denavit-Hartenberg berikut.
Tabel 3.1. Parameter Denavit-Hartenberg
i αi-1 ai-1 di θi
1 0o 0 L1 θ1
2 90o 0 0 θ2
3 0o L2 0 θ3
4 0o L3 0 -θ3 - θ2
Dimana L1 merupakan panjang link 1 (9,5 cm), L2 merupakan panjang link 2 (13,5 cm), L3 merupakan panjang link 3 (14,7 cm). Sedangkan θ1 adalah sudut putar yang dibentuk sumbu x1 terhadap x0, θ2 adalah sudut putar yang dibentuk sumbu x2 terhadap x1 dan θ3 adalah sudut putar yang dibentuk sumbu x3 terhadap x2. Kemudian dengan menggunakan persamaan umum matriks transformasi yang telah dibahas pada sub-bab 2.1.1., maka didapati 4 matriks transformasi sebagai berikut.
1𝑇
0 = [ 𝑐𝑜𝑠𝜃1 𝑠𝑖𝑛𝜃1
0 0
−𝑠𝑖𝑛𝜃1 𝑐𝑜𝑠𝜃1
0 0
0 0 1 0
0 0 𝐿1
1
] (3.1)
2𝑇
1 = [ 𝑐𝑜𝑠𝜃2
0 𝑠𝑖𝑛𝜃2
0
−𝑠𝑖𝑛𝜃2 0 𝑐𝑜𝑠𝜃2
0
0
−1 0 0
0 0 0 1
] (3.2)
3𝑇
2 = [ 𝑐𝑜𝑠𝜃3 𝑠𝑖𝑛𝜃3
0 0
−𝑠𝑖𝑛𝜃3 𝑐𝑜𝑠𝜃3
0 0
0 0 1 0
𝐿2 0 0 1
] (3.3)
4𝑇
3 = [
𝑐𝑜𝑠(−𝜃3− 𝜃2) 𝑠𝑖𝑛(−𝜃3− 𝜃2)
0 0
−𝑠𝑖𝑛(−𝜃3− 𝜃2) 𝑐𝑜𝑠(−𝜃3− 𝜃2)
0 0
0 0 1 0
𝐿3 0 0 1
] (3.4)
Keterangan :
θ1 = sudut putar yang dibentuk sumbu x1 terhadap x0 θ2 = sudut putar yang dibentuk sumbu x2 terhadap x1 θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2 L1 = panjang link 1 (dalam cm)
L2 = panjang link 2 (dalam cm) L3 = panjang link 3 (dalam cm)
Untuk mendapatkan matriks transformasi 0 ke 4 maka perlu dilakukan pengalian antara matriks transformasi, berikut ini adalah persamaan matriks transformasi 0 ke 4.
4𝑇
0 = 𝑇10 𝑇21 𝑇 32 43𝑇
= [
𝐴1 B1 (𝑠𝜃1) C1 A2 B2 (−𝑐𝜃1) C2 A3
0 B3
0
XX0XX 0
C3 1
] (3.5)
Dimana :
A1 = 𝑐𝜃1𝑐𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2) − 𝑐𝜃1𝑠𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑐𝜃1𝑐𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) − 𝑐𝜃1𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) A2 = 𝑠𝜃1𝑐𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃1𝑠𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) −
𝑠𝜃1𝑐𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) − 𝑠𝜃1𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2)
A3 = 𝑠𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2) + 𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) + 𝑐𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2)
B1 = −𝑐𝜃1𝑐𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) + 𝑐𝜃1𝑠𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) − 𝑐𝜃1𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑐𝜃1𝑠𝜃2𝑐𝜃3𝑐(−𝜃3 − 𝜃2) B2 = −𝑠𝜃1𝑐𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) + 𝑠𝜃1𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) −
𝑠𝜃1𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃1𝑠𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2)
B3 = −𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) − 𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) + 𝑐𝜃2𝑐𝜃3𝑐(−𝜃3 − 𝜃2)
C1 = 𝐿3 (𝑐𝜃1𝑐𝜃2𝑐𝜃3 − 𝑐𝜃1𝑠𝜃2𝑠𝜃3) + 𝐿2 𝑐𝜃1𝑐𝜃2 C2 = 𝐿3 (𝑠𝜃1𝑐𝜃2𝑐𝜃3− 𝑠𝜃1𝑠𝜃2𝑠𝜃3) + 𝐿2 𝑠𝜃1𝑐𝜃2
C3 = 𝐿3 (𝑠𝜃2𝑐𝜃3+ 𝑐𝜃2𝑠𝜃3) + 𝐿2 𝑠𝜃2+ 𝐿1 c = cos
s = sin
θ1 = sudut putar yang dibentuk sumbu x1 terhadap x0 θ2 = sudut putar yang dibentuk sumbu x2 terhadap x1 θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2 L1 = panjang link 1 (dalam cm)
L2 = panjang link 2 (dalam cm) L3 = panjang link 3 (dalam cm)
Untuk mendapatkan persamaan akhir dari forward kinematics maka perlu dilakukan perkalian matriks antara persamaan (3.5) dengan matriks dimensi link 4 (L4 merupakan panjang link 4). Berikut ini adalah perhitungannya.
0𝑃 = 40𝑇 𝑃4
= [
𝐴1 B1 (𝑠𝜃1) C1 A2 B2 (−𝑐𝜃1) C2 𝐴3
0 B3
0
XX0XX 0
C3 1
] [ 𝐿4
0 0 1
]
= [
𝐴1 B1 (𝑠𝜃1) C1 A2 B2 (−𝑐𝜃1) C2 𝐴3
0 B3
0
XX0XX 0
C3 1
] [ 9 0 0 1
] (3.6)
Keterangan :
A1 = 𝑐𝜃1𝑐𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2) − 𝑐𝜃1𝑠𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑐𝜃1𝑐𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) − 𝑐𝜃1𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) A2 = 𝑠𝜃1𝑐𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃1𝑠𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) −
𝑠𝜃1𝑐𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) − 𝑠𝜃1𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2)
A3 = 𝑠𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2) + 𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) + 𝑐𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2)
B1 = −𝑐𝜃1𝑐𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) + 𝑐𝜃1𝑠𝜃2𝑠𝜃3𝑠(−𝜃3− 𝜃2) − 𝑐𝜃1𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑐𝜃1𝑠𝜃2𝑐𝜃3𝑐(−𝜃3 − 𝜃2)
B2 = −𝑠𝜃1𝑐𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) + 𝑠𝜃1𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) − 𝑠𝜃1𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃1𝑠𝜃2𝑐𝜃3𝑐(−𝜃3− 𝜃2)
B3 = −𝑠𝜃2𝑐𝜃3𝑠(−𝜃3− 𝜃2) − 𝑐𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) − 𝑠𝜃2𝑠𝜃3𝑐(−𝜃3− 𝜃2) + 𝑐𝜃2𝑐𝜃3𝑐(−𝜃3 − 𝜃2)
C1 = 14,7 (𝑐𝜃1𝑐𝜃2𝑐𝜃3 − 𝑐𝜃1𝑠𝜃2𝑠𝜃3) + 13,5 𝑐𝜃1𝑐𝜃2 C2 = 14,7 (𝑠𝜃1𝑐𝜃2𝑐𝜃3− 𝑠𝜃1𝑠𝜃2𝑠𝜃3) + 13,5 𝑠𝜃1𝑐𝜃2 C3 = 14,7 (𝑠𝜃2𝑐𝜃3 + 𝑐𝜃2𝑠𝜃3) + 13,5 𝑠𝜃2+ 9,5 c = cos
s = sin
θ1 = sudut putar yang dibentuk sumbu x1 terhadap x0 θ2 = sudut putar yang dibentuk sumbu x2 terhadap x1 θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2 L4 = panjang link 4 (dalam cm)
Dimana persamaan (3.6) setara dengan matriks koordinat end-effector sebagai berikut.
0𝑃 = [ 𝑥 𝑦 𝑧 1
] (3.7)
Keterangan :
x = koordinat end-effector pada sumbu x (dalam cm) y = koordinat end-effector pada sumbu y (dalam cm) z = koordinat end-effector pada sumbu z (dalam cm)
3.4.2. Inverse Kinematics
Perhitungan inverse kinematics terbagi menjadi 3 bagian. Pertama-tama, untuk menentukan θ1 digunakan hukum tangensial.
Gambar 3.26. Inverse kinematics sudut θ1
Pada gambar 3.26Gambar 3.26, didapati bahwa besar nilai tangen θ1
adalah y dibagi x. Dengan demikian besar nilai sudut θ1 adalah sebagai berikut.
𝑡𝑎𝑛 θ1 = 𝑦 𝑥 θ1 = 𝑡𝑎𝑛−1(𝑦
𝑥) (3.8)
Dimana :
θ1 = sudut putar yang dibentuk sumbu x1 terhadap x0 x = koordinat end-effector pada sumbu x (dalam cm) y = koordinat end-effector pada sumbu y (dalam cm)
Besar nilai sudut θ2 akan dipengaruhi oleh besar nilai sudut θ3. Oleh karena itu, perhitungan inverse kinematics akan dilanjutkan untuk menemukan persamaan θ3.
θ1
X atau X0
Y X1
Gambar 3.27. Inverse kinematics sudut θ3
Melalui gambar diatas didapati bahwa:
𝛼 = 180 − (−𝜃3)
𝛼 = 180 + 𝜃3 (3.9)
Dimana :
α = sudut putar yang dibentuk garis kuning d (garis link 2) dan e (garis link 3)
θ3 = sudut putar yang dibentuk sumbu x3 (garis kuning e) terhadap x2 (garis kuning d)
Kemudian dengan mengamati segitiga kuning (gambar 3.27) yang terbentuk dapat ditemukan persamaan θ3 menggunakan hukum cosinus.
𝑐2 = 𝑑2+ 𝑒2− 2 𝑑 𝑒 cos 𝛼
(√𝑏2+ 𝑎2)2= 𝐿22+ 𝐿32− 2 𝐿2 𝐿3 cos 𝛼
(√(√𝑥2+ 𝑦2− 𝐿4)2+ (𝑧 − 𝐿1)2)
2
= 𝐿22+ 𝐿32− 2 𝐿2 𝐿3 cos 𝛼
(√𝑥2+ 𝑦2− 𝐿4)2+ (𝑧 − 𝐿1)2= 𝐿22+ 𝐿32− 2 𝐿2 𝐿3 cos(180 + θ3) (√𝑥2+ 𝑦2− 𝐿4)2+ (𝑧 − 𝐿1)2= 𝐿22+ 𝐿32+ 2 𝐿2 𝐿3 cos θ3
θ3 = cos−1((√𝑥2+ 𝑦2− 𝐿4)2+ (𝑧 − 𝐿1)2− 𝐿22− 𝐿32
2 𝐿2 𝐿3 )
𝐝
𝐛 𝐚
θ3 α
𝐜 𝐞
θ
3= cos
−1(
(√𝑥2+𝑦2 −9)2+(z−9,5)2−398,34
396,9
)
(3.10)Dimana :
a = ketinggian joint 4 terhadap joint 2 b = panjang posisi joint 4 terhadap joint 2
c = garis lurus yang ditarik dari joint 2 ke joint 4 d = garis link 2
e = garis link 3
θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2 x = koordinat end-effector pada sumbu x (dalam cm) y = koordinat end-effector pada sumbu y (dalam cm) z = koordinat end-effector pada sumbu z (dalam cm) L1 = panjang link 1 (dalam cm)
L2 = panjang link 2 (dalam cm) L3 = panjang link 3 (dalam cm) L4 = panjang link 4 (dalam cm)
Untuk menemukan persamaan inverse kinematics untuk θ2, dilakukan pengamatan lengan robot sebagai berikut.
Gambar 3.28. Inverse kinematics sudut θ2 saat θ3 negatif β
θ2 θ
b c
a θ3 α
d e
f
x1
Berikut ini adalah persamaan dari θ.
𝑡𝑎𝑛 𝜃 = 𝑎 b
𝑡𝑎𝑛 𝜃 = 𝑧 − 𝐿1
√𝑥2+ 𝑦2 − 𝐿4 𝜃 = 𝑡𝑎𝑛−1( 𝑧 − 𝐿1
√𝑥2 + 𝑦2− 𝐿4)
𝜃 = 𝑡𝑎𝑛
−1(
𝑧−9,5√𝑥2+𝑦2 −9
)
(3.11)Dimana :
a = ketinggian joint 4 terhadap joint 2 b = panjang posisi joint 4 terhadap joint 2
θ = sudut putar yang dibentuk garis d terhadap sumbu X1 x = koordinat end-effector pada sumbu x (dalam cm) y = koordinat end-effector pada sumbu y (dalam cm) z = koordinat end-effector pada sumbu z (dalam cm) L1 = panjang link 1 (dalam cm)
L4 = panjang link 4 (dalam cm)
Apabila dilakukan pengamatan pada segitiga kuning (gambar 3.28) maka didapatkan sebuah persamaan sebagai berikut.
𝑓2 = 𝑒2+ d2− 2 𝑒 d cos 𝛽
𝐿32 = 𝐿22+ (√𝑏2+ 𝑎2)2− 2 𝐿2 √b2+ a2 cos 𝛽 𝐿32 = 𝐿22+ ((√𝑥2+ 𝑦2− 𝐿4)2+ (𝑧 − 𝐿1)2)
− 2 𝐿2 √(√𝑥2+ 𝑦2− 𝐿4)2+ (z − 𝐿1)2 cos 𝛽
𝛽 = cos−1 (
𝐿22− 𝐿32 + (√𝑥2+ 𝑦2− 𝐿4)2+ (𝑧 − 𝐿1)2 2 𝐿2 √(√𝑥2 + 𝑦2− 𝐿4)2+ (𝑧 − 𝐿1)2 )
𝛽 = cos
−1(
−33,84+ (√𝑥2+𝑦2 −9)2+(𝑧−9,5)2 27 √(√𝑥2+𝑦2 −9)2+(z−9,5)2)
(3.12)Dimana :
a = ketinggian joint 4 terhadap joint 2 b = panjang posisi joint 4 terhadap joint 2
c = panjang posisi ujung end-effector terhadap joint 2 d = garis lurus yang ditarik dari joint 2 ke joint 4 e = garis link 2
f = garis link 3
β = sudut putar yang dibentuk garis d dan e
x = koordinat end-effector pada sumbu x (dalam cm) y = koordinat end-effector pada sumbu y (dalam cm) z = koordinat end-effector pada sumbu z (dalam cm) L1 = panjang link 1 (dalam cm)
L2 = panjang link 2 (dalam cm) L3 = panjang link 3 (dalam cm) L4 = panjang link 4 (dalam cm)
Sehingga untuk θ3 bernilai negatif maka didapatkan persamaan θ2:
θ2 = θ + β
θ
2= 𝑡𝑎𝑛
−1(
𝑧−9,5√𝑥2+𝑦2 −9
) +
𝑐𝑜𝑠
−1(
−33,84+ (√𝑥2+𝑦2 −9)2+(𝑧−9,5)2 27 √(√𝑥2+𝑦2 −9)2+(𝑧−9,5)2)
(3.13)Dimana :
θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2
θ = sudut putar yang dibentuk garis d terhadap sumbu X1 (gambar 3.28)
β = sudut putar yang dibentuk garis d dan e (gambar 3.28) x = koordinat end-effector pada sumbu x (dalam cm) y = koordinat end-effector pada sumbu y (dalam cm) z = koordinat end-effector pada sumbu z (dalam cm)
Sedangkan ketika θ3 bernilai positif maka persamaan θ2 yang didapatkan adalah sebagai berikut.
θ2 = θ − β
θ
2= 𝑡𝑎𝑛
−1(
𝑧−9,5√𝑥2+𝑦2 −9
) −
𝑐𝑜𝑠
−1(
−33,84+ (√𝑥2+𝑦2 −9)2+(𝑧−9,5)2 27 √(√𝑥2+𝑦2 −9)2+(𝑧−9,5)2)
(3.14)Dimana :
θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2
θ = sudut putar yang dibentuk garis d terhadap sumbu X1 (gambar 3.28) β = sudut putar yang dibentuk garis d dan e (gambar 3.28)
x = koordinat end-effector pada sumbu x (dalam cm) y = koordinat end-effector pada sumbu y (dalam cm) z = koordinat end-effector pada sumbu z (dalam cm)
Namun, persamaan (3.14) ini tidak akan digunakan sehubungan robot lengan tidak akan pernah memiliki nilai sudut θ3 positif.
3.4.3. Konversi Sudut Kemiringan Link ke Sudut Motor Servo
Pada robot lengan ini, posisi sudut motor servo memiliki sumbu yang berbeda dengan posisi sudut kemiringan link. Sehingga dibutuhkan persamaan yang mampu mengkonversi posisi sudut kemiringan link ke posisi sudut motor servo.
Motor servo 1 dipasang untuk memutar robot secara horisontal.
Gambar 3.29. Motor servo 1
Pada gambar diatas, tampak bahwa sistem penggerakan menggunakan 2 buah gir.
Perbandingan jumlah gir motor servo terhadap jumlah gir robot adalah 1 : 2. Berarti dengan jangkauan motor servo sebesar 0o – 180o hanya mampu membuat besar jangkuan putaran horisontal robot sebesar 90o.
Gambar 3.30. Posisi robot saat sudut motor servo 1 sebesar 0o
Gambar 3.31. Posisi robot saat sudut motor servo 1 sebesar 180o
Sesuai sumbu yang telah dibuat pada forward kinematics, pada saat derajat motor servo 1 sebesar 0o, maka besar θ1 adalah 45o. Sedangkan saat derajat motor servo 1 sebesar 180o, maka besar θ1 adalah -45o. Dengan menggunakan persamaan garis lurus, didapati persamaan θM1 (posisi sudut motor servo 1) terhadap θ1 sebagai berikut.
θ1− 45°
−45° − 45°= θM1− 0 180° − 0 θ1− 45°
−90° = θM1 180°
θ1− 45°
−1 = θM1 2
θM1= 90° − 2 θ1 (3.15)
Dimana :
θ1 = sudut putar yang dibentuk sumbu x1 terhadap x0 θM1 = posisi sudut motor servo 1
Sedangkan motor servo 2 berfungsi untuk memaju-mundurkan link 2.
Jangkauan motor servo 2 adalah 50o-145o. Untuk menemukan persamaan θM2
(posisi sudut motor servo 2) terhadap θ2, perlu mengamati gambar berikut ini.
Gambar 3.32. Posisi robot saat sudut motor servo 2 sebesar 110o
Dengan melihat gambar 3.32, secara sederhana persamaan θM2 (posisi sudut motor servo 2) terhadap θ2 adalah sebagai berikut.
180° = θ2+ θM2
θM2= 180° − θ2 (3.16)
Dimana :
θ2 = sudut putar yang dibentuk sumbu x2 terhadap x1 θM2 = posisi sudut motor servo 2
Sedangkan motor servo 3 berfungsi untuk menaik-turunkan link 3.
Jangkauan motor servo 3 adalah 28o-112o. Untuk menemukan persamaan derajat motor servo 3, perlu mengamati gambar berikut ini.
θ2 θM2
Gambar 3.33. Posisi robot saat sudut motor servo 3 sebesar 30o
Dengan demikian persamaan θM3 (posisi sudut motor servo 3) terhadap θ3 adalah sebagai berikut.
90° = θM3+ β
90° = θM3+ (180 − θ2− θ31)
90° = θM3+ (180 − θ2− (180° + θ3)) 90° = θM3− θ2− θ3
θM3= 90° + θ2+ θ3 (3.17)
Dimana :
θ2 = sudut putar yang dibentuk sumbu x2 terhadap x1 θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2 θM3 = posisi sudut motor servo 3
θ3
θ31 𝛉𝟑𝟏 𝐚𝐭𝐚𝐮
𝛉𝐌𝟑 θ2
β
3.5. Desain Hardware Sistem Modul Pembelajaran
Berikut adalah skema wiring hardware dari keseluruhan sistem modul pembelajaran.
Gambar 3.34. Wiring hardware sistem
Pada gambar 3.34, dapat dijabarkan Raspberry Pi camera v2 sebagai sensor yang mendeteksi posisi cahaya laser yang ditembakan oleh pointer laser pada end-effector robot lengan. Kamera ini akan dihubungkan pada port camera serial interface Raspberry Pi menggunakan ribbon cable. Selain itu, terdapat 2 buah sensor accelerometer MPU-6050 dan sebuah sensor kompas HMC5883L yang berfungsi untuk mendeteksi derajat kemiringan lengan-lengan robot. Pada Raspberry Pi 3 b+ juga terhubung ke sebuah rangkaian drive arus untuk menyalakan/mematikan dua buah laser dioda 650 nm yang terdapat pada end- effector robot lengan. Power supply kamera, MPU-6050, HMC 5883L dan rangkaian drive arus berasal dari Raspberry Pi. Hasil gambar tangkapan kamera, data raw MPU-6050 dan HMC5883L akan diproses oleh Raspberry Pi 3 b+. Output dari Raspberry Pi berupa perintah untuk menggerakkan robot lengan dengan koordinat tertentu atau dengan posisi derajat tertentu pada motor-motor robot.
Output ini direalisasikan dengan 3 buah motor servo MG995, yang posisi derajatnya dikontrol dengan PWM/servo driver. Selain itu, terdapat sebuah ip camera yang akan digunakan untuk menstreamingkan video kondisi sistem pada
website. Ip camera ini akan dilengkapi dengan sebuah micro sd card 8 GB untuk keperluan penyimpanan program pengaktif protokol komunikasi streaming. Power supply motor-motor servo pada robot lengan berasal dari PWM/servo driver.
Sementara itu, Raspberry Pi dan servo driver masing-masing disuplai oleh power adaptor 5V 3A. Sedangkan, ip camera disuplai menggunakan sebuah power adaptor 5V 1A.
3.5.1. Wiring Sensor Accelerometer MPU-6050
Berikut adalah tabel koneksi pin-pin sensor MPU-6050 yang terdapat pada link 2 ke pin-pin GPIO Raspberry Pi 3 b+.
Tabel 3.2. Konfigurasi Koneksi Pin Sensor MPU-6050 Link 2 Sensor MPU-6050 Raspberry Pi 3 b+
VCC Power +5V
GND Ground
SDA Serial Data (Pin 3) SCL Serial Clock (Pin 5)
AD0 Ground
Sedangkan berikut adalah tabel koneksi pin-pin sensor MPU-6050 yang terdapat pada link 3.
Tabel 3.3. Konfigurasi Koneksi Pin Sensor MPU-6050 Link 3 Sensor MPU-6050 Raspberry Pi 3 b+
VCC Power +5V
GND Ground
SDA Serial Data (Pin 3) SCL Serial Clock (Pin 5)
AD0 Power +5V
Yang membedakan konfigurasi koneksi pin antara kedua sensor adalah pin AD0. Untuk pin AD0 sensor pada link 2 dikoneksikan pada pin ground, sehingga
Raspberry Pi akan mengenali sensor ini sebagai slave dengan address 0x68 pada komunikasi I2C. Sementara itu, pin AD0 sensor pada link 3 dikoneksikan pada pin power +5V agar dikenali sebagai slave dengan address 0x69 oleh Raspberry Pi.
3.5.2. Wiring Sensor Kompas HMC5883L
Berikut adalah tabel koneksi pin-pin sensor HMC5883L ke pin-pin GPIO Raspberry Pi 3 b+.
Tabel 3.4. Konfigurasi Koneksi Pin Sensor HMC5883L Sensor HMC5883L Raspberry Pi 3 b+
VCC Power +3.3V
GND Ground
SDA Serial Data (Pin 3) SCL Serial Clock (Pin 5)
Sensor kompas ini akan dikenal sebagai slave I2C device dengan address 0x1E oleh Raspberry Pi master I2C device.
3.5.3. Wiring Laser Dioda
Laser dioda yang digunakan pada sistem ini berjumlah 2 buah dengan spektrum warna cahaya sebesar 650 nm atau berwarna merah. Kedua laser ini akan dipararelkan dan agar lebih efisien maka kedua laser ini akan terhubung ke sebuah rangkaian drive arus yang dikontrol oleh Raspberry Pi. Sebuah laser dioda 650nm yang digunakan membutuhkan suplai + 3.3 V dengan arus sebesar 17,5 mA. Karena keduanya dipararel, maka dibutuhkan suplai sebesar + 3.3 V 35 mA. Padahal sebuah pin GPIO Raspberry Pi 3 b+ hanya disarankan memberikan arus output high sebesar 16 mA (Raspberry Pi Foundation, n.d.-a). Dengan demikian, arus suplai harus diambil dari pin power Raspberry Pi, namun tetap diperlukan pin GPIO untuk mengatur nyala matinya laser dioda. Untuk mendrive arus dari pin power maka digunakan sebuah transistor TIP41C. Berikut adalah rumus-rumus yang digunakan dalam pembuatan rangkaian ini.
ℎ𝐹𝐸 = 𝐼𝑐
𝐼𝑏 (3.18)
𝐼𝑏 = 𝑉𝑏−𝑉𝑏𝑒
𝑅𝑏 (3.19)
Keterangan :
ℎ𝐹𝐸 = faktor penguat arus DC pada transistor 𝐼𝑐 = Arus kolektor pada transistor
𝐼𝑏 = Arus basis pada transistor 𝑉𝑏 = Tegangan basis pada transistor
𝑉𝑏𝑒 = Tegangan basis terhadap emitor pada transistor 𝑅𝑏 = Hambatan resistor pada basis transistor
Karena diketahui ℎ𝐹𝐸 dari TIP41C sebesar 15, nilai Vb sebesar 3,3 V, dan nilai Vbe sebesar 0,7 V maka berikut perhitungan besarnya nilai hambatan resistor pada basis transistor.
ℎ𝐹𝐸 = 𝐼𝑐
𝐼𝑏
15 = 35 𝑥 10𝑉𝑏−𝑉𝑏𝑒−3
𝑅𝑏
15 = 35 𝑥 103,3−0,7−3 𝑅𝑏
15 = 𝑅𝑏 35 𝑥 10−3
2,6
𝑅𝑏 = 2,6 𝑥 15
35 𝑥 10−3
𝑅𝑏 = 1114,3 𝑅𝑏 ≈ 1110 Ω
Untuk itu dalam rangkaian drive arus ini dibutuhkan sebuah resistor 1,1 KΩ 0,5 W. Berikut adalah gambar rangkaian yang digunakan untuk kedua laser diode ini.
Gambar 3.35. Rangkaian drive arus laser dioda
Untuk pengendalian transistor maka kaki basis transistor dihubungkan ke pin GPIO 4 (pin 7) dari Raspberry Pi 3 b+ dengan hambatan resistor sebesar 1100 Ω. Kaki emitor transistor terhubung ke pin ground Raspberry Pi. Sedangkan kaki emiter transistor terhubung dengan katoda dari laser diode, dan anoda laser dioda terhubung dengan suplai + 3,3 V dari Raspberry Pi 3 b+. Dengan demikian penyalaan laser dioda dilakukan dengan memberi logika high pada pin GPIO 4 (+
3,3 V) dan sebaliknya.
3.5.4. Wiring Motor Servo
Berikut adalah tabel konfigurasi pengkoneksian ketiga motor servo pada board PWM/servo driver.
Tabel 3.5. Konfigurasi Motor Servo pada PWM/Servo Driver Board
Motor Servo Channel PWM Servo Driver
Board Motor 1 (Pemutar robot secara horisontal) Channel 2
Motor 2 (Penggerak link 2) Channel 0
Motor 3 (Penggerak link 3) Channel 1
3.6. Sistem Kontrol Posisi Robot Lengan
Sistem kontrol posisi robot lengan pada modul pembelajaran ini adalah modified on-off control system. Pergerakan setiap motor servo berdasarkan data input pengguna akan dievaluasi (feedback) oleh sensor akselerometer dan sensor kompas. Berikut adalah blok diagram sistem kontrol posisi robot pada modul pembelajaran ini.
Gambar 3.36. Blok diagram sistem kontrol posisi robot
Karena pergerakan motor servo tidak dapat menghasilkan sudut kemiringan lengan yang tepat sesuai sudut yang dimasukan pengguna, maka untuk menghindari pergerakan motor servo tanpa henti diberikan nilai toleransi berikut.
1. Untuk motor servo 1 akan dievaluasi sensor kompas dengan toleransi nilai input θ1 ± 1o
2. Untuk motor servo 2 akan dievaluasi sensor akselerometer dengan toleransi nilai input θ2 ± 0,5o
3. Untuk motor servo 3 akan dievaluasi sensor akselerometer dengan toleransi nilai input θ3 ± 0,5o
Pergerakan motor servo akan dilakukan satu per satu, dimulai dengan menggerakkan motor servo 1 hingga berada posisi sudut kemiringan berada dalam nilai toleransi kemudian dilanjutkan dengan motor servo 2 dan motor servo 3.
Sistem penggerakan akan dibahas lebih lanjut pada subab 3.7.2.1.
3.7. Desain Software Sistem Modul Pembelajaran
Secara garis besar, berikut adalah blok diagram cara kerja dari sistem modul pembelajaran ini.
Gambar 3.37. Blok diagram sistem modul pembelajaran
Pada Raspberry Pi terdapat 3 bagian utama pada sistem ini yaitu server, database, dan sebuah program pengolah data serta pengontrol sensor maupun aktuator yang ada pada sistem ini (worker.py).
User-interface modul pembelajaran ini adalah web page yang diakses pengguna melalui browser. Melalui web page inilah pengguna dapat memasukan nilai koordinat yang ingin dicapai oleh end-effector robot atau nilai-nilai sudut kemiringan lengan robot yang ingin dibentuk. Kemudian nilai-nilai tersebut akan disalurkan melalui jaringan lokal ke server page pada Raspberry Pi. Pada server page, nilai-nilai tersebut akan dimasukan pada database dengan id atau nomor antrian tertentu. Selain itu, server page ini juga akan memeriksa status dari pengolahan nilai tersebut, apakah status pending, process, error atau finish. Status ini akan ditampilkan pada web page. Apabila status pengolahan nilai menunjukan error, maka pada web page akan menunjukan alasan yang menyebabkan error.
Sedangkan apabila status pengolahan data finish, maka server akan mengambil data
server akan men-generate tampilan formula matematika dari cara perhitungan kinematika pada web page. Selama pengaksesan web page modul pembelajaran ini, pengguna dapat mengamati kondisi robot secara langsung melalui tampilan live streaming yang berupa tampilan gambar yang diperbaharui secara terus menerus oleh server page. Tampilan live streaming ini berasal dari video ip camera yang ditampung dan diolah oleh camera server yang terdapat pada Raspberry Pi, kemudian disalurkan ke server page.
Worker.py merupakan sebuah program pengolah data serta pengontrol sensor maupun aktuator yang ada pada sistem ini. Program ini akan memeriksa apakah terdapat data input yang belum diproses pada database. Jika ada, maka program ini akan mengambil data tersebut kemudian diolah untuk menggerakkan robot. Program ini akan menerima gambar yang diambil Raspberry Pi camera, data- data raw dari sensor accelerometer maupun kompas, kemudian akan diolah hingga mengeluarkan data output yang sesuai. Data output tersebut kemudian akan dilemparkan kembali ke database.
Gambar 3.38. Time sequence diagram sistem
3.7.1. Server
Server pada sistem ini terbagi menjadi dua yaitu, server page dan camera server. Server page pada projek ini menggunakan framework Flask dengan bahasa pemrograman Python. Server2.py merupakan sebuah program pengaktif server
page yang terdapat pada home/pi/Desktop. Server2.py akan merender 4 halaman tampilan html untuk web page pada sisi client. Empat halaman tersebut adalah sebagai berikut.
1. Halaman index
Halaman ini merupakan halaman home yang memberi keterangan penggunaan web page kepada pengguna. Halaman ini dapat diakses oleh semua pengguna.
Gambar 3.39. Tampilan halaman index
2. Halaman login
Halaman ini merupakan halaman yang berisi form untuk memasukan username dan password dari pengguna yang telah terdaftar. Halaman ini hanya dapat diakses oleh pengguna yang belum login. Halaman ini bertujuan untuk mengautentifikasi pengguna, sehingga hanya pengguna yang terdaftar dan yang telah login yang dapat memanfaatkan modul pembelajaran ini.
Gambar 3.40. Tampilan halaman login
3. Halaman forward kinematics
Halaman ini merupakan fasilitas yang digunakan untuk pembelajaran forward kinematics. Pada halaman ini pengguna dapat memasukan nilai-nilai sudut kemiringan pada ketiga link robot lengan yang ingin dicoba. Halaman ini dilengkapi dengan gambar yang menunjukan parameter-parameter dari sudut kemiringan pada setiap link serta tampilan live streaming dari robot lengan.
Apabila proses pengolahan data input dari pengguna telah selesai maka halaman ini akan menampilkan data output, gambar posisi robot yang diinginkan dengan kondisi laser dioda aktif, dan rumus perhitungan dari forward kinematics. Halaman ini hanya dapat diakses oleh pengguna yang telah login. Apabila terdapat pengguna yang belum login dan mengakses halaman ini maka akan diarahkan ke halaman login.
Gambar 3.41. Tampilan halaman forward kinematics
4. Halaman inverse kinematics
Halaman ini merupakan fasilitas yang digunakan untuk pembelajaran inverse kinematics. Pada halaman ini pengguna dapat memasukan nilai-nilai
koordinat (x, y, z) end-effector robot lengan yang ingin dicoba. Halaman ini dilengkapi dengan gambar yang menunjukan parameter-parameter dari koordinat end-effector pada setiap sumbu serta tampilan live streaming dari robot lengan. Apabila proses pengolahan data input dari pengguna telah selesai maka halaman ini akan menampilkan data output, gambar posisi robot yang diinginkan dengan kondisi laser dioda aktif, dan rumus perhitungan dari inverse kinematics. Halaman ini hanya dapat diakses oleh pengguna yang telah login. Apabila terdapat pengguna yang belum login dan mengakses halaman ini maka akan diarahkan ke halaman login.
Gambar 3.42. Tampilan halaman inverse kinematics
Berikut adalah flowchart dari cara kerja server page secara umum.
Start
Data input
Memasukan data input ke dalam tabel data
(database)
Mengambil data id antrian dari tabel data (database)
id antrian
Mengambil data status dari tabel data (database) berdasarkan data id antrian
status
Status = finish
Yes
Mengambil data output dari tabel data (database) berdasarkan data id
antrian
No Status = error(1)
Yes
Menampilkan pesan Data yang anda
masukan diluar jangkauan robot!
No Status = error(2)
Yes
Menampilkan pesan Pembacaan kamera error/posisi laser diluar jangkauan
kamera!
No
Data output
Menampilkan data output, gambar robot pada posisi yang
diinginkan, dan men-generate rumus perhitungan matematika
pada web page
End Menampilkan data
status pada web page
Gambar 3.43. Flowchart cara kerja server page
Data input yang akan disalurkan oleh server page ke dalam tabel data pada database robot adalah sebagai berikut.
1. Username dari pengguna yang mengakses web page
2. Data 1 merupakan nilai sudut kemiringan θ1 (bila data tipe adalah forward kinematics) atau koordinat x end-effector
3. Data 2 merupakan nilai sudut kemiringan θ2 (bila data tipe adalah forward kinematics) atau koordinat y end-effector
4. Data 3 merupakan nilai sudut kemiringan θ3 (bila data tipe adalah forward kinematics) atau koordinat z end-effector
5. Tipe merupakan jenis kinematika yang diinginkan pengguna yaitu forward atau inverse
6. Time merupakan tanggal dan waktu saat pengguna mensubmitkan data.
7. Status merupakan status pengolahan data, pada mulanya server akan memasukan data string pending
Setelah berhasil memasukan data input, server akan mengambil data id antrian berdasarkan data time yang telah dimasukkan. Id antrian yang merupakan data yang bersifat auto increment pada tabel data. Setelah mendapatkan data id antrian, maka server page akan mengambil data status pada database berdasarkan data id antrian. Data status yang didapatkan akan ditampilkan pada web page. Apabila data status tidak sama dengan finish atau error (1) atau error (2), maka server akan kembali melakukan pengambilan data status dengan rentang waktu 1 detik. Apabila data status sama dengan finish maka server page akan mengambil data output dari tabel data pada database robot berdasarkan id antrian yang sesuai. Data output berupa 9 data, yaitu:
1. Hitung 1 merupakan nilai koordinat x end-effector (bila data tipe adalah forward kinematics) atau sudut kemiringan θ1 (bila data tipe adalah inverse kinematics) yang didapatkan dari hasil perhitungan matematika.
2. Hitung 2 merupakan nilai koordinat y end-effector (bila data tipe adalah forward kinematics) atau sudut kemiringan θ2 (bila data tipe adalah inverse kinematics) yang didapatkan dari hasil perhitungan matematika.
3. Hitung 3 merupakan nilai koordinat z end-effector (bila data tipe adalah forward kinematics) atau sudut kemiringan θ3 (bila data tipe adalah inverse kinematics) yang didapatkan dari hasil perhitungan matematika.
4. Coba 1 merupakan nilai koordinat x end-effector (bila data tipe adalah forward kinematics) atau sudut kemiringan θ1 (bila data tipe adalah inverse kinematics) yang didapatkan dari hasil percobaan penggerakan robot lengan.
5. Coba 2 merupakan nilai koordinat y end-effector (bila data tipe adalah forward kinematics) atau sudut kemiringan θ2 (bila data tipe adalah inverse kinematics) yang didapatkan dari hasil percobaan penggerakan robot lengan.
6. Coba 3 merupakan nilai koordinat z end-effector (bila data tipe adalah forward kinematics) atau sudut kemiringan θ3 (bila data tipe adalah inverse kinematics) yang didapatkan dari hasil percobaan penggerakan robot lengan.
7. x merupakan nilai koordinat x end-effector yang didapatkan dari hasil percobaan penggerakan robot lengan. Data ini khusus untuk tipe inverse kinematics.
8. y merupakan nilai koordinat y end-effector yang didapatkan dari hasil percobaan penggerakan robot lengan. Data ini khusus untuk tipe inverse kinematics.
9. z merupakan nilai koordinat z end-effector yang didapatkan dari hasil percobaan penggerakan robot lengan. Data ini khusus untuk tipe inverse kinematics.
Data output ini akan ditampilkan pada web page bersamaan dengan penampilan gambar dari robot pada posisi yang diinginkan dan penampilan rumus matematika dari cara perhitungan yang digenerate menggunakan plugins MathJax. Sedangkan apabila data status sama dengan error (1) atau error (2) maka terdapat pesan alasan terjadi error yang ditampilkan pada web page.
Gambar 3.44. Tampilan halaman inverse kinematics ketika status finish
Sepanjang proses ini tampilan live streaming akan tetap berjalan.
Tampilan ini berasal dari port 5002 yang merupakan tampilan streaming dengan protokol HTTP yang diolah oleh camera server. Berikut cuplikan program dari forward.html yang berfungsi menampilkan tampilan live streaming (baris yang ditebalkan).
<div id="data_g" style= "text-alignment:center">
<center>
<table>
<tr>
<td><img src = "static/forward.jpg" width="480px"
height="266px" alt="Menunggu pemrosesan data!"
id="resultpic"></td>
<td><img style="-webkit-user-select: none;" id="stream"
src="http://192.168.0.160:5002/" width="480px"
height="266px"></td>
</tr>
</table><br><br><br><br>
</center>
</div>
Gambar 3.45. Cuplikan program forward.html
############################################################
Live Stream Server
############################################################
The mini-http server listens to this port for requests (default:
0 = disabled) stream_port 5002
Gambar 3.46. Cuplikan (1) program motion.conf
# URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// mjpg:// rtsp:// mjpeg:// or file:///)
# Must be a URL that returns single jpeg pictures or a raw mjpeg stream. A trailing slash may be required for some cameras.
# Default: Not defined
netcam_url value rtsp://192.168.0.181:554/unicast
Gambar 3.47. Cuplikan (2) program motion.conf
Pada baris akhir gambar 3.46, merupakan pengaturan port yang dilakukan untuk penampilan live streaming. Sedangkan pada baris terakhir gambar 3.47 menunjukan sumber streaming yang berasal dari sebuah ip camera dengan ip address 192.168.0.181. Video ip camera diperoleh oleh camera server dengan menggunakan url rtsp://192.168.0.181:554/unicast (komunikasi menggunakan protokol Real Time Streaming Protocol). Jadi secara umum camera server ini mengubah format video h264 (protokol RTSP) menjadi sebuah gambar (protokol HTTP). Program motion.conf ini berfungsi untuk mengatur camera server dan berlokasi di /etc/motion/motion.conf. Sedangkan server page diatur untuk dapat diakses pengguna (pengguna harus dalam satu jaringan local dengan Raspberry Pi) pada ip address Raspberry Pi (192.168.0.160) pada port 5000. Berikut cuplikan program server2.py yang mengatur port tersebut.
if __name__ == '__main__':
app.secret_key = 'awawkpkljhuy4345vjuo9'
app.run(threaded=True, debug=True, host="0.0.0.0", port=5000)
Gambar 3.48. Cuplikan program server2.py
3.7.2. Worker
Worker tersusun atas banyak program dimana program utamanya adalah worker.py. Program worker.py merupakan program pengolah data serta pengontrol sensor maupun aktuator yang ada pada sistem ini. Di dalam program ini terdapat fungsi-fungsi untuk memanggil program-program lain seperti program untuk melakukan perhitungan kinematika, penggerakan robot, pengolah gambar dan lain- lain. Berikut merupakan mekanisme kerja worker pada sistem ini.