Top Banner
Karya Tulis Ilmiah Inverse Kinematic dengan Real Time Operating System pada robot Quadruped Lintang Setiawan, Darmawan Utomo, M.Eng. UNIVERSITAS KRISTEN SATYA WACANA 1
19

robot inverse kinematic

Jan 22, 2023

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: robot inverse kinematic

Karya Tulis Ilmiah

Inverse Kinematic dengan Real Time Operating System pada robotQuadruped

Lintang Setiawan, Darmawan Utomo, M.Eng.

UNIVERSITAS KRISTEN SATYA WACANA

1

Page 2: robot inverse kinematic

2010/2011

Inverse Kinematic dengan Real Time Operating System pada robotQuadruped

Lintang Setiawan1, Darmawan Utomo, M.Eng1.

1. Fakultas Teknik Elektro dan Komputer, Universitas Kristen Satya Wacana,Salatiga

E-mail : [email protected]

Abstrak

Pembuatan sebuah sistem robot melibatkan berbagai disiplin ilmu diantaranyaMatematika, Fisika, Elektronika, dan Komputer. Pada robot bergerak beroda,pergerakan robot biasanya hanya terbatas untuk translasi dengan arah depan-belakang dan rotasi, serta kurang fleksibel berjalan di medan yang terjal.Dengan perhitungan yang tepat, pergerakan robot berkaki empat (quadruped) dapatlebih dinamis bila dibanding robot beroda, namun analisanya lebih rumit karenauntuk mendapatkan gerak yang halus dan presisi diperlukan perhitungan inversekinematic. Secara umum inverse kimematic mempelajari parameter parameter dalamsambungan baik prismatic maupun rotational, yang merupakan persamaan matematis yangtidak selalu linier. Semakin banyak derajad kebebasan sebuah lengan robotpergerakan yang dapat dilakukan dapat semakin leluasa, namun perhitungan inversekinematic juga akan bertambah rumit.

Dengan melibatkan perhitungan inverse kinematic robot berkaki dapat bergerak kesegala arah (multi directional), sehingga pergerakannya lebih dinamis, dan presisi,tanpa perhitungan kinematika hal itu akan sulit dilakukan. Selain itu denganinverse kinematic konsumsi daya dapat diperkecil, keaweatan bahan dapat dicapaikarena dapat meghilangkan dan membuang gaya-gaya paksaan yang tidak diperlukanyang disebabkan ketidak presisian gerak. Pengembangan sistem kontrol robotseperti peningkatan kecepatan eksekusi program maupun performa prosesor yangsemakin baik memungkinkan pemakaian Real Time Operating System (RTOS) pada sistem-sistem embedded, yang memungkinkan sistem menjalankan fungsi multi tasking denganorientasi waktu yang real time.

Kata kunci: robot, quadruped, real time operating system, embedded system,inverse kinematic.

1. Pendahuluan

1.Latar Belakang a. Real Time Operating System

2

Page 3: robot inverse kinematic

Dalam desain sebuah sistemembedded ada banyak teknik yang dapatdipakai untuk penulisan perangkatlunak baik dengan atau tanpapenggunaan kernel. Tanpa kernel yaitujika sistem yang sedang dikembangkansederhana, ada kemungkinan teknik inimenyediakan solusi yang paling sesuai. Di dalam kasus lebih rumit, adakemungkinan bahwa menggunakan suatukernel akan lebih baik. Dalamperkembangannya, perancangan sebuahsistem embedded yang besar dituntutdapat mengatasi hal-hal sepertibagaimana mengimplementasikanpembagian waktu untuk beberapa prosessecara, bagaimana mengatasi eventexternal maupun interrupt yangdatangnya tak terduga, ataupunmenyederhanakan algoritma yang rumit.Real Time Operating Sistem menawarkanbeberapa keuntungan lain diantaranyatiap task berbentuk modul, kemudahandalam pengujian tiap task, code reuse,efisiensi proses, dan kemungkinanpembagian kerja dalam pembuatansistem.

b. Inverse Kinematik

Untuk menghasilkan suatugerakan yang bagus, presisi sertahalus, dalam robotika perlu perlumenerapkan perhitungan kinematikapada penyusunan perangkat lunaknya.Kinematik mempelajari bagaimana suatugerakan terjadi meliputi perhitungan-perhitungan matematis secarageometri ruang tentang hubunganantara sudut-sudut yang harusdibentuk oleh beberapa poros padalengan robot dengan koordinat yangdiharapkan. Kebanyakan perhitunganini diaplikasikan untuk robot satulengan (single arm) pada robot-robotindustri. Disini akan dicobaditerapkan perhitungan inversekinematic untuk robot berlengan

