Implementasi Inverse Kinematics untuk Koordinasi Gerak Robot Berkaki Enam

IMPLEMENTASI INVERSE KINEMATICS UNTUK
KOORDINASI GERAK ROBOT BERKAKI ENAM

WULANDARI

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013

PERNYATAAN MENGENAI SKRIPSI DAN
SUMBER INFORMASI SERTA PELIMPAHAN HAK CIPTA
Dengan ini saya menyatakan bahwa skripsi berjudul Implementasi Inverse
Kinematics untuk Koordinasi Gerak Robot Berkaki Enam adalah benar karya saya
dengan arahan dari komisi pembimbing dan belum diajukan dalam bentuk apa pun
kepada perguruan tinggi mana pun. Sumber informasi yang berasal atau dikutip
dari karya yang diterbitkan maupun tidak diterbitkan dari penulis lain telah
disebutkan dalam teks dan dicantumkan dalam Daftar Pustaka di bagian akhir
skripsi ini.
Dengan ini saya melimpahkan hak cipta dari karya tulis saya kepada Institut

Pertanian Bogor.
Bogor, Juli 2013
Wulandari
NIM G64090112

ABSTRAK
WULANDARI. Implementasi Inverse Kinematics untuk Koordinasi Gerak Robot
Berkaki Enam Dibimbing oleh KARLISA PRIANDANA dan AGUS BUONO.
Robot berkaki enam, atau hexapod, termasuk robot berkaki yang memiliki
kestabilan statis. Gerakan robot ini menjadi permasalahan yang perlu
dipertimbangkan oleh pembuat robot karena hexapod memiliki jumlah varian
gerakan kaki yang banyak. Penelitian ini menggunakan salah satu algoritme
gerakan kaki yaitu algoritme inverse kinematics untuk menjaga kestabilan
hexapod ketika bergerak. Inverse kinematics digunakan untuk mendapatkan
kombinasi sudut sendi tiap kaki untuk menghasilkan posisi end-effector yang
diinginkan. Implementasi algoritme ini menunjukan bahwa waktu gerak hexapod
dengan masukan berupa nilai lebar pulsa lebih cepat daripada waktu gerak
hexapod dengan masukan berupa jarak perpindahan end-effector. Namun,
masukan berupa jarak lebih fleksibel karena pengguna dapat menentukan sendiri
jarak perpindahan end-effector yang diinginkan tanpa bergantung pada jarak yang

telah ditentukan sebelumnya. Hasil penelitian menunjukkan bahwa algoritme
inverse kinematics telah berhasil diimplementasikan dengan baik, namun tidak
mampu menyesuaikan dengan adanya halangan.
Kata kunci: inverse kinematics, hexapod, robot

ABSTRACT
WULANDARI. Implementation of Inverse Kinematics for the Coordination
Control of Six Legged Robot. Supervised by KARLISA PRIANDANA and
AGUS BUONO.
Six legged robot, or hexapod, is a kind of legged robots with static stability.
The robot has many variants of leg movements. This should be taken into
consideration by the robot designer. The research is to adopt a leg movement
algorithm named inverse kinematics. Inverse kinematics is used to find each leg
angle required to produce certain position of the end-effector. The experiments
show that pulse width input can move the robot faster than that with end-effector
displacement distance input. However, the distance input is more flexible due to
its simplicity such that the user can input the desired end-effector displacement
distance without relying on the pre-determined distances. The inverse kinematics
algorithm has been developed, although it is not able to avoid or circumvent the
barriers.

Keywords: inverse kinematics, hexapod, robot

IMPLEMENTASI INVERSE KINEMATICS UNTUK
KOORDINASI GERAK ROBOT BERKAKI ENAM

WULANDARI

Skripsi
sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer
pada
Departemen Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
2013

Penguji: Dr Heru Sukoco, SSi MT


Judul Skripsi : Implementasi Inverse Kinematics untuk Koordinasi Gerak Robot
Berkaki Enam
Nama
: Wulandari
NIM
: G64090112

Disetujui oleh

Karlisa Priandana, ST MEng
Pembimbing I

Dr Ir Agus Buono, MSi MKom
Pembimbing II

Diketahui oleh

Dr Ir Agus Buono, MSi MKom
Ketua Departemen


Tanggal Lulus:

PRAKATA
Puji dan syukur penulis panjatkan kepada Allah subhanahu wa ta’ala atas
segala karunia-Nya sehingga karya ilmiah ini berhasil diselesaikan. Tema yang
dipilih dalam penelitian yang dilaksanakan sejak bulan November 2012 ini ialah
robot hexapod, dengan judul Implementasi Inverse Kinematics untuk Koordinasi
Gerak Robot Berkaki Enam.
Terima kasih penulis ucapkan kepada Ibu Karlisa Priandana, ST MEng dan
Bapak Dr Ir Agus Buono, MSi MKom selaku pembimbing dari Departemen Ilmu
Komputer IPB yang memberikan bantuan kepada saya, serta Bapak Dr Heru
Sukoco, SSi MT yang sudah memberikan saran. Ucapan terima kasih kepada
Ayah saya, Hendi, dan Ibu saya, Mumun, yang selalu memberikan dukungan baik
moral maupun material, untuk saudara-saudara saya yang saya sayangi, Wahyu,
Yuliana, dan Reihan, yang selalu menyemangati saya, teman-teman di lab NCC,
Erwin Musa Yulio, Nur Muhammad Sidik, dan Aditya Erlangga, serta temanteman Ilmu Komputer 46 yang selalu memberi semangat.
Semoga karya ilmiah ini bermanfaat.

Bogor, Juli 2013

Wulandari

DAFTAR ISI

DAFTAR TABEL

viii

DAFTAR GAMBAR

viii

PENDAHULUAN

1

Latar Belakang

1


Perumusan Masalah

2

Tujuan Penelitian

2

Manfaat Penelitian

2

Ruang Lingkup Penelitian

2

METODE

3


Deskripsi Alat dan Bahan

4

HASIL DAN PEMBAHASAN

6

Persiapan Alat dan Bahan

6

Pengembangan Struktur Robot

6

Pengembangan Algoritme Pergerakan Robot

7


Implementasi Algoritme pada Robot

9

Pengujian dan Evaluasi Sistem

14

SIMPULAN DAN SARAN

15

DAFTAR PUSTAKA

15

LAMPIRAN

17


DAFTAR TABEL
1
2
3

Batasan pada kaki robot
Hasil implementasi gerak maju
Perbandingan waktu komputasi algoritme

9
13
14

DAFTAR GAMBAR
1
2
3
4
5
6

7
8
9
10
11
12

Alur metode penelitian
Dimensi servo
Arduino Uno dan SPC servo controller
Hasil perangkaian
Peletakan servo
Geometri kaki robot tampak atas
Geometri kaki robot tampak depan
Rangkaian dari robot
Hubungan sudut hasil dan lebar pulsa
Penamaan kaki dan Penomoran Servo
Sekuen gerak maju
Pose pada gerak maju

3
4
6
7
7
8
8
10
11
11
12
12

DAFTAR LAMPIRAN
1
2

Kode perintah SPC Servo Controller
Implementasi pada gerakan mundur, belok kanan, dan belok kiri

17
20

1

