satu persatu. Banyaknya kombinasi tersebut memicu kebutuhan untuk
mencari cara pengaturan gerakan motor yang lebih efektif.
Masalah yang sering dihadapi dalam mengembangkan robot
humanoid adalah hilangnya keseimbangan robot. Berbeda dengan
manusia yang bisa menyesuaikan titik berat pada gerakan-gerakan
yang sulit, robot biasanya tidak mampu beradaptasi. Hal ini akan
ditanggulangi dengan menerapkan dan mengembangkan algoritma
yang tepat sehingga robot dapat menyeimbangkan diri untuk
melakukan berbagai gerakan yang sederhana maupun rumit.
Dalam pengimplementasian sistem peniru gerakan ini, berbagai piranti
baik piranti keras maupun piranti lunak digunakan. Pada subbab-
subbab berikutnya, akan dijelaskan mengenai piranti-piranti tersebut.
4.3.1 Microsoft Kinect
Microsoft Kinect merupakan sensor yang digunakan untuk menangkap
motion gerakan tubuh menggunakan teknologi alternatif untuk
memudahkan proses penangkapan berbagai kombinasi gerakan yang
dilakukan. Teknologi tersebut adalah Kinect dari Microsoft. Kinect
adalah kit yang diciptakan oleh Microsoft sebagai alat tambahan untuk
game console XBOX 360. Kinect sendiri dapat dikonfigurasikan
sedemikian rupa sehingga memungkinkan robot humanoid melakukan
imitasi gerakan. Hal ini, dapat dilakukan lebih bervariasi dan lebih
sempurna menyerupai gerakan manusia. Selain itu, Kinect juga dapat
mengekstraksi gerakan pada tubuh manusia yang dikirimkan dalam
bentuk numerik di setiap posisi sendi yang ada. Data numerik tersebut
diproses menjadi masukan sistem kecerdasan yang menggerakan
motor pada robot sehingga proses penciptaan gerakan akan lebih
mudah.
Kinect adalah sebuah perangkat tambahan untuk game console
Microsoft Xbox 360. Kinect terdiri dari kamera RGB, depth sensor,
serta multi-array microphone. Ketiga sensor tersebut memungkinkan
Microsoft Kinect menjadi controller untuk bermain Microsoft Xbox 360
201
dengan cara menerjemahkan gerakan manusia sesuai dengan game
yang dimainkan.
Microsoft Kinect (Gambar 4.35) memiliki interface USB (Universal
Serial Bus) dan harganya relatif murah. Hal ini membuat berbagai
komunitas mulai memanfaatkan Microsoft Kinect dan
mengembangkan piranti lunak dapat menggunakan Microsoft Kinect
di beberapa sistem operasi komputer (Windows, Linux, Mac).
Gambar 4.35. Microsoft Kinect XBOX 360
Microsoft sendiri sudah mendukung Microsoft Kinect untuk penelitian
robotika dengan menyediakan Microsoft Kinect for Windows
Standard Development Kit (SDK). Kinect for Windows dapat
dikendalikan menggunakan piranti lunak Windows dan perangkat-
perangkat Windows-embedded. Microsoft Kinect dapat menjadi solusi
yang efektif dalam proses pengambilan gerakan manusia (motion
capture) karena tersedia banyak di pasaran dan penggunaannya yang
sederhana tanpa membutuhkan pemasangan perangkat tambahan
pada tubuh manusia.
4.3.2 Arsitektur Robot Imitasi
Sistem imitasi gerak manusia pada robot humanoid ini
diimplementasikan pada PC di atas sistem operasi Linux dan ROS.
Sistem operasi Linux yang digunakan adalah distro ubuntu 11.10.
Sedangkan ROS yang digunakan adalah ROS electric. Sistem robot
imitasi dibuat di atas ROS untuk memudahkan proses multitasking.
Disamping itu, pada ROS juga sudah tersedia packages pendukung
yang dibuat oleh komunitas. Peran packages ini mirip library yang
digunakan untuk memudahkan pembuatan aplikasi pada umumnya.
Pembuatan sistem imitasi gerak manusia berbentuk humanoid,
direalisasikan dalam tiga layer. Layer pertama adalah akuisisi data
202
yang dilakukan sensor Kinect yang digunakan untuk menangkap
gerakan manusia. Layer kedua adalah pemrosesan pada komputer
(PC), PC digunakan untuk memproses data gerak manusia sehingga
nantinya dapat ditirukan oleh robot humanoid. Layer ketiga adalah
rangkaian aksi robot humanoid dari translasi gerakan data yang dikirim
oleh PC. Skema rancangan sistem ini dapat dilihat pada Gambar 4.36.
Gambar 4.36. Rancangan Sistem Robot Imitasi Gerakan Manusia
4.3.2.1 Proses pada Sensor
Proses utama yang diajukan, dimulai dari akusisi data gerak manusia
oleh sensor Kinect. Selanjutnya data tersebut dikirimkan oleh Kinect
ke komputer. Selanjutnya data dari Kinect tadi diolah oleh aplikasi
yang berjalan di atas ROS. Pertama kali data tersebut diakusisi oleh
aplikasi. Data yang diakusisi ini dibagi menjadi dua, yaitu data image
(citra objek) dan data depth yaitu data yang merepresentasikan jarak
relatif objek terhadap sensor Kinect .
4.3.2.2 Proses pada PC
Data image dan data depth dipergunakan untuk memproyeksikan
bentuk rangka tubuh manusia yang disebut dengan skeleton. Setelah
diperoleh data skeleton tersebut selanjutnya dilakukan perhitungan
sudut tiap-tiap sendi. Selanjutnya, berdasarkan data-data sudut tiap
sendi akan dipilih motion robot mana yang sesuai dengan gerakan
manusia. Data motion tersebut berikutnya akan dikirimkan ke robot.
4.3.2.3 Proses pada Robot
Data yang dikirim dari PC adalah ID motion/gerakan robot. Pada tahap
ini microcontroller yang terpasang pada robot akan melakukan
203
pencarian aksi yang teregistrasi pada robot. Jika menerima ID
tersebut, maka motion/gerakan robot ini akan dieksekusi. Dengan
demikian, robot akan menirukan gerakan manusia. Selanjutnya, untuk
menciptakan keseimbangan dalam bergerak, diperlukan kontrol
stabilitas robot yang diimplementasikan pada kontrol robot.
4.3.3 Proses Motion Capture hingga Pemetaan Gerakan
Pada subbab sebelumnya telah diterangkan mengenai arsitektur
sistem robot imitasi dan penjelasan umum mengenai setiap proses
yang terjadi pada sensor, PC, dan robot. Bagian ini akan dijelaskan
lebih jauh mengenai sebagain proses utama dalam implementasi
robot imitasi.
4.3.3.1 Skeleton Extraction
Skeleton Extraction merupakan proses pengambilan representasi
kerangka (skeleton) dari suatu objek. Proses ini dapat menghasilkan
kerangka yang memiliki fitur utama suatu objek. Salah satu contohnya
adalah dari objek manusia bisa didapatkan bentuk rangka tubuh dan
persendian-persendiannya seperti yang terlihat pada Gambar 4.37.
Gambar 4.37. Gambar Menyerupai Manusia dan Kerangkanya
Hasil skeleton extraction adalah bentuk penting dari tubuh manusia
yang dapat dimanfaatkan untuk berbagai kepentingan seperti
204
pengontrolan robot humanoid. Ilustrasinya terdapat pada Gambar
4.37.
4.3.3.2 Ekstraksi Fitur Data Sendi
Setelah dilakukan skeleton extraction selanjutnya dilakukan
perhitungan data sendi yang akan dipergunakan sebagai fitur untuk
lookup motion. Pada implementasi ini terdapat 56 fitur yang
digunakan. Fitur- fitur tersebut diambil dari data 14 sendi yang diambil
dari sensor Kinect. Dengan demikian, dari setiap sendi ada empat data
yang diambil. Tiga fitur pertama dari setiap sendi adalah sudut dari
sendi yang bersangkutan terhadap bidang x, bidang y, dan bidang z,
sedangkan satu data terakhir adalah jarak sudut yang bersangkutan
terhadap torso. Proses ekstraksi fitur ini dapat dilihat pada Gambar
4.38.
Gambar 4.38. Ektraksi Fitur Data Sendi
Setelah fitur berhasil diekstrak proses lookup motion menggunakan
nilai fitur, dilakukan menggunakan algoritma jaringan syaraf tiruan
(JST). Algoritma tersebut digunakan untuk meminimalkan kesalahan
translasi gerak sehingga robot dapat mentranslasikan gerak manusia
yang ditangkap Kinect setepat mungkin. Algoritma JST
mempergunakan Fuzzy Neuro Generalized Learning Vector
Quantization (FNGLVQ) yang diperkenal-kan oleh Setiawan pada 2011
sebagai pengembangan lebih lanjut dari GLVQ.
205
Gambar 4.39. Proses translasi motion dari nilai fitur
Dalam kaitannya dengan proses translasi gerakan. FNGLVQ
menghitung nilai kuantisasi vektor sehingga nilai fitur persendian
sebagai input vektor dapat dipetakan ke gerakan . Hubungan
antara dan dimodelkan menggunakan kuantisasi vektor
sedemikian hingga kemiripan antara ( , ) menentukan
nilai prediksi terhadap translasi gerakan robot yang bersesuaian. Lebih
lanjut mengenai teori FNGLVQ dijelaskan lebih mendalam pada
subbab berikut.
4.3.3.3 Dasar Teori Algoritma FNGLVQ
Algoritma klasifikasi Fuzzy-Neuro Generalized Learning Vector
Quantization (FNGLVQ) merupakan salah satu jenis algoritma artificial
neural network atau jaringan saraf tiruan. Jaringan saraf tiruan sendiri
merupakan salah satu algoritma machine learning atau pembelajaran
mesin. Algoritma pembelajaran mesin ditujukan untuk melakukan
pembelajaran terhadap mesin sehingga mesin dapat menyimpan
informasi-informasi yang penting dari data-data yang dipelajari.
Informasi–informasi tersebut nantinya akan dijadikan sebagai alat
untuk memprediksi oleh mesin jika mesin diberikan data baru.
Jaringan saraf tiruan adalah model komputasi yang mencoba
menirukan cara kerja dari fungsi jaringan saraf makhluk hidup.
Neuron-neuron biologis memancarkan sinyal elektrokimia pada jalur
saraf. Setiap neuron menerima sinyal dari neuron lain melalui
sambungan yang disebut sinapsis. Jika sinyal input terakumulasi dan
206
telah melewati threshold atau batas tertentu maka sinyal tersebut
akan menyebabkan neuron teraktifasi dan memancarkan sinyal ke
neuron berikutnya.
Jaringan saraf tiruan merupakan sistem pemrosesan informasi yang
memiliki karakteristik serupa dengan jaringan neural biologis. Secara
umum model jaringan saraf tiruan memiliki dua unit utama yaitu unit
masukan dan unit keluaran. Setiap neuron pada lapisan masukan pada
jaringan akan menerima satu input. Setiap input tersebut akan
dikalikan dengan weight (bobot) yang bersesuaian dan akan
diakumulasikan. Jumlah dari keseluruhan input berbobot tersebut
akan dijadikan input untuk fungsi aktivasi ( ). Fungsi tersebut akan
menghasilkan nilai keluaran yang akan digunakan untuk melakukan
prediksi. Pada gambar 2 input neuron sebanyak dan secara
matematis dapat dituliskan untuk setiap input akan dikalikan
dengan bobot sehingga jumlah totalnya adalah = ∑ , atau
dalam bentuk vektor, vektor X · W dengan X = [x1, x2, …, xn] dan W =
[w1, w2, …, wn].
Gambar 4.40. Model komputasi jaringan saraf tiruan (T. Kohonen,
1999)
Pada jaringan saraf tiruan sebuah node mewakili sebuah neuron dan
sebuah koneksi mewakili sebuah hubungan antar neuron. Setiap
koneksi diasosiasikan dengan sebuah nilai bobot (vektor pewakil).
Pada setiap koneksi pulalah sinyal yang diberikan oleh neuron
mengalir dan dikalikan dengan bobot.
207
Algoritma jaringan saraf tiruan telah berkembang pesat dengan
berbagai variasi model dan formula di dalamnya. Saat ini sudah
dikenal jaringan saraf tiruan yang memiliki lapisan (layer) tambahan
yaitu lapis tersembunyi atau hidden layer, antara lain adalah back
propagation dan learning vector quantization (LVQ). Algortima
klasifikasi Fuzzy-Neuro Generalized Learning Vector Quantization
merupakan salah satu diantara algoritma jaringan saraf tiruan yang
memiliki hidden layer.
Algortima klasifikasi Fuzzy-Neuro Generalized Learning Vector
Quantization yang dikembangkan oleh (Setiawan, 2011) merupakan
metode yang berangkat dari konsep fuzzifikasi pada algoritma Fuzzy-
Neuro Learning Vector Quantization (FLVQ) yang dipadukan dengan
konsep Generalized-LVQ (Sato et al., 1996). Pada penelitian
sebelumnya, data uji yang digunakan merupakan data rumah sakit
MIT-BIH yang memiliki sebaran dari tiap kategori kelas aritmia
tumpang-tindih satu sama lain, dan batas antar kategori kelas yan
tidak jelas hal ini dapat mempengaruhi kinerja kemampuan
pengenalan data aritmia (Setiawan et al., 2011). Arsitektur algoritma
FNGLVQ dapat dilihat pada Gambar 4.41.
Gambar 4.41. Arsitektur FNGLVQ (Setiawan et al., 2011)
Konsep dasar yang memotivasi pengembangan algoritma ini adalah
masih banyak data aritmia yang tumpang-tindih (overlapping),
sehingga sukar untuk melakukan pengenalan dan pengklasifikasian
208
data aritmia. Dengan menggunakan vektor pewakil fuzzy ketidak-
pastian suatu kelas dapat diturunkan.
Psedudo code algoritma FNGLVQ dapat dilihat pada Gambar 4.42.
Algiritma FNGLVQ
Require: X in round-robin mode
Inisialisasi bobot vektor W
Initialize learning rate α0
Initialize maximum iteration tmax
t←0
while αt ≠0 or t < tmax do
for xi Є X do
μ1 ← similaritasTerdekat1(x,W) di mana Cx =Cwi
μ2 ← similaritasTerdekat2 (x,W) di mana dj =max j /\ j ≠ i (dj)/\( Cx =Cwi )
if μ1 > 0 OR μ2 > 0 then
μμ
mce = μμ
1 = −2. ( )
μ μ)
(
(1 − )
2 = 2. (2 − μ − μ )
{adjust prototype 1}
for w1,i Є w1 do
if w1,i,min < xi ≤ w1,i,mean then
, , ( + 1) ← , , ( )− . . .( ) . ( )
μ μ) )
(
else if w1,i,mean < xi ≤ w1,i,max then
,, ( + 1) ← , , ( )+ . . .( ) . (
μ μ)
(
end if
end for
, ← , ( + 1) − , ( ) − , ( )
, ← , ( + 1) − , ( ) − , ( )
{adjust prototype 2}
for w2,i Є w2 do
if w2,i,min < xi ≤ w2,i,mean then
,, ( + 1) ← ,, ( )+ . . .( ) . ( )
μ μ)
(
else if w2,i,mean < xi ≤ w2,i,max then
( + 1) ← ( )− . . .( ) .( )
μ μ
end if
end for
, ← , ( + 1) − , ( ) − , ( )
, ← , ( + 1) − , ( ) − , ( )
209
if mce < 0 then
{Increase Fuzziness}
, ←, −, − , . 1+( . )
, ←, − , −, . 1+( . )
else
{Decrease Fuzziness}
, ←, −, − , . 1−( . )
, ←, − , −, . 1−( . )
end if
else
{Increase Fuzziness for all vector ref.}
for wj Є W do
, ←, −, − , . 1+( . )
, ←, − , −, . 1+( . )
end for
end if
end for
end while
( + 1) = × 1 −
Gambar 4.42. Pseudocode Algoritma FNGLVQ
4.3.3.4 Implementasi Motion Stability Control pada Robot
Motion Stability Control merupakan sistem kontrol yang digunakan
untuk menjaga agar robot tetap stabil dalam bergerak. Pada sistem
tersebut digunakan sensor gyroscope dan accelerometer. Dalam
implementasinya, diwujudkan dalam sebuah program yang ditanam
pada controller robot dengan logika seperti pada Gambar 4.43. Intinya
setiap satu (callback) controller akan mengecek kemiringan robot, lalu
memberikan koreksi pada sendi–sendi tertentu sehingga tidak jatuh.
Jika controller mendapatkan kondisi robot jatuh, maka secara
otomatis robot akan bangun sendiri.
210
Gambar 4.43. Logika Motion Stability Control
4.3.4 Detail Implementasi Robot Imitasi
Implementasi robot imitasi berbentuk humanoid tidak dilakukan dari
awal karena sebelumnya telah terdapat proyek Pi robot yang
menerbitkan semua kode pembuatannya (open source). Pi robot
merupakan mobile robot otonom yang diimplementasikan di atas ROS
dan menggunakan Microsoft Kinect sebagai mata utama robot.
Berbeda dengan Pi robot, Microsoft Kinect pada robot imitasi tidak
dihubungkan ke robot secara langsung namun demikian terdapat
sebagian kode yang dapat dipergunakan kembali untuk memudahkan
implementasi robot imitasi.
Dalam implementasi imitasi gerak manusia pada robot humanoid ini
ada dua pendekatan yang digunakan. Pendekatan pertama adalah
imitasi secara total dan pendekatan kedua adalah imitasi sebagian
gerak saja (parsial). Imitasi gerak manusia pada robot humanoid
secara total dilakukan dengan mentransformasikan setiap sudut sendi
pada tubuh manusia ke setiap sendi robot. Dengan demikian, robot
akan mengikuti gerakan manusia secara total walau hal ini hanya
mungkin jika robot memiliki sendi yang sedemikian mirip dengan
manusia. Oleh karena itu pada kasus imitasi total gerakan,
implementasi dilakukan menggunakan simulasi. Imitasi gerak manusia
pada robot humanoid secara parsial dilakukan dengan pembelajaran
gerakan manusia terlebih dahulu dengan algoritma machine learning,
selanjutnya robot akan menirukan gerakan yang diperagakan tersebut.
211
4.3.4.1 Imitasi Total Gerakan pada Simulasi
Seperti telah dijelaskan pada bagian sebelumnya, robot akan
menirukan gerak manusia secara total pada tiap sendinya. Prosesnya
dimulai dari akusisi data gambar dan depth dari manusia
menggunakan sensor Kinect sampai transformasi nilai sudut sendi-
sendi manusia ke robot. Proses-poses tersebut dapat dilihat pada
bagian di bawah ini.
1. Modifikasi package pendukung (pi_tracker)
Package pi_tracker ini menyimpan program-program untuk
melakukan skeleton tracker, perhitungan joint states dan
menampilkan hasil joint states pada simulasi (aplikasi Rviz). Oleh
sebab itu hanya perlu dilakukan perubahan-perubahan sesuai
dengan kebutuhan sistem.
Berikut adalah gambar skeleton tracking (Gambar 4.44) yang
disediakan oleh package pi_tracker.
Gambar 4.44. Skeleton Tracking
Modifikasi yang dilakukan meliputi hal-hal sebagai berikut.
a. Pembuatan berkas launcher baru
Dalam pelaksaaan proyek ini para peneliti membuat berkas
launcher baru. Berkas launcher (.launch) merupakan berkas
yang digunakan sebagai argumen saat menjalankan program di
ROS. Berkas ini berisi daftar perintah-perintah yang akan
dijalankan. Sebagian isi dari berkas launcher ini sama dengan
berkas aslinya, hanya terdapat modifikasi untuk tipe robot
212
yang dijadikan simulasi pada Rviz. Berikut adalah modifikasi
yang dilakukan.
<param name=”robot_description” command=”$(find xacro)/xacro.py '$(find
pi_tracker)/urdf/PremiumTypeA.xargo'" />
<param name="/use_sim_time" value="False" />
Berkas PremiumTypeA.xargo merupakan berkas yang berisi
robot model untuk bioloid tipe premium A. Berkas ini bisa
dikompilasi menjadi berkas URDF (unified robot description
file). Berikut adalah cuplikan isi berkas PremiumTypeA.xargo
yang merepresentasikan lutut robot.
<joint name="${prefix}_knee" type="revolute">
<parent link="${prefix}_upper_leg"/>
<child link="${prefix}_calf"/>
<origin rpy="0 0 0" xyz="0.00 0 -0.08"/>
<axis xyz="${reflect*1} 0 0"/>
<limit effort="1000.0" lower="-3.14" upper="3.14" velocity="0.5"/>
</joint>
Setelah ditampilkan pada aplikasi Rviz, berkas berkas
PremiumTypeA.xargo yang merepresentasikan robot
humanoid premium type A dapat dilihat pada Gambar 4.45.
Gambar 4.45. Tampilan bioloid tipe Premium A pada rviz
213
b. Implementasi perhitungan joint states
Proyek Pi robot memang sudah mengimplementasikan
perhitungan joint states. Akan tetapi, perhitungan tersebut
hanya terbatas pada kedua lengan robot. Selain itu bentuk
tangan pirobot dan bioloid tipe premium A berbeda. Dengan
demikian perlu dilakukan perhitungan joint states untuk bioloid
sebagai berikut.
# Left Arm
left_shoulder_neck = self.skeleton['position']['neck']
- self.skeleton['position']['left_shoulder']
left_shoulder_elbow =
self.skeleton['position']['left_elbow'] -
self.skeleton['position']['left_shoulder']
left_elbow_hand = self.skeleton['position']['left_hand']
- self.skeleton['position']['left_elbow']
left_shoulder_hand =
self.skeleton['position']['left_hand'] -
self.skeleton['position']['left_shoulder']
left_shoulder_neck.Normalize()
left_shoulder_elbow.Normalize()
lh = left_elbow_hand.Normalize()
left_shoulder_hand.Normalize()
left_shoulder_lift_angle = -
(asin(left_shoulder_elbow.y()) )
left_shoulder_pan_angle = asin(left_shoulder_elbow.x())
+ self.HALF_PI
left_elbow_angle = acos(KDL.dot(left_shoulder_elbow,
left_elbow_hand)) * 4
left_wrist_angle = -left_elbow_angle / 2.0
left_elbow_angle = left_elbow_angle / 4.0
# Left Arm
right_shoulder_neck = self.skeleton['position']['neck']
- self.skeleton['position']['right_shoulder']
right_shoulder_elbow =
self.skeleton['position']['right_elbow'] -
self.skeleton['position']['right_shoulder']
right_elbow_hand =
self.skeleton['position']['right_hand'] -
self.skeleton['position']['right_elbow']
right_shoulder_hand =
self.skeleton['position']['left_hand'] -
self.skeleton['position']['left_shoulder']
right_shoulder_neck.Normalize()
214
right_shoulder_elbow.Normalize()
rh = right_elbow_hand.Normalize()
right_shoulder_hand.Normalize()
right_shoulder_lift_angle =
asin(right_shoulder_elbow.y())
right_shoulder_pan_angle = asin(right_elbow_hand.x())
- self.HALF_PI
right_elbow_angle = -acos(KDL.dot(right_shoulder_elbow,
right_elbow_hand)) * 4
right_wrist_angle = -right_elbow_angle / 2.0
right_elbow_angle = right_elbow_angle / 4.0
#foot
left_hip_torso = self.skeleton['position']['left_hip'] -
self.skeleton['position']['torso']
right_hip_torso = self.skeleton['position']['right_hip']
- self.skeleton['position']['torso']
left_knee_hip = self.skeleton['position']['left_knee'] -
self.skeleton['position']['left_hip']
right_knee_hip = self.skeleton['position']['right_knee']
- self.skeleton['position']['right_hip']
left_foot_knee = self.skeleton['position']['left_foot']
- self.skeleton['position']['left_knee']
right_foot_knee =
self.skeleton['position']['right_foot'] -
self.skeleton['position']['right_knee']
left_hip_torso.Normalize()
right_hip_torso.Normalize()
left_knee_hip.Normalize()
right_knee_hip.Normalize()
left_foot_knee.Normalize()
right_foot_knee.Normalize()
#base_to_left_hip_angle = - asin(left_hip_torso.z()) * 4
+ self.HALF_PI
#base_to_right_hip_angle = - asin(left_hip_torso.z()) *
4
left_hip_to_split_angle = -asin(left_knee_hip.x()) #+
self.HALF_PI
right_hip_to_split_angle = -asin(right_knee_hip.x()) #-
self.HALF_PI
left_hip_split_to_upper_angle = -asin(left_knee_hip.z())
#- self.HALF_PI
right_hip_split_to_upper_angle =
asin(right_knee_hip.z()) #- self.HALF_PI
215
left_knee_angle = acos(KDL.dot(left_knee_hip,
left_foot_knee))
right_knee_angle = -acos(KDL.dot(right_knee_hip,
right_foot_knee))
2. Pembuatan package sistem imitasi (student_project)
Package student_project ini berfungsi untuk menangkap
(subscribe) pesan (topic) joint_state dari node
tracker_joint_controller dan mem-publish topic–topic yang dapat
ditangkap oleh dynamixel controller untuk dikirimkan ke robot
melalui USB. Karena package ini mengambil data joint_state dari
package pi_tracker, dan memberikan data ke package
dynamixel_controller, maka pada berkas manifest-nya perlu
dilakukan pengaturan dependensi sebagai berikut.
<package>
<description brief="student_project">
student_project
</description>
<author>anwar</author>
<license>BSD</license>
<review status="unreviewed" notes=""/>
<url>http://ros.org/wiki/student_project</url>
<depend package="dynamixel_controllers"/>
<depend package="pi_tracker"/>
</package>
Topik joint_state sendiri memiliki elemen berupa empat buah
array. Tiap elemen yang bersesuaian (indeks yang sama)
menyimpan satu kesatuan informasi. Array pertama merupakan
“name”, array kedua adalah “position”, array ketiga adalah
“velocity”, dan array keempat adalah “effort”. Adapun tugas dari
package ini adalah menampilkan topik-topik sesuai dengan nama-
nama yang tersimpan di array “name” dengan nilai posisi (pada
array “position”) yang bersesuaian. Berikut topik-topik yang
ditampilkan oleh node ini.
/left_shoulder_pan_joint/command
/left_hip_to_split/commnad
/left_hip_split_to_upper/command
/right_shoulder_pan_joint/command
/right_elbow_joint/command
216
/right_shoulder_lift_joint/command
/righthip_split_to_upper/command
/left_ankle/command
/left_shoulder_lift_joint/commnad
/left_ankle_roll/command
/left_knee/command
/base_to_right_hip/command
/right_hip_to_split/command
/left_elbow_joint/command
/right_ankle/command
/base_to_left_hip/command
/right_ankle_roll/command
/right_knee/command
3. Pembuatan Package Pengendali Motor Robot (dynamixel_tutorial)
Package ini berfungsi untuk menangkap (subscribe) topik yang
dipublish oleh package student_project. Selanjutnya nilai dari
topik - topik akan dikirimkan ke sendi–sendi robot melalui
transmisi data serial untuk dieksekusi. Setelah package dibuat
sesuai dengan petunjuk, selanjutnya untuk membuat package ini
dapat menjalankan fungsi yang diinginkan, maka dilakukan
tahapan-tahapan sebagai berikut.
a. Membuat berkas launcher (.launch)
Sesuai penjelasan sebelumnya bahwa berkas launcher
merupakan berkas yang menyimpan argumen pada saat
package dipanggil. Argumen tersebut berupa urutan program
yang dijalankan beserta parameter yang digunakan. Pada
pelaksanaan student project ini dibuat suatu berkas launcher
yang bernama student_project-full.launch. Berikut adalah isi
file student_project-full.launch tersebut.
<!-- -*- mode: XML -*- -->
<launch>
<!-- Load controller configuration to parameter server
-->
<rosparam file="$(find
dynamixel_tutorials)/config/sp_premium_a.yaml"
command="load"/>
<!-- start specified joint controllers -->
<node name="dynamixel_controller_spawner"
pkg="dynamixel_controllers" type="controller_spawner.py"
args="--manager=dxl_manager
--port=pan_tilt_port
217
--type=simple
left_knee
left_ankle
left_elbow_joint
right_shoulder_lift_joint
right_ankle
right_shoulder_pan_joint
base_to_left_hip
right_elbow_joint
left_shoulder_pan_joint
left_hip_split_to_upper
right_ankle_roll
base_to_right_hip
left_hip_to_split
right_hip_to_split
left_ankle_roll
right_hip_split_to_upper
right_knee
left_shoulder_lift_joint"
output="screen"/>
<node name="dynamixel_manager"
pkg="dynamixel_controllers" type="controller_manager.py"
required="true" output="screen">
<rosparam>
namespace: dxl_manager
serial_ports:
pan_tilt_port:
port_name: "/dev/ttyUSB0"
baud_rate: 1000000
min_motor_id: 1
max_motor_id: 18
update_rate: 20
</rosparam>
</node>
</launch>
Dalam berkas launcher ini kita dapat mengatur ID motor yang
digunakan, port USB yang digunakan, baud rate yang
digunakan, maupun topics yang akan diambil datanya. Berkas
controller spawner_manager.py dan controller_manager.py
merupakan berkas yang sudah dibuat oleh pengembang driver
motor dynamixel pada ROS sehingga tidak perlu diubah–ubah
lagi. Berkas ini berisi implementasi pengiriman data ke motor
servo dynamixel melalui USB. Sedangkan berkas
sp_premium_a.yaml merupakan berkas yang berisi konfigurasi
keterkaitan antara nama topik dengan ID motor.
218
b. Konfigurasi berkas sendi robot (sp_premium_a.yaml)
Seperti yang dijelaskan sebelumnya bahwa berkas ini berisi
konfigurasi keterkaitan anatara nama topik dengan ID motor.
Berikut adalah cuplikan berkas sp_premium_yaml.
left_knee:
controller:
package: dynamixel_controllers
module: joint_position_controller
type: JointPositionController
joint_name: left_knee_joint
joint_speed: 2.0
motor:
id: 14
init: 512
min: 0
max: 1023
left_ankle:
controller:
package: dynamixel_controllers
module: joint_position_controller
type: JointPositionController
joint_name: left_ankle_joint
joint_speed: 2.0
motor:
id: 16
init: 512
min: 0
max: 1023
left_shoulder_pan_joint:
controller:
package: dynamixel_controllers
module: joint_position_controller
type: JointPositionController
joint_name: left_shoulder_lift_joint_joint
joint_speed: 2.0
motor:
id: 4
init: 512
min: 0
max: 1023
Pada berkas sp_premium_yaml setiap topik yang ditulis pada
berkas launcher student_project-full.launch dikonfigurasi dengan
ID motor tertentu, nilai awal (init), derajat minimal yang diizinkan
(min). dan derajat maksimal yang diizinkan (max). Jika dilihat
219
secara keseluruhan interaksi antar komponen pada hasil
implementasi versi 1 ini dapat dilihat pada gambar 4.46.
Gambar 4.46. Interaksi antara Komponen di Dalam Robot Bioloid
220
Hasil screenshot dari implementasi ini dapat dilihat pada Gambar 4.47.
(a)
(b)
221
(c)
(d)
Gambar 4.47. Tampilan Bioloid Tipe Premium A pada Rviz
222
4.3.4.2 Imitasi Sebagian Gerakan pada Riil Robot
Seperti yang dijelaskan pada bagian sebelumnya, robot juga akan
diprogram untuk menirukan gerak manusia secara parsial atau
sebagian saja. Terdapat beberapa tahapan dalam
mengimplementasikan peniruan sebagian gerak ini. Pertama-tama,
data gerakan manusia diakuisisi dengan sensor Kinect. Selanjutnya,
akan dilakukan klasifikasi untuk memilih gerakan mana yang akan
dieksekusi oleh robot berdasarkan data gerakan manusia tersebut.
Oleh sebab itu, gerakan-gerakan yang bisa dilakukan robot terbatas
seperti yang diuraikan pada Tabel 4-1. Klasifikasi Gerakan Robot.
Tabel 4-1. Klasifikasi Gerakan Robot
No Gerakan
1. Jalan ke depan
2. Jalan ke belakang
3. Jalan ke kanan
4. Jalan ke kiri
5. Jalan ke depan kanan
6. Jalan ke depan kiri
7. Tendang dengan kaki kanan
8. Tendang deagan kaki kiri
9. Putar ke kanan
10. Putar ke kiri
11. Hadang ke kanan
12. Hadang ke kiri
13. Tinju ke depan
Sesuai dengan rancangan yang dibuat bahwa imitasi gerak manusia
pada robot pemain bola versi 2 ini tidak dilakukan secara full, akan
tetapi dicari terlebih dahulu motion manakah yang sesuai dengan
gerakan manusia yang terekam. Oleh sebab itu, implementasi versi 2
ini dilakukan dengan membuat satu package saja bernama
ui_robosoccer. Package ini berfungsi mengakuisisi data skeleton dari
manusia dan mencari gerakan mana yang sesuai dengan data skeleton.
223
Tahap-tahap yang dilalui dalam membuat package ini adalah sebagai
berikut.
1. Konfigurasi dependensi package ui_robosoccer
Package ini bergantung pada berbagai program yang ada pada
package pi_tracker. Oleh sebab itu perlu dilakukan setting
dependensi sebagai berikut.
<package>
<description brief="ui_robosoccer">
ui_robosoccer
</description>
<author>fr</author>
<license>BSD</license>
<review status="unreviewed" notes=""/>
<url>http://ros.org/wiki/ui_robosoccer</url>
<depend package="pi_tracker"/>
</package>
2. Pembuatan berkas launcher
Untuk memberikan argumen program apa saja yang akan
dijalankan sewaktu package digunakan beserta parameternya
maka dibuat berkas launcher sebagai berikut.
<launch>
<arg name="fixed_frame" value="openni_depth_frame"
/>
<param name="robot_description" command="$(find
xacro)/xacro.py '$(find
pi_tracker)/urdf/pi_robot.urdf.xacro'" />
<node name="skeleton_tracker" pkg="pi_tracker"
type="skeleton_tracker">
<param name="load_filepath" value="$(find
pi_tracker)/params/SamplesConfig.xml" />
<rosparam command="load" file="$(find
pi_tracker)/params/tracker_params.yaml" />
<param name="fixed_frame" value="($arg
fixed_frame)" />
</node>
<node name="tracker_command"
pkg="ui_robosoccer" type="tracker_command.py"
output="screen">
<!--rosparam command="load" file="$(find
pi_tracker)/params/tracker_params.yaml" /-->
</node>
</launch>
224
3. Pembuatan fungsi pengiriman data secara serial
Pengiriman data secara serial menjadi sangat penting karena
pesan untuk robot mengenai gerakan yang akan dilakukan tidak
dikirimkan melalui motor dynamixel lagi, melainkan melalui
controller robot (CM-510). Berikut ini adalah pengiriman data
secara serial yang diimplementasikan dalam berkas
tracker_command.py dengan nama "fungsi kirim".
def kirim(self, kata):
a = int(kata)
b1 = 255
b2 = 85
b3 = a%256
b4 = b1-b3
b5 = a/256
b6 = b1-b5
kata =
chr(b1)+chr(b2)+chr(b3)+chr(b4)+chr(b5)+chr(b6)
self.ser.write(kata)
4. Penentuan gerakan yang akan ditiru oleh robot
Selanjutnya, tahap terakhir yang paling penting dari penentuan
gerakan adalah mengimplementasikan cara penentuan motion
yang akan dilakukan oleh robot. Proses-proses dalam penentuan
gerakan ini adalah sebagai berikut.
a. Definisi aksi berbagai gerakan pada riil robot
def right_foot_up(self):
if self.confident(['right_foot', 'left_foot']):
if
(self.skeleton['position']['right_foot'].y() -
self.skeleton['position']['left_foot'].y()) /
self.shoulder_width > 0.7:
return True
elif
(self.skeleton['position']['right_knee'].y() >
self.skeleton['position']['right_hip'].y()):
return True
return False
def left_foot_up(self):
if self.confident(['right_foot', 'left_foot']):
225
if (self.skeleton['position']['left_foot'].y() -
self.skeleton['position']['right_foot'].y()) /
self.shoulder_width > 0.7:
return True
return False
def arms_crossed(self):
if self.confident(['left_elbow', 'right_elbow',
'left_hand', 'right_hand']):
if copysign(1.0,
self.skeleton['position']['left_elbow'].x() -
self.skeleton['position']['right_elbow'].x()) == \
-copysign(1.0,
self.skeleton['position']['left_hand'].x() -
self.skeleton['position']['right_hand'].x()):
return True
return False
def move_forward(self):
if self.confident(['torso']):
if (self.jarak_awal - self.jarak_kini) > 0.2:
return True
return False
def move_backward(self):
if self.confident(['torso']):
if (self.jarak_kini - self.jarak_awal) > 0.2:
return True
return False
#gerakan belum teruji
def rr_punch(self):
if self.confident(['right_shoulder','right_hand']):
if(self.skeleton['position']['right_shoulder'].x()
- self.skeleton['position']['right_hand'].x() < -0.35):
return True
return False
def rf_punch(self):
if self.confident(['right_shoulder','right_hand']):
if(self.skeleton['position']['right_shoulder'].z()
- self.skeleton['position']['right_hand'].z() > 0.35):
return True
return False
def ll_punch(self):
if self.confident(['left_shoulder','left_hand']):
if(self.skeleton['position']['left_shoulder'].x()
- self.skeleton['position']['left_hand'].x() > 0.35):
return True
return False
226
def move_right(self):
if self.confident(['torso']):
if (self.posisi_kini_x - self.posisi_awal_x) >
0.2:
return True
return False
def move_left(self):
if self.confident(['torso']):
if (self.posisi_kini_x - self.posisi_awal_x) < -
0.2:
return True
return False
def turn_left(self):
if self.confident(['left_shoulder','right_shoulder']):
if(self.skeleton['position']['left_shoulder'].z()
- self.skeleton['position']['right_shoulder'].z() > 0.2):
return True
return False
def turn_right(self):
if self.confident(['left_shoulder','right_shoulder']):
if(self.skeleton['position']['left_shoulder'].z() -
self.skeleton['position']['right_shoulder'].z() < -0.2):
return True
return False
b. Pemetaan aksi terkenali terhadap aksi robot
if self.gestures['right_foot_up']():
command = "TENDANG KANAN"
self.kirim(72)
# Raise left knee to engage joint teleoperation
elif self.gestures['left_foot_up']():
command = "TENDANG KIRI"
self.kirim(68)
elif self.rr_punch():
command = "TINJU KANAN KANAN"
self.kirim(136)
elif self.rf_punch():
command = "TINJU KANAN DEPAN"
self.kirim(129)
elif self.ll_punch():
command = "TINJU KIRI KIRI"
self.kirim(132)
227
elif self.turn_left():
command = "PUTAR KIRI"
self.kirim(4)
elif self.turn_right():
command = "PUTAR KANAN"
self.kirim(8)
elif self.gestures['move_forward']():
command = "MAJU"
if self.move_right():
command += " KANAN"
self.kirim(9)
elif self.move_left():
command += " KIRI"
self.kirim(5)
else:
self.kirim(1)
elif self.gestures['move_backward']():
command = "MUNDUR"
self.kirim(2)
elif self.move_left():
command = "KIRI"
self.kirim(6)
elif self.move_right():
command = "KANAN"
self.kirim(10)
else:
command = "STOP"
self.kirim(0)
Untuk mengimplementasikan imitasi gerak
manusia pada robot humanoid ini, controller
robot perlu diberikan piranti lunak berupa
standard motion bioloid premium A, dan standard
task bioloid premium. Hal tersebut dilakukan
untuk mempercepat komputasi dan mencegah
berhentinya program maka visualisasi bisa
ditiadakan. Interaksi antara komponen ROS pada
imitasi gerak manusia pada robot humanoid ini
dapat dilihat pada Gambar 4.48.
228
Gambar 4.48. Rxgraph Imitasi Gerak Manusia pada Robot humanoid
Screenshot hasil implementasi imitasi gerakan manusia pada
robot humanoid secara parsial dapat dijelaskan pada Gambar
4.49.
229
Gambar 4.49. Screenshot hasil implementasi imitasi gerakan manusia
pada robot humanoid
4.3.4.3 Uji Ketepatan Gerakan Robot Imitasi
Eksperimen ini dilakukan dengan mengambil sampel dari setiap
gerakan yang akan dieksekusi robot. Tabel 4-2 menunjukkan jumlah
data sampel yang digunakan.
Tabel 4-2. Data Sampel
No. Pergerakan Jumlah Sample
1. Standby 400
2. Move Right 400
3. Move Left 400
4. Move Forwareg 400
5. Turn Right 400
6. Turn Left 400
7. Move Backward 400
8. Right Kick 400
9 Left Kick 400
10. Right Punch 400
11. Left Punch 400
230
12. Left Forward Punch 400
13. Right Forward Punch 400
Setelah dilakukan percobaan, diperoleh tingkat akurasi pengenalan
gerakan manusia seperti pada Tabel 4-3.
Tabel 4-3. Tingkat Akurasi
Fold Accuracy (%) Kappa
1. 99.81 1.0
2. 100.00 1.0
3. 99.81 1.0
4. 100.00 1.0
5. 99.81 1.0
6. 100.00 1.0
7. 99.81 1.0
8. 99.81 1.0
9 99.81 1.0
10. 99.81 1.0
Rata- Rata 99.87 1.0
4.4 Kesimpulan dan Pengembangan Lebih Lanjut
Pada bab ini telah dijelaskan rancangan fisik robot humanoid dan
komponen-komponen yang dipergunakan dalam merakit robot
humanoid. Selain itu, telah dijelaskan pula penerapan dan aplikasi
robot humanoid tersebut untuk pertandingan robot soccer dan robot
imitasi.
Pada penelitian robot humanoid peluang pengembangan robot masih
cukup terbuka, mengingat robot humanoid dirakit menggunakan
paket yang dijual bebas dan disertakan dengan perangkat developer
kit yang baik. Selain itu, terdapat alternatif lain untuk mendapatkan
komponen rakitan robot dengan kombinasi kelengkapan yang
berbeda. Pada pengembangan selanjutnya, diharapkan robot
humanoid memiliki pergerakan yang lebih lugas dengan peningkatan
spesifikasi komponen yang lebih baik. Sistem kecerdasan sangat
231
berpengaruh pada pertandingan robot soccer. Pada pengembangan
kedepan, kecerdasan robot sebagai kawanan yang
mengimplementasikan PSO diharapkan dapat memberikan
pertandingan yang lebih positif.
232
5. Daftar Pustaka
Albert Huang, et.al, “Visual Odemetry For GPS-Denied Flight And
Mapping Using A Kinect,”
http://groups.csail.mit.edu/rrg/index.php?n=Main.
VisualOdometryFor GPS-DeniedFlight, 21 Juni 2012.
Arjomandi Mazier, (2006), Classification of Unmanned Aerial
Vehicle, The University of Adelaide.
Ahmad Hafidh. (2011). Simulasi Perluasan Jaringan Telekomunikasi
secara Otonom dengan Mobile Robot di daerah Bencana
menggunakan Open Dynamic Engine, Fakultas Ilmu
Komputer, Universitas Indonesia.
Bager Zarei , Mohammad Zeynali dan Vahid Majid Nezhad Novel
,(2010), Cluster Based Routing Protocol in Wireless Sensor
Networks, IJCSI International Journal of Computer Science
Issues, Vol. 7, Issue 4, No 1, July 2010 .
Bernard Kolman dan David R. Hill, (2004), Elementary Linear
Algebra 8th Edition. New Jersey: Pearson International
Edition.
Bresciani, T. (2008). Modelling, Identification and Control. Lund:
Department of Automatic Control Lund University.
Charles E. Perkins dan Elizabeth M. Royer. (1999), Ad-hoc On-
Demand Distance Vector Routing, In Proceedings Of The 2nd
Ieee Workshop On Mobile Computing Systems And
Applications.
David B. Johnson, David A. Maltz dan Josh Broch , (1999), DSR: The
Dynamic Source Routing Protocol for Multi-Hop Wireless Ad
Hoc Networks, Mobile Computing The Kluwer International
Series in Engineering and Computer Science Volume 353,
1996, pp 153-181
Deza, M. M., dan Deza, E. (2009). Encyclopedia of Distances. New
York: Springer.
Documentation,” http://www.ros.org/wiki/, 18 Juni 2012.
233
E. Bonabeau, M. Dorigo, dan G. Theraulaz, (1999) ,Swarm
Intelligence: From Natural to Artificial Systems. Oxford
University Press.
E. Budianto, M.S. Alvissalim, A. Hafidh, A. Wibowo, W. Jatmiko, B.
Hardian, P. Mursanto, A. Muis, (2011),“Telecommunication
Networks Coverage Area Ex- pansion in Disaster Area Using
Autonomous Mobile Robots: Hardware and Software
Implementation”, IEEE International Conference on Advanced
Com- puter Science and Information Systems, pp. 113–118.
Faris Al Afif, (2011), Implementasi Prototipe Sistem Pengaturan
Lampu Lalu Lintas Terdistibrusi dengan Optimasi Pengenalan
dan Penjejakan Kendaraan Berbasis Pemrosesan Video.
Skripsi Sarjana, Fakultas Ilmu Komputer, Universitas
Indonesia.
G.S.S. Kalaiarasi R, N. Pari S., Sridharan D. (2010). “Energy Efficient
Clustering and Routing in Mobile Wireless Sensor Network,”
International Journal of Wireless & Mobile Networks
(IJWMN), vol.2, pp. 106-114.
Gary Bradski dan Adrian Kaehler, (2008), Learning OpenCV
Computer Vision with the OpenCV Library. Sebastopol:
O’Reilly Media, Inc.
I Made Agus Setiawan, (2011), Sistem Pengenalan Kelainan Aritmia
menggunakan Metode Fuzzy-Neuro Generalized Learning
Vector Quantization. Tesis, Fakultas Ilmu Komputer,
Universitas Indonesia.
Ikemoto, Y., Hasegawa, Y., Fukuda, T., & Matsuda, K. (2005).
Gradual spatial pattern formation of homogeneous robot
group. Information Sciences 171 , 431-445.
J. Takahashi, K. Sekiyama, T. Fukuda, (2007), “Self- deployment
algorithm for mobile sensor network based on connection
priority criteria with obstacle avoidance”, IEEE Robotics and
Biomimetics, pp. 1434–1439.
J. A. Tenreiro Machado dan Manuel F. Silva, "An Overview of
Legged Robots", to appear. doi=10.1.1.106.8192
234
J. N. Al-Karaki & A. E. Kamal,(2004) ,“Routing Techniques in
Wireless Sensor Networks : A Survey,” IEEE Wireless
Communications, vol.11, pp. 6-28.
J. Larranaga, L. Muguira, J.M. Lopez-Garde, J.I. Vazquez. (2010). An
Environment Adaptive ZigBee-based Indoor Positioning
Algorithm. 2010 International Conference on Indoor
Positioning and Indoor Navigation.
Kristof Goris, (2005), Autonomous Mobile Robot Mechanical Design.
Tesis, Faculteit Ingenieurswetenschappen, Vrije Universiteit
Brussel.
Lua: about. (2012). Retrieved Juni 18, 2012, from The Programming
Language Lua: http://www.lua.org/about.html.
Matthias Wahde dan Jimmy Pettersib. "A brief overview of bipedal
robotics research", In Proceedings of the 8th Mechatronics
Forum International Conference, 2002, pp. 480-488.
N. B. Ignel, N. Rasmusson, J. Matsson, "An overview of legged and
wheeled robotic locomotion", 2012, to appear.
Pambudi, N. W. (2009). Pembentukan Formasi Pola Robot Homogen
Secara Gradual: Studi Kasus pada Robot Lego Mindstorms
NXT. Depok: Fakultas Ilmu Komputer, Universitas Indonesia.
R.C.Kooijman (2010). Evaluation of open dynamics engine
software. Eindhoven University of Technology Department of
Mechanical Engineering Dynamics and Control.
R. J. Stuart, P. Novrig. (2003). Artificial Intelligence – A Modern
Approach Second Edition, Prentice Hall, New Jersey.
Robotics, (2012), Wikibooks open books for an open world.
Roland Siegwart, dan Illah R. Nourbakhsh, (2004), Introduction to
Autonomous Mobile Robots. MIT Press.
Sato dan K. Yamada, (1995), “Generalized learning vector
quantization,” Advances in Neural Information Processing
Systems (NIPS), vol. 7, pp. 423-429.
T. Kohonen, (1997), Self-Organizing Maps. Springer, Berlin.
The device, http://ardrone.parrot.com/parrot-ardrone/uk/support/
questions-answers , 18 Juni 2012.
The UAV - The Unmanned Aerial Vehicle. (2012). Retrieved May 21,
2012, from Wikipedia: http://www.theuav.com/
235
Thomas Bräunl, (2006), Embedded Robotics, Mobile Robot Design
and Applications with Embedded Systems. Perth: Springer.
V. Dewanto dan R. Prasetya. (2010). Hardware Documentation of
Track Mobile Robot Alfathvrss. Technical Report. Fakultas
Ilmu Komputer Universitas Indonesia.
World Robotics 2012 Service Robots Executive Summary. (2012).
Retrieved April, 2013, International Federation Robotics, url:
http:// http://www.ifr.org/service-robots/statistics/
Wu, K.-Y. (2011). Multiple Mobile Robots Formation Control and
Obstacle Avoidance. 3rd International Conference on
Advanced Computer Control (pp. 639-643). Harbin: Institute
of Electrical and Electronics Engineers.
Yun, B., Chen, B. M., Yew, L. K., & Lee, T. H. (2010). Design and
implementation of a leader-follower cooperative control
system for unmanned helicopters. Journal of Control Theory
and Applications , 61-68.
Z. Wang, Z. Chi, dan D. Feng, (2003), “Shape based leaf image
retrieval,” IEEE Proc, Vis, Image Signal Process, Vol. 150, No.
1, Februari 2003.
236
6. Glosarium
Automata Sebutan robot pra-modern, yang
Ad-hoc routing protocol tidak memiliki kemampuan otonom
Ant Colony Optimization (ACO) konvensi atau standar yang
Application Programming Interface mengontrol bagaimana kumpulan
node-node menyetujui rute paket
Autonomous Mobile Robot (AMR) mana yang ditempuh diantara
Cartesian computing devices dalam sebuah
Cluster mobile ad-hoc network (MANET)
Merupakan salah satu
implementasi dari swarm
intelligence
Metode atau Fungsi khusus yang
didefinisikan oleh sistem operasi
atau aplikasi tertentu sehingga
programmer dapat melakukan
request
Ssebuah mesin otomatis yang
mampu bergerak pada suatu kondisi
tertentu
Koordinat dua dimensi dalam x,y
substructure dari network yang
saling terhubung
Cluster Head Bagian yang mengatur Setiap
cluster dalam setiap substructure
Cluster Head Election Bertujuan membentuk cluster
dari sekelompok mobile node
Contour yang saling berhubungan
Cost Function
237 Karakteristik sketsa atau silout dari
suatu objek 3D
Pada permasalahan optimisasi,
merupakan fungsi matematis yang
Dead reckoning berusaha
diminimalisasi/maksimalisasi
Degree of Freedom (DOF) suatu prosedur matematis untuk
Differential Steering menentukan posisi sebuah kapal
Feature pada suatu saat menggunakan
pengetahuan mengenai posisi
Full autonomy sebelumnya dan perkiraan
Gait perpindahan yang dialami kapal
Gradient Descent tersebut dalam suatu periode waktu
Integer
Komputasi Cloud Derajat kebebasan pada lengan
ladar robot
Latency Mekanisme berbelok menggunakan
prinsip perbedaan arah rotasi roda
pada sisi yang berbeda
Pada pembelajar mesin
menunjukkan ciri khusus dari input
data. Umumnya berdimensi lebih
dari dua
Derajat robot dalam bergerak
otonom tanpa campur tangan
manusia
Pada bidang robotika, menunjukkan
total kemungkinan kombinasi kaki
dalam bergerak
Pada permasalahan optimalisasi,
merupakan metode untuk mencari
lokal optimum
Nilai bilangan bulat pada komputer
dengan rentang terbatas. Mesin 32-
bit memiliki rentang 0 - 4 GB
Komputasi menggunakan sumber
daya tak terbatas yang tersimpan
dalam sistem cloud
Teknologi pemindaian untuk
membuat mapping 3D lokal
menggunakan gelombang laser
waktu tunggu yang terjadi dalam
sistem
238
Library Pada bidang software engineering,
merupakan program pendukung
Lokomotif yang disediakan 3rd party untuk
Mitigasi kemudahan pembuatan proyek
piranti lunak.
Mobile ad-hoc Network (MANET)
Pada bidang robotika, menunjukkan
Motion Planning sitem bergerak robot
Motion Planner kegiatan yang sangat penting dalam
Orthogonal penanggulangan bencana, karena
Otonom kegiatan ini merupakan kegiatan
Overhead sebelum terjadinya bencana yang
dimaksudkan untuk mengantisipasi
Particle Swarm Optimization (PSO) agar dampak yang ditimbulkan dapat
dikurangi
Path Discovery
jaringan yang memungkinkan setiap
node yang terhubungkan oleh
sebuah wireless link dapat bergerak
bebas
Perencanaan lintasan yang akan
dilalui
Pelaku yang menentukan motion
planning
Ortogonal, bidang yang tegak lurus
dengan bidang benda saat ini
Mandiri
perbandingan antara paket routing
yang dikirimkan melalui jaringan
dengan jumlah paket data yang
berhasil sampai di tempat tujuan
sebuah algoritma pencarian yang
melibatkan sebuah populasi yang
berbasis simulasi perilaku sosial dari
burung-burung, lebah atau ikan-
ikan?
Suatu proses yang dilakukan
apabila sebuah node sumber
239
Pitch ingin mengirimkan sebuah data
Pixel kepada node tujuan, dimana node
Pseudocode sumber tidak memiliki informasi
routing tentang node tujuan
Quadcopter tersebut.
Radar
Rotasi dalam koordinat y
Received Signal Strength Indicator Pada citra digital menunjukkan posisi
(RSSI) koordinat dalam x,y
Remote Kode atau tanda yang menyerupai
Robot Al-Fath (pseudo) atau merupakan pejelasan
cara menyelesaikan suatu masalah
Roll
Route Table Management Model helikopter mempunyai 4 buah
motor untuk terbang
Scalability Teknologi pemindaian untuk
mencari objek bergerak
menggunakan gelombang radio
Besaran kuat sinyal hasil pengukuran
Xbee
Berjarak
robot yang telah dikembangkan
untuk kepentingan penelitian
pencarian sumber kebocoran gas
atau sering disebut dengan istilah
Odor Source Localization (OSL).
Rotasi dalam koordinat x
Suatu proses untuk memelihara
koneksi ke dan dari link-link yang
aktif, agar node sumber tetap
dapat terhubung dengan node
tujuan
kemampuan dari jaringan dalam
suatu sistem untuk peningkatan
kerja sebagai akibat dari
pertumbuhan jumlah nodes yang
240
Sink Localization Algorithm terlibat dalam suatu network
Skid Steering Merupakan suatu algoritma hasil
Spanning Tree Protocol kustomisasi dari algoritma Particle
Stagnasi Swarm Optimization (PSO) untuk
String pencarian BTS dengan memodifikasi
Threshold jenis data yang digunakan sebagai
parameter global-best dan local best
Turbo Jet
Unmanned Aerial Vehicle Sebutan Differential Steering pada
robot berantai-roda (track)
Unmanned Ground Vehicle Protokol jaringan yang menjamin
Variabel topologi jaringan bebas-perulangan
untuk penghubung Ethernet LAN
Wireless
Yaw Suatu kondisi dimana hanya satu
241 bagian tertentu saja dari suatu area
yang dieksplorasi
Representasi dari nilai karakter pada
komputer. String tersusun dari char
yang dapat mewakili seluruh alfabet.
Nilai ambang batas. Jika suatu nilai
melewati nilai ini, maka nilai tesebut
dipass. Dapat berlaku juga
kebalikannya.
Jenis mesin yang digerakkan dengan
tenaga jet
Kendaraan yang memiliki
kemampuan untuk terbang tanpa
adanya campur tangan manusia
untuk mengarahkannya
Kendaraan darat yang memiliki
kemampuan bergerak otonom tanpa
operator
Pada bidang pemrograman
menunjukkan tempat penyimpanan
sebuah data berdasarkan tipe
tertentu misalnya int, double, string
Koneksi jaringan tanpa kabel
Rotasi dalam koordinat z
Zigbee Sebuah protokol komunikasi untuk
komunikasi jarak dekat yang
beroperasi pada frekuensi 2.4 GHz
242
7. Daftar Indeks
A Core Extraction Distributed Ad Hoc
Routing............................................103
Accelerometer ..................................... 174
ADC...................................... 171, 172, 174 Cost function........................................133
ad-hoc network.................................... 100
agent...................................................... 87 D
Al-Fath ........ 54, 67, 71, 89, 90, 96, 98, 240
AMR............................................... 96, 237 Data ...17, 85, 87, 89, 90, 92, 99, 104, 111,
Analog Digital Converter ..................... 172 126, 128, 129, 130, 131, 133, 135, 145,
Ant Colony Optimization ..................... 237 153, 170, 177, 181, 190, 203, 205, 212,
Application Programming Interface ..... 92, 216, 217, 218, 223, 225, 230, 239, 241
176 Dead Reckoning .....................................82
AR Drone ............................................. 115 Destination Sequenced Distance Vector
Artificial Intelligence.... 176, 250, 251, 252
Asimo..................................................... 24 ................................ ........................ 102
Autonomous ............................ 23, 87, 149 Distance ....................... 59, 61, 67, 96, 173
Mobile Robot............................ 96, 237 sensor.................................... 61, 67, 78
sensor beam......................................67
B Distributed
Bellman-Ford...................................102
Backtracking .................................... 70, 75 Dummy object .....................................145
Bandwidth-constrained ....................... 101
Base station ......................................... 104 E
Bidirectional ........................................ 101
Binary image........................................ 130 Encoder............................................83, 90
Bioloid Energy-constrained operation .............101
Error..................................... 133, 134, 138
kit 173
Premium Kit .................................... 190 Reduction Parameter ........................63
BTS........ 87, 89, 92, 95, 96, 97, 98, 99, 241 Extended
Bullet physics engine ........................... 143
Position By Line......... 59, 60, 75, 76, 77
C
F
Capacity link ........................................ 101
Carrier.................................................... 85 Feature
CCD .............................................. 130, 131 extraction ........................................ 131
Checksum ............................................ 190
Child object.................................. 145, 146 Fixed
Circular movement .............. 153, 159, 161 -cable ..............................................101
Complete graph ............................... 75, 76 network...........................................101
Constraint Force Mixing ........................ 63
Constriction Factor ................................ 81 Floodfill ............................................70, 76
Contour................................................ 130 Frame ................................ ..................... 62
Controller ....171, 180, 201, 210, 216, 218,
G
225, 228
Gain factor ...........................................133
243 Generalized Learning Vector Quantization
................................ ........................ 234
Global
best................................. 81, 82, 95, 99 Missclassification error ........................133
Positioning System ......................... 111 Mobile
GLVQ............................ 126, 128, 133, 135
GPS ...................................... 111, 144, 233 ad-hoc ............................. 100, 102, 237
Gradient Descent................................. 133 ad-hoc Network ...................... 100, 239
Grayscale ............................................. 130 host ......................... 100, 102, 103, 104
Gyroscope............................................ 111 node ........................................100, 237
platform ..........................................101
H robot ...........................................82, 86
wireless networks............................101
Handle ................................................. 146 Motion
Hardware..................................... 115, 170 Capture ...........................................202
Hardwired link ..................................... 101 Stability Control ..............................210
Header................................. 103, 145, 173 Multitasking .........................................202
Host ..................................... 100, 101, 102
Hover................................................... 113 N
Hybrid Protocol ................................... 103
Node ......60, 61, 77, 78, 79, 85, 91, 93, 95,
I 100, 101, 102, 103, 104, 127, 136, 178,
216, 237, 239, 240
IMU.............................. 111, 115, 116, 144
Inertial force ........................................ 181 Noise ....................................................101
Inertial Measurement Unit .......... 109, 111 Novel Cluster Based Routing................104
Initialization........................................... 62 Numerical Control Machine Tools .........26
International Federation of Robotics .... 17
IR receiver............................................ 173 O
J Obstacle Avoidance ............. 148, 149, 236
Odor Source Localization ............... 54, 240
Joint states .................................. 212, 214 Offset Servo .........................................173
On Demand Protocol ...........................102
L Open Dynamic Engine... 61, 62, 63, 67, 68,
Lagrange multiplier velocity .................. 62 70, 71, 74, 75, 76, 77, 79
Launcher...............212, 217, 218, 219, 224
Leader-Follower................................... 148 P
Learning Vector Quantization.............. 133
Library...................61, 63, 67, 94, 177, 202 Packet drop............................................99
Linux .................................... 116, 176, 202 Particle Swarm Optimization .. 81, 94, 239,
Local best................81, 82, 89, 95, 99, 241
Localization...............67, 82, 84, 89, 95, 97 241
LVQ ...................................................... 133 Path................................ 59, 67, 69, 74, 76
M Planning ................................ 67, 69, 75
PCA............................................... 131, 132
Mac...................................................... 202 Physics Engine......................................143
MANET..................100, 101, 102, 237, 239 Pitch .....................................................113
Microsoft Kinect .................. 177, 201, 202 Pixel ............................. 116, 135, 136, 137
Minimum Spanning Tree ........... 59, 75, 77 Point-to-point ........................................91
Position By Line. 57, 58, 59, 60, 61, 69, 75,
77, 78, 89, 96, 97
Preprocessing ......................................129
Prim .......................................................77
Proactive Protocol ...............................102
244
Proximity ............................. 143, 146, 148 Single object.........................................130
PSO .................81, 82, 89, 94, 95, 239, 241 Sink ...60, 61, 72, 77, 78, 79, 80, 89, 95, 97
Puller ................................................... 113 Skeleton Tracking.................................212
Pusher.................................................. 113 Software. 92, 115, 170, 179, 200, 202, 228
Source
Q
routing ............................................103
Quadcopter .110, 111, 112, 113, 114, 115, Tree Adaptive Routing ....................102
144, 145, 146, 147, 148, 149, 150, 151, Spanning Tree ......................................104
152, 153, 154, 155, 156, 157, 158, 159, Speed Rate ...........................................181
160, 161, 162, 164, 166 Substructure ........................................237
Swarm intelligence...............................237
Quadratic Optical Encoder .................... 83
Quartenion matrix ................................. 68 T
R Table-driven ......................................... 102
Take off ................................................114
Range............................................. 72, 100 Target.....57, 59, 60, 61, 67, 70, 71, 72, 74,
Reactive protocol................................. 102
Real Time Operating System ................. 89 75, 77, 78, 79, 80, 89, 91, 96, 149, 150,
Received Signal Strength Indicator 85, 240 159
Receiver......................................... 85, 174 Threshold ................................... 60, 77, 82
Remote control.................................... 107 Throughput ..........................................101
Repeat time ......................................... 181 Transceiver...................................144, 145
Roboplus...................... 179, 180, 181, 182
Roboplus Manager .............................. 180 U
Robot Arm ....................................... 26, 27
Robot Humanoid ................................. 170 UART ...................................... 92, 175, 190
Robot Operating System ............. 136, 176 Ultrasonic Range Sensor ......................111
Roll................................................. 68, 113 Unidirectional ......................................101
ROS ......127, 136, 176, 177, 178, 179, 202, Unified robot description file...............213
Unimate .................................................23
203, 212, 218, 228 Universal Asynchronous Receiver
ROS electric ......................................... 202
Route Table Management ................... 240 /Transmitter ................................ .... 190
Router.......................................... 101, 103 Unmanned Aerial Vehicle . 5, 49, 107, 235,
Routing ...79, 100, 102, 103, 104, 237, 239
Routing protocol.................................. 102 236, 241
RSSI.......................................... 85, 95, 240 URDF ....................................................213
User......................................................149
S
V
Script ............143, 144, 145, 146, 147, 149
Self Velocity Vector.......................................81
Vertex ....................................................76
-configured ..................................... 100 Virtual
Sensing .................................................. 57
Sensor proximity......................... 146, 148 Robot Experimentation Platform ....142
servo motor ......................................... 180 V-REP .. 142, 143, 144, 145, 146, 147, 149,
Signal ................................... 144, 145, 248
150, 152, 164, 166
Stability-based Adaptive Routing.... 102
Simulation loop ..................................... 62 W
245 Windows ..............................................202
Wireless X
connection........................................ 79
Routing Protocol............................. 102 X-Bee........................ 84, 87, 91, 92, 93, 95
sensor ............................................... 84
sensor network ................................. 84 Z
transmission ................................... 144
Zigbee ...................................... 84, 85, 242
Zone
-based Hierarchical Link State.........103
Resolution Procotol.........................103
246
8. Profil Penulis
Nama: Dr. Eng. Wisnu Jatmiko, S.T., M.Kom.
TTL: Surabaya, 16 Desember 1973
Pekerjaan: Dosen / Staf Akademis
Institusi: Fakultas Ilmu Komputer, Universitas Indonesia
Email: [email protected]
Interest: Robotika, Embedded System
Quote: “Tidak ada tanggal merah di kalender saya, 247
merupakan angka terbaik setiap minggunya”
Nama: Dr. Petrus Mursanto
TTL: Surakarta, 25 Juni 1967
Pekerjaan: Dosen / Staf Akademis
Institusi: Fakultas Ilmu Komputer, Universitas Indonesia
Email: [email protected]
Interest: Hardware, Arsitektur Komputer, Enterprise
Computing
247
Nama: M Iqbal Tawakal, S. Kom.
TTL: Semarang, 1 Maret 1990
Pekerjaan: Teaching and Research Assistant
Institusi: Fakultas Ilmu Komputer, Universitas Indonesia
Email: [email protected]
Interest: computational intelligence, digital signal
processing, computer vision, and robotics
Quote: “Lebih baik mati berkalang tanah, daripada
hidup bercermin bangkai”
Nama: M Sakti Alvissalim, S. Kom.
TTL: Brebes, 01 Oktober 1989
Pekerjaan: Asisten Riset
Institusi: Fakultas Ilmu Komputer, Universitas Indonesia
Email: [email protected]
Interest: Robotics, Machine Learning
Quote: “Everything's Learnable”
248
Nama: Abdullah Hafidh, S. Kom.
TTL: Jakarta, 18 Agustus 1989
Pekerjaan: Asisten Dosen
Institusi: Fakultas Ilmu Komputer, Universitas Indonesia
Email: [email protected]
Interest: Robotika, 3D Programming
Quote: "Play Hard, Work Hard, and Pray Hard"
Nama: Enrico Budianto, S. Kom.
TTL: Braunschweig, 3 Mei 1989
Pekerjaan: Mahasiswa
Institusi: Universitas Indonesia / National University of
Singapore
Email: [email protected]
Interest: Robotika, Networking
Quote: “Impossible is nothing!”
249
Nama: M Nanda Kurniawan, S. Kom.
TTL: Depok, 22 Februari 1989
Pekerjaan: Dosen / Staf Akademis
Institusi: Fakultas Ilmu Komputer, Universitas Indonesia
Email: [email protected]
Interest: Robotics, Machine Learning, Computer Vision,
Digital Signal Processing and Ubiquitous Computing
Quote: "When someone ask: what if you fail? I answer: I
just need to believe!"
Nama: Kharda Ahfa, S. Kom.
TTL: Banda Aceh, 23 Desember 1989
Pekerjaan: Asisten Riset
Institusi: Fakultas Ilmu Komputer, Universitas Indonesia
Email: [email protected]
Interest: Artificial Intelligence, Augmented Reality
Quote: Things are only impossible until they are not
250