Anda di halaman 1dari 15

Karya Tulis Ilmiah

Inverse Kinematic dengan Real Time Operating System pada robot Quadruped

Lintang Setiawan, Darmawan Utomo, M.Eng.

UNIVERSITAS KRISTEN SATYA WACANA

2010/2011

1
Inverse Kinematic dengan Real Time Operating System pada robot Quadruped

Lintang Setiawan1, Darmawan Utomo, M.Eng1.

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

E-mail : batang_ilalang@yahoo.co.id

Abstrak

Pembuatan sebuah sistem robot melibatkan berbagai disiplin ilmu diantaranya Matematika, 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) dapat lebih dinamis bila dibanding robot beroda, namun analisanya lebih rumit
karena untuk mendapatkan gerak yang halus dan presisi diperlukan perhitungan inverse kinematic. Secara umum
inverse kimematic mempelajari parameter parameter dalam sambungan baik prismatic maupun rotational, yang
merupakan persamaan matematis yang tidak selalu linier. Semakin banyak derajad kebebasan sebuah lengan robot
pergerakan yang dapat dilakukan dapat semakin leluasa, namun perhitungan inverse kinematic juga akan bertambah
rumit.

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

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

1. Pendahuluan
kemungkinan pembagian kerja dalam pembuatan
1.Latar Belakang sistem.

a. Real Time Operating System b. Inverse Kinematik

Dalam desain sebuah sistem embedded ada Untuk menghasilkan suatu gerakan yang
banyak teknik yang dapat dipakai untuk penulisan bagus, presisi serta halus, dalam robotika perlu perlu
perangkat lunak baik dengan atau tanpa penggunaan menerapkan perhitungan kinematika pada penyusunan
kernel. Tanpa kernel yaitu jika sistem yang sedang perangkat lunaknya. Kinematik mempelajari
dikembangkan sederhana, ada kemungkinan teknik ini bagaimana suatu gerakan terjadi meliputi perhitungan-
menyediakan solusi yang paling sesuai . Di dalam perhitungan matematis secara geometri ruang tentang
kasus lebih rumit, ada kemungkinan bahwa hubungan antara sudut-sudut yang harus dibentuk oleh
menggunakan suatu kernel akan lebih baik. Dalam beberapa poros pada lengan robot dengan koordinat
perkembangannya, perancangan sebuah sistem yang diharapkan. Kebanyakan perhitungan ini
embedded yang besar dituntut dapat mengatasi hal-hal diaplikasikan untuk robot satu lengan (single arm)
seperti bagaimana mengimplementasikan pembagian pada robot-robot industri. Disini akan dicoba
waktu untuk beberapa proses secara, bagaimana diterapkan perhitungan inverse kinematic untuk robot
mengatasi event external maupun interrupt yang berlengan banyak (multi arm). Penambahan sendi pada
datangnya tak terduga, ataupun menyederhanakan suatu lengan meningkatkan kemampuan bermanuver
algoritma yang rumit. Real Time Operating Sistem robot ruang gerak yang dapat dijangkau, serta variasi
menawarkan beberapa keuntungan lain diantaranya gerakan yang dapat dibuat. Namun penambahan ini
tiap task berbentuk modul, kemudahan dalam juga menimbulkan beberapa kerugian karena harus
pengujian tiap task, code reuse, efisiensi proses, dan menambah servo motor sebagai penggerak sehingga