PENDAHULUAN
Latar Belakang
Robot ialah sesuatu yang dapat diprogram atau diprogram ulang dan
memiliki manipulator mekanik atau penggerak yang berupa komponen-komponen
atau alat-alat khusus dengan berbagai program yang mudah disesuaikan untuk
melaksanakan berbagai macam tugas. Suatu alat dapat dikategorikan sebagai
robot apabila alat tersebut memiliki minimal 4 derajat kebebasan (DOF).
Mekanisme robot terdiri atas sistem tubuh kaku yang dihubungkan dengan sendi.
Posisi dan orientasi dari robot dalam suatu ruang disebut dengan pose. Kinematika
robot dideskripsikan oleh pose, kecepatan, akselerasi, dan turunan dari pose
badan robot yang menghasilkan mekanisme gerak (Siciliano dan Khatib 2008).
Berdasarkan kestabilannya, robot berkaki dibedakan menjadi kestabilan
dinamis dan kestabilan statis. Robot berkaki yang termasuk pada kestabilan
dinamis adalah robot dengan titik berat yang tidak mempengaruhi kestabilan robot
ketika bergerak. Pada umumnya, robot yang termasuk dalam jenis ini adalah robot
berkaki dengan jumlah kaki satu hingga empat. Robot berkaki yang termasuk
pada stabilitas statis adalah robot yang titik beratnya tetap stabil ketika bergerak.
Robot yang termasuk dalam jenis ini memiliki jumlah kaki paling sedikit 4 buah
(Thirion dan Thiry 2002), seperti hexapod dan octopod.
Hexapod adalah robot dengan enam kaki sehingga memiliki varian gerakan
yang bermacam-macam. Jumlah kaki yang banyak, mengakibatkan kompleksitas
gerakan dari kaki hexapod tinggi sehingga diperlukan algoritme pergerakan kaki
yang sesuai agar hexapod dapat bergerak sesuai dengan kondisi lingkungannya
saat itu (Thirion dan Thiry 2002).
Bentuk dari kaki hexapod termasuk pada rantai kinematika terbuka. Rantai
kinematika terbuka yaitu ketika end-effector dari kaki/lengan robot tidak
terhubung kembali dengan base sendi kaki tersebut. Mekanisme gerak robot dapat
dihitung dengan menggunakan forward kinematics apabila diketahui nilai variabel
sendi dan kecepatannya. Posisi dan orientasi dari end-effector berdasarkan frame
base diberikan dengan mengevaluasi matriks transformasi yang terdiri dari
matriks rotasi dan matriks translasi. Inverse kinematics merupakan pengambilan
keputusan variabel sendi berdasarkan posisi dan orientasi dari end-effector (Lewis
et al. 2003). Forward kinematics membutuhkan masukan berupa nilai sudut dari
masing-masing sendi dari kaki robot untuk menjalankan algoritme ini. Namun
pada inverse kinematics, berdasarkan masukan yang berupa jarak, atau posisi
berikutnya dari posisi awal, akan didapatkan nilai sudut pada setiap sendi. Inverse
kinematics lebih mudah diimplementasikan untuk menggerakkan kaki robot. Hal
ini dikarenakan bentuk masukan yang berupa jarak yang kemudian akan dicari
nilai sudut pada masing-masing sendi, sehingga tidak perlu menentukan nilai
sudut pada masing-masing sendi sebelumnya untuk menggerakkan kaki.
Gerakan kaki dari robot berkaki enam terdiri dari cyclic steps, yaitu langkah
yang terus berulang. Langkah kaki ini yaitu power, lift, swing, dan contact. Salah
satu algoritme pengontrol gerakan kaki robot adalah fuzzy finite state automata
(FFSA). Algoritme ini dikembangkan berdasarkan cyclic steps pada robot, yaitu
perubahan gerakan yang ekstrim pada kaki (Reyneri 1997). Namun, karena derajat

2
perubahan servo memiliki rentang yang berbeda-beda pada setiap perubahan
posisi kaki robot, diperlukan algoritme yang lebih baik dalam penentuan gerakan.
Penambahan logika fuzzy memberikan solusi yang lebih baik daripada FSA
tradisional. Algoritme ini disebut fuzzy finite state automata (FFSA) (Reyneri
1997).
Penelitian ini bertujuan untuk: (1) merakit perangkat keras robot berkaki
enam termasuk rangka, kaki, servo, dan kontroler servo; (2) mengembangkan
algoritme pergerakan kaki robot berkaki enam berdasarkan algoritme inverse
kinematics; dan (3) mengimplementasikan algoritme yang dikembangkan ke robot
berkaki enam. Robot yang akan dikembangkan berukuran 40 × 30 × 27 cm,
sedangkan masukan yang digunakan berupa perintah dari pengguna, yaitu:
“kanan”, “kiri”, “maju”, dan” mundur”. Navigasi yang diujikan dalam penelitian
ini hanya sebatas gerak maju, mundur, kanan, atau kiri yang sudah ditentukan
sebelumnya dalam program.
Perumusan Masalah
Jumlah kaki dari hexapod mengakibatkan pengaturan koordinasi gerakan
kaki yang kompleks, salah satu algoritme yang dapat diimplementasikan adalah
dengan menggunakan inverse kinematics. Berdasarkan masalah yang diungkapkan
diatas,
permasalahan
yang
muncul
adalah:
“Bagaimana
cara
mengimplementasikan algoritme inverse kinematics untuk mengontrol pergerakan
robot berkaki enam?”
Tujuan Penelitian
Tujuan dari penelitian ini adalah:
Merakit perangkat keras robot berkaki enam termasuk rangka, kaki, servo,
dan kontroler servo.
 Mengembangkan algoritme pergerakan kaki robot berkaki enam dengan
menggunakan inverse kinematics
 Mengimplementasikan algoritme yang dikembangkan ke robot berkaki
enam.


Manfaat Penelitian
Penelitian ini diharapkan dapat mendukung pengembangan pengontrolan
gerakan kaki pada multi-legged robot.
Ruang Lingkup Penelitian
Ruang lingkup penelitian ini yaitu:
 Algoritme yang dikembangkan akan diterapkan pada robot berkaki enam
berukuran 40 × 30 × 27 cm.
 Navigasi yang diujikan dalam penelitian ini hanya sebatas gerak maju,
mundur, kanan, atau kiri yang sudah ditentukan sebelumnya dalam
program.

3

METODE
Metode yang digunakan pada penelitian ini dapat dilihat pada Gambar 1.
Penjelasan masing-masing tahapan yang akan dilakukan adalah sebagai berikut:
 Studi literatur
Tahap ini digunakan untuk mempelajari datasheet dari komponen yang
digunakan serta mempelajari algoritme yang digunakan.
 Persiapan alat dan bahan
Komponen-komponen yang diperlukan untuk merakit robot berkaki enam
adalah 12 servo HS645MG, 6 servo HS225BB, mikrokontroler Arduino Uno,
SPC servo controller, dan rangka robot MSR01.
 Pengembangan struktur robot
Tahap pengembangan struktur robot meliputi perangkaian alat dan bahan dan
pengambilan data workspace robot. Workspace adalah volume total dari
gerakan manipulator dalam tiap kemungkinan gerakan. Workspace ditentukan
dari geometri manipulator dan batas dari gerakan sendi (Siciliano dan Khatib
2008). Hasil analisis workspace akan digunakan dalam pengembangan
algoritme pergerakan kaki yang akan digunakan.
 Pengembangan algoritme pergerakan robot