banyak (multi arm). Penambahan sendipada suatu lengan meningkatkankemampuan bermanuver robot ruanggerak yang dapat dijangkau, sertavariasi gerakan yang dapat dibuat.Namun penambahan ini juga menimbulkanbeberapa kerugian karena harusmenambah servo motor sebagaipenggerak sehingga beaya lebih mahal,peningkatan konsumsi daya, beratrobot, selain itu pengontrolan robotjadi lebih rumit karena lebih banyakmotor yang digerakkan dan dikontroldalam waktu yang bersamaan [1].

c. Locomotion

Selain perlunya perhitunganinverse kinematic dalam pembuatanrobot bergerak (mobile) masih perlumempertimbangkan masalah locomotion.Pengertian locomotion adalah prosesyang menyebabkan robot aoutonomousbergerak [1]. Proses ini untuk robotberkaki ini adalah urutan gerakankaki, atau bagaimana suatu robotdapat mengatur posisi pusat massarobot sehingga robot dapat beradadalam kondisi seimbang. Mekanismecara bergerak robot berkaki biasanyaterinspirasi dari sistem sistemhayati (hewan) yang mana dapatberpindah dengan baik dalam arealyang luas, dan terjal [2].

2. Rumusan Masalah

Bagaimana mendesain robotberkaki empat denganmengimplementasikan inverse kinematik,locomotion dan real time operating system.

3. Tujuan dan Manfaat

Dengan adanya penelitian inidiharapkan dapat memberikan manfaatsebagai berikut:

3

Page 4: robot inverse kinematic

1. Mendapatkan perhitungankinematis untuk lengan robotdengan tiga derajadkebebasan, sertamemperkenalkan perhitungankinematis untuk robot multiarm.

2. Mencoba mencari algoritmalocomotion yang lebih efisienuntuk robot berkaki empat.

3. mengurangi kompleksitassistem embedded denganpemakaian RTOS.

2. Landasan teori

Konsep Real Time Operating Sistem

Untuk dapat melakukanpengontrolan robot dengan baikdibutuhkan suatu kontrol sistem yangreal time, misalkan pengolahan datasesor tidak terlambat, pengolahandata untuk melakukan pengontrolan keactuator juga sebisa mungkin cepat,dapat menangani datangnya event yangtidak terduga waktunya, . Salah satucara yang dapat di lakukan untukmengatasi hal tersebut adalah denganpemakaian Real Time Operating System(RTOS). Pemakaian Real Time OperatingSystem memungkinkan satu prosesordipakai untuk menjalankan banyakproses secara simultan.

Perbedaan mendasar antara RealTime Operating System dengan OperatingSystem (OS) non real time terletakpada ketepatan waktu suatu dalammenjalankan sebuah task. Saatmenjalankan komputer, program paint,wordpad, dan hyperterminal dapatdibuka pada waktu yang bersamaan.Windows, linux, dan mac OS merupakanGeneral Operating System (GOS), yang manaketepatan waktu bukan menjadi halyang utama, karena pemakai juga masih

setia menunggu seandainya komputersedang sibuk sehingga loading programagak lama. Namun RTOS tidakmengizinkan hal tersebut. RTOS lebihmenekankan pada ketepatan waktueksekusi tiap task. Perbedaan lainya terletak padaalokasi kode program. Untuk sistemoperasi pada umumnya, peletakkanantara kode binary program OS danaplikasi dipisahkan, sedangkan padaRTOS peletakkan kode binary programOS dan aplikasi tidak dapatdipisahkan, hal ini dikarenakanproses kompilasi antara programaplikasi dan program RTOS dilakukansecara bersama sama sehingga hanyamenghasilkan satu kode binary.Perbedaan ini dapat diilustrasikanpada Gambar 1. Disamping itu padaRTOS tidak terlalu menitik beratkanadanya user interface seperti sistemoperasi pada umumnya.

4

Page 5: robot inverse kinematic

Gambar 1. Perbedaan alokasi kode programpada General Operating System dan Real Time

Operating System [3,h.26].Pada RTOS setiap task akan berjalan diatas sebuah program yang disebutkernel. Kernel akan mengatur pewaktuandan alokasi memory, maupun akses kehardware dari masing masing task.Sebuah sumber daya hardwaredimungkinkan dapat dimanfaatkan olehbeberapa task karena kernel akanmengaturkan penjadwalan pemakianhartdware tersebut untuk masing-masing task yang membutuhkan. Gambar 2adalah ilustrasi cara kerja kerneldalam sistem operasi.

Gambar 2. Sistem kerja dari kernel.

Pada sistem dengan RTOS didalamyamaka akan ada pembagian waktu kerjamasing masing task. Proses dapatberjalan dari satu task ke task laindilakukan dengan cara switching task.Untuk dapat mencapai tingkat realtimemaka dibutuhkan suatu mikrokontrolerdengan kecepatan eksekusi yangtinggi, selain itu RTOS juga borosmemory terutama untuk alokasian stacktiap-tiap task, oleh karena itu padaskripsi ini akan dipakai mikrokontrolerdengan arsitektur ARM seri LPC1766yang memiliki kecepatan eksekusiprogram yang tinggi yaitu 100 MHz,dan memory RAM 64 KB [4].