2
beaya lebih mahal, peningkatan konsumsi daya, berat dipakai untuk menjalankan banyak proses secara
robot, selain itu pengontrolan robot jadi lebih rumit simultan.
karena lebih banyak motor yang digerakkan dan
dikontrol dalam waktu yang bersamaan [1]. Perbedaan mendasar antara Real Time
Operating System dengan Operating System (OS) non
c. Locomotion real time terletak pada ketepatan waktu suatu dalam
menjalankan sebuah task. Saat menjalankan komputer,
Selain perlunya perhitungan inverse kinematic program paint, wordpad, dan hyperterminal dapat
dalam pembuatan robot bergerak (mobile) masih perlu dibuka pada waktu yang bersamaan. Windows, linux,
mempertimbangkan masalah locomotion. Pengertian dan mac OS merupakan General Operating System
locomotion adalah proses yang menyebabkan robot (GOS), yang mana ketepatan waktu bukan menjadi hal
aoutonomous bergerak [1]. Proses ini untuk robot yang utama, karena pemakai juga masih setia
berkaki ini adalah urutan gerakan kaki, atau bagaimana menunggu seandainya komputer sedang sibuk sehingga
suatu robot dapat mengatur posisi pusat massa robot loading program agak lama. Namun RTOS tidak
sehingga robot dapat berada dalam kondisi seimbang. mengizinkan hal tersebut. RTOS lebih menekankan
Mekanisme cara bergerak robot berkaki biasanya pada ketepatan waktu eksekusi tiap task.
terinspirasi dari sistem sistem hayati (hewan) yang Perbedaan lainya terletak pada alokasi kode program.
mana dapat berpindah dengan baik dalam areal yang Untuk sistem operasi pada umumnya, peletakkan
luas, dan terjal [2]. antara kode binary program OS dan aplikasi
dipisahkan, sedangkan pada RTOS peletakkan kode
binary program OS dan aplikasi tidak dapat
2. Rumusan Masalah dipisahkan, hal ini dikarenakan proses kompilasi antara
program aplikasi dan program RTOS dilakukan secara
Bagaimana mendesain robot berkaki empat bersama sama sehingga hanya menghasilkan satu kode
dengan mengimplementasikan inverse kinematik, binary. Perbedaan ini dapat diilustrasikan pada Gambar
locomotion dan real time operating system. 1. Disamping itu pada RTOS tidak terlalu menitik
beratkan adanya user interface seperti sistem operasi
3. Tujuan dan Manfaat pada umumnya.

Dengan adanya penelitian ini diharapkan


dapat memberikan manfaat sebagai berikut:
1. Mendapatkan perhitungan kinematis
untuk lengan robot dengan tiga derajad
kebebasan, serta memperkenalkan
perhitungan kinematis untuk robot multi
arm.
2. Mencoba mencari algoritma locomotion
yang lebih efisien untuk robot berkaki
empat.
3. mengurangi kompleksitas sistem
embedded dengan pemakaian RTOS.

2. Landasan teori
Konsep Real Time Operating Sistem

Untuk dapat melakukan pengontrolan robot


dengan baik dibutuhkan suatu kontrol sistem yang real
time, misalkan pengolahan data sesor tidak terlambat,
pengolahan data untuk melakukan pengontrolan ke
actuator juga sebisa mungkin cepat, dapat menangani
datangnya event yang tidak terduga waktunya, . Salah
satu cara yang dapat di lakukan untuk mengatasi hal
tersebut adalah dengan pemakaian Real Time
Operating System (RTOS). Pemakaian Real Time
Operating System memungkinkan satu prosesor

3
Gambar 1. Perbedaan alokasi kode program pada menutup pintu otomatis garasi selama
General Operating System dan Real Time Operating setengah detik.
System [3,h.26].
Pada RTOS setiap task akan berjalan di atas sebuah Disamping itu dalam papernya S. Ramanarayana juga
program yang disebut kernel. Kernel akan mengatur menjelaskan bagaimana algoritma pemilihan tipe
pewaktuan dan alokasi memory, maupun akses ke RTOS yang cocok untuk suatu projek embedded
hardware dari masing masing task. Sebuah sumber dengan berbagai macam pertimbangan [5]. Referensi
daya hardware dimungkinkan dapat dimanfaatkan oleh lainya juga dapat dilihat di paper Jason McDonald [6].
beberapa task karena kernel akan mengaturkan
penjadwalan pemakian hartdware tersebut untuk Beberapa fitur RTOS
masing-masing task yang membutuhkan. Gambar 2
adalah ilustrasi cara kerja kernel dalam sistem operasi. Dalam desain sistem embedded dengan RTOS sangat
diperlukan pertimbangan antara fitur yang dimiliki,
ta s k 0 ta s k 1 ta s k 2 ta s k 3 tetapi tanpa mengabaikan prediksi maupun ketepatan
waktu. Secara dasar RTOS harus memiliki fitur sebagai
berikut [7]:
k e rn e l
a. Multitasking dan preemptibility

H A RD W A R E Suatu RTOS harus dapat melakukan multitasking