Tahap ini meliputi analisis data workspace dan pengembangan kecerdasan
buatan. Data workspace yang telah diperoleh dari tahap sebelumnya akan
dianalisis sehingga menghasilkan posisi kaki yang diharapkan.
 Implementasi pada robot
Pada tahap ini, algoritme yang telah dikembangkan akan diimplementasikan
pada robot berkaki enam.
 Pengujian dan perbaikan sistem
Tahap ini menguji fungsionalitas dan spesifikasi robot berkaki enam yang telah
dilengkapi dengan kecerdasan buatan. Jika fungsi dan spesifikasi yang
diinginkan belum tercapai, maka akan dilakukan perbaikan-perbaikan.
 Evaluasi sistem

Gambar 1 Alur metode penelitian

4
Pada tahap ini, kekurangan dan keberhasilan yang telah dicapai akan dievaluasi.
Deskripsi Alat dan Bahan
Bahan yang digunakan pada penelitian ini antara lain:
 Rangka robot berkaki enam
Rangka robot berkaki enam ini terdiri dari 5 bagian yaitu bagian top body plate,
bottom body plate, coxa, tibia, dan femur. Rangka robot ini terbuat dari bahan
alumunium ringan sehingga memiliki kekuatan bahan yang kuat namun tidak
terlalu berat.
 12 buah servo HS645MG
Motor servo HS645MG memiliki lebar pulsa dari 600 μsec hingga 2400 μsec.
Motor ini bekerja pada tegangan 4.8 V hingga 6 V, dan bekerja baik pada suhu
-20 oC sampai 60 oC. Motor servo HS645MG digunakan pada penelitian ini
karena kecepatan operasi yang sebesar 7.7 kg‧cm sehingga dapat mengangkat
kaki robot meskipun beban dari robot mencapai 3 kg. Dimensi motor servo
HS645MG dapat dilihat pada Gambar 2.a. Spesifikasi detail dari motor servo
ini adalah sebagai berikut:
 Tegangan tes: 4.8V
 Stall torque: 45o / One side pulse traveling 400 μsec
 Arah putaran: searah jarum jam / pulse traveling 1500 - 1900μsec
 Arus diam: 8.8 mA
 Arus kerja: 350 mA
 Lebar dead band: 8 μsec
 Panjang kabel konektor: 300 mm
 Dimensi: 40.6 × 19.3 × 37.8 mm
 Berat: 55.2 g
(RCToys 2001)
 6 buah servo HS225BB
Motor servo HS225BB dapat dilihat pada Gambar 2.b. Sama seperti motor
servo HS645MG, motor servo ini juga memiliki lebar pulsa 600 μsec hingga
2400 μsec, bekerja pada tegangan 4.8 V sampai 6 V, dan bekerja baik pada
suhu -20 oC sampai 60 oC. Namun, kecepatan operasi dari motor servo ini

a. Servo HS645MG
b. Servo H225BB
(RCToys 2011)
(RobotShop 2010)
Gambar 2 Dimensi servo

5
hanya sebesar 3.9 kg‧cm. Motor ini dipilih karena servo ini tidak terlalu
menahan beban dari robot. Servo ini diletakkan pada bagian coxa sehingga
hanya perlu bergerak dengan arah sumbu z. Spesifikasi detail lainnya adalah
sebagai berikut:
 Tegangan tes: 4.8 V
 Stall torque: 45o / One side pulse traveling 400 μsec
 Arah putaran: Searah jarum jam / pulse traveling 1500 – 1900 μsec
 Arus diam: 8 mA
 Arus kerja: 350 mA
 Lebar dead band: 8 μsec
 Panjang kabel konektor: 300 mm
 Dimensi: 32.4 × 16.8 × 31 mm
 Berat: 27g
(RobotShop 2001)
 1 buah smart peripheral controller (SPC) servo controller
SPC servo controller digunakan untuk mengendalikan motor servo standar
maupun kontinu serta dilengkapi dengan fasilitas untuk menyimpan sekuen
gerakan sehingga sesuai untuk aplikasi-aplikasi robotika atau aplikasi yang
menggunakan motor servo lainnya. Penggunaan dari SPC servo controller ini
dikarenakan Arduino Uno yang digunakan hanya mampu menggerakkan
servo maksimal 10 buah, sementara jumlah servo yang digunakan pada
penelitian ini mencapai 18 buah dengan jumlah servo 3 buah untuk setiap
kakinya. Oleh karena itu, digunakan kontroler servo yang mampu mengatur
servo hingga 20 buah. Gambar tampak atas dari SPC servo controller dapat
dilihat pada Gambar 3.b. Spesifikasi SPC servo controller adalah sebagai
berikut:
 Catu daya untuk SPC servo controller terpisah dengan catu daya untuk
motor servo.
 Catu daya untuk SPC servo controller dapat diperoleh dari sumber catu
daya dengan tegangan 6.5 – 12 Volt.
 Resolusi pulsa kontrol servo sebesar 1 μs.
 Dilengkapi dengan kemampuan membaca pulsa kontrol (posisi) servo.
 Dilengkapi dengan kemampuan enable dan disable servo.
 Dilengkapi dengan kemampuan menyimpan dan menjalankan sampai
dengan maksimal 32 sekuen gerakan.
 Dilengkapi dengan kemampuan menyimpan dan kembali ke posisi home
 Tersedia antarmuka UART RS-232, UART TTL, dan I2C.
(Innovative Electronics 2011)
 1 buah Mikrokontroler Arduino Uno
Arduino Uno merupakan board mikrokontroler yang berbasis mikrokontroler
ATMEGA328. Gambar tampak atas dari Arduino Uno dapat dilihat pada
Gambar 3.a. Spesifikasi Arduino Uno adalah sebagai berikut:
 Tegangan operasi: 5 V
 Tegangan masukan: 6-20 V
 Tegangan masukan yang dianjurkan: 7 - 12 V
 Jumlah pin digital I/O: 14 (6 diantaranya pin PWM)
 Jumlah pin analog input: 6
 Arus DC per pin I/O: 40 mA

6

a. Arduino Uno
(Igoe 2010)

b. SPC servo controller
(Innovative Electronics 2011)

Gambar 3 Arduino Uno dan SPC servo controller
 Arus DC untuk pin 3.3 V: 150 mA
 Flash Memory: 32 KB dengan 0.5 KB digunakan untuk bootloader
 SRAM: 2 KB
 EEPROM: 1 KB
 Kecepatan pewaktuan (clock): 16 MHz
(Igoe 2010)

HASIL DAN PEMBAHASAN
Persiapan Alat dan Bahan
Bahan yang digunakan pada penelitian ini antara lain:
 Rangka robot berkaki enam
 10 buah servo HS645MG
 6 buah servo HS225BB
 1 buah SPC servo controller
 1 buah mikrokontroler Arduino Uno
 Baterai 9 V
 Baterai LiPo 7.4 V dan 5.1 V Regulator