Klasifikasi RTOS

RTOS menurut S. Ramanarayanadiklasifikasikan dalam 3 tipe yaituHard Real Time RTOS, Firm Real Time RTOS dan

Soft Real Time RTOS [5] . Berikut adalahpenjelasan masing-masing tipe:

a. Hard real-time: kehilangantenggat waktu suatu tasksangat kecil, idealnya adalahnol, karena kemelesetan waktuyang kecil saja dapatmenyebabkan bencana yangparah, sebagai contoh sistemotomatisasi kendali mobil,sistem otomatisasi rudal, danroket.

b. Firm real-time: kehilangantenggat waktu menyebabkanberkurangnya mutu yang tidakdapat diterima sebagai contohsuara putus putus pada mp3player.

c. Soft real-time: tenggat waktuyang hilang dapat dikembalikan dan masih dapatditerima, sebagai contohterlambatnya menutup pintuotomatis garasi selamasetengah detik.

Disamping itu dalam papernya S.Ramanarayana juga menjelaskanbagaimana algoritma pemilihan tipeRTOS yang cocok untuk suatu projekembedded dengan berbagai macampertimbangan [5]. Referensi lainyajuga dapat dilihat di paper JasonMcDonald [6].

Beberapa fitur RTOS

Dalam desain sistem embedded denganRTOS sangat diperlukan pertimbanganantara fitur yang dimiliki, tetapitanpa mengabaikan prediksi maupunketepatan waktu. Secara dasar RTOSharus memiliki fitur sebagai berikut[7]:

a. Multitasking dan preemptibility

5

Page 6: robot inverse kinematic

Suatu RTOS harus dapat melakukanmultitasking dan preemptive untuk dapatmewujudkan tingkat realtime yangdikehendaki.Dalam penjadwalan, sebuah taskdengan prioritas tinggi harusdapat memutus jalannya task lainyang sedang berjalan dalam sistemdan mengalokasikan sumber dayakepada task yang memerlukannya.

b. Task priority

Prioritas menggambarkan suatutingkatan tugas yang membutuhkansumber daya lebih pada tasktersebut. Dengan penyesuaiantingkat prioritas task maka dapatdicapai suatu tingkat keberhasilansistem dalam mewujudkan tingkat kerealtime’an yang diinginkan. Untuktask yang critical maka perlu diberikan prioritas yang tinggi,sedang task task yang kurang pentingdapat diberikan prioritas yanglebih rendah. Dalam embeddedsistem penentuan prioritas sebuahtask biasanya dilakukan olehprogrammer karena programmerlahyang tahu manakah task yangpenting, dan yang kurang penting,walaupun juga bisa dibuatotomatis.

c. Mekanisme komunikasi inter taskyang kokoh dan handal

Untuk beberapa task, komunikasiyang tepat waktu dan untukmemastikan integritas yang dapatdipercaya maka mekanismekomunikasi yang handal mutlakdiperlukan.

d. Priority inheritance

Untuk menjalankan aplikasi dengansangat menekankan prioritas makasuatu RTOS harus memiliki cukup

level prioritas yang dibutuhkan,terutama saat penggunaan prioritasskeduling

e. Waktu Latencies yang kecil

Suatu RTOS perlu secara akuratmendefinisikan besarnya waktuyang diperlukan dalam sistem call,diantaranya: Task switching latency: waktu

yang diperlukan untuk melakukansave the context dari task yangsedang berjalan untuk melakukanswitching ke task lain. Sebisamungkin sangat kecil.

Interrupt latency: adalah waktuyang diperlukan antara intruksiterakhir kali sebelum interruptdatang sampai dengan intruksipertama kali dalam penangananinterupt dijalankan.

Interrupt dispatch latency. Adalahwaktu yang diperlukan antaraintruksi terakhir dalam interrupthandler dengan intruksi pertamadalam task berikutnya dalamjadwal task yang berjalan.

f. Manajemen kontrol memory

Untuk memastikan tanggapan darisebuah interrupt maka RTOS harusdapat menyediakan jalan supaya taskdapat menyimpan data secara aman.

Inverse kinematic

Ada dua bentuk perhitungan kinematikyaitu inverse kinematic dan forwardkinematic. Keduanya saling berlawananarah. Tujuan forward kinematic adalahuntuk mencari posisi akhir suatubenda bila diketahui posisi awal, danproses yang dilakukan, sedangkan.inverse kinematic bertujuan untuk mencariproses yang harus ditempuh supayamendapatkan posisi atau tujuan akhiryang diharapkan dengan posisi awal