dan preemptive untuk dapat mewujudkan tingkat
realtime yang dikehendaki.
Gambar 2. Sistem kerja dari kernel. Dalam penjadwalan, sebuah task dengan prioritas
tinggi harus dapat memutus jalannya task lain
Pada sistem dengan RTOS didalamya maka akan ada yang sedang berjalan dalam sistem dan
pembagian waktu kerja masing masing task. Proses mengalokasikan sumber daya kepada task yang
dapat berjalan dari satu task ke task lain dilakukan memerlukannya.
dengan cara switching task. Untuk dapat mencapai
tingkat realtime maka dibutuhkan suatu b. Task priority
mikrokontroler dengan kecepatan eksekusi yang tinggi,
selain itu RTOS juga boros memory terutama untuk Prioritas menggambarkan suatu tingkatan tugas
alokasian stack tiap-tiap task, oleh karena itu pada yang membutuhkan sumber daya lebih pada task
skripsi ini akan dipakai mikrokontroler dengan tersebut. Dengan penyesuaian tingkat prioritas
arsitektur ARM seri LPC1766 yang memiliki task maka dapat dicapai suatu tingkat keberhasilan
kecepatan eksekusi program yang tinggi yaitu 100 sistem dalam mewujudkan tingkat ke realtime’an
MHz, dan memory RAM 64 KB [4]. yang diinginkan. Untuk task yang critical maka
perlu di berikan prioritas yang tinggi, sedang task
Klasifikasi RTOS task yang kurang penting dapat diberikan prioritas
yang lebih rendah. Dalam embedded sistem
RTOS menurut S. Ramanarayana diklasifikasikan penentuan prioritas sebuah task biasanya
dalam 3 tipe yaitu Hard Real Time RTOS, Firm Real dilakukan oleh programmer karena programmerlah
Time RTOS dan Soft Real Time RTOS [5] . Berikut yang tahu manakah task yang penting, dan yang
adalah penjelasan masing-masing tipe: kurang penting, walaupun juga bisa dibuat
otomatis.
a. Hard real-time: kehilangan tenggat waktu
suatu task sangat kecil, idealnya adalah nol, c. Mekanisme komunikasi inter task yang kokoh
karena kemelesetan waktu yang kecil saja dan handal
dapat menyebabkan bencana yang parah,
sebagai contoh sistem otomatisasi kendali Untuk beberapa task, komunikasi yang tepat waktu
mobil, sistem otomatisasi rudal, dan roket. dan untuk memastikan integritas yang dapat
b. Firm real-time: kehilangan tenggat waktu dipercaya maka mekanisme komunikasi yang
menyebabkan berkurangnya mutu yang handal mutlak diperlukan.
tidak dapat diterima sebagai contoh suara
putus putus pada mp3 player. d. Priority inheritance
c. Soft real-time: tenggat waktu yang hilang
dapat di kembalikan dan masih dapat Untuk menjalankan aplikasi dengan sangat
diterima, sebagai contoh terlambatnya menekankan prioritas maka suatu RTOS harus

4
memiliki cukup level prioritas yang dibutuhkan, Perhitungan forward kinematic membahas tentang
terutama saat penggunaan prioritas skeduling berapakah koordinat akhir yang dicapai bila sumbu A,
B, dan C memiliki sudut ,,. Sedangkan inverse
e. Waktu Latencies yang kecil kinematic pada Gambar 3 adalah perhitungan tentang
berapakah sudut yang harus dibentuk pada tiap tiap
Suatu RTOS perlu secara akurat mendefinisikan poros lengan robot ( sumbu A, B, dan N) untuk
besarnya waktu yang diperlukan dalam sistem mendapatkan posisi akhir lengan berada pada
call, diantaranya: koordinat X2, Y2, dan Z2.
 Task switching latency: waktu yang
diperlukan untuk melakukan save the context Model satu lengan dengan tiga derajad kebebasan
dari task yang sedang berjalan untuk memiliki konfigurasi yang dapat digambarkan di
melakukan switching ke task lain. Sebisa Gambar 4a.
mungkin sangat kecil.
 Interrupt latency: adalah waktu yang
diperlukan antara intruksi terakhir kali
sebelum interrupt datang sampai dengan
intruksi pertama kali dalam penanganan
interupt dijalankan.
 Interrupt dispatch latency. Adalah waktu yang
diperlukan antara intruksi terakhir dalam
interrupt handler dengan intruksi pertama
dalam task berikutnya dalam jadwal task yang
berjalan.
a
f. Manajemen kontrol memory

Untuk memastikan tanggapan dari sebuah interrupt


maka RTOS harus dapat menyediakan jalan
supaya task dapat menyimpan data secara aman.