Adapun perangkat lunak yang digunakan adalah Arduino 1.0.3 dan menggunakan
bahasa C.
Pengembangan Struktur Robot
Robot yang dikembangkan pada penelitian ini dapat dilihat pada Gambar 4.
Robot ini memiliki jumlah kaki enam dengan 3 buah kaki di sebelah kiri dan
kanan dari tubuh robot. Setiap kaki pada robot berkaki enam terdiri 3 buah servo
yaitu 2 buah servo HS645MG dan 1 buah servo HS225BB. Peletakan servo pada
rangkaian kaki dapat dilihat pada Gambar 5. Servo HS645MG kecepatan operasi
yang lebih besar dari pada servo HS225BB. Servo HS225BB hanya digunakan
untuk mengayunkan kaki ke depan dan belakang, sehingga tidak memerlukan
kekuatan operasi yang besar, sementara untuk mengangkat badan robot dengan
menggunakan kaki diperlukan kekuatan operasi yang cukup besar untuk menahan
beban robot sehingga digunakan servo HS645MG. Servo HS645MG dan servo

7

Gambar 4 Hasil perangkaian

Servo Tibia
HS645MG

Servo Coxa
HS225BB
Servo Femur
HS645MG

Gambar 5 Peletakan servo
HS225BB memiliki ruang pergerakan sebesar 180 derajat dengan mengubah lebar
pulsa. Lebar pulsa 1500 μs memberikan posisi servo 90 derajat, lebar pulsa 600 μs
memberikan posisi servo 0 derajat, dan lebar pulsa 2400 μs memberikan posisi
servo 180 derajat.
Pengembangan Algoritme Pergerakan Robot
Inverse kinematics digunakan untuk mendapatkan nilai sudut pada tiap-tiap
sendi (Ө1, Ө2, dan Ө3) berdasarkan informasi posisi x, y, dan z yang diberikan.
Inverse kinematics didapatkan dengan menggunakan metode geometri.
Berdasarkan pada Gambar 6 Sudut Ө1 dapat dihitung sebagai berikut:
tan-1

(1)

Untuk menghitung sudut Ө2 dan Ө3, diperlukan sudut bantuan yaitu sudut
A1, A2 dan A3 seperti yang dapat dilihat pada Gambar 7. Sudut A1, A2, dan A3
dapat dihitung sebagai berikut:
tan-1
(2)
1
o set
-1 a - - a
cos
- .a .
a
-a
-1

cos

- . a .a

(3)
(4)

8
Z_offset adalah jarak dari lantai ke batas bawah badan robot. Pada saat z = 0,
Z_offset adalah 78 mm. Untuk posisi z lainnya, maka Z_offset dapat dinyatakan
dengan persamaan berikut:
Z_offset = 78 – z

(5)

L adalah panjang kaki robot dengan persamaan:



(6)

-

dengan u adalah jarak dari koordinat base ke end-effector dan y adalah posisi endeffector pada sumbu y.
Sudut 2 dan 3 pada Gambar 7 dapat dinyatakan sebagai berikut:



90 -

(7)
(8)

Sudut pada perhitungan berbeda dengan sudut yang ada pada servo. Pada
servo, sudut dimulai dari 0 hingga 180 derajat, sementara pada perhitungan
geometri sudut dimulai dari -90 hingga 90 derajat. Untuk menormalisasi kaki,

Gambar 6 Geometri kaki robot tampak atas

Gambar 7 Geometri kaki robot tampak depan

9
pada teta2_degree_1 dilakukan pengurangan terhadap nilai sebesar 54.85. Nilai
ini didapatkan dari nilai sudut hasil perhitungan inverse kinematics saat posisi
kaki berada pada posisi stabil yaitu saat 90 derajat. Normalisasi juga dilakukan
pada teta3_degree_1 dengan melakukan pengurangan sebesar 41.33, sehingga
nilai sudut pada setiap sendi kaki berada pada 90 derajat. Potongan program untuk
hasil implementasi inverse kinematics dapat dilihat di bawah ini:
float L1_1 = x_1 - coxa;
float teta1_1 = atan2(y_1, x_1);
float L_1 = sqrt((Z_offset*Z_offset) + (L1_1*L1_1));
float a1_1 = atan2(L_1, Z_offset);
float a2_1 = acos(((tibia*tibia) - (femur*femur) - (L_1*L_1)) /
(-2*femur*L_1));
float a3_1= acos(((L_1*L_1) - (tibia*tibia) - (femur*femur)) /
(-2*tibia*femur));
float a1_degree_1 = degrees(a1_1);
float a2_degree_1 = degrees(a2_1);
float a3_degree_1 = degrees(a3_1);
float teta1_degree_1 = degrees(teta1_1) + 90;
float teta2_degree_awal_1 = (a1_degree_1 + a2_degree_1) - 90;
float teta2_degree_1 = (90 - 54.85 + teta2_degree_awal_1);
float teta3_degree_awal_1 = 90 - a3_degree_1;
float teta3_degree_1= (90 - 41.33 + teta3_degree_awal_1);

Implementasi Algoritme pada Robot
Algoritme dengan menggunakan inverse kinematics yang telah
dikembangkan diimplementasikan pada robot berkaki enam yang memiliki
batasan dimensi seperti dapat dilihat pada Tabel 1. Batasan ini digunakan untuk
melihat workspace robot.
Implementasi sistem dilakukan seperti pada Gambar 8. Mikrokontroler akan
menerima masukan berupa perintah gerakan (kiri, kanan, maju, dan mundur).
Mikrokontroler terhubung dengan servo kontroler menggunakan koneksi I2C.
Porta SDA (Pin A4) dan porta SCL (Pin A5) pada mikrokontroler akan terhubung
dengan porta SDA dan porta SCL pada SPC servo controller. Kontroler servo
akan menggerakkan servo yang terhubung pada porta 1 hingga 18 pada kontroler
servo dengan memberikan sinyal. Untuk memulai koneksi dengan SPC servo
controller, diperlukan pengiriman start condition, alamat perangkat I2C,
kemudian mengirimkan parameter perintah, lalu diakhiri dengan stop condition.
Data yang dikirimkan melalui I2C dikirim dengan menggunakan pulsa pada clock
line. Level dari baris data harus stabil ketika baris clock bernilai 1 atau high,
kecuali pada saat melakukan start condition dan stop condition. Kontroler servo
akan mengirimkan jawaban berupa ACK atau NCK. Data yang dikirimkan
berukuran 8 bit dengan tipe data heksadesimal. Perintah yang diberikan harus
dapat dimengerti oleh SPC servo controller dengan menggunakan kode perintah

Sendi
Sendi 1
Sendi 2
Sendi 3

Tabel 1 Batasan pada kaki robot
Nama lengan
Panjang (mm)
Sudut min
Coxa
15
-90o
Femur
80
-90o
Tibia
130
0o

Sudut maks
90o
90o
90o

10

Gambar 8 Rangkaian dari robot
pada SPC servo controller. Kode perintah yang digunakan pada SPC servo
controller dapat dilihat pada Lampiran 1.
Pengiriman data dengan menggunakan UART memiliki UART baud rate
register (UBRR). UBRR ini digunakan untuk mengatur clock dari UART shift
register. UBRR ini mempengaruhi jumlah dari perubahan sinyal atau simbol yang
terjadi dalam 1 detik (baudrate). Rumus untuk menghitung UBRR dan baudrate
untuk mikrokontroler AVR adalah seperti berikut (ATmega 2009):
baudrate = fck / (16 (UBRR +1))
UBRR = (fck / (16 * baudrate)) – 1

(9)
(10)