6

Page 7: robot inverse kinematic

yang ditentukan. Gambar 3mengilustrasikan sebuah lengan robottiga axis.

Gambar 3. Model lengan dengan tigaderajad kebebasan.

Perhitungan forward kinematic membahastentang berapakah koordinat akhiryang dicapai bila sumbu A, B, dan Cmemiliki sudut ,,. Sedangkan inversekinematic pada Gambar 3 adalahperhitungan tentang berapakah sudutyang harus dibentuk pada tiap tiapporos lengan robot ( sumbu A, B, danN) untuk mendapatkan posisi akhirlengan berada pada koordinat X2,Y2, dan Z2.

Model satu lengan dengan tiga derajadkebebasan memiliki konfigurasi yangdapat digambarkan di Gambar 4a.

a

b

Gambar 4. Konfigurasi model lengan robotdengan tiga derajat kebebasan. Model

lengan tanpa offset(a), dan dengan offset(b) [8,h.16].

Robot memiliki tiga buah actuatormasing masing untuk penggerak padabody, siku, dan lengan. Gambaran diatas adalah model konfigurasi yangideal dan sulit dicapai, karena dalamkenyataan akan sulit mendapatkansebuah poros terletak tepat segarisdengan poros lain. Dalam kenyataanakan dijumpai adanya offset padakonfigurasi antar sambungan sepertiditunjukkan pada gambar 4b. Adanyaoffset ini akan mempengaruhi hasilperhitungan apabila aspek ini tidakikut dipertimbangkan dalam prosesperhitungannya.

Analisa matematis Inverse kinematic

7

Page 8: robot inverse kinematic

Gambar5. Pemodelan digambarkan dengandiagram Cartesian.

Lengan memiliki koordinat pusat dititik (Xs, Ys, Zs). Dalam hal inidianggap (0, 0, 0). Lengan harusmembentuk sudut pada body, bahu, dansiku sebesar supaya koordinatujung lengan berada pada titik (Xf,Yf, Zf). Lengan memiliki panjangoffset n, dan m, serta memilikipanjang lengan b dan a.

a. Mencari sudut pada ruas kaki

Apabila posisi yang diinginkan adalahx, y, z dengan nilai panjang dari a,b, n, m, diketahui maka besarnyasudut dapat dicari dengananalisa trigonometri sebagai berikut:

Gambar 6. Analisa pada bidang horizontal(a), dan pada bidangvertikal(b).

Dengan melihat gambar 5a dapat dicarinilai pada bidang horizontal denganpersamaan-persamaan pada di bawahini:

besar sudut atan (xf / yf)(1)

panjang r adalah

r = (xf2+yf2)xf / cosyf /sin

nilai sudut asin (m/r) (3)