Inverse kinematic

Ada dua bentuk perhitungan kinematik yaitu inverse


kinematic dan forward kinematic. Keduanya saling
berlawanan arah. Tujuan forward kinematic adalah
untuk mencari posisi akhir suatu benda bila diketahui
posisi awal, dan proses yang dilakukan, sedangkan.
inverse kinematic bertujuan untuk mencari proses yang
harus ditempuh supaya mendapatkan posisi atau tujuan b
akhir yang diharapkan dengan posisi awal yang
Gambar 4. Konfigurasi model lengan robot dengan tiga
ditentukan. Gambar 3 mengilustrasikan sebuah lengan derajat kebebasan. Model lengan tanpa offset(a), dan
robot tiga axis. dengan offset (b) [8,h.16].

Robot memiliki tiga buah actuator masing masing


untuk penggerak pada body, siku, dan lengan.
Gambaran di atas adalah model konfigurasi yang ideal
dan sulit dicapai, karena dalam kenyataan akan sulit
mendapatkan sebuah poros terletak tepat segaris
dengan poros lain. Dalam kenyataan akan dijumpai
adanya offset pada konfigurasi antar sambungan seperti
ditunjukkan pada gambar 4b. Adanya offset ini akan
mempengaruhi hasil perhitungan apabila aspek ini
tidak ikut dipertimbangkan dalam proses
perhitungannya.

Analisa matematis Inverse kinematic


Gambar 3. Model lengan dengan tiga derajad kebebasan.

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

Dengan melihat gambar 5a dapat dicari nilai pada


bidang horizontal dengan persamaan-persamaan pada
di bawah ini:

besar sudut atan (xf / yf) (1)

panjang r adalah

r = (xf2+yf2)xf / cosyf / sin 

nilai sudut asin (m/r) (3)