dengan fck = frekuensi clock dari mikrokontroler
Mikrokontroler ATMega328 memiliki kecepatan clock sebesar 16 MHz dan
dalam komunikasi diatur baudrate sebesar 9600, sehingga
UBRR = (16000000 / (16*9600)) - 1
= 104.167 - 1
= 103.167 = 103

(11)

Nilai UBRR yang telah didapatkan dimasukkan ke rumus baudrate sehingga
baudrate = 16000000 / (16 (103+1))
= 9615.384 = 9615

(12)

Berdasarkan rumus baudrate didapatkan nilai baudrate sebenarnya sebesar
9615. Jika membagi nilai ini dengan baudrate yang digunakan yaitu 9600 maka
akan mendapatkan nilai 1.0016 sehingga kesalahan yang didapatkan :
Kesalahan = (1.0016 – 1) / 1
= 0.16%

100%
(13)

Nilai kesalahan ini menunjukan adanya kesalahan saat pengiriman data pada I2C,
namun nilai kesalahan ini masih dalam toleransi kesalahan.
Pulse width modulation (PWM) adalah teknik modulasi digital dimana lebar
dari pulsa carrier dibuat bervariasi berdasarkan modulasi tegangan. Dengan
menurunkan atau menaikkan nilai lebar pulsa, kontroler mengatur aliran energi ke
motor shaft (PTDesign 2000). Servo yang digunakan pada penelitian ini memiliki
lebar pulsa dari 600 μs – 2400 μs. Ilustrasi hubungan nilai lebar pulsa dan sudut
hasil dapat dilihat pada Gambar 9. Nilai lebar pulsa 600 μs merupakan nilai sudut
minimum (0o) dan lebar pulsa 2400 μs merupakan nilai sudut maksimum (180o)

11
pada servo, sehingga untuk mendapatkan nilai lebar pulsa dari sudut yang
dihasilkan pada Ө1, Ө2, dan Ө3 digunakan persamaan:
Lebar pulsa = (10 × sudut hasil) + 600

(14)

Lebar pulsa (μs)

Nilai lebar pulsa ini akan digunakan untuk menggerakan motor servo sehingga
motor servo dapat bergerak sesuai dengan sudut yang dihasilkan.
Implementasi algoritme dilakukan dengan dua cara yaitu:
1. Dengan masukan berupa nilai lebar pulsa, hasil dari perhitungan inverse
kinematics sebelumnya.
2. Dengan masukan berupa jarak perpindahan end-effector yang diinginkan dan
menyertakan perhitungan inverse kinematics pada algoritme.
Gerakan kaki dari robot berkaki enam terdiri atas 4 pose yang siklis yaitu
power, lift, swing, dan contact. Power merupakan pose saat posisi kaki berada
tepat di atas permukaan dan stabil. Lift adalah pose saat servo bagian sendi atas
femur dan tibia berputar berlawanan arah jarum jam sehingga kaki terangkat
sepanjang sumbu z. Swing adalah pose saat servo bagian coxa berputar dengan
sumbu putar z. Contact adalah pose saat kaki kembali dari keadaaan swing ketika
sumbu z kembali bernilai 0. Empat pose ini akan terus berulang untuk
menggerakan kaki robot.
Untuk bergerak maju, 3 kaki hexapod akan bergerak ke depan sementara 3
kaki lainnya diam. Setelah 3 kaki tersebut selesai melakukan 1 cyclic step maka 3
kaki yang diam tersebut akan bergerak dan 3 kaki lainnya terdiam. Pola gerakan
ini disebut sebagai tripod gait. Pada implementasi algoritme, kaki pada robot
diberi nama berupa angka dengan rincian nomor servo seperti pada Gambar 10.
Sekuen gerakan untuk gerak maju dapat dilihat pada Gambar 11.
3000
2500
2000
1500
1000
500
0

(180, 2400)

y = 10x + 600

0

50

100
150
Sudut hasil

200

Gambar 9 Hubungan sudut hasil dan lebar pulsa

Gambar 10 Penamaan kaki dan penomoran servo

12
Kaki 1, 5, dan 3 bergerak dalam waktu yang sama untuk setiap pose siklis
sementara kaki 4, 2, dan 6 akan tidak bergerak, setelah kaki 1, 5, dan 3 telah
kembali ke pose contact, kaki 4, 2, dan 6 akan bergerak dalam waktu yang sama
pada setiap pose siklis. Gerakan ini akan menghasilkan 2 langkah yang
menyebabkan robot bergerak ke depan. Pada implementasi maju, kaki robot
terletak pada koordinat x = 0, y = 0, dan z = 0 untuk tiap frame kaki. Pada pose lift,
kaki akan terangkat sepanjang sumbu z sebesar 30 mm. Pada pose swing, kaki
akan berayun ke depan sebesar 65 mm sepanjang sumbu y. Lalu kaki akan
kembali ke posisi z = 0 pada pose contact, setelah satu siklis ini selesai kaki akan
kembali ke pose power yaitu saat x = 0, y = 0, dan z = 0. Ilustrasi cyclic step untuk
implementasi langkah maju dapat dilihat pada Gambar 12. Tabel 2 menunjukan

Gambar 11 Sekuen gerak maju

Gambar 12 Pose pada gerak maju

13
nilai sudut dan lebar pulsa untuk imlementasi gerak maju.
Potongan program untuk gerak maju dapat dilihat seperti berikut:
IK(1,
IK(1,
IK(1,
IK(1,
IK(10,
IK(10,
IK(10,
IK(10,

2,
2,
2,
2,

3,
3,
3,
3,

11,
11,
11,
11,

13,
13,
13,
13,
12,
12,
12,
12,

14,
14,
14,
14,
4,
4,
4,
4,

5,
5,
5,
5,

15,
15,
15,
15,
6,
6,
6,
6,

7,
7,
7,
7,
16,
16,
16,
16,

8,
8,
8,
8,

9,
9,
9,
9,

17,
17,
17,
17,

0
0
0
0

,0 ,30);
,65 ,30);
,65 ,0);
,0 ,0);

18,
18,
18,
18,

0
0
0
0

,0 ,30);
,65 ,30);
,65 ,0);
,0 ,0);

Pada gerakan kaki dilakukan penyamaan frame, yang merupakan
penyamaan sumbu ruang, sehingga gerakan kaki dapat lurus sesuai dengan frame
pada body robot. Berikut adalah potongan program untuk mengatur arah frame
pada kaki:
//x_1, y_1, z_1 untuk kaki 1 dan 4
float x_1 = (x*cos((pi/180)*(20))) + (2*y*sin((pi/180)*(20)));
float y_1 = (-x*sin((pi/180)*(20))) + (2*y*cos((pi/180)*(20)));
int Z_offset = 78 - 2*z;
//x_2, y_2, z_2 untuk kaki 2 dan 5
float x_2 = (x*cos((pi/180)*(10))) + (2*y*sin((pi/180)*(10)));
float y_2 = (-x*sin((pi/180)*(10))) + (2*y*cos((pi/180)*(10)));
//x_3, y_3, z_3 untuk kaki 3 dan 6
float x_3 = (x*cos((pi/180)*(0))) + (2*y*sin((pi/180)*(0)));
float y_3 = (-x*sin((pi/180)*(0))) + (2*y*cos((pi/180)*(0)));