sudut 900 – (

maka besar n+c = r cos (

c = r cos (n.(6)

Sudut adalah sudut yang yang harusdibentuk oleh motor pada body (join N)robot.

Sedangkan ada bidang vertikal, denganmelihat gambar 5b dapat dihitungnilai dari persamaan-persamaan dibawah ini:

besar sudut atan (zf / c) (7)

panjang d adalah

d = (zf2+c2)c coszf sin

Dengan memakai aturan cosinus makadapat dihitung besar sudut sebagai

acos [ ( b2 + d2 - a2 ) / ( 2bd ) ](9)

Sudut yang harus dibentuk sumbu padabahu (joint B) adalah

= 900 –(). (10)

Sedangkan sudut yang harus dibentuksumbu pada siku (joint A) adalah(dengan aturan cosinus)

8

Page 9: robot inverse kinematic

acos [ ( a2 + b2 - d2 ) / ( 2ab ) ](11)

b. Rotasi pada sumbu x

a

b

Gambar 7. Peletakanya robot pada diagramCartesian (a), salah satu kaki robot

diputar sebesar dengan sumbu rotasi x(b).

Apabila titik yang merupakankoordinat kaki (x1, y1, z1)dirotasikan sebesar dengan porosrotasi adalah garis (x, 0, 0) makaperhitungan koordinat yang baruadalah

= atan (z1/y1)(12)

r = (z12+y1

2)(13)

x’1 = x1

(14)

y’1 = r sin (

(z12+y1

2) sin (atan (z1/y1)

z’1 = r cos (

= (z12+y1

2) cos (atan (z1/y1)

Apabila nilai y, dan z dari porosrotasi tidak sama dengan 0,0 namunmemiliki nilai sebesar ys, zs maka

= atan ((z1-zs)/ (y1-ys))(17)

r = [(z1-zs)2+(y1-ys)2](18)

x’1 = x1(19)

y’1 = ys + r sin (

ys + [(z1-zs)2+(y1-ys)2] sin{atan [ (z1-zs)/ (y1-ys)]+

z’1 = zs + r cos (

zs + [(z1-zs)2+(y1-ys)2] cos{atan [(z1-zs)/ (y1-ys)+

c. Rotasi pada sumbu y

apabila titik yang merupakankoordinat kaki (x1, y1, z1)dirotasikan sebesar dengan porosrotasi rotasi adalah garis (xs, y,zs) maka dengan teknik yang sama padaperhitungan rotasi pada sumbu xperhitungan koordinat yang

x’1 = xs + ((x1-xs)2+(z1-zs)2) sin{ atan [(z1-zs)/(x1-xs)]+

9

Page 10: robot inverse kinematic

y'1 = y1(23)

z’1 = zs + ((x1-xs)2+(z1-zs)2) cos{ atan [(z1-zs)/(x1-xs)]+

d. Rotasi pada sumbu z

Apabila titik yang merupakankoordinat kaki (x1, y1, z1)dirotasikan sebesar dengan porosrotasi rotasi adalah garis (xs, ys,z)maka perhitungan koordinat yang baruadalah

x’1 xs + ((x1-xs)2+(y1-ys)2) sin{ atan [(y1-ys)/(x1-xs)]+

y’1 ys + ((x1-xs)2+(y1-ys)2) cos{ atan [(y1-ys)/(x1-xs)]+

z’1= z’1

(27)

e. Tranlasi lengan pada sumbu x,y, z

Gambar 8. Kaki digeser dengan sebesar(x, y, z)

Apabila titik yang merupakankoordinat kaki (x1, y1, z1)ditranlasikan sebesar (x, y, z)maka koordinat yang baru adalah

x’1 = x1 +x (28)

y’1 = y1 +y (29)

z’1 = z1 +z (30)

Perhitungan di atas merupakanperhitungan dasar, namun begitupemberian nilai (x1, y1, z1) tidakbisa sembarangan karena pergerakanlengan juga dibatasi oleh dayajangkau dari lengan (workspace), sertakemungkinan tabrakan dengan materiallain, sehingga perlu diberikanbatasan atau jalan keluar lain bilahal ini terjadi.

Locomotion

Pembuatan algoritma untuk locomotionbertujuan supaya robot berkaki dapatmenjaga kestabilan badannya saatmelangkah. Pada saat salah satu kakimelangkah maka tiga kaki lainya harusmenopang badan robot.Apabila titikpusat massa robot berada dalam luasansegitiga yang di bentuk oleh ke tigakaki penopang maka robot akan stabil,sedangkan luar itu maka robot akanterjatuh dapat dilihat pada gambar 9bdan 9c.

a

b

10

Page 11: robot inverse kinematic

c

Gambar 9. Kemungkinan konfigurasi kakisaat berjalan (a), Konfigurasi yang

stabil (b), konfigurasi yang labil (c)[2,h.10].

Dari gambar 12, polygon menggambarkanbodi robot , dengan lengandigambarkan sebagai garis yangmemiliki ujung lingkaran. Ujunglingkaran tertutup menggambarkan kakiyang menempel di lantai , dan terbukamenggambarkan kaki yang diangkat.Pusat massa robot digambarkan denganlingkaran di tengah polygon.

Apabila koordinat set poin masingmasing lengan dibagi menjadi lima(lima kondisi koordinat) dan padakondisi ini lengan bisa dalam kondisimenyentuh lantai ataupun diangkat(dua kondisi lengan) maka totalkemungkinan konfigurasi yang dapatdicapai adalah 54 x 24 = 10000konfigurasi (Böttcher). Namun tidaksemua konfigurasi itu stabil. Gambar12c menggambarkan salah satu kondisitersebut dimana pusat massa berada diluar luasan segitiga.

Salah satu cara yang dapat dilakukanuntuk mencari cara berjalan yangstabil adalah pertama tama denganmereduksi konfigurasi yang ada, yaitudengan mengeliminir konfigurasikonfigurasi yang tidak stabil (dapatdicari dengan testing pada semuakonfigurasi). Setelah itu carikonfigurasi yang mungkin dapat

dijalankan, kemudian rangkai menjadiurutan konfigurasi cara berjalan.Algoritma untuk mencari urutan inidapat dilihat pada paper C. Queiroz[9].

Namun disini dapat dilihat bahwacara ini kurang praktis (karena harusmelakukan testing pada semuakonfigurasi yang mungkin). Apabilapembagian set point semakin banyakmaka kemungkinan yang timbul jugaakan meningkat secara drastis,sehingga pengujian tiap konfigurasiakan sangat memakan waktu, danmerepotkan. Oleh karena itu padapenelitian ini mencoba mencari caralain untuk mencari algoritmalocomotion ini. Cara yang dipakai dapatdilihat di bagian realisasi algoritmalocomotion pada bab III.

3. Metode Pelaksanaan

Implementasi rangkaian mekanik

Robot memiliki empat buah kaki denganmasing masing memiliki tiga derajadkebebasan. Mekanik robot dipilih daribahan plastic akrilik karena ringan,kuat, dan mudah dibentuk.

11

Page 12: robot inverse kinematic

Gambar 10. Desain Mekanik. robot dilihatdari depan(a), robot dilihat dari atas(b)

Implementasi rangkaian elektronik

Secara elektronik robot terdiri dari12 motor DC servo sebagai actuatordengan masing masing kaki terdiridari 3 motor DC servo, sebuah ICmikrokontroler tipe ARM, sebuah portPS2, dan sebuah port UART sebagaiinterface ke dunia luar, sensorkemiringan sebagi feedback kestabilanposisi robot dan catu daya berupaswitching regulator untuk mencatu sistem.

Gambar 11. Desain blok sistem.

Implementasi Real Time Operating Sistem

RTOS yang dipakai adalah CoOs yangmemang di desain untuk mikrokontrolerARM cortex. ini dipilih karena fituryang lengkap diantaranya [10]: didesain untuk ARM Cortex-M series. bersifat bebas dan open source. ukuran sistem kernel dapat

diperkecil sampai 974Byte. algoritma penjadwalan task yang

mudah disesuaikan. mendukung preemptive priority and

round-robin. memiliki Interrupt latency 0. Semaphore, Mutex, Flag, Mailbox dan

Queue untuk komunikasi dansinkronisasi antar task maupunkernel.

memiliki pilihan deteksi Stackoverflow.

mendukung platforms ICCARM,ARMCC, GCC.

Penentuan prioritas task dilakukandengan mempertimbangkan tingkatkritikal dari tiap task. Prioritastertinggi diberikan untuk task serviceservo. Untuk dapat berkerja danberputar ke arah tertentu, motorservo perlu mendapatkan pulsa highminimal selebar 700 us dan maksimal2300 us tiap 20 ms. Apabila kondisiini tidak terpenuhi motor akan beradapada kondisi off, dan motor akanlemas sehingga robot akan roboh.Kodisi tersebut mutlak selalu terjagakeberlangsungannya. Alasan inilahyang menjadi dasar pemberianprioritas tertinggi untuk task servo,sedangkan task untuk locomotion,komunikasi, dan debug memilikiprioritas yang secara berurutansemakin kecil.

Algoritma inverse kinematic lengan.

Algoritma inverse kinematic dibuatsebagai suatu fungsi dengan orientasipada kwadran I dalam kerangkaCartesian. Fungsi ini dapat dipakaioleh ke empat lengan denganmengkonversi perhitungan dari kwadranlain (II,III, dan IV) ke kwadran Iterlebih dahulu. Berikut adalahpotongan program penghitungan sudutservo dengan inverse kinematic:

void angleCalculation(unsigned charnumLeg, signed int x, signed int y,signed int z){

double A,B,C,D,E;

/*dalam perhitungan semua sudut dalamradian*/

unsigned int a,b,c,d,n,m;double TMP1,TMP2;unsigned int tmp1,tmp2;

12

Page 13: robot inverse kinematic

signed int tmp3,tmp4;

a = leg[numLeg].lenganA;b = leg[numLeg].lenganB;m = leg[numLeg].offsetDepan;n = leg[numLeg].offsetSamping;

tmp1 = getRadius(x,y);TMP1 = atan2(x,y);TMP2 = asin((double)m/tmp1);C = M_PI/2 - (TMP1+TMP2); /* C adalah sudut servo body.*/

c = sqrt(tmp1*tmp1-m*m);d = getRadius(z,tmp2);E = atan2(tmp2,z);tmp3 = (int)a*a + b*b - d*d;tmp4 = (int)2*a*b;A = acos((double)tmp3/tmp4);/*A adalah sudut servo lengan*/

tmp3 = d*d +b*b - a*a;tmp4 = (int)2*d*b;D = acos((double)tmp3/tmp4);B = M_PI-( E + D );/*B adalah sudut servo bawah*/

leg[numLeg].sudutSiku=rad2deg(A); /*ubah radian ke

degree*/

leg[numLeg].sudutBody=rad2deg(C); /*ubah radian ke

degree*/

leg[numLeg].sudutBahu=rad2deg(B); /*ubah radian ke

degree*/

return;}

Realisasi algoritma locomotion.

gambar 12. workspace keempat lenganrobot.

Algoritma locomotion yang akan dipakaisecara garis besar sebagai berikut,robot pertama tama akan menentukanurutan pergerakan kaki disesuaikandengan arah hadap robot dan arahpergerakan robot (dalam kerangkaCartesian). Langkah berikutnya adalahmemberikan nilai koordinat set poinpada masing masing lengan denganmemperhitungkan besar dan arahperpindahan yang akan dilakukan. Darisini kemudian diperkirakan apakahposisi lengan masih berada padaluasan workspace atau tidak. Luasanworkspace bisa dilihat di gambar 12,sebagai luasan seperempat lingkaranyang diarsir. Hal ini dipakai untukmenentukan perlu tidaknya perubahankondisi lengan, apabila ternyatalengan berada diluar jangkauanworkspace, ganti posisi set poinlengan.

Point paling penting dari algoritmaini adalah robot akan melakukansimulasi terlebih dahulu untukmenguji kestabilan urutan sebelummemutuskan melakukan langkah yangdiharapkan. Pengujian kestabilandilakukan secara perhitungan

13

Page 14: robot inverse kinematic

matematis dengan cara seolah olahsalah satu kakinya diangkat. Robotkemudian akan mencari skenario urutanlangkah aman sampai kondisi yangdiharapkan tepenuhi. Apabila dalamsimulasi pertama ternyata gagalkarena syarat kestabilan tidakterpenuhi, robot akan mencarialternatif lain dengan cara mengubahurutan dan melakukan simulasi kembalisampai kondisi akhir yang diharapkanterpenuhi dan tetap dalam kondisistabil. Apabila hal ini tercapai,robot akan merealisasikan hasil akhirini dengan benar-benar melakukanlangkah sesuai dengan urutansimulasi. Proses simulasi dilakukansampai beberapa kali, dan apabilaternyata sampai batas akhir tidakdiperoleh penyelesaian, robot akanbergerak translasi untuk memindahkanpusat massa ke daerah lain yang lebihaman dan melakukan urutan diataskembali. Diagram alir penjelasan inidapat dilihat pada gambar 12 dangambar 13.

Gambar 13. diagram alir untuk geraktranslasi.

14

Page 15: robot inverse kinematic

Gambar 14. diagram alir untuk melakukanlangkah.

Penjelasan mengenai algoritmasimulasi dapat dilihat pada gambar15. Di sini robot akan melangkahkedepan dengan konfigurasi awalseperti gambar 15.a . Angka-angkapada lengan menunjukkan urutan jadwalapabila lengan tersebut dipindah,

sedangkan lengan yang benar benarakan melangkah menuju koordinat baruadalah lengan dengan urutan dua dantiga, maka lengan yang harus diangkatpertama adalah lengan dua , kemudianlengan tiga. Namun pada saat lengandua diangkat, robot dalam kondisitidak stabil (bisa dilihat di gambar15.a) , sehingga apabila ini tetapdilakukan, robot akan terjatuh. olehkarena itu robot akan mengkalkulasiskenario urutan pengangkatan inisehingga robot dapat berpindah tanpaterjatuh. apabila salah satu kakidiangkat kodisi robot tidak stabil( perhitungan hanya dilakukan dalamsimulasi tanpa benar benarmenggerakkkan lengan) maka robot akanmencari urutan dibawahnya (urutansatu) untuk diposisikan mendekatilengan tersebut( urutan dua) dengantujuan menjaga kestabilan saat lengantersebut diangkat. namun sebelummengangkat urutan satu robot jugaharus mempertimbangkan kondisikestabilan saat lengan ini di angkat.apabila ternyata labil, robot akanmelihat kaki ke empat untuk diproses.Namun pada gambar robot cukup stabilbila kaki satu diangkat (dilihat digambar 15.b), maka kaki satu akandiangkat (masih dalam simulasi) dandiletakkan mendekat ke kaki dua.dengan kondisi yang baru ini, robotakan stabil bila kaki dua diangkat(gambar 15.c), maka kaki dua akandiangkat (dalam simulasi) dandiletakkan ke posisi yang baru.

a b

15

Page 16: robot inverse kinematic

c d

e

Gambar15 . Urutan skenario gerakan kaki.

Secara sederhana apabila hanya lengantiga yang akan dipindah maka dapatdijelaskan sebagai berikut cekkestabilan lengan tiga, bila stabilangkat lengan ini, bila tidak stabil,dengan urutan ke bawah, cekkestabilan lengan dua dankestabilanya, lalu lengan satu,apabila lengan 1 ternyata stabildiangkat, posisikan lengan satumendekati lengan dua , kemudianposisikan lengan dua mendekati lengantiga, dan baru lengan tiga dapatdiangkat. namun bila dengan urutanini tidak mendapatkan kondisi stabil,ubah urutan ke atas dengan mengecekkondisi kestabilan lengan empat lalukondisi lengan satu. Proses inidilakukan dengan teknik recursifuntuk mengurangi kompleksitas yangmungkin ditimbulkan. algoritma inibisa dilihat pada flowchar recusifkestabilan (Gambar 16).

Gambar 16. Diagram alir untuk rekursitest kestabilan.

16

Page 17: robot inverse kinematic

4. Hasil dan pembahasan

Pengujian inverse kinematik.

Tujuan dari pengujian adalah untukmengetahui akurasi, dan konsistensi,dan tingkat kepresisian dari lenganrobot maupun perhitungan inversekinematic, Pengujian ini dilakukan denganmengaplikasikan robot untukmenggambar di atas kertas .Pola lingkaran dipilih untukpengujian ini.pola-pola ini terdiri dari lingkaranlingkaran dengan jari jari berturutturut dari 1 cm sampai 7 cm.

a

b

c

d

17

Page 18: robot inverse kinematic

Gambar 17. Hasil gambar pola lingkaran(a), hasil gambar pola lingkaran yangdigambar sebanyak 3 kali berturut turut(b), pengukuran jari jari lingkaran(c),robot sedang menggambar (d),

Dari gambar yang dihasilkan (Gambar17a) dapat dilihat bahwa guratan penamasih terlihat kasar, hal inidikarenakan tingkat akurasi motorservo yang memang jelek. Pada Gambar17b pola digambar sebanyak tiga kalitanpa mengubah posisi robot maupunkertas. dari sini terlihat adakemelesetan sedikit karena ketidakakuratas dari motor servo, namunterlihat bahwa gambar tetap konsistenbentuk maupun posisinya.Pada Gambar 17c terlihat jari jaripada gambar sesuai dengan yangdiharapkan, lingkaran terkecilmemiliki jari-jari 1cm dan terbesar 7cm.

Pengujian algoritma locomotion .

Pengujian locomotion dilakukan denganmengaplikasikan robot untuk berjalantranlasi maupun rotasi dengan jaraktranlasi, sudut rotasi dan urutanyang di acak. Tujuannya untkmengetahui apakah robot mampumengatur keseimbangan saat bergerakdengan sembarang kondisi. Untukmempermudah analisa maka dibuataplikasi debug di komputer untukmelihat konfigurasi maupun posisilengan lengan kaki relative terhadappusat massa robot. Robot secara realtime akan mengirimkan posisi masingmasing kaki, dan penjadwalan langkahmenggunakan komunikasi UART kepadaKomputer, dan aplikasi debug akanmenampilkanya dalam grafik Cartesianseperti terlihat pada gambar 18,sehingga dalam proses ini robot tidakperlu benar benar berjalan karenahasil dapat pemikiran locomotion robotdapat dilihat di layar monitor.

Gambar 18. Aplikasi debug untuklocomotion.

Dari pengujian secara real,robot dapat berjalan dengan tetapmenjaga kestabilannya dan dapatdisimpulkan bahwa algoritma locomotionyang telah dibangun berjalan denganbaik.

Kesimpulan

Dari alat yang telah dirancang dandirealisasikan, ada beberapa pokokkesimpulan yang dapat ditampilkandisini bahwa:1. Pemakaian RTOS mengurangi

kompleksitas pemrograman sistemembedded yang besar.

2. Dengan perhitungan kinematikarobot dapat bergerak dengan lebihhalus, presisi dan teratur.

3. Perhitungan kinematika jugamempermudah realisasi algoritmalocomotion.

4. Daftar pustaka

[1] Maria Isabel Ribeiro and PedroLima, “Kinematic models of mobile robot”,Instituto Superior Técnico (IST),Instituto de Sistemas e Robótica

18

Page 19: robot inverse kinematic

(ISR) Av.Rovisco Pais, 1 1049-001Lisboa PORTUGAL, 2002.

[2] Sven Böttcher, “Principles of robotlocomotion”, Seminar Human robotinteractionwww2.cs.siu.edu/~hexmoor/classes/CS404-S09/RobotLocomotion.pdf.

[3] P. Laplante, “Real-Time Systems Basic Concepts”, 2003.

[4] NXP Semiconductors, “UM10360 LPC17xx User manual Rev. 2”,19 August 2010.

[5] IJCSNS International Journal ofComputer Science and NetworkSecurity, VOL.6 No.6, June 2006Selection of RTOS for an Efficient Design ofEmbedded Systems S. RamanarayanaReddy.

[6] Jason McDonald, “selecting anembedded RTOS”, http//www.eg3.com.

[7] RENESAS, “R8C Family General RTOSConcepts”. APPLICATION NOTERES05B0008-0100/Rev.1.00 January2010. Renesas ElectronicsCorporationhttp://www.renesas.com.

[8] Mark W. Spong, Seth Hutchinson,and M. Vidyasagar, “Robot Dynamicsand Control Second Edition”, January 28,2004.

[9] C. Queiroz, N. Gonçalves, P.Menezes, A Study on Static Gaits for a FourLegged Robot, InternationalConference CONTROL'2000, 2000,Cambridge, UK.

[10] CooCox, ”CoOSUser's Guide Revision 1.”1August, 2009, www.coocox.org.

19