Gambar5. Pemodelan digambarkan dengan diagram sudut 900 – ( 


Cartesian.
maka besar n+c = r cos ( 
Lengan memiliki koordinat pusat di titik (Xs, Ys, Zs).
Dalam hal ini dianggap (0, 0, 0). Lengan harus c = r cos (n. (6)
membentuk sudut pada body, bahu, dan siku sebesar
supaya koordinat ujung lengan berada pada Sudut  adalah sudut yang yang harus dibentuk oleh
titik (Xf, Yf, Zf). Lengan memiliki panjang offset n, motor pada body (join N) robot.
dan m, serta memiliki panjang lengan b dan a.
Sedangkan ada bidang vertikal, dengan melihat gambar
a. Mencari sudut pada ruas kaki 5b dapat dihitung nilai dari persamaan-persamaan di
bawah ini:
Apabila posisi yang diinginkan adalah x, y, z dengan
nilai panjang dari a, b, n, m, diketahui maka besar sudut atan (zf / c) (7)
besarnya sudut dapat dicari dengan analisa
panjang d adalah
trigonometri sebagai berikut:
d = (zf2+c2)c coszf sin

Dengan memakai aturan cosinus maka dapat dihitung


besar sudut sebagai

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

Sudut yang harus dibentuk sumbu pada bahu (joint B)


adalah

 = 900 –(). (10)



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

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

b. Rotasi pada sumbu x

6
 = 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-


a
ys)+

c. Rotasi pada sumbu y

apabila titik yang merupakan koordinat kaki (x1, y1,


z1) dirotasikan sebesar dengan poros rotasi rotasi
adalah garis (xs, y, zs) maka dengan teknik yang sama
pada perhitungan rotasi pada sumbu x perhitungan
koordinat yang

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


+ 

y'1 = y1 (23)

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


b xs)]+ 
Gambar 7. Peletakanya robot pada diagram Cartesian
d. Rotasi pada sumbu z
(a), salah satu kaki robot diputar sebesar dengan
sumbu rotasi x (b).
Apabila titik yang merupakan koordinat kaki (x1, y1,
z1) dirotasikan sebesar dengan poros rotasi rotasi
adalah garis (xs, ys,z) maka perhitungan koordinat
Apabila titik yang merupakan koordinat kaki yang baru adalah
(x1, y1, z1) dirotasikan sebesar dengan poros rotasi
adalah garis (x, 0, 0) maka perhitungan koordinat yang x’1 xs + ((x1-xs)2+(y1-ys)2) sin { atan [(y1-ys)/(x1-
baru adalah xs)]+ 

 = atan (z1/y1) (12) y’1  ys + ((x1-xs)2+(y1-ys)2) cos { atan [(y1-ys)/(x1-


xs)]+ 
r = (z12+y12) (13)
z’1= z’1 (27)
x’1 = x1 (14)
e. Tranlasi lengan pada sumbu x, y, z
y’1 = r sin (

(z12+y12) sin (atan (z1/y1) 

z’1 = r cos (

= (z12+y12) cos (atan (z1/y1) 

Apabila nilai y, dan z dari poros rotasi tidak sama


dengan 0,0 namun memiliki nilai sebesar ys, zs maka

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

Apabila titik yang merupakan koordinat 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 merupakan perhitungan


dasar, namun begitu pemberian nilai (x1, y1, z1) tidak c
bisa sembarangan karena pergerakan lengan juga Gambar 9. Kemungkinan konfigurasi kaki saat berjalan
dibatasi oleh daya jangkau dari lengan (workspace), (a), Konfigurasi yang stabil (b), konfigurasi yang labil (c)
serta kemungkinan tabrakan dengan material lain, [2,h.10].
sehingga perlu diberikan batasan atau jalan keluar lain
bila hal ini terjadi. Dari gambar 12, polygon menggambarkan bodi robot ,
dengan lengan digambarkan sebagai garis yang
Locomotion memiliki ujung lingkaran. Ujung lingkaran tertutup
menggambarkan kaki yang menempel di lantai , dan
Pembuatan algoritma untuk locomotion bertujuan terbuka menggambarkan kaki yang diangkat. Pusat
supaya robot berkaki dapat menjaga kestabilan massa robot digambarkan dengan lingkaran di tengah
badannya saat melangkah. Pada saat salah satu kaki polygon.
melangkah maka tiga kaki lainya harus menopang
badan robot.Apabila titik pusat massa robot berada Apabila koordinat set poin masing masing lengan
dalam luasan segitiga yang di bentuk oleh ke tiga kaki dibagi menjadi lima (lima kondisi koordinat) dan pada
penopang maka robot akan stabil, sedangkan luar itu kondisi ini lengan bisa dalam kondisi menyentuh lantai
maka robot akan terjatuh dapat dilihat pada gambar 9b ataupun diangkat (dua kondisi lengan) maka total
dan 9c. kemungkinan konfigurasi yang dapat dicapai adalah 5 4
x 24 = 10000 konfigurasi (Böttcher). Namun tidak
semua konfigurasi itu stabil. Gambar 12c
menggambarkan salah satu kondisi tersebut dimana
pusat massa berada di luar luasan segitiga.

Salah satu cara yang dapat dilakukan untuk mencari


cara berjalan yang stabil adalah pertama tama dengan
mereduksi konfigurasi yang ada, yaitu dengan
mengeliminir konfigurasi konfigurasi yang tidak stabil
(dapat dicari dengan testing pada semua konfigurasi).
Setelah itu cari konfigurasi yang mungkin dapat
dijalankan, kemudian rangkai menjadi urutan
a konfigurasi cara berjalan. Algoritma untuk mencari
urutan ini dapat dilihat pada paper C. Queiroz [9].

8
Namun disini dapat dilihat bahwa cara ini kurang Motor
Servo
Motor
Servo
Motor
Servo
Motor
Servo
praktis (karena harus melakukan testing pada semua 1 2 3 12
konfigurasi yang mungkin). Apabila pembagian set
point semakin banyak maka kemungkinan yang timbul
juga akan meningkat secara drastis, sehingga pengujian
CATU
tiap konfigurasi akan sangat memakan waktu, dan DAYA MICROCONTROLLER UART

merepotkan. Oleh karena itu pada penelitian ini


mencoba mencari cara lain untuk mencari algoritma
locomotion ini. Cara yang dipakai dapat dilihat di
bagian realisasi algoritma locomotion pada bab III. sensor PS2
kemiringan

3. Metode Pelaksanaan
Gambar 11. Desain blok sistem.
Implementasi rangkaian mekanik

Robot memiliki empat buah kaki dengan masing Implementasi Real Time Operating Sistem
masing memiliki tiga derajad kebebasan. Mekanik
robot dipilih dari bahan plastic akrilik karena ringan, RTOS yang dipakai adalah CoOs yang memang di
kuat, dan mudah dibentuk. desain untuk mikrokontroler ARM cortex. ini dipilih
karena fitur yang 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 dan sinkronisasi antar task
maupun kernel.
 memiliki pilihan deteksi Stack overflow.
 mendukung platforms ICCARM, ARMCC, GCC.

Penentuan prioritas task dilakukan dengan


mempertimbangkan tingkat kritikal dari tiap task.
Prioritas tertinggi diberikan untuk task service servo.
Untuk dapat berkerja dan berputar ke arah tertentu,
Gambar 10. Desain Mekanik. robot dilihat dari depan(a), motor servo perlu mendapatkan pulsa high minimal
robot dilihat dari atas(b) selebar 700 us dan maksimal 2300 us tiap 20 ms.
Apabila kondisi ini tidak terpenuhi motor akan berada
Implementasi rangkaian elektronik
pada kondisi off, dan motor akan lemas sehingga robot
akan roboh. Kodisi tersebut mutlak selalu terjaga
Secara elektronik robot terdiri dari 12 motor DC servo
keberlangsungannya. Alasan inilah yang menjadi dasar
sebagai actuator dengan masing masing kaki terdiri
pemberian prioritas tertinggi untuk task servo,
dari 3 motor DC servo, sebuah IC mikrokontroler tipe
sedangkan task untuk locomotion, komunikasi, dan
ARM, sebuah port PS2, dan sebuah port UART
debug memiliki prioritas yang secara berurutan
sebagai interface ke dunia luar, sensor kemiringan
semakin kecil.
sebagi feedback kestabilan posisi robot dan catu daya
berupa switching regulator untuk mencatu sistem.
Algoritma inverse kinematic lengan.

Algoritma inverse kinematic dibuat sebagai suatu


fungsi dengan orientasi pada kwadran I dalam
kerangka Cartesian. Fungsi ini dapat dipakai oleh ke
empat lengan dengan mengkonversi perhitungan dari
kwadran lain (II,III, dan IV) ke kwadran I terlebih

9
dahulu. Berikut adalah potongan program
penghitungan sudut servo dengan inverse kinematic:

void angleCalculation(unsigned char numLeg,


signed int x, signed int y, signed int z)
{
double A,B,C,D,E;

/*dalam perhitungan semua sudut dalam


radian*/
unsigned int a,b,c,d,n,m;
double TMP1,TMP2;
unsigned int tmp1,tmp2;
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); gambar 12. workspace keempat lengan robot.
TMP2 = asin((double)m/tmp1);
C = M_PI/2 - (TMP1+TMP2); Algoritma locomotion yang akan dipakai secara garis
/* C adalah sudut servo body.*/ besar sebagai berikut, robot pertama tama akan
menentukan urutan pergerakan kaki disesuaikan
c = sqrt(tmp1*tmp1-m*m); dengan arah hadap robot dan arah pergerakan robot
d = getRadius(z,tmp2); (dalam kerangka Cartesian). Langkah berikutnya
E = atan2(tmp2,z); adalah memberikan nilai koordinat set poin pada
tmp3 = (int)a*a + b*b - d*d; masing masing lengan dengan memperhitungkan besar
tmp4 = (int)2*a*b; dan arah perpindahan yang akan dilakukan. Dari sini
A = acos((double)tmp3/tmp4);
kemudian diperkirakan apakah posisi lengan masih
/*A adalah sudut servo lengan*/
berada pada luasan workspace atau tidak. Luasan
workspace bisa dilihat di gambar 12, sebagai luasan
tmp3 = d*d +b*b - a*a;
tmp4 = (int)2*d*b; seperempat lingkaran yang diarsir. Hal ini dipakai
D = acos((double)tmp3/tmp4); untuk menentukan perlu tidaknya perubahan kondisi
B = M_PI-( E + D ); lengan, apabila ternyata lengan berada diluar
/*B adalah sudut servo bawah*/ jangkauan workspace, ganti posisi set poin lengan.

leg[numLeg].sudutSiku =rad2deg(A); Point paling penting dari algoritma ini adalah robot
/*ubah radian ke degree*/ akan melakukan simulasi terlebih dahulu untuk
menguji kestabilan urutan sebelum memutuskan
leg[numLeg].sudutBody melakukan langkah yang diharapkan. Pengujian
=rad2deg(C); /*ubah radian ke kestabilan dilakukan secara perhitungan matematis
degree*/
dengan cara seolah olah salah satu kakinya diangkat.
leg[numLeg].sudutBahu Robot kemudian akan mencari skenario urutan langkah
=rad2deg(B); /*ubah radian ke aman sampai kondisi yang diharapkan tepenuhi.
degree*/ Apabila dalam simulasi pertama ternyata gagal karena
syarat kestabilan tidak terpenuhi, robot akan mencari
return; alternatif lain dengan cara mengubah urutan dan
} melakukan simulasi kembali sampai kondisi akhir yang
diharapkan terpenuhi dan tetap dalam kondisi stabil.
Apabila hal ini tercapai, robot akan merealisasikan
hasil akhir ini dengan benar-benar melakukan langkah
Realisasi algoritma locomotion. sesuai dengan urutan simulasi. Proses simulasi
dilakukan sampai beberapa kali, dan apabila ternyata
sampai batas akhir tidak diperoleh penyelesaian, robot
akan bergerak translasi untuk memindahkan pusat
massa ke daerah lain yang lebih aman dan melakukan

10
urutan diatas kembali. Diagram alir penjelasan ini
dapat dilihat pada gambar 12 dan gambar 13.

Gambar 14. diagram alir untuk melakukan langkah.

Gambar 13. diagram alir untuk gerak translasi.


Penjelasan mengenai algoritma simulasi dapat dilihat
pada gambar 15. Di sini robot akan melangkah
kedepan dengan konfigurasi awal seperti gambar 15.a .
Angka-angka pada lengan menunjukkan urutan jadwal
apabila lengan tersebut dipindah, sedangkan lengan
yang benar benar akan melangkah menuju koordinat
baru adalah lengan dengan urutan dua dan tiga, maka
lengan yang harus diangkat pertama adalah lengan
dua , kemudian lengan tiga. Namun pada saat lengan
dua diangkat, robot dalam kondisi tidak stabil (bisa

11
dilihat di gambar 15.a) , sehingga apabila ini tetap Gambar15 . Urutan skenario gerakan kaki.
dilakukan, robot akan terjatuh. oleh karena itu robot
akan mengkalkulasi skenario urutan pengangkatan ini Secara sederhana apabila hanya lengan tiga yang akan
sehingga robot dapat berpindah tanpa terjatuh. apabila dipindah maka dapat dijelaskan sebagai berikut cek
salah satu kaki diangkat kodisi robot tidak stabil kestabilan lengan tiga, bila stabil angkat lengan ini, bila
( perhitungan hanya dilakukan dalam simulasi tanpa tidak stabil, dengan urutan ke bawah, cek kestabilan
benar benar menggerakkkan lengan) maka robot akan lengan dua dan kestabilanya, lalu lengan satu, apabila
mencari urutan dibawahnya (urutan satu) untuk lengan 1 ternyata stabil diangkat, posisikan lengan satu
diposisikan mendekati lengan tersebut( urutan dua) mendekati lengan dua , kemudian posisikan lengan dua
dengan tujuan menjaga kestabilan saat lengan tersebut mendekati lengan tiga, dan baru lengan tiga dapat
diangkat. namun sebelum mengangkat urutan satu diangkat. namun bila dengan urutan ini tidak
robot juga harus mempertimbangkan kondisi kestabilan mendapatkan kondisi stabil, ubah urutan ke atas
saat lengan ini di angkat. apabila ternyata labil, robot dengan mengecek kondisi kestabilan lengan empat lalu
akan melihat kaki ke empat untuk diproses. Namun kondisi lengan satu. Proses ini dilakukan dengan teknik
pada gambar robot cukup stabil bila kaki satu diangkat recursif untuk mengurangi kompleksitas yang mungkin
(dilihat di gambar 15.b), maka kaki satu akan diangkat ditimbulkan. algoritma ini bisa dilihat pada flowchar
(masih dalam simulasi) dan diletakkan mendekat ke recusif kestabilan (Gambar 16).
kaki dua. dengan kondisi yang baru ini, robot akan
stabil bila kaki dua diangkat (gambar 15.c), maka kaki
dua akan diangkat (dalam simulasi) dan diletakkan ke
posisi yang baru.

a b

c d

12
4. Hasil dan pembahasan
Pengujian inverse kinematik.

Tujuan dari pengujian adalah untuk mengetahui


akurasi, dan konsistensi, dan tingkat kepresisian dari
lengan robot maupun perhitungan inverse kinematic,
Pengujian ini dilakukan dengan mengaplikasikan robot
untuk menggambar di atas kertas .
Pola lingkaran dipilih untuk pengujian ini.
pola-pola ini terdiri dari lingkaran lingkaran dengan
jari jari berturut turut dari 1 cm sampai 7 cm.

Gambar 16. Diagram alir untuk rekursi test kestabilan.

13
sembarang kondisi. Untuk mempermudah analisa maka
dibuat aplikasi debug di komputer untuk melihat
konfigurasi maupun posisi lengan lengan kaki relative
terhadap pusat massa robot. Robot secara real time
akan mengirimkan posisi masing masing kaki, dan
penjadwalan langkah menggunakan komunikasi UART
kepada Komputer, dan aplikasi debug akan
menampilkanya dalam grafik Cartesian seperti terlihat
pada gambar 18, sehingga dalam proses ini robot tidak
perlu benar benar berjalan karena hasil dapat pemikiran
locomotion robot dapat dilihat di layar monitor.

Gambar 18. Aplikasi debug untuk locomotion.

Dari pengujian secara real, robot dapat


berjalan dengan tetap menjaga kestabilannya dan dapat
d disimpulkan bahwa algoritma locomotion yang telah
dibangun berjalan dengan baik.
Gambar 17. Hasil gambar pola lingkaran (a), hasil
gambar pola lingkaran yang digambar sebanyak 3 kali
berturut turut (b), pengukuran jari jari lingkaran(c),
robot sedang menggambar (d), Kesimpulan

Dari gambar yang dihasilkan (Gambar 17a) dapat Dari alat yang telah dirancang dan direalisasikan, ada
dilihat bahwa guratan pena masih terlihat kasar, hal ini beberapa pokok kesimpulan yang dapat ditampilkan
dikarenakan tingkat akurasi motor servo yang memang disini bahwa:
jelek. Pada Gambar 17b pola digambar sebanyak tiga 1. Pemakaian RTOS mengurangi kompleksitas
kali tanpa mengubah posisi robot maupun kertas. dari pemrograman sistem embedded yang besar.
sini terlihat ada kemelesetan sedikit karena ketidak 2. Dengan perhitungan kinematika robot dapat
akuratas dari motor servo, namun terlihat bahwa bergerak dengan lebih halus, presisi dan teratur.
gambar tetap konsisten bentuk maupun posisinya. 3. Perhitungan kinematika juga mempermudah
Pada Gambar 17c terlihat jari jari pada gambar sesuai realisasi algoritma locomotion.
dengan yang diharapkan, lingkaran terkecil memiliki
jari-jari 1cm dan terbesar 7 cm.
4. Daftar pustaka
Pengujian algoritma locomotion .
[1] Maria Isabel Ribeiro and Pedro Lima, “Kinematic
Pengujian locomotion dilakukan dengan models of mobile robot”, Instituto Superior
mengaplikasikan robot untuk berjalan tranlasi maupun Técnico (IST), Instituto de Sistemas e Robótica
rotasi dengan jarak tranlasi, sudut rotasi dan urutan (ISR) Av.Rovisco Pais, 1 1049-001 Lisboa
yang di acak. Tujuannya untk mengetahui apakah robot PORTUGAL, 2002.
mampu mengatur keseimbangan saat bergerak dengan

14
[2] Sven Böttcher, “Principles of robot locomotion”,
Seminar Human robot interaction
www2.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 of Computer Science


and Network Security, VOL.6 No.6, June 2006
Selection of RTOS for an Efficient Design of
Embedded Systems S. Ramanarayana Reddy.

[6] Jason McDonald, “selecting an embedded RTOS”,


http//www.eg3.com.

[7] RENESAS, “R8C Family General RTOS


Concepts”. APPLICATION NOTE RES05B0008-
0100/Rev.1.00 January 2010. Renesas Electronics
Corporation http://www.renesas.com.

[8] Mark W. Spong, Seth Hutchinson, and M.


Vidyasagar, “Robot Dynamics and Control Second
Edition”, January 28, 2004.

[9] C. Queiroz, N. Gonçalves, P. Menezes, A Study on


Static Gaits for a Four Legged Robot,
International Conference CONTROL'2000, 2000,
Cambridge, UK.

[10] CooCox, ”CoOSUser's Guide Revision 1.”1


August, 2009, www.coocox.org.

15

Anda mungkin juga menyukai