untuk nilai Z_Offset arah ke sumbu z sama pada tiap kaki, sehingga tidak
memerlukan perubahan pada tiap-tiap kaki.
Tabel 2 Hasil implementasi gerak maju
Posisi (mm)
Sudut hasil (o)
State
x y
z
Ө1
Ө2
Ө3
servo 1
Kaki 1 dan 4
Lift
0 0
30 90.00 151.6 118.27 1500.00
Swing
0 65
30 135.88 113.62 84.83 1958.8
Contact 0 65
0 135.88 76.44 66.91 1994.31
Power 0 0
0 90.00 90.00 90.00 1500.00
Kaki 2 dan 5
Lift
0 0 30 90.00 151.6 118.27 1500.00
Swing
0 65 30 142.97 128.27 100.36 2029.71
Contact 0 65 0 142.97 83.38 79.19 2151.79
Power
0 0 0 90.00 90.00 90.00 1500.00
Kaki 3 dan 6
Lift
0 0 30
90.00 151.6 118.27 1500.00
Swing
0 65 30
150.35 151.6 118.27
2103.5
Contact 0 65 0
150.35 90.00 76.42 2071.39
Power 0 0 0
90.00 90.00 90.00 1500.00

PWM
servo 2

servo 3

2115.97
1736.21
1364.45
1500.02

1782.66
1448.25
1269.13
1499.96

2115.97
1882.67
1433.82
1500.02

1782.66
1603.62
1391.85
1499.96

2115.97
2115.97
1500.02
1500.02

1782.66
1782.66
1364.19
1499.96

14
Gerakan kaki untuk mundur hampir sama dengan gerakan maju, namun
jarak yang digunakan untuk sumbu y bernilai -65 mm, sehingga kaki akan berayun
ke belakang. Untuk gerakan belok kanan dan belok kiri, sekuen gerakan kaki
berbeda, yaitu kaki pada langkah pertama kaki 1 dan kaki 3 bergerak ke arah
depan sebesar 30 mm namun kaki 5 bergerak ke belakang sebesar -30 mm. Pada
langkah berikutnya kaki 4 dan 6 bergerak ke belakang sebesar -30 mm, sementara
kaki 2 ke arah depan sebesar 30 mm sehingga menyebabkan badan robot berputar
ke kanan sebesar 45 derajat. Sekuen gerak belok kiri hampir sama dengan gerak
belok kanan, namun pada langkah pertama kaki 1 dan 3 bergerak ke belakang
sebesar -30 mm dan kaki 5 bergerak ke depan sebesar 30 mm, lalu pada langkah
berikutnya kaki 4 dan 6 bergerak ke arah depan sebesar 30 mm sementara kaki 2
ke arah belakang sebesar -30 mm sehingga hasil gerakan dari sekuen ini adalah
badan robot berputar sebesar 45 derajat ke kiri. Ilustrasi, potongan program, dan
hasil implementasi untuk gerakan kaki mundur, kiri, dan kanan dapat dilihat pada
Lampiran 2.
Pengujian dan Evaluasi Sistem
Waktu eksekusi untuk implementasi algoritme pertama dan kedua
dibandingkan pada Tabel 3. Algoritme pertama diimplementasikan dengan cara
langsung memasukkan nilai lebar pulsa pada sistem gerak motor servo, sementara
algoritme kedua diimplementasikan dengan masukan berupa jarak perpindahan
end-effector yang diinginkan, sehingga perhitungan inverse kinematics disertakan
pada program. Tabel 3 menunjukkan bahwa waktu komputasi algoritme pertama
lebih cepat daripada algoritme kedua. Hal ini terjadi karena diperlukannya
perhitungan inverse kinematics pada algoritme kedua. Namun, algoritme kedua ini
lebih fleksibel karena pengguna dapat menentukan sendiri jarak perpindahan endeffector yang diinginkan tanpa bergantung pada jarak yang telah ditentukan
sebelumnya.
Secara keseluruhan, dapat dilihat bahwa algoritme inverse kinematics yang
dikembangkan telah berhasil diimplementasikan pada hexapod. Algoritme ini
memiliki waktu komputasi yang cukup cepat, terutama bila diimplementasikan
dengan cara langsung memasukkan nilai lebar pulsa dari hasil perhitungan inverse
kinematics. Namun, algoritme ini tidak dapat menyesuaikan dengan adanya
halangan. Dengan kata lain, gerakan kaki robot akan tetap sama walaupun ada
halangan. Algoritme FFSA yang dikembangkan oleh Reyneri 1997 dapat
diimplementasikan untuk mengatasi kekurangan tersebut. Namun, karena
perhitungannya yang lebih kompleks, implementasi algoritme ini akan
memerlukan waktu komputasi yang lebih lama.

Jenis
gerakan
Maju
Mundur
Kiri
Kanan

Tabel 3 Perbandingan waktu komputasi algoritme
Waktu yang dibutuhkan tiap 1 langkah
Jarak
Sudut
(detik)
(mm)
putar (o)
Dengan lebar pulsa
Inverse kinematics
130
0
2.05
4.29
50
0
2.23
4.30
0
45
3.42
5.44
0
45
3.28
5.42

15
FFSA dibuat berdasarkan sifat cyclic steps pada langkah kaki robot berkaki
enam. Algoritme ini memiliki kemampuan menghindari halangan dengan cara
memundurkan kaki dan kembali ke power state sehingga halangan tersebut dapat
dilewati. State dan trigger pada FFSA bersifat fuzzy (Berardi 1997). Masukan bagi
FFSA merupakan keluaran dari hasil gerakan sebelumnya. Hal ini dilakukan
dengan membaca posisi servo pada waktu t sehingga dapat menghasilkan keluaran
posisi pada waktu t + 1. Hasil analisa workspace robot digunakan untuk
mendapatkan nilai anggota fuzzy variabel, yaitu variabel state dan trigger.

SIMPULAN DAN SARAN
Algoritme dengan menggunakan perhitungan inverse kinematics telah
berhasil dikembangkan dan diimplementasikan pada hexapod. Implementasi
algoritme dengan masukan berupa nilai lebar pulsa yang telah dihitung
sebelumnya memiliki waktu gerak yang lebih cepat daripada implementasi
algoritme dengan masukan berupa jarak perpindahan end-effector. Namun,
algoritme kedua lebih fleksibel karena pengguna dapat menentukan sendiri jarak
perpindahan end-effector yang diinginkan tanpa bergantung pada jarak yang telah
ditentukan sebelumnya.
Walaupun algoritme inverse kinematics memiliki kemampuan komputasi
yang cukup cepat, namun algoritme ini tidak dapat menyesuaikan dengan adanya
halangan. Untuk mengatasinya, algoritme FFSA dapat diimplementasikan. Namun,
karena perhitungannya yang lebih kompleks, implementasi algoritme ini akan
memerlukan waktu komputasi yang lebih lama.

