Control
Departemen Teknik Elektro, Fakultas Teknik, Universitas Indonesia, Kampus UI Depok, 16425, Indonesia
Abstrak
Penggunaan lengan robot dapat menggantikan ataupun meringankan kerja manusia secara langsung.
Namun terdapat kendala yaitu sistem user interface lengan robot yang rumit. Oleh karena itu dibutuhkan user
interface lengan robot yang intuitif untuk dipelajari dan mudah untuk dioperasikan. Pada penelitian ini dirancang
dan diimplementasikan sebuah sistem kendali lengan robot yang memiliki user interface berbasis Natural User
Interface yang mudah untuk dikendalikan. Lengan robot yang dapat dikendalikan mengikuti gestur gerakkan
telapak tangan dan jari manusia dengan metode Motion Control secara realtime menggunakan sensor Leap
Motion. Selain itu juga dirancang sistem penyimpanan dan ekstraksi database motion sehingga lengan robot
memiliki kecerdasan untuk mampu melakukan gerakkan yang telah diajarkan oleh manusia. Lengan robot
menggunakan 5 buah servo yang dikendalikan oleh mikrokontroler Arduino dengan sinyal PWM.
Mikrokontroler Arduino dan Leap Motion dihubungkan dengan komputer melalui port USB. Frame-frame data
yang diterima dari Leap Motion diproses oleh program berbasis Java pada komputer. Output dari program
tersebut adalah besar sudut-sudut putaran setiap servo yang dikirim melalui komunikasi serial ke mikrokontroler
Arduino. Program tersebut menggunakan algoritma inverse kinematic untuk mengkalkulasi besar sudut putaran
servo. Sensor Leap Motion memiliki tingkat keakurasian yang tinggi dengan standar deviasi sumbu koordinat x,
y dan z secara berturut sebesar 0.022431 mm, 0.084935 mm, dan 0.056216 mm.
Abstract
Robotic arm can replace or relieve human labor directly. But there is major obstacle, the system user
interface of robot arm is complicated. Therefore, it needs a robot arm user interface system that is intuitive to
learn and easier to operate. This study, has designed and implemented an intuitive robot arm control system. The
system uses Natural User Interface and easy to control. The robotic arm can be controlled by following the
movement of a human hand and fingers gestures in realtime. Leap Motion device is used as a sensor-based hand
motion control interface. This system also implemented motion database storage and extraction systems, so the
robot arm has the intelligence to be able to perform movements that have been taught by humans. The robotic
arm using 5 pieces of servos which are controlled by an Arduino microcontroller over PWM signal. The Arduino
microcontroller and Leap Motion is connected to a computer via a USB port. Input frames of data received from
Leap Motion is processed by a Java-based program. The output of the program is rotation angles of each servo
that is sent through a serial communication to the Arduino microcontroller. The program uses an inverse
kinematic algorithm to calculate the large of each servos angle rotation. Leap Motion sensor has a high level of
accuracy with the standard deviation of 0.022431 mm, 0.084935 mm and 0.056216 mm correspond to the x,y,
and z respectively.
Tujuan Penelitian
Tujuan dari penelitian ini adalah:
1. Merancang dan mengimplementasi sistem kendali lengan robot berbasis hand Motion
Control.
Pembatasan Masalah
Perancangan sistem kendali lengan robot 5DOF menggunakan isyarat tangan dengan
menggunakan Leap Motion. Lengan robot menggunakan 5 buah servo yang dikendalikan
oleh mikrokontroler Arduino dengan sinyal PWM. Isyarat tangan digunakan sebagai user
interface untuk mengendalikan lengan robot. Mikrokontroler Arduino dan Leap Motion
dihubungkan dengan komputer melalui port USB. Frame-frame data yang diterima dari Leap
Motion diproses oleh program berbasis Java pada komputer. Output dari program tersebut
adalah besar sudut-sudut putaran setiap servo yang dikirim melalui komunikasi serial ke
mikrokontroler Arduino. Program tersebut menggunakan algoritma inverse kinematic untuk
mengkalkulasi besar sudut putaran servo.
Metode Penulisan
(a) (b)
Gambar 2.1. Mekanik Lengan Robot (a) Desain Mekanik Lengan Robot (b) Prototipe Lengan Robot
Lengan robot dirancang dengan 5 DOF (degree of freedom) yang terdiri dari 5 buah
servo dengan konfigurasi seperti berikut:
DOF 1 (servo1): Pada Shoulder putar
DOF 2 (servo2): Pada Shoulder
DOF 3 (servo3): Pada Elbow
DOF 4 (servo4): Pada Wrist
DOF 5 (servo5): Pada Gripper
Kalkulasi inverse kinematic hanya untuk menentukan 3 derajat kebebasan pada lengan
robot yaitu, besar sudut servo 1(base), servo 2(shoulder), dan servo 3(elbow). Sementara servo
4(wrist) dan servo 5(gripper) tidak termasuk dalam perhitungan invers kinematika. Servo 4
dikendalikan oleh kemiringan sudut (hand roll) telapak tangan.
Metode perhitungan inverse kinematic dapat dilakukan dengan dua cara. Cara yang
pertama adalah pendekatan Algebaric dan pendekatan Geometris. Penyelesaian inverse
kinematik lengan robot sistem ini menggunakan pendekatan geometris. Pendekatan geometris
dilakukan dengan menggambarkan lengan robot dalam bentuk geometris dan kemudiuan
dihitung dengan menggunakan aturan-aturan geometris. Pencarian nilai dari ketiga sudut sendi
lengan robot (𝜃! ,𝜃! , dan 𝜃! ) dilakukan secara satu persatu. Langkah pertama yang dilakukan
adalah mencari nilai sudut sendi 1 (θ! ). Untuk mempermudah perhitungan maka lengan robot
digambarkan dalam sumbu x, y, dan z. Berdasarkan wilayah pergerakkannya sendi 1 berada
pada sumbu x dan sumbu y. Sumbu z tidak berpengaruh terhadap pergerakkan sendi 1 karena
Gambar 2.2. Lengan Robot dari Perspektif Atas Pada Sumbu X Dan Sumbu Y
𝑃!
𝜃! = tan!! (2.1)
𝑃!
Dengan demikian, besar sudut sendi 1 dapat dicari dengan menggunakan persamaan di
atas. Dalam implementasinya servo yang digunakan hanya memiliki putaran maksimal 180˚
maka nilai 𝜃! yang diperoleh harus dibatasi pada interval:
0° ≤ 𝜃! ≤ 180° (2.2)
Jika hasil sudut sendi 1 (θ! ) dari perhitungan invers kinematik lebih besar atau lebih
kecil dari interval yang ditentukan maka besar sudut 𝜃! akan diset maksimum 180˚ atau
minimum (0°) dari nilai interval.
Setelah mendapatkan nilai sudut sendi 1, langkah selanjutnya adalah menentukan nilai
sudut sendi 2 (θ! ) dan sendi 3 (𝜃! ). Berdasarkan wilayah pergerakkanya sendi 2 dan sendi 3
berada pada wilayah pergerakkan yang sama yaitu pada wilayah vertikal. Sendi 2 dan sendi 3
memiliki poros rotasi yang sama sehingga menyebabkan memiliki wilayah pergerakkan yang
sama. Karena memiliki wilayah pergerakkan yang sama, maka kedua sudut sendi tersebut (𝜃!
dan 𝜃! ) akan saling mempengaruhi. Karena besar sudut 𝜃! dan 𝜃! saling mempengaruihi maka
perhitungan sudut 𝜃! dilakukan terlebih dahulu untuk mencapai posisi yang diinginkan,
kemudian mencari nilai sudut sendi 2 (θ! ). Sebelum melakukan perhitungan lengan robot
digambar dengan perspektif samping seprti gambar berikut:
Sehingga:
!!
𝑙! ! + 𝑙! ! − (𝑃! ! + 𝑃! ! + 𝑃! ! )
𝛾 = cos (2.4)
2. 𝑙! . 𝑙!
𝜃! = 180° − 𝛾 (2.5)
𝑙! ! + 𝑙! ! − (𝑃! ! + 𝑃! ! + 𝑃! ! )
𝜃! = 180° − cos !! (2.6)
2. 𝑙! . 𝑙!
Dalam implementasinya nilai sudut servo dibatasi oleh wilayah kerja lengan robot dan servo
yang digunakan hanya memiliki putaran maksimal 180˚ maka nilai θ! yang diperoleh harus
dibatasi pada interval:
0° ≤ 𝜃! ≤ 180° (2.7)
Untuk mencari sudut sendi 2 (θ! ) perlu diketahui terlebih dahulu besar sudut β! dan 𝛽! :
𝐵𝐷 𝑃!
tan 𝛽! = = (2.8)
𝑂𝐷 ! !
𝑃! + 𝑃!
𝑃!
𝛽! = tan!! (2.9)
! !
𝑃! + 𝑃!
𝐵𝐸 𝑙! . cos 𝜃!
tan 𝛽! = = (2.10)
𝑂𝐸 𝑙! + 𝑙! . sin 𝜃!
Sehingga :
𝐵𝐸 𝑙! . cos 𝜃!
𝛽! = = tan!! (2.11)
𝑂𝐸 𝑙! + 𝑙! . sin 𝜃!
Setelah di dapatkan besar sudut β! dan β! maka dapat diketahui nilai sudut sendi 2 (θ! ):
𝜃! = −𝛽! − 𝛽! (2.12)
𝑃! 𝑙! . cos 𝜃!
𝜃! = − tan!! + tan!! (2.13)
! ! 𝑙! + 𝑙! . sin 𝜃!
𝑃! + 𝑃!
Nilai sudut servo harus dibatasi oleh wilayah kerja lengan robot dan servo yang digunakan
hanya memiliki putaran maksimal 180˚ maka nilai θ! yang diperoleh harus dibatasi pada
interval:
0° ≤ 𝜃! ≤ 180° (2.14)
Arduino Uno digunakan sebagai pengendali lima motor servo melalui pin-pin PWM.
Pada arduino uno terdapat 6 pin yang dapat menghasilkan sinyal PWM yaitu pin 3, 5, 6, 9,
10, 11. Berikut adalah konfigurasi pin Arduino Uno yang terhubung dengan motor servo.
Perancangan perangkat lunak pada sistem ini terbagi menjadi dua bagian, yaitu
program pada komputer dan program pada mirokontroller Arduino. Program pada komputer
mempunyai peran menggolah data yang diterima dari perangkat Leap Motion dan melakukan
komputasi kinematika lengan robot. Output dari program pada komputer tersebut adalah data
berupa acuan sudut tiap servo. Data ini langsung dikirim ke mikrokontroler Arduino dengan
cara komunikasi serial melalui port USB. Sedangkan program pada Mikrokontroler Arduino
menerima data dari komputer dan mengeksekusinya menjadi sinyal PWM (Pulse Width
Modulation) yang akan menggontrol gerakkan motor servo.
CSV adalah salah satu bentuk file text yang digunakan untuk menyimpan data dalam
struktur tabel. Data yang tersimpan dalam file CSV disimpan dalam tiap baris dengan setiap
kolom dipisahkan dengan karakter pemisah (delimiter). Karakter pemisah bisa dalam bentuk
koma (,), titikkoma(;), atau karakter tabulasi.
Nilai GPServo didapatkan dari hasil perhitungan inverse kinematic yang disimpan
kedalam database motion setiap frame motion data dari Leap Motion. Contoh hasil database
yang telah disimpan, ditunjukkan pada gambar berikut.
Untuk menguji kehandalan dari sistem yang telah dibuat perlu dilakukan serangkaian
pengujian. Pengujian yang dilakuakan antara lain pengujian akurasi servo, pengujian batasan
tracking, pengujian akurasi sensor Leap Motion dengan metode objek statis, pengujian frame
rate Leap Motion, pengujian batasan tracking Leap Motion dan pengujian algoritma inverse
kinematic.
130
80
30
-20 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180
Sudut referensi
Gambar 2.11 Grafik Perbandingan Sudut Referensi dengan Sudut Hasil Pengukuran.
Untuk menguji tingkat akurasi sebuah servo dapat diketahui dengan mencari nilai
deviasi dan rasio eror dari data sudut hasil pengujian terhadap sudut refensi. Berdasarkan hasil
perhitungan statistika didapatkan standar deviasi sebesar 13.7432432 derajat dan rasio eror
sebesar 17%. Dengan nilai rasio eror dan standar deviasi sebesar itu servo memiliki tingkat
Pengujian dengan objek statis dilakukan dengan meletakkan sebuah objek tidak
bergerak di atas Leap Motion berupa batang kayu berbentuk silinder dengan diameter 0.7 cm.
Sensor akan membaca titik kordinat dari objek tersebut dalam bentuk kordinat tiga dimensi
(sumbu x, y, dan z) sistem. Pengujian dengan objek tidak bergerak bertujuan untuk
mengetahui tingkat keakurasian setiap sumbu koordianat sistem Leap Motion. Berikut adalah
data hasil pengujian objek statis dalam tiga dimensi yang dipetakan dalam tiga diagram
kartesian x terhadap y (Gambar 2.12 a), x terhadap z (Gambar 2.12 b), dan y terhadap z
(Gambar 2.12 c). Sampel yang digunakan sebanyak 1000 frame, dengan lama pengujian
selama 10 detik.
Leap Motion merupakan sebuah stereo camera, oleh karena itu sangat penting untuk
mengetahui eror dan batasan dead zone dari depth sensor. Eksperimen ini dilakukan untuk
batasan jarak tracking sekaligus untuk mengetahui apakah nilai terukur pada depth sensor
sesuai dengan nilai ukur asli real pada dunia nyata. Proses yang dilakukan untuk
melakukan eksperimen ini adalah dengan mengambil data depth sensor terhadap batang
silinder berdiameter 0.7 mm dengan perubahan jarak setiap 5 mm.
80
60
40
20
0
0 20 40 60 80 100 120
nilai referensi
Gambar 2.13. Hasil pengujian Validasi Data Depth Sensor Leap Motion
Dari hasil yang didapatkan dapat disimpulkan bahwa depth sensor pada Leap Motion
adalah sensor yang presisi dan akurat. Kepresisian ditunjukkan pada grafik di atas yang
mana pada setiap pengukuran nilai jarak terbaca pada kondisi naik (menjauhi) atau
turun (mendekat) telihat cukup berimpit. Eror rata-rata pada pengukurun menjauhi
didapat sebesar 0.14716 mm dan pada saat pengukuran mendekati didapatkan sebesar
Pengujian ini membandingkan output program berupa sudut servo yang akan dikirim
ke mikrokontroler Arduino terhadap sudut servo hasil perhitungan inverse kinematic. Tujuan
pengujian ini adalah menunjukkan titik-titik koordinat yang tidak terjangkau oleh
perhitungan inverse kinematic lengan robot. Karena perhitungan inverse kinematic dalam
sistem yang dirancang hanya melibatkan 3 DOF yaitu, DOF 1 pada shoulder putar, DOF 2
pada Shoulder, dan DOF 3 pada Elbow. Gambar 5.7 berikut merupakan grafik yang
menampilkan data koordinat lengan robot hasil proses mapping dari koordinat telapak tangan
sistem koordinat Leap Motion. Titik koordinat lengan robot pada gambar 5.7 digunakan
sebagai input dari algoritma inverse kinematic, namun tidak semua input titik koordinat
menghasilkan output sudut putaran servo. Jika pada titik koordinat tertentu yang berada di
luar jangkauan lengan robot maka, input algoritma inverse kinematic tidak akan
menghasilkan output.
(a) (b)
IV. PENUTUP
Kesimpulan
Beberapa kesimpulan yang dapat ditarik dari penelitian ini adalah:
1). Untuk mengatasi hasil tracking di luar jangkauan ruang kerja robot, dilakukan
pembatasan pada tiap sudut hasil kalkulasi inverse kinematic.
2). Sistem pengendali lengan robot dengan menggunakan hand gesture recognition
interface merupakan salah satu bentuk dari natural language user interface (NUI).
3). Sistem ini meggunakan kinematika balik dengan pendekatan metode geometris untuk
menentukan sudut putaran setiap servo pada lengan robot.
Saran
Penelitian lebih lanjut yang akan dilakukan pada penelitian ini adalah menambahkan
fitur pengendalian lengan robot melalui jaringan komputer. Lengan robot terhubung melalui
sebuah komputer server dan user mengendalikannya dengan komputer client dengan
perangkat Leap Motion, dimana kedaua komputer tersebut (client dan server) saling
terhubung dengan jaringan komputer. Komputer client dan komputer server saling terhubung
melalui protokol komunikasi websocket. Data dikirim dari komputer client ke server secara
realtime berupa paket data json yang berisi frame-frame data Leap Motion. Pada komputer
server paket data JSON yang diterima dari client diolah untuk mengendalikan lengan robot.
Tantangan yang akan dihadapi dengan penambahan fitur ini adalah tingkat delay yang cukup
[1] Damas Nawanda, “2014. Apa itu Natural User Interface?” [Diakses pada 29 Oktober
2014]: http://uniteux.com/apa-itu-natural-user-interface/
[2] Leap Motion, “How Does the Leap Motion Controller Work?” [Diakses pada 29
Oktober 2014]: http://blog.leapmotion.com/hardware-to-software-how-does-the-leap-
motion-controller-work/
[3] Yulia Nur Fitriana, 2012, “Sistem Kontrol Lengan Robot Menggunakan Sinyal EMG
Berbasis Mikrokontroller H8/3069F”, Fakultas MIPA Universitas Indonesia
[4] Yudhistira Suryanto, “analisa lengan robot”, Universitas Airlangga
[5] Wahyu Tri Wibowo, 2014, “Rancang Bangun Smart Monitoring Room Menggunakan
Sensor Pir Dan Ldr Dengan Tampilan Web Interface Berbasis Mikrokontroler Arduino
Dan Openwrt”, Departement Teknik Elektro Universitas Indonesia
[6] Arduino, “Arduino Uno”, [Diakses pada 2 november 2014]:
http://arduino.cc/en/Main/arduinoBoardUno
[7] ATMEL Corporation, “ATmega48PA/88PA/168PA/328P”, [Diakses pada 2 november
2014]: http://www.atmel.com/dyn/resources/prod_documents/doc8161.pdf
[8] Leap Motion, “Tracking Model”, [Diakses pada 3 november 2014]
https://developer.leapmotion.com/documentation/javascript/devguide/Leap_Tracking.ht
ml
[9] Syarifah Hamidah, Seno D. Panjaitan, Dedi Triyanto, 2012, “Sistem Pengendali Robot
Lengan Menggunakan Pemrograman Visual Basic”. Universitas Tanjungpura.
[10] Frank Weichert, Daniel Bachmann, Bartholomäus Rudak, Denis Fisseler, 2013,
“Analysis of the Accuracy and Robustness of the Leap Motion Controller”. [Diakses
pada 5 maret 2015]. http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3690061/.
[11] Jože Guna, Grega Jakus, Matevž Pogačnik, Sašo Tomažič, Jaka Sodnik. 2014. “An
Analysis of the Precision and Reliability of the Leap Motion Sensor and Its Suitability
for Static and Dynamic Tracking”. Faculty of Electrical Engineering, University of
Ljubljana, Slovenia.