2. TINJAUAN PUSTAKA
2.1. Kinematika Robot
Sebuah kontruksi robot lengan dapat dimodelkan sebagai rangkaian bodi kaku yang disebut links. Links saling dihubungkan satu dengan yang lain oleh joint. Pada robot lengan, salah satu link berdiri pada suatu landasan (base) sedangkan ujung yang lain bergerak bebas. Ujung bebas inilah yang dikenal dengan istilah
end-effector. Dalam perhitungan kinematika terdapat 2 metode yaitu forward kinematics dan inverse kinematics (Phoen, 2012).
2.1.1. Forward Kinematics
Forward kinematics atau kinematika langsung digunakan untuk
mendapatkan posisi dan orientasi dari end-effector dengan memasukan beberapa nilai sudut tiap link robot lengan (Hamidah, D. Panjaitan, & Triyanto, 2013). Berikut adalah prosedur untuk menemukan persamaan forward kinematics sebuah robot lengan 3 DoF (Degrees of Freedom).
1. Cari sumbu-sumbu gerakan lengan robot (sumbu joint). Untuk lebih jelasnya, perhatikan contoh berikut.
Gambar 2.1. Posisi joint EEZYbot Arm MK2
Joint 1 Joint 2
Joint 3
Tampak pada gambar diatas terdapat 4 buah joint. Joint 1 merupakan posisi yang memungkinkan robot mengalami gerakan rotasi secara horisontal. Sedangkan joint 2 merupakan posisi yang menggerakkan posisi maju mundurnya end-effector robot. Sedangkan joint 3 merupakan posisi yang menggerakkan posisi naik turunnya end-effector robot. Lalu joint 4 merupakan posisi yang dipengaruhi oleh joint 2 dan 3 sehingga memungkinkan posisi end
effector robot selalu sejajar dengan bidang dasar penumpu robot (base).
2. Tarik garis tegak lurus terhadap joint-joint tersebut, untuk menemukan
link-link pada robot.
Gambar 2.2. Posisi link EEZYbot Arm MK2
3. Pada setiap sumbu joint gerak gambarkan sumbu z. Lalu gambarkan sumbu x sesuai dengan garis yang telah ditarik pada langkah (2) atau tegak-lurus terhadap bidang yang dibentuk oleh gerakan link. Selain itu, tambahkan sebuah sumbu dasar (base) yang akan digunakan untuk sistem koordinat kartesisus posisi 0, 0, 0 robot. Pada gambar 2.3, tampak bahwa sumbu pada posisi joint 1 dinaikan sehingga memiliki posisi awal yang sama dengan sumbu pada posisi
joint 2. Hal tersebut bertujuan untuk mempermudahkan perhitungan. Pada
gambar 2.3, juga tampak sumbu z0, x0 yang merupakan acuan sistem koordinat yang akan digunakan untuk mencari posisi end-effector.
Link 2 (13,5 cm) Link 1 (9,5 cm) Link 3 Link 4
Gambar 2.3. Penentuan sumbu EEZYbot Arm MK2
4. Untuk mendapatkan persamaan forward kinematics digunakan metode
Denavit-Hartenberg (D-H). Metode D-H adalah metode untuk menganalisa
hubungan gerak rotasi dan gerak translasi antara lengan-lengan yang berhubungan dalam suatu manipulator (Gunawan, 2008). Melalui metode ini didapati 4 buah parameter, yaitu θ, α, d, dan a. Untuk robot n-joint maka keempat parameter tersebut ditentukan hingga yang ke-n, dimana:
a. 𝜃𝑛 adalah sudut putar pada sudut 𝑥𝑛−1 terhadap 𝑥𝑛 b. ∝𝑛 adalah sudut putar pada sudut 𝑧𝑛−1 terhadap 𝑧𝑛 c. 𝑑𝑛 adalah translasi pada sumbu 𝑥𝑛−1 terhadap 𝑥𝑛 d. 𝑎𝑛 adalah translasi pada sumbu 𝑧𝑛−1 terhadap 𝑧𝑛 Dari gambar 2.3, didapati persamaan berikut.
180 = 𝜃4 + 𝜃2 + (180 − (− 𝜃3))
𝜃4 = − 𝜃2− 𝜃3 (2.1)
Keterangan:
θ2 = sudut putar yang dibentuk sumbu x2 terhadap x1 θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2
X2 Z3 X3 X4 Z4 X0 X1 Z1 Z2 θ2 θ3 θ4 θ4 Z0
θ4 = sudut putar yang dibentuk sumbu x4 terhadap x3
Kemudian apabila, robot berputar secara horisontal maka akan terdapat sebuah sudut yang dibentuk oleh sumbu x1 terhadap x0. Sudut ini akan didefinisikan sebagai θ1.
Gambar 2.4. Penentuan sumbu EEZYbot Arm MK2 tampak atas
Tabel 2.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)
5. Setelah mendapatkan keempat parameter tersebut, perhitungan forward
kinematics dilanjutkan dengan menggunakan matriks transformasi berikut.
X 1
X1
θ1
X0Gambar 2.5 Matriks transformasi forward kinematics
Dengan menggunakan persamaan umum matriks transformasi pada gambar 2.5, 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 ] (2.2) 𝑇 2 1 = [ 𝑐𝑜𝑠𝜃2 0 𝑠𝑖𝑛𝜃2 0 −𝑠𝑖𝑛𝜃2 0 𝑐𝑜𝑠𝜃2 0 0 −1 0 0 0 0 0 1 ] (2.3) 𝑇 3 2 = [ 𝑐𝑜𝑠𝜃3 𝑠𝑖𝑛𝜃3 0 0 −𝑠𝑖𝑛𝜃3 𝑐𝑜𝑠𝜃3 0 0 0 0 1 0 𝐿2 0 0 1 ] (2.4) 𝑇 4 3 = [ 𝑐𝑜𝑠(−𝜃3− 𝜃2) 𝑠𝑖𝑛(−𝜃3− 𝜃2) 0 0 −𝑠𝑖𝑛(−𝜃3− 𝜃2) 𝑐𝑜𝑠(−𝜃3− 𝜃2) 0 0 0 0 1 0 𝐿3 0 0 1 ] (2.5) 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 perhitungannya.
𝑇 4 0 = 𝑇 1 0 𝑇 2 1 𝑇 3 2 𝑇 4 3 = [ 𝐴1 B1 (𝑠𝜃1) C1 A2 B2 (−𝑐𝜃1) C2 A3 0 B3 0 XX0XX 0 C3 1 ] (2.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 = 𝐿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 (2.6) dengan matriks dimensi
link 4 (L4 merupakan panjang link 4). Berikut ini adalah perhitungannya.
𝑃 = 0 𝑇 4 0 𝑃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 ] (2.7) 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 L1 = panjang link 1 (dalam cm)
L2 = panjang link 2 (dalam cm) L3 = panjang link 3 (dalam cm) L4 = panjang link 4 (dalam cm)
Dimana persamaan (2.7) setara dengan matriks koordinat end-effector sebagai berikut. 𝑃 = 0 [ 𝑥 𝑦 𝑧 1 ] (2.8) 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) 2.1.2. Inverse Kinematics
Metode ini digunakan untuk mendaptakan nilai sudut tiap link robot lengan dengan memasukan posisi dan orientasi dari end-effector. Perhitungan inverse
kinematics dapat dilakukan menggunakan pendekatan geometris. Pendekatan
geometris ini menggunakan prinsip trigonometri untuk menemukan persamaan
inverse (Hamidah et al., 2013). Berikut adalah contoh perhitungan inverse kinematics EEZYbot Arm MK2. Untuk menentukan θ1 digunakan hukum
Gambar 2.6. Inverse kinematics sudut θ1
Gambar 2.6, menunjukan bahwa besar nilai tangen θ1 adalah y dibagi x. Dengan demikian besar nilai sudut θ1 adalah sebagai berikut.
𝑡𝑎𝑛 θ1 = 𝑦 𝑥 θ1 = 𝑡𝑎𝑛−1(𝑦
𝑥) (2.9)
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)
Sedangkan, besar nilai sudut θ2 akan dipengaruhi oleh besar nilai sudut θ3. Oleh karena itu, perhitungan inverse kinematics akan dilanjutkan untuk menemukan persamaan θ3.
Y
X atau X0 θ1
Gambar 2.7. Inverse kinematics sudut θ3 Melalui gambar diatas didapati bahwa:
𝛼 = 180 − (− 𝜃3)
𝛼 = 180 + 𝜃3 (2.10)
Dimana :
α = sudut putar yang dibentuk garis ungu d (garis link 2) dan e (garis link 3) θ3 = sudut putar yang dibentuk sumbu x3 (garis ungu e) terhadap x2 (garis
ungu d)
Kemudian dengan mengamati segitiga ungu yang terbentuk (gambar 2.7) 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 −10)2+(z−9,5)2−398,34
396,9
) (2.11)
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 2.8. Inverse kinematics sudut θ2 saat θ3 negatif θ β 𝜃2 𝐛 𝐜 𝒂 𝜃3 α 𝐝 𝐞 𝐟 𝐗𝟏
Berikut ini adalah persamaan dari θ. 𝑡𝑎𝑛 𝜃 = 𝑎 𝑏 𝑡𝑎𝑛 𝜃 = 𝑧 − 𝐿1 √𝑥2 + 𝑦2 − 𝐿4 𝜃 = 𝑡𝑎𝑛−1( 𝑧 − 𝐿1 √𝑥2+ 𝑦2− 𝐿4) 𝜃 = 𝑡𝑎𝑛−1( 𝑍−9,5 √𝑥2+𝑦2 −10) (2.12) 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 ungu (gambar 2.8) 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+ y − 𝐿4)2+ (𝑧 − 𝐿1)2) − 2 𝐿2 √(√𝑥2+ 𝑦2− 𝐿4)2+ (𝑧 − 𝐿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 −10)2+(𝑧−9,5)2 27 √(√𝑥2+𝑦2 −10)2+(𝑧−9,5)2
)
(2.13)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 −10) +
𝑐𝑜𝑠
−1(
−33,84+ (√𝑥 2+𝑦2 −10)2+(𝑧−9,5)2 27 √(√𝑥2+𝑦2 −10)2+(𝑧−9,5)2)
(2.14) Dimana :θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2
β = sudut putar yang dibentuk garis d dan e (gambar 2.8) 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 −10) −
𝑐𝑜𝑠
−1(
−33,84+ (√𝑥 2+𝑦2 −10)2+(𝑧−9,5)2 27 √(√𝑥2+𝑦2 −10)2+(𝑧−9,5)2)
(2.15) Dimana :θ3 = sudut putar yang dibentuk sumbu x3 terhadap x2
θ = sudut putar yang dibentuk garis d terhadap sumbu X1 (gambar 2.8) β = sudut putar yang dibentuk garis d dan e (gambar 2.8)
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 (2.15) ini tidak akan digunakan sehubungan robot EEZYbot tidak akan pernah memiliki nilai sudut θ3 positif.
2.2. Komunikasi Inter Integrated Circuit
Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didesain khusus untuk mengirim maupun menerima data (Sejati, 2011). Sistem I2C terdiri dari saluran SCL (Serial
Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C bus dapat dioperasikan
sebagai master dan slave. Master adalah piranti yang memulai transfer data pada I2C bus dengan membentuk sinyal start, mengakhiri transfer data dengan membentuk sinyal stop, dan membangkitkan sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal start adalah sinyal untuk memulai perintah, didefinisikan perubahan tegangan SDA dari 1 menjadi 0 pada saat tegangan SCL 1. Sedangkan sinyal stop didefinisikan sebagai perubahan tegangan SDA dari 0 menjadi 1 pada saat tegangan SCL 1 yang digunakan untuk mengakhiri perintah.
Gambar 2.9. Kondisi sinyal start dan stop komunikasi I2C Sumber: (Sejati, 2011)
Dalam melakukan transfer data pada I2C bus, perlu diperhati beberapa hal berikut.
1. Transfer data hanya dapat dilakukan ketika kondisi bus tidak sibuk
2. Selama proses transfer data, keadaan data pada SDA harus stabil selama tegangan SCL 1. Perubahan tegangan SDA hanya dapat dilakukan saat tegangan SCL 0 maka perubahan itu akan dianggap sebagai sinyal start atau
stop.
2.3. Computer Vision (Image Processing)
Computer vision merupakan salah satu hasil perkembangan teknologi yang
dapat dimanfaatkan pada proses produksi dalam dunia industri. Salah satu bagian dari computer vision yang cukup penting adalah image processing. Penggunaan
image processing memudahkan manusia untuk mengetahui jenis suatu objek secara
jelas. Sebagian besar industri hanya menggunakan sensor untuk mengetahui ada / tidak adanya suatu objek, namun tidak dapat mengidentifikasi warna, bentuk, ukuran, dan posisi objek tersebut. Untuk mengidentifikasi objek secara lengkap
maka digunakan sistem visual servoing (Yulianto & Ramadan, 2014). Setelah mengidentifikasi objek, computer vision dapat mengambil keputusan untuk menjalankan sebuah sistem otomatik (Stockman & Shapiro, 2001). Dengan demikian penerapan computer vision dapat mendukung keberadaan sistem otomatik dalam dunia industri.
2.3.1. Open CV
Open Computer Vision adalah sebuah API (Application Programming
Interface) library yang sudah sangat familiar pada pengolahan citra computer vision. Open CV adalah library open source untuk computer vision untuk C/C++,
Python. Open CV didesain untuk aplikasi real-time, memiliki fungsi-fungsi akuisisi yang baik untuk gambar/video. Fitur yang dimiliki Open CV antara lain (OpenCV Dev Team, 2018):
1. Manipulasi data citra (alocation, copying, setting, convert)
2. Citra dan video I/O (file dan kamera based input, image/video file output) 3. Manipulasi matriks dan vektor beserta rutin-rutin aljabar linear (products,
solvers, eigenvalues, SVD)
4. Data struktur dinamis (lists, queues, sets, trees, graphs)
5. Pemroses citra fundamental (filtering, edge detection, corner detection,
sampling and interpolation, color conversion, morphological operations, histograms, image pyramids)
6. Analisis struktur (connected components, contour processing, distance
transform, various moments, template matching, hough transform, polygonal approximation, line fitting, ellipse fitting, delaunay triangulation)
7. Kalibrasi kamera (calibration patterns, estimasi fundamental matrix, estimasi
homography, stereo correspondence)
8. Analisis gerakan (optical flow, segmentation, tracking) 9. Pengenalan obyek (eigen-methods, HMM)
10. Graphical User Interface (display image/video, penanganan keyboard dan
Open CV terdiri dari 3 library, yaitu:
1. CV, untuk alogaritma image processing dan vision 2. Highgui, untuk GUI, image, dan video I/O
3. CXCORE, untuk struktur data, support XML dan fungsi-fungsi grafis.
2.3.2. Metode Blob Detection
Dalam computer vision khususnya pada image processing terdapat metode
blob detection. Blob merupakan sekumpulan pixels yang terhubung dan memiliki
sebuah kesamaan (misalnya nilai grayscale) dalam sebuah gambar. Sebagai contoh perhatikan gambar berikut.
Gambar 2.10. Kumpulan blob yang terdeteksi Sumber: (Mallick, 2015)
Jadi tujuan blob detection adalah untuk mengidentifikasi dan menandai area-area blob dalam sebuah gambar. Saat melakukan blob detection, pertama-tama akan dilakukan thresholding dengan cara mengkonversi gambar asli ke beberapa
binary images sesuai dengan nilai maksimum ataupun minimum threshold yang
dimasukan. Kemudian akan dilakukan grouping yaitu proses pen-grouping-an
pixels gelap yang saling terhubung dalam masing-masing binary image yang
kemudian disebut sebagai binary blob. Proses dilanjutkan dengan merging yaitu penyatuan binary blob yang berdekatan. Melalui proses ini, blob dapat dideteksi
dan kemudian akan dilanjutkan melakukan penyaringan blob. Dalam metode blob
detection memiliki parameter-parameter sebagai berikut.
1. Area, menyaring daerah blob yang dideteksi berdasarkan luas pixels dengan nilai minimum dan maksimum yang ditentukan. Diluar batas tersebut daerah
blob akan diabaikan.
2. Circularity, menyaring daerah blob berdasarkan nilai kedekatannya terhadap lingkaran. Melalui parameter ini dapat memilah daerah blob berdasarkan bentuk.
3. Convexity, menyaring daerah blob berdasarkan keutuhan untuk membentuk sebuah bentuk tertentu.
4. Inertia ratio, penyaringan daerah blob berdasarkan tingkat ke-ellipse-an (memanjang/elongated).
Gambar 2.11. Parameter blob detection Sumber: (Mallick, 2015)
2.3.3. Metode Warp Perspective Transformation
Warp perspective transformation adalah merupakan tranformasi
perspektif yang dilakukan terhadap suatu gambar. Warp perspective transformation merupakan salah satu metode transformasi geometric gambar yang tersedia dalam
library Open CV. Pada transformasi ini garis lurus pada sebuah gambar akan tetap
lurus setelah dilakukan transformasi. Untuk menggunakan metode ini diperlukan 4 poin koordinat pixels dari gambar input dan 4 poin koordinat pixels dari gambar
output yang akan menjadi lokasi baru dari keempat point koordinat pixels dari
gambar input. Tiga diantara empat poin dari gambar input harus tidak kolinear. Kemudian matriks transformasi dapat ditemukan dengan menggunakan fungsi
cv2.getPerspectiveTransform. Kemudian dilanjutkan penggunaan
cv2.warpPerspective dengan matriks transformasi 3x3 tersebut. Berikut adalah
contoh kode warp perspective transformation.
img = cv.imread('sudoku.png') rows,cols,ch = img.shape pts1 = np.float32([[56,65],[368,52],[28,387],[389,390]]) pts2 = np.float32([[0,0],[300,0],[0,300],[300,300]]) M = cv.getPerspectiveTransform(pts1,pts2) dst = cv.warpPerspective(img,M,(300,300)) plt.subplot(121),plt.imshow(img),plt.title('Input') plt.subplot(122),plt.imshow(dst),plt.title('Output') plt.show()
Kode diatas akan menghasilkan gambar berikut.
Gambar 2.12. Hasil warp perspective transformation Sumber: (“Geometric Transformations of Images,” n.d.)
2.4. Database MySQL
MySQL merupakan salah satu database server yang berkembang di lingkungan open source dan didistribusikan secara gratis dibawah lisensi GPL. MySQL merupakan RDMS (Relational Database Management System) server. RDBMS adalah program yang memungkinkan pengguna database untuk membuat, mengelola, dan menggunakan data pada suatu model relasional (Pondok Code, 2016). Keunggulan yang dimiliki oleh MySQL adalah sebagai berikut (Andre, 2017).
1. Speed
MySQL memiliki kecepatan yang lebih dibandingkan pesaing lainnya yang berbayar.
2. Reliability
Biasanya sesuatu yang gratis susah diandalkan, bahkan banyak error. Tidak demikian dengan MySQL, karena sifatnya yang open source, setiap orang dapat berkontribusi memeriksa error dan melakukan test case untuk berbagai skenario yang memerlukan sistem 24 jam online, multi-user dan data ratusan GB. Hasilnya, MySQL merupakan RDBMS yang reliabel namun memiliki performa diatas rata-rata.
3. Skalabilitas
MySQL dapat memproses data yang sangat besar dan kompleks, tanpa ada penurunan performa yang berarti, juga mendukung sistem multi-prosesor. MySQL juga dipakai oleh perusahaan-perusahaan besar di dunia, seperti Epson, New York Times, Wikipedia, Google, Facebook, bahkan NASA.
4. User Friendly
Instalasi dan mempelajari MySQL cukup mudah dan tidak dipusingkan dengan banyak pengaturan.
5. Portability and Standard Compliance
Database MySQL dapat dengan mudah berpindah dari satu sistem ke sistem lainnya. Misalkan dari sistem Windows ke Linux. Aplikasi MySQL juga dapat berjalan di sistem Linux, Embedded Linux, Unix, BSD, Windows dan RTOS.
6. Multiuser Support
Dengan menerapkan arsitektur client-server. Ribuan pengguna dapat mengakses database MySQL dalam waktu yang bersamaan.
7. Internationalization
Mampu mendukung beragam bahasa. Dengan dukungan penuh terhadap unicode, maka aksara non-latin seperti Jepang, Tiongkok, dan Korea bisa digunakan di dalam MySQL.
8. Wide Application Support
Biasanya database RDBMS tidak digunakan sendirian, namun dikombinasikan dengan aplikasi atau bahasa pemrograman lainnya untuk menyediakan interface, seperti C, C++, C#, Java, Delphi, Visual Basic, Perl Python dan PHP. Semua aplikasi/bahas pemrograman tersebut didukung oleh API (Application Programming Interface) oleh MySQL.
2.5. Python Server Pages
Python Server Pages (PSP) adalah sebuah istilah yang digunakan oleh sejumlah implementasi server-side script engines untuk membuat
dynamically-generated web pages dengan menanamkan python (“4.9 psp - Python server pages,”
2007).
2.5.1. Framework Flask
Flask adalah micro web framework yang ditulis dalam bahasa pemrograman Python dan berdasarkan Werkzeug Toolkit dan Template Engine Jinja 2 yang berlisensi BSD (Ronacher, n.d.).
Disebut micro framework karena tidak membutuhkan alat-alat tertentu atau pustaka. Flask tidak memiliki database abstraction layer, validasi form, atau komponen lain di mana sudah ada pustaka pihak ketiga yang menyediakan fungsi umum. Namun, Flask mendukung ekstensi yang dapat menambahkan fitur aplikasi seolah-olah mereka diimplementasikan dalam Flask itu sendiri. Ekstensi yang ada untuk object-relational mapper, validasi form, penanganan unggahan, berbagai teknologi otentikasi terbuk, dan beberapa alat-alat yang terkait kerangka umum.
2.6. Plugin MathJax
MathJax merupakan pustaka (library) open source untuk menampilkan hasil kode LaTeX, MathML, dan Notasi AsciiMath ke dalam HTML (Cervone, 2012). MathJax diklaim dapat bekerja pada semua browser. MathJax dirilis sebagai perangkat lunak open source dibawah lisensi Apache. Proyek Mathjax dimulai pada tahun 2009 sebagai penerus library matematika jsMath dan dikelola oleh American Mathematical Society. Dengan menggunakan MathJax maka penulisan persamaan-persamaan matematika dalam HTML akan lebih mudah.
2.7. Aplikasi Motion
Motion adalah perangkat lunak yang ditulis untuk aplikasi pengawasan pada Linux (“Using Motion with a Raspberry Pi,” 2018). Motion juga dapat dijalankan sebagai daemon, yang menjadikannya sebagai sistem embedded yang mandiri. Aplikasi ini akan mengambil data gambar/video dari kamera yang terhubung dengan komputer kemudian diolah berdasarkan fitur yang diaktifkan. Salah satu fitur yang dimiliki adalah membuat sebuah live streaming server sehingga pengguna yang mengakses ip address dan port tertentu dari komputer yang telah diatur akan dapat melihat live streaming dari kamera yang telah dipasang.
2.8. Komponen Modul Pembelajaran
Pada sub-bab ini akan dijelaskan komponen-komponen yang menyusun modul pembelajaran kinematika robot lengan 3 DoF.
2.8.1. Raspberry Pi 3 b+
Raspberry Pi adalah sebuah komputer mini (dengan ukuran sebesar kartu kredit) dengan harga yang murah yang dapat dihubungkan ke sebuah monitor atau TV dan menggunakan keyboard dan mouse standard. Raspberry Pi 3 b+ merupakan versi terbaru yang dikembangkan dari versi Raspberry Pi 3 b. Berikut ini adalah spesifikasinya (Raspberry Pi Foundation, n.d.-b).
1. Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz 2. 1GB LPDDR2 SDRAM
3. 2.4GHz and 5GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE 4. Gigabit Ethernet over USB 2.0 (maximum throughput 300 Mbps)
5. Extended 40-pin GPIO header 6. Full-size HDMI
7. 4 USB 2.0 ports
8. CSI camera port for connecting a Raspberry Pi camera
9. DSI display port for connecting a Raspberry Pi touchscreen display 10. 4-pole stereo output and composite video port
11. Micro SD port for loading your operating system and storing data 12. 5V/2.5A DC power input
13. Power-over-Ethernet (PoE) support (requires separate PoE HAT)
Gambar 2.13. Raspberry Pi 3 b+ Sumber: (Raspberry Pi Foundation, n.d.-b)
2.8.2. Raspberry Pi Camera v2.1
Merupakan modul kamera terbaru yang dirilis oleh Raspberry Pi Foundation yang dapat dikoneksikan ke semua modul Raspberry Pi melalui camera
serial interface port (CSI). Kamera mini ini (25 mm x 23 mm x 9mm) merupakan
kamera 8 megapixel yang berbasis sensor citra Sony IMX219 yang memiliki jangkuan horisontal sebesar 62,2o dan vertikal sebesar 48,8o . Kamera ini memiliki lensa yang fixed focus dan mampu mengambil gambar dengan resolusi 3280 x 2464 serta mendukung perekaman video 1080p30, 720p60, 640x480p90 (Pi Supply, 2018).
Gambar 2.14. Raspberry Pi camera v2.1 Sumber: (Pi Supply, 2018)
2.8.3. Sensor Accelerometer MPU-6050
Merupakan sebuah modul sensor Inertial Measurement Unit (IMU) yang menggunakan chip MPU-6050 dengan 3 axis accelerometer dan 3 axis gyroscope. MPU6050 sudah memiliki Digital Motion Processors yang digunakan untuk mengolah data mentah dari masing-masing sensor. Sensor ini menggunakan protokol I2C untuk berkomunikasi dengan mikrokontroler yang dilengkapi dengan
FIFO buffer dan built-in sinyal interrupt. Data dari sensor dapat diletakkan pada FIFO buffer terlebih dahulu sebelum dikirim, kemudian interrupt signal akan
memberi informasi kepada mikrokontroller setelah data siap dibaca. Berikut ini spesifikasinya (Arduino, n.d.).
1. Input daya: 3V-5V
2. Gyroscope range: + 250 500 1000 2000 / s 3. Acceleration range: 2 4 8 16 g
4. Mode komunikasi: I2C 5. Ukuran: 20.3mm x 15.6mm
Gambar 2.15. Sensor MPU-6050 accelerometer + gyro Sumber: (Arduino, n.d.)
2.8.4. Sensor Kompas BMC5883L
Kompas merupakan salah satu alat penting dalam navigasi yang berfungsi sebagai penunjuk arah berdasarkan posisi kutub bumi. Sensor kompas HMC5883L merupakan sebuah kompas yang bekerja dengan menyelaraskan medan magnet bumi. Karena jarum kompas terbuat dari bahan besi, yang sejalan dengan ayunan pada bantalan di pusat seperti medan magnet bumi menariknya ke dalam keselarasan. Medan magnet ini berkembang di seluruh permukaan bumi sehingga dapat digunakan untuk membantu dalam menunjukan arah mata angin (Oktavian, Valina, & Hidayat, 2014).
Magnetometer menggunakan medan magnet tersebut, namun tidak
menarik pada jarum kecil di dalamnya. Di dalam magnetometer terdapat tiga sensor
magneto-resistif pada tiga sumbu. Hal tersebut menjelaskan bahwa efek medan
magnet pada sensor ini mengatur aliran arus melalui sensor. Dengan menerapkan skala (milli-gauss).
Sensor HMC5883L adalah modul multi-chip yang dirancang untuk medan magnet rendah penginderaan dengan antarmuka digital untuk aplikasi seperti murah
compassing dan magnetometry. HMC5883L termasuk resolusi tinggi seri
HMC118X magneto-resistif sensor ditambah amplifikasi ASIC mengandung, dan ADC 12-bit yang memungkinkan akurasi 1° sampai 2°. Sensor ini mendukng komunikasi I2C.
HMC5883L ini memanfaatkan Anisotropic Magnetoresistive (AMR) teknologi Honeywell yang memberikan keuntungan lebih dari teknologi sensor magnetik lainnya. Anisotropic, directional sensor memiliki presisi dalam sumbu sensitivitas dan linearitas. Sensor ini dirancang untuk mengukur baik arah dan besarnya medan magnet bumi, dari mili-gauss sampai 8 gauss.
Gambar 2.16. Sensor kompas HMC5883L Sumber: (Oktavian et al., 2014)
2.8.5. Adafruit 16-channel 12-bit PWM/servo driver-I2C interface
Merupakan sebuah shield tambahan yang bisa dipasang langsung ke pin GPIO raspberry pi 3 b+, yang berfungsi untuk mengeluarkan sinyal PWM sebanyak 16 channel dari 2 pin I2C raspberry pi 3 b+. Sehingga dengan menggunakan shield ini dapat mengendalikan 16 motor servo sekaligus. Shield ini dilengkapi dengan pin power eksternal yang mampu menyuplai arus cukup besar untuk menggerakkan motor servo.
Gambar 2.17. Adafruit 16-channel 12-bit PWM/servo driver-I2C interface Sumber: (Adafruit, n.d.)
2.8.6. Motor Servo
Motor servo adalah sebuah perangkat atau aktuator putar (motor) yang dirancang dengan sistem kontrol umpan balik loop tertutup (servo), sehingga dapat di set-up atau di atur untuk menentukan dan memastikan posisi sudut dari poros
motor DC, serangkaian gear, rangkaian kontrol dan potensiometer. Bila dibedakan menurut rotasinya, umumnya terdapat dua jenis motor servo yang dan terdapat di pasaran, yaitu:
1. Motor servo standard (servo rotation 180⁰) adalah jenis yang paling umum dari motor servo, dimana putaran poros outputnya terbatas hanya 90⁰ kearah kanan dan 90⁰ kearah kiri. Dengan kata lain total putarannya hanya setengah lingkaran atau 180⁰.
2. Motor servo rotation continuous merupakan jenis motor servo yang sebenarnya sama dengan jenis servo standard, hanya saja perputaran porosnya tanpa batasan atau dengan kata lain dapat berputar terus, baik ke arah kanan maupun kiri.
Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari poros motor servo. Sebagai contoh, lebar pulsa dengan waktu 1,5 ms akan memutar poros motor servo ke posisi sudut 90⁰. Bila pulsa lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah posisi 180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan gambar dibawah ini.
Gambar 2.18. Sinyal PWM pengendali motor servo Sumber: (Dermanto, 2014)
Ketika lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi
tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau mengubah posisi tersebut, maka motor servo akan mencoba menahan atau melawan dengan besarnya kekuatan torsi yang dimilikinya
(rating torsi servo). Namun motor servo tidak akan mempertahankan posisinya
untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms untuk menginstruksikan agar posisi poros motor servo tetap bertahan pada posisinya. Pada modul pembelajaran ini digunakan motor servo dengan tipe MG995, berikut ini adalah spesifikiasinya (Torq Pro & Tower Pro, 2014).
1. Weight: 55g
2. Dimension: 40.7×19.7×42.9mm
3. Stall torque: 9.4kg/cm (4.8v); 11kg/cm (6v)
4. Operating speed: 0.20sec/60degree (4.8v); 0.16sec/60degree (6.0v) 5. Operating voltage: 4.8~ 6.6v
6. Gear Type: Metal gear 7. Temperature range: 0- 55deg 8. Dead band width: 1us
9. Servo wire length: 32cm 10. Current draw at idle 10MA
11. No load operating current draw 170MA 12. Stall current draw 1200MA
13. Servo Plug: JR (Fits JR and Futaba)
Gambar 2.19. Motor servo Tower Pro MG995 Sumber: (Torq Pro & Tower Pro, 2014)
2.8.7. Internet Protocol Camera
Internet protocol camera adalah CCTV (closed-circuit television) kamera
yang menggunakan internet protocol untuk mengirimkan data gambar dan sinyal kendali atas fast etehernet link (Stealth - Advance CCTV Technology, 2018). Dengan demikian, kamera ini sering disebut juga sebagai kamera jaringan. Terdapat dua jenis kamera jaringan, yaitu:
1. Kamera jaringan terpusat, jenis kamera yang memerlukan pusat Network Video
Recoder (NVR) untuk merekam video.
2. Kamera jaringan desentralisasi, jenis kamera yang tidak memerlukan pusat NVR karena telah memiliki fungsi perekam built-in sehingga dapat merekam langsung ke media penyimpanan seperti SD card.
Kamera jaringan merupakan perkembangan dari CCTV. Dimana perbedaanya dengan CCTV biasa adalah setiap kamera memiliki IP sendiri sehingga kita bisa memilih kamera mana yang ingin dilihat. Teknologi ip camera ini sangat sederhana dengan menggabungkan rongga ethernet yang dihubungkan ke sistem jaringan, perangkat ini langsung dapat digunakan. Bahkan beberapa teknologi ip camera sudah memungkinkan untuk menggunakan nirkabel karena teknologi nirkabel memiliki kecepatan bandwith agar dapat mengalirkan aliran tayangan video digital. Pada modul pembelajaran ini digunakan Xiaomi XiaoFang
ip camera, berikut ini adalah spesifikasinya (mall.wikidiskon.com, 2019).
1. Lens: F2.0 aperture, 110o angle 2. Resolution: 1920x1080 (1080p) 3. Night vision distance: 9 meter
4. Voice: built-in pickups, loudspeaker system 5. Sensor: smoke and CO alarm monitor 6. Connection: WiFi 802.11 2.4 Ghz b/g/n 7. Storage function: microSD Card 8. Product size: 50mmx50mmx56mm 9. Power input: DC 5V/1A
10. Working temperature: 0oC~40oC
11. Working humidity: <=90% (40oC at room temperature)
Gambar 2.20. Xiaomi Xiaofang ip camera