DAFTAR PUSTAKA
ATMega. 2009. 8-bit AVR Microcontroller with 4/8/16/32K bytes in-system
programmable
flash
ATmega48PA
ATmega88PA
ATmega168PA
ATmega328P [Internet]. [diunduh 2013 Mei 25]. Tersedia pada:
http://www.atmel.com/Images/doc8161.pdf.
Berardi F, Chiaberge M, Miranda E, Reyneri LM. 1997. A walking hexapod
controlled by a neuro-fuzzy system. Di dalam Minnesota College Personnel
Association. 1997 Feb 10-12; Pisa, Italia. Pisa (IT). hlm: 95-104. doi:
10.1.1.66.7520.
Igoe T. 2010. Arduino Uno [Internet]. [diunduh 2012 Des 9]. Tersedia pada:
http://www.arduino.cc/en/Main/arduinoBoardUno.
Innovative Electronics. 2011. Manual SPC servo motor controller [Internet].
[diunduh 2012 Des 2]. Tersedia pada: http://www.innovativeelectronics.com/
innovative_electronics/ pro_spcservo.htm.
Lewis F, Dawson D, Abdallah C. 2003. Robot Manipulator Control Theory and
Practice Ed ke-2. New York (US): Taylor and Francis.
PTDesign. 2000. Pulse width modulation [Internet]. [diunduh 2013 Jun 23].
Tersedia pada: ab.cba.mit.edu classes
9 1.0 topics p m.pd .

16
Reyneri LM. 1997. An introduction to fuzzy state automata. Di dalam
International Work-Conference on Artificial and Natural Neural Networks.
1997 Jun 4-6; Canary Islands, Spanyol. Canary Islands (ES). hlm: 273-283.
RCToys. 2001. Announced specification of HS-645MG standard deluxe high
torque servo [datasheet]. [diunduh 2012 Nov 2012]. Tersedia pada:
www.rctoys.com/hitec-servos/HIT-HS645MG.pdf.
RobotShop. 2001. Announced specification of HS225BB might mini servo
[datasheet]. [diunduh 2012 Des 9]. Tersedia pada: www.robotshop.com/
PDF/HS225bb.pdf.
Siciliano B, Khatib O 2008. Handbook of Robotics [bibliografi]. Berlin (DE):
Springer.
Thirion B, Thiry L. 2002. Concurrent programming for the control of hexapod
walking. ACM SIGAda Ada Letters. 22 (1):17-28. doi: 10.1145/507548.507551.

17

Lampiran 1 Kode perintah SPC Servo Controller
Kode perintah I2C SPC Servo Controller
1. PING
Fungsi
Menguji koneksi dan memastikan bahwa SPC
Servo Controller siap menerima perintah
Command I2C
0x00
Parameter
Respon I2C
0x06 : jika perintah dikenali
0x15 : jika perintah tidak dikenali
Delay antara Command 10μs
dan Respon
Keterangan
2. RUN SERVO
Fungsi
Command I2C
Parameter

Memutar motor servo tertentu
0x02 < ServoPulse>
-
1-20 : nomor motor servo yang akan diperintah

Lebar pulsa control servo dengan resolusi 1μs

0 : motor servo bergerak ke posisi Home masingmasing sesuai dengan spesifikasi kecepatan
masing-masing motor servo.
1-100 : motor servo berherak ke posisi tujuan
dengan kecepatan sesuai dengan nilai rate. Nilai 1
merupakan kecepatan paling rendah. Semakin
besar nilai rate, semakin cepat motor servo
bergerak ke posisi tujuan.
Respon I2C
0x06 jika perintah dikenali
0x15 jika perintah tidak dikenali
Delay antara Command 15μs
dan Respon
Keterangan
Jika perintah ini dikirim lagi sebelum motor servo
sampai ke posisi tujuan, maka SPC Servo
Controller akan langsung menjalankan perintah
terakhir

3. READ SERVO STATUS AND POSITION
Fungsi
Memeriksa status aktifnya dan posisi lebar pulsa
motor servo tertentu
Command I2C
0x07
Parameter

1-20 : nomor motor servo yang akan diperintah

18
Lampiran 1 Lanjutan
Respon I2C

0x06 : jika perintah dikenali
0x15 : jika perintah tidak dikenali

0 : motor servo non-aktif (Disable)
1 : motor servo aktif (Enable)

Lebar pulsa kontrol servo dengan resolusi 1 μs
Delay antara Command 25μs
dan Respon
Keterangan
Jika perintah ini dikirim lagi sebelum motor servo
sampai ke posisi tujuan, maka SPC Servo
Controller akan langsung menjalankan perintah
terakhir
4. SET HOME
Fungsi

Menentukan posisi Home untuk motor servo
tertentu
Command I2C
0x03 < ServoPulse>
Parameter

1-20 : nomor motor servo yang akan diperintah

Lebar pulsa kontrol servo dengan resolusi 1μs
Respon I2C
0x06 : jika perintah dikenali
0x15 : jika perintah tidak dikenali
Delay antara Command 100μs
dan Respon
Keterangan
Perintah ini berfungsi untuk menentukan posisi
lebar pulsa kontrol tertentu menjadi posisi default
untuk motor servo tersebut saat SPC Servo
Controller baru dinyalakan.
Perintah ini akan tersimpan di EEPROM. Saat SPC
Servo Controller dinyalakan, tiap motor servo akan
kembali ke posisi Home.
5. GO TO HOME
Fungsi
Memerintahkan motor servo untuk kembali ke
posisi Home
Command I2C
0x03 < Rate>
Parameter

0 : semua motor servo diperintahkan berputar ke
posisi Home masing-masing.
1 – 20 : nomor motor servo yang diperintahkan
untuk bergerak ke posisi Home-nya.

0 : motor servo bergerak ke posisi Home sesuai
dengan spesifikasi kecepatan setiap motor servo.

19
Lampiran 1 Lanjutan

1 – 100 : motor servo bergerak ke posisi Home
dengan kecepatan sesuai dengan nilai rate. Nilai 1
merupakan kecepatan paling rendah. Semakin
besar nilai rate, semakin cepat motor servo
bergerak ke posisi Home.
Respon I2C
0x06 : jika perintah dikenali
0x15 : jika perintah tidak dikenali
Delay antara Command 10μs
dan Respon
Keterangan
Perintah ini berfungsi untuk menentukan posisi
lebar pulsa kontrol tertentu menjadi posisi default
untuk motor servo tersebut saat SPC Servo
Controller baru dinyalakan.
Perintah ini akan tersimpan di EEPROM. Saat SPC
Servo Controller dinyalakan, tiap motor servo akan
kembali ke posisi Home.

20
Lampiran 2 Implementasi pada gerakan mundur, belok kanan, dan belok kiri
Implementasi gerakan mundur
Potongan proram untuk gerakan mundur
IK(1,
IK(1,
IK(1,
IK(1,
IK(10,
IK(10,
IK(10,
IK(10,

2,
2,
2,
2,

3,
3,
3,
3,

11,
11,
11,
11,

13,
13,
13,
13,
12,
12,
12,
12,

14,
14,
14,
14,
4,
4,
4,
4,

15,
15,
15,
15,

5,
5,
5,
5,

6,
6,
6,
6,

7,
7,
7,
7,

8,
8,
8,
8,

16,
16,
16,
16,

9,
9,
9,
9,

17,
17,
17,
17,

0
0
0
0

,0 ,30);
,-65 ,30);
,-65 ,0);
,0 ,0);

18,
18,
18,
18,

0
0
0
0

,0 ,30);
,-65 ,30);
,-65 ,0);
,0 ,0);

Ilustrasi gerakan untuk gerak mundur

Hasil implementasi untuk gerak mundur

Posisi (mm)
x
y
z
Kaki 1 dan 4
Lift
0
0 30
Swing
0 -65 30
Contact 0 -65
0
Power
0
0
0
Kaki 2 dan 5
Lift
0
0 30
Swing
0 -65 30
Contact 0 -65
0
Power
0
0
0
Kaki 3 dan 6
Lift
0
0 30
Swing
0 -65 30
Contact 0 -65
0
Power
0
0
0
State

