Inverse Kinematic dengan Real Time Operating System pada robot Quadruped
2010/2011
1
Inverse Kinematic dengan Real Time Operating System pada robot Quadruped
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.
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.
2. Landasan teori
Konsep Real Time Operating Sistem
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
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
Inverse kinematic
5
Gambar 6. Analisa pada bidang horizontal (a), dan pada
bidang vertikal(b).
panjang r adalah
6
= atan ((z1-zs)/ (y1-ys)) (17)
r = [(z1-zs)2+(y1-ys)2] (18)
x’1 = x1 (19)
y'1 = y1 (23)
7
b
Gambar 8. Kaki digeser dengan sebesar (x, y, z)
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
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.
9
dahulu. Berikut adalah potongan program
penghitungan sudut servo dengan inverse kinematic:
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.
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.
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.
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.
15