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 o set (2) 1 cos-1 cos-1
a -
- a
- .a . - a -a - . 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 <ServoNum> < ServoPulse>
-<ServoNum> 1-20 : nomor motor servo yang akan diperintah <ServoPulse> 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 <ServoNum> Parameter <ServoNum> 1-20 : nomor motor servo yang akan diperintah
18 Lampiran 1 Lanjutan Respon I2C
0x06 : jika perintah dikenali 0x15 : jika perintah tidak dikenali <ServoStatus> 0 : motor servo non-aktif (Disable) 1 : motor servo aktif (Enable) <ServoPulse> 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 <ServoNum> < ServoPulse> Parameter <ServoNum> 1-20 : nomor motor servo yang akan diperintah <ServoPulse> 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 <ServoNum> < Rate> Parameter <ServoNum> 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.