Sudut hasil (o)
Ө1
Ө2
Ө3

servo 1

PWM
servo 2

servo 3

90.00 151.60
13.59 151.60
13.59 99.98
90.00 90.00

118.27
118.27
103.51
90.00

1500.00
735.93
1994.31
1500.00

2115.97
2115.97
1599.81
1500.02

1782.66
1782.66
1635.08
1499.96

90.00
21.88
21.88
90.00

151.6
151.6
95.93
90.00

118.27 1500.00
118.27 818.85
98.48 818.85
90.00 1500.00

2115.97
1882.67
1599.81
1500.02

1782.66
1782.66
1584.79
1499.96

90.00
29.65
29.65
90.00

151.6
151.6
90.00
90.00

118.27 1500.00
118.27 896.50
90.00 896.50
90.00 1500.00

2115.97
2115.97
1500.02
1500.02

1782.66
1782.66
1449.96
1499.96

Implementasi gerakan belok kanan
Potongan program untuk gerak belok kanan
Perbedaan program IK dan IK2 hanya pada bagian kaki tengah, nilai masukan
x, y, dibalikkan.menjadi negatif/positif sehingga gerakan kakinya berkebalikan
dengan kaki depan dan belakang.
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, 0 ,0 ,30);
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, 30 ,30 ,30);

21
Lampiran 2 Lanjutan
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, 30 ,30 ,0);
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, 30 ,0 ,0);
IK2(10,
IK2(10,
IK2(10,
IK2(10,

11,
11,
11,
11,

12,
12,
12,
12,

4,
4,
4,
4,

5,
5,
5,
5,

6,
6,
6,
6,

16,
16,
16,
16,

17,
17,
17,
17,

18,
18,
18,
18,

0 ,0 ,30);
-30 ,-30 ,30);
-30 ,-30 ,0);
-30 ,0 ,0);

Ilustrasi gerakan belok kanan

Hasil Implementasi untuk gerak belok kanan
Posisi (mm)
Sudut hasil (o)
x
y
z
Ө1
Ө2
Ө3
Kaki 1 dan 4
Lift
0
0
30 84.27 124.13 95.04
Swing
30
30
30 110.6 111.11 81.82
Contact
30
30
0 110.6 75.02 64.33
Power
0
0
0 84.27 81.66 90.00
Kaki 2 dan 5
Lift
0
0 30 90.00 151.60 118.27
Swing
-30 -30 30 115.3 116.37 88.00
Contact -30 -30
0 115.3 77.92 88.00
Power
-30
0
0 87.12 81.24 75.46
Kaki 3 dan 6
Lift
0
0 30 90.00 151.60 118.27
Swing
30 30 30 119.98 122.87 95.04
Contact 30 30
0 150.35 81.09 75.21
Power
30
0
0 90.00 81.04 75.21
State

servo 1

PWM
servo 2

servo 3

1442.66 1841.3 1550.39
1705.99 1711.09 1418.2
1705.99 1350.20 1243.29
1442.66 1416.57 1499.96
1500.00
1753.04
1753.04
1471.20

2115.97
1763.65
1379.22
1412.36

1782.66
1479.98
1295.76
1354.63

1500.00
1799.82
1799.82
1500.00

2115.97
1828.67
1410.94
1410.94

1782.66
1550.39
1352.13
1352.13

Implementasi gerakan belok kiri
Potongan program untuk belok kiri
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, 0 ,0 ,30);

22
Lampiran 2 Lanjutan
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, -30 ,-30 ,30);
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, -30 ,-30 ,0);
IK2(1, 2, 3, 13, 14, 15, 7, 8, 9, -30 ,0 ,0);
IK2(10,
IK2(10,
IK2(10,
IK2(10,

11,
11,
11,
11,

12,
12,
12,
12,

4,
4,
4,
4,

5,
5,
5,
5,

6,
6,
6,
6,

16,
16,
16,
16,

17,
17,
17,
17,

18,
18,
18,
18,

0 ,0 ,30);
30 ,30 ,30);
30 ,30 ,0);
30 ,0 ,0);

Ilustrasi untuk gerakan belok kiri

Hasil implementasi untuk gerakan belok kiri
Posisi (mm)
Sudut hasil (o)
x
y
z
Ө1
Ө2
Ө3
Kaki 1 dan 4
Lift
0
0 30
90.00 151.60 118.27
Swing
-30 -30 30
28.74 151.60 118.27
Contact -30 -30
0
28.74 100.42 104.02
Power -30
0
0 102.63
97.20 100.12
Kaki 2 dan 5
Lift
0 0 30
90.00 151.60 118.27
Swing
30 30 30
32.28 151.60 118.27
Contact 30 30
0
32.28 99.37 102.79
Power
30 0
0
96.68 97.48 100.48
Kaki 3 dan 6
Lift
0
0 30
90.00 151.60 118.27
Swing
-30 -30 30
36.25 151.60 118.27
Contact -30 -30 0
36.25 97.58 100.60
Power
30
0 0
90.00 97.58 100.60
State

servo 1

PWM
servo 2

servo 3

1500.00
887.36
887.36
1626.25

2115.97
2115.97
1604.20
1571.98

1782.66
1782.66
1640.16
1601.19

1500.00
2029.71
2029.71
1566.84

2115.97
2115.97
1593.72
1574.84

1782.66
1782.66
1627.92
1604.81

1500.00
962.54
962.54
1500.00

2115.97
2115.97
1575.78
1575.78

1782.66
1782.66
1606.00
1606.00

23

RIWAYAT HIDUP
Penulis dilahirkan di Bekasi, Jawa Barat pada tanggal 4 Februari 1991.
Penulis merupakan anak kedua dari 4 bersaudara dari Hendi dan Mumun. Pada
tahun 2008, penulis menamatkan pendidikan di SMA Negeri 2 Bekasi. Penulis
lulus seleksi masuk Institut Pertanian Bogor (IPB) pada tahun 2009 melalui jalur
Seleksi Nasional Mahasiswa Perguruan Tinggi Negeri (SNMPTN) di Departemen
Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam.
Selama mengikuti perkuliahan, penulis menjadi asisten praktikum pada
mata kuliah Rangkaian Digital (2012-2013) dan Organisasi Komputer (20122013). Penulis aktif di organisasi kemahasiswaan Himpunan Mahasiswa Ilmu
Komputer pada tahun 2010-2012, Microsoft Student Partners pada tahun 2010 –
2013, serta berbagai kegiatan kepanitiaan seperti IToday 2011 dan Himalkom,
Pesta Sains Nasional 2011. Penulis melaksanakan kegiatan Praktik Kerja
Lapangan di Navcore Nextology pada bulan Juli-Agustus 2012. Selain itu, penulis
juga mendapatkan prestasi juara 2 di lomba Artikel Ilmiah Kategori Lingkungan
TPB IPB 2010 dan aktif mengikuti lomba Program Kreativitas Mahasiswa pada
tahun 2011-2013. Pada tahun 2012, tim dari PKM yang penulis ikuti mendapatkan
juara 2 kategori poster PKMT-2 dengan judul Implementasi Virtual Whiteboard
sebagai Alat Bantu Pembelajaran Matematika Interaktif di SLB B/C Tunas Kasih
2 Bogor.