BAB III PENGEMBANGAN MODUL SIMULATOR BERBASIS PHYSICS ENGINE
3.1
Penempatan Modul Simulator Fisika dalam Kerangka Kerja SIRUPP
Simulator Robot Manipulator Untuk Pembelajaran dan Perancangan (SIRUPP) adalah sebuah aplikasi simulator yang dikembangkan untuk menyimulasikan gerakan robot manipulator. Pengguna SIRUPP ditujukan bagi akademisi dan praktisi yang berkeinginan untuk mempelajari dasar-dasar kinematika dan prinsip gerakan robot manipulator. SIRUPP dikembangkan dengan tujuan diperolehnya sebuah perangkat lunak yang cukup lengkap dan dapat digunakan untuk menyimulasikan gerakan robot manipulator dan perancangan robot manipulator sehingga dapat memudahkan pembelajaran di bidang robotika. SIRUPP dirancang untuk memiliki 5 kemampuan dasar sebagai berikut. 1. SIRUPP dapat melakukan pemodelan robot manipulator berdasar notasi Denavit-Hartenberg. Beberapa model robot manipulator sudah disertakan dalan simulator, antara lain model PUMA 260. 2. SIRUPP dapat melakukan simulasi gerakan robot manipulator yang telah dimodelkan pada dunia virtual physics engine, dan menampilkan visualisasi simulasi tersebut secara 3D. 3. SIRUPP dapat melakukan pengendalian secara langsung ke robot manipulator yang telah dibuat modul antarmukanya , dalam hal ini adalah antarmuka ke robot PUMA 260. 4. SIRUPP dapat melakukan perencanaan gerak pada sebuah lingkungan kerja robot yang mempunyai satu atau lebih obyek penghalang statis. 5. SIRUPP dapat digunakan untuk praktikum robotika virtual dengan memanfaatkan koneksi jaringan LAN. Pada mode ini satu atau lebih pengguna dapat mengendalikan robot pada lokasi yang berbeda. Sebagaimana ditampilkan pada Gambar III.1, SIRUPP terdiri dari 7 subsistem yang mempunyai tugasnya masing-masing.
38
1. Subsistem Pemodelan Subsistem ini bertanggungjawab menangani model robot manipulator, baik yang sudah dibawa SIRUPP secara default, maupun file model baru yang dibuat pengguna, dan menyimulasikan model tersebut dalam dunia virtual. Subsistem ini akan menerjemahkan parameter-parameter DenavitHartenberg dari model robot menjadi sebuah obyek dalam dunia virtual yang dibangun physics engine. Selanjutnya subsistem mengatur jalannya simulasi, seperti memulai dan menghentikan simulasi, dan menangani parameter simulasi fisik, seperti besarnya waktu langkah untuk setiap langkah simulasi fisik. Selain itu subsistem ini juga bertugas menangani data simulasi dan menyimpannya menjadi file data yang dapat dianalisa lebih lanjut. 2. Subsistem Perencanaan Gerak Subsistem ini bertanggungjawab merencanakan lintasan robot untuk menghindari objek
penghalang yang statis dalam lingkungan virtual,
dengan menggunakan algoritma Sequential Search Strategy. 3. Subsistem Visualisasi Subsistem
ini
memanfaatkan
bertugas pustaka
untuk
membuat
OpenSceneGraph
visualisasi yang
3D
dengan
membungkus
API
OpenGL. Data untuk visualisasi diambil dari simulasi yang dilakukan subsistem Pemodelan. Selanjutnya hasil rendering dari subsistem ini akan ditampilkan dalam panel-panel tampilan grafis aplikasi yang ditangani subsistem Antarmuka Pengguna. 4. Subsistem antarmuka ke robot (Subsistem Kendali) Subsistem ini
akan mengambil data dari subsistem Pemodelan untuk
menjalankan robot yang sesungguhnya, dalam hal ini adalah PUMA 206. Subsistem ini akan menangani komunikasi dengan Unit Kendali melalui port serial atau USB. Subsistem ini menggunakan pustaka (library) dari pihak ketiga (jrkerr.com), yang merupakan pembuat chip yang digunakan pada Unit Kendali. Pustaka tersebut berupa file Dynamic Link Library (DLL) yang siap digunakan, bernama NMCLIB.
39
5. Subsistem Antarmuka Pengguna Subsistem ini bertugas menangani tampilan antarmuka pengguna grafis dari aplikasi, meliputi pengaturan window utama aplikasi, menubar, toolbar, statusbar, dan panel-panel dari aplikasi. Subsistem ini juga
menangani masukan dari keyboard dan mouse untuk diberikan ke subsistem-subsistem yang terkait. Konsep antarmuka grafis yang digunakan adalah sebuah window utama dan beberapa panel yang masingmasing dapat ditampilkan atau disembunyikan sesuai kebutuhan. Salah satu panel yang ada adalah panel Visualisasi 3D yang akan menangani hasil rendering OpenGL yang dihasilkan subsistem Visualisasi. 6. Subsistem koneksi jaringan Subsistem ini bertugas menangani proses pengiriman dan penerimaan data dari/ke jaringan Ethernet. Bila aplikasi bertindak sebagai server, subsistem ini akan bertanggungjawab untuk membuat socket server pada port tertentu sesuai yang ditentukan pengguna, dan bersiap menerima koneksi dari klien. Bila
aplikasi
bertindak
sebagai
klien,
subsistem
ini
akan
bertanggungjawab untuk membuat socket klien yang akan menghubungi server pada alamat IP dan port tertentu sesuai yang ditentukan pengguna. Selanjutnya subsistem ini akan menangani pengiriman perintah dan permintaan pengguna ke server dan menampilkan tanggapan dari server kepada pengguna. 7. Subsistem koneksi basis data Subsistem ini bertugas menangani proses akses pada basis data. Basis data digunakan untuk keperluan praktikum virtual dan pencatatan aktivitas pengguna terhadap resource server (data praktikum virtual, koneksi pada robot riil). Sub sistem ini bertanggung jawab untuk melakukan pengambilan data (fetch), pemasukkan data (insert), dan penghapusan data (delete) sesuai dengan permintaan pengguna.
40
Gambar III.1 Diagram blok piranti lunak SIRUPP. Subsistem yang menjadi fokus penelitian ini adalah subsistem Pemodelan dan Simulasi. Subsistem ini akan bekerja erat dengan subsistem Visualisasi 3D dan subsistem AntarMuka Pengguna. Untuk selanjutnya subsistem Pemodelan dan Simulasi beserta subsistem Visualisasi 3D dan bagian subsistem AntarMuka Pengguna yang terkait dengan subsistem Pemodelan dan Simulasi disebut modul simulator. 3.2
Spesifikasi Modul Simulator yang Akan Dikembangkan
Untuk melakukan simulasi robot manipulator pada penelitian ini, maka dibangun sebuah modul simulator fisika berbasis physics engine, yang menjadi bagian dari aplikasi SIRUPP.
Spesifikasi yang harus dipenuhi pada dasarnya merupkan
penjabaran dari use case yang terkait dengan modul simulator fisika. Pada Gambar III.2 ditampilkan diagram use case yang mencakup kasus-kasus penggunaan yang menjadi tanggung jawab modul simulator. Diagram tersebut merupakan cuplikan dari diagram use case SIRUPP secara keseluruhan.
41
Gambar III.2 Diagram use case SIRUPP terkait modul simulator. Modul simulator fisika tersebut akan memiliki kemampuan sebagai berikut. 1. Mampu memodelkan kinematika dari sebuah robot manipulator secara umum, dan robot PUMA 260 secara khusus. Sebagaimana dijelaskan dalam bab sebelumnya, model kinematika robot manipulator, khususnya bentuk geometris robot, biasa dinyatakan dalam notasi D-H, oleh karena itu modul simulator yang dibangun akan menerjemahkan parameter D-H dari robot yang disimulasikan menjadi parameter-parameter model robot yang digunakan modul simulator. 2. Mampu memodelkan parameter-parameter dinamika dari robot manipulator. Dalam hal ini parameter yang akan dimodelkan dibatasi untuk parameter massa link dan friksi pada sendi. 3. Mampu menerjemahkan model robot virtual menjadi obyek robot virtual dalam dunia virtual physics engine. 4. Mampu menggerakkan robot virtual secara manual, artinya masukan sudut target ditentukan langsung pengguna, ataupun secara otomatis, masukan sudut target diambil dari sebuah rencana gerakan. Rencana gerakan ini dapat diperoleh dari memuat isi file teks, maupun dari hasil modul Perencanaan
42
Gerakan, yang merupakan subsistem dari SIRUPP yang dikembangkan anggota tim yang lain. 5. Mampu menyimulasikan kinematika dari robot, baik kinematika maju maupun kinematika balik, dalam dunia virtual physics engine. 6. Mampu menyimulasikan gerakan dari robot ketika diberikan metoda pengendalian tertentu (dinamika robot). Dalam hal ini metoda pengendalian yang disimulasikan adalah profiling kecepatan trapezoidal dengan filter kendali PID. Hasil simulasi dalam dunia virtual physics engine dibandingkan dengan hasil pengambilan data robot riil mempunyai galat sebesar maksimal 5° untuk gerakan sendi sejauh 90°. 7. Mampu menyimpan data hasil simulasi ke dalam file teks untuk analisa lebih lanjut. Data yang disimpan meliputi data posisi sudut sendi robot selama simulasi. 3.3
Penerjemahan Model Robot Manipulator untuk Desain Modul Simulator
3.3.1 Penerjemahan Model Kinematika Berdasar Parameter DenavitHartenberg
Sebagaimana sudah dipaparkan di bab sebelumnya, ada satu karakteristik dari notasi D-H yang perlu diperhatikan, yaitu satu set parameter D-H tidak merujuk pada satu konfigurasi geometris yang unik. Misalnya seperti contoh pada Gambar III.3, maka panjang AB dan panjang CD dapat bervariasi, namun tetap menghasilkan satu set parameter yang sama, seperti pada Tabel III.1, dengan syarat AB-CD = d3. Namun demikian mengingat notasi D-H adalah notasi yang paling umum untuk mendefinisikan bentuk geometri lengan robot, maka simulator yang dibangun akan menggunakan notasi D-H untuk mewakili sebuah model robot manipulator yang disimulasikan.
43
Gambar III.3 Penetapan kerangka koordinat standar untuk PUMA 560[5]. Tabel III.1 Parameter D-H untuk robot PUMA 560 (Gambar III.3). i
αi-1
ai-1
di
θi
1
0
0
0
θ1
2
-90°
0
0
θ2
3
0
a2
d3
θ3
Untuk mengakomodasi kebutuhan simulator supaya satu set parameter D-H dapat diterjemahkan ke dalam sebuah bentuk robot manipulator yang unik, maka ada beberapa hal yang harus diperhatikan sebagai berikut. 1. Seperti disinggung di bab sebelumnya, ada beberapa varian penggunaan parameter D-H. Untuk simulator ini digunakan konvensi yang digunakan Craig (2005). Di mana kerangka koordinat 1 melekat pada sendi 1. Perubahan yang dilakukan adalah bahwa kerangka koordinat 0 dipindah ke dasar robot. Alasan perubahan ini diterangkan di butir selanjutnya.
44
2. Notasi D-H dipilih sedemikian rupa sehingga tidak ada dua kerangka koordinat yang titik awalnya berada pada titik yang sama. Seperti telah dibahas sebelumnya, biasanya notasi D-H dipilih sedemikian rupa supaya perhitungan matrik transformasi homogen paling sederhana. Namun untuk keperluan modul simulator yang dikembangkan, hal tersebut justru dihindari. Cara ini memang akan menyebabkan perhitungan matriks tranformasi lebih rumit, namun akan memudahkan penurunan satu set parameter D-H menjadi sebuah konfigurasi geometris yang unik. Sebagai ilustrasi, Gambar III.4 dan Tabel III.2 menunjukkan modifikasi parameter PUMA 560 sesuai aturan ini.
Gambar III.4 Penetapan kerangka koordinat yang dimodifikasi. Tabel III.2 Parameter D-H untuk robot PUMA 560 yang dimodifikasi. i
αi-1
ai-1
di
θi
1 2 3
0 -90° 0
0 0 a2
0 d2 -d3
θ1 θ2 θ3
Untuk PUMA 260, pada penelitian ini, kerangka koordinat tiap sendi ditetapkan seperti Gambar III.5. Parameter D-H yang digunakan adalah seperti tabel berikut.
45
Tabel III.3 Parameter D-H untuk robot PUMA 260. i
αi
ai (inci)
di (inci)
θi
1 2 3 4 5 6
-90 0 90 -90 90 0
0 8 0 0 0 0
13 -3,2 -2,4 8 0 2,2
θ1 θ2 θ3 θ4 θ5 θ6
θ1 θ2
Z1 Y1 O2 Y2
Z2
O1
θ3
X1 X2
Z3
O3 Y3
X3
θ6
Z6 Y6 O6
θ5 X5
θ4
Gambar III.5 Penetapan kerangka koordinat PUMA 260. Setelah parameter posisi, orientasi dan panjang link serta parameter posisi dan orientasi sendi-sendi diperoleh dengan menerjemahkan nilai parameter D-H, maka robot virtual dibangun di dunia virtual physics engine berdasar parameterparameter tersebut. Pada dasarnya setiap link akan diterjemahkan menjadi sebuah
46
obyek pada dunia virtual, sedangkan setiap sendi diterjemahkan menjadi sebuah sendi virtual. Parameter D-H akan digunakan untuk membentuk matrik transformasi yang akan menentukan posisi awal dari link-link dan sendi-sendi robot virtual. 3.3.2 Penerjemahan Model Dinamika
Pada simulasi fisika yang dilakukan pada physics engine, untuk menggerakkan benda-benda, gaya-gaya atau torsi-torsi diberikan pada benda-benda yang ada dalam dunia virtual. Misalnya pada ODE, terdapat perintah dBodyAddForce dan dBodyAddTorque, masing-masing untuk memberikan gaya dan torsi pada
sebuah benda. Setelah membentuk robot virtual dengan menerjemahkan parameter D-H menjadi link dan sendi robot virtual, untuk menggerakkan link robot virtual, akan diberikan torsi pada link tersebut melalui sendi yang terhubung ke link tersebut. Merujuk fungsi tranfer dari yang menghubungkan torsi dan sudut theta pada Gambar II.7, parameter yang berpengaruh adalah Jeff (momen inersia efektif) dan feff (koefisien gesekan efektif). Pada physics engine ODE, nilai momen inersia link
akan dihitung oleh physics engine berdasar massa benda, bentuk geometris benda, dan pusat massa dari benda terkait. Sedangkan koefisien friksi akan diwakili dalam bentuk nilai friksi sebuah sendi (parameter dParamFMax pada sendi dalam ODE). Terkait massa link robot PUMA, lembar spesifikasi PUMA[18] menyebutkan berat lengan sebesar 6,8 kg, namun tidak menyebutkan berat masing-masing link. Menurut Ahmad Riyad Firdaus (2008), massa link 1 (termasuk link 0) = 3 kg, dan massa link 2 = 1,5 kg, sehingga massa link 3 dan bagian pergelangan = 2,3 kg. Nilai-nilai inilah yang akan digunakan pada model robot virtual PUMA 260. 3.4
Desain Modul Simulator Fisika
Seperti disebutkan di subbab 3.1, modul simulator mencakup subsistem Pemodelan dan Simulasi beserta subsistem Visualisasi 3D dan bagian-bagian
47
subsistem AntarMuka Pengguna yang terkait. Diagram blok dari modul simulator dapat dilihat di Gambar III.6.Selanjutnya akan dipaparkan desain masing-masing subsistem yang menjadi bagian dari modul simulator.
Gambar III.6 Diagram blok modul simulator secara umum. 3.4.1 Desain Subsistem Pemodelan dan Simulasi
Subsistem ini sebenarnya dapat dibagi menjadi dua bagian, yaitu bagian Pemodelan dan bagian Simulasi. Pada desain aplikasi, dua bagian tersebut digabungkan dalam satu subsistem mengingat hubungan yang sangat erat antara keduanya. Bagian Pemodelan bertanggung jawab untuk menangani model robot yang disimulasikan dan juga model obyek-obyek yang ada di lingkungan robot. Melalui antarmuka yang berada di bawah subsistem Antarmuka Pengguna, pengguna dapat memasukkan, memeriksa, ataupun dan mengubah parameterparameter robot dan obyek lingkungan yang dikelola bagian Pemodelan dari subsistem ini. Juga menjadi tanggung jawab bagian Pemodelan adalah proses memuat dan menyimpan model robot dan juga obyek lingkungan dari dan ke dalam file teks yang menggunakan format XML. Untuk menangani tugas-tugas tersebut didesain kelas srRobotModel, untuk menangani pemodelan robot, dan kelas srSimEnv, untuk menangani pemodelan obyek-obyek di lingkungan robot. Sedangkan bagian Simulasi bertanggung jawab atas proses simulasi robot virtual dalam dunia virtual. Mesin simulator yang menjadi inti dari bagian ini, dan juga merupakan inti dari Modul Simulator SIRUPP, akan menggunakan pustaka Open Dynamics Engine (ODE). ODE adalah sebuah pustaka API C/C++ open source
48
dengan unjuk kerja tinggi untuk mensimulasikan dinamika rigid body. ODE mempunyai banyak fitur yang stabil dan matang,
serta independen terhadap
platform. ODE memiliki jenis-jenis sendi tingkat lanjut dan deteksi tabrakan yang
terintegrasi
dengan
memperhitungkan
gesekan.
ODE
berguna
untuk
mensimulasikan wahana (vehicle), obyek pada lingkungan realitas virtual maupun makhluk virtual. Pustaka ini banyak digunakan pada berbagai game komputer, perangkat lunak desain 3D dan perangkat lunak simulasi. Untuk dapat menyimulasikan sebuah robot manipulator, maka subsistem ini akan menerjemahkan model robot yang ada menjadi sebuah robot virtual dalam dunia physics engine. Secara garis besar, setiap link dari robot akan diterjemahkan
menjadi sebuah benda tegar (rigid body) dalam dunia virtual. Sedangkan sendi pada robot akan diterjemahkan menjadi sendi engsel (hinge) dalam dunia virtual physics engine. Untuk menangani proses penerjemahan ini didesain kelas
srODEWorld.
Gambar III.7 Sendi engsel (hinge) pada ODE[13]. Termasuk dalam subsistem ini adalah implementasi dari pengendali robot virtual. Pengendali virtual akan melakukan tindakan pengendalian setiap langkah simulasi dijalankan. Pada prinsipnya pengendali virtual akan membaca set point sudut dan sudut aktual dari robot virtual, melakukan perhitungan sesuai dengan strategi pengendalian yang dipakai, dan selanjutnya memanipulasi robot virtual berdasar keluaran perhitungan tersebut. Ada dua buah pengendali virtual yang didesain, yaitu pengendali PID dasar dan pengendali profiling kecepatan trapezoidal.
49
Subsistem ini juga bertanggung jawab untuk mengatur jalannya simulasi, seperti memulai dan menghentikan simulasi, dan menangani parameter simulasi fisika, seperti besarnya waktu langkah untuk setiap langkah simulasi fisik. Untuk menangani tugas koordinasi ini kelas SimManager didesain. Bersama kelas srFrame, kelas ini akan merupakan kelas terpenting dalam modul simulator, seperti bisa dilihat pada Gambar III.9. Pada prakteknya, untuk menangani loop simulasi, SimManager akan menyerahkan tugas tersebut pada kelas srThread. Apa yang dilakukan srThread setiap loop simulasi dapat dilihat di Gambar III.8. SimManager yang akan membuat instans kelas srThread, memulai thread, mempause, atau menghentikan thread.
Selain itu subsistem ini juga bertugas menangani data simulasi dan menyimpannya menjadi file data yang dapat dianalisa lebih lanjut. Data simulasi akan berisi nilai sudut theta set point, theta robot virtual, dan theta robot riil selama simulasi berjalan. Data sudut theta robot riil hanya akan ada bila robot riil terhubung ke simulasi. Sedangkan pada saat robot riil tidak terhubung, theta robot riil akan bernilai 0. Data akan diambil setiap langkah simulasi yang secara default lamanya 50 milidetik. Dengan demikian setiap detik akan diperoleh data sebanyak 20 sample data, bila waktu langkah simulasi menggunakan nilai default. Pada saat sebuah simulasi berakhir, data simulasi akan dituliskan ke dalam file teks. Untuk menangani penyimpanan data simulasi ini, didesain kelas PhySimData.
50
mulai
inisialisasi srThread periksa sinkronisasi waktu riil dan waktu virtual bila diperlukan periksa gerakan selanjutnya bila simulasi berada dalam mode otomatis jalankan strategi pengendalian virtual (panggil metoda kelas pengendali virtual) langkahkan waktu dalam dunia virtual physics engine update panel UI yang diperlukan (visualisasi 3D tidak di-update di sini) sleep untuk n milidetik
tidak
selesai ? ya selesai
Gambar III.8 Loop simulasi yang dijalankan srThread. 3.4.2 Desain Subsistem Visualisasi
Visualisasi 3D akan menggunakan API OpenGL. OpenGL dipilih karena fungsifungsi yang disediakan oleh OpenGL cukup lengkap dan bersifat open sehingga sudah banyak digunakan oleh pengembang/peneliti untuk manipulasi grafis. OpenGL (Open Graphics Library) adalah spesifikasi standar yang mendefinisikan sebuah API yang cross-platform dan cross-language untuk menulis aplikasi grafis
51
komputer 2D dan 3D. Antarmuka yang dimiliki OpenGL mempunyai lebih dari 250 fungsi yang berbeda yang dapat digunakan untuk menggambar lingkungan 3 dimensi yang kompleks. OpenGL dikembangkan oleh Silicon Graphics Inc. (SGI) sejak 1992 dan digunakan secara luas pada CAD, realitas virtual, visualisasi sains, visualisasi informasi, dan simulasi penerbangan. OpenGL juga digunakan pada game, di mana OpenGL bersaing dengan Direct3D pada platform MS Windows. Untuk pengembangan subsistem Visualisasi, API OpenGL tidak akan diakses secara langsung, namun akan menggunakan OpenSceneGraph yang membungkus API OpenGL. Penggunaan OpenSceneGraph memudahkan pembuatan obyek 3D karena mendukung berbagai fitur lanjutan seperti pemberian tekstur dan pencahayaan pada obyek 3D, sesuatu yang relatif rumit dilakukan bila menggunakan API OpenGL secara langsung. Subsistem ini akan mengambil data untuk visualisasi subsistem Pemodelan dan Simulasi. Selanjutnya hasil rendering 3D dari subsistem ini akan ditampilkan dalam panel visualisasi di bawah koordinasi subsistem antarmuka pengguna. 3.4.3 Desain Subsistem Antarmuka Pengguna
Subsistem antarmuka menjadi bagian yang krusial dan menjadi perhatian sejak awal pengembangan SIRUPP, mengingat subsistem ini akan akan berhubungan dengan beberapa subsistem yang dikembangkan anggota tim yang berbeda. Selain itu subsistem ini juga menjadi dasar dari framework dari aplikasi. Ketika pertama kali dijalankan, aplikasi SIRUPP akan menginisialisasi sebuah window utama dari aplikasi SIRUPP yang menjadi induk dari panel-panel dan dialog-dialog menjadi antarmuka subsistem-subsistem lain. Penggunaan paradigma pemrograman berorientasi obyek dan penetapan batas-batas tanggung jawab dan wewenang yang jelas memungkinkan anggota tim untuk mengembangkan antarmuka pengguna sesuai dengan kebutuhannya masing-masing. Pemilihan pustaka wxWidgets sebagai dasar pembangunan antarmuka pengguna juga membantu pengembangan antarmuka secara cepat, karena banyaknya widgets siap pakai yang sudah disediakan pustaka ini.
52
Terkait dengan modul simulator, ada beberapa antarmuka yang dibutuhkan untuk menangani
masukan
manipulator dan
pengguna untuk
parameter-parameter
model robot
menampilkan parameter-parameter yang sudah dimasukkan.
Selain itu juga diperlukan antarmuka untuk mengatur jalannya simulasi dan mengatur tampilan visualisasi 3D. Masing-masing antarmuka diwujudkan dalam panel-panel yang masing-masing diimplementasikan dalam kelas-kelas tersendiri yang akan dipaparkan di bagian berikutnya. 3.4.4 Desain Kelas-Kelas
Selanjutnya setiap subsistem akan diwujudkan dalam sekumpulan kelas-kelas sebagai berikut. 1. Subsistem Pemodelan dan Simulasi, akan diwujudkan dalam
14
kelas
utama berikut. a. SimManager, adalah kelas yang bertugas mengoordinasi jalannya simulasi dan visualisasi. b. PhySimConfig, adalah kelas yang berisi parameter-parameter dari simulasi. c. srThread, adalah kelas yang mewakili thread yang bertugas menjalankan simulasi yang diatur instans kelas SimManager, yaitu melangkahkan waktu virtual di dunia enjin fisik. d. srRobotProto, adalah kelas dasar yang mewakili robot manipulator yang terdiri dari beberapa sendi (srJoint) yang dihubungkan dengan link (srLink). e. srRobotModel, adalah kelas yang mewakili robot yang disimulasikan dalam SIRUPP. Kelas ini diturunkan dari kelas srRobotProto. f. srRobotReal, adalah kelas yang mewakili robot sesungguhnya yang dikendalikan SIRUPP melalui kelas RoboController. Kelas ini diturunkan dari kelas srRobotProto. g. srJoint, adalah kelas yang mewakili sendi-sendi yang menghubungkan link-link pada robot manipulator.
53
h. srLink, adalah kelas yang mewakili link yang membentuk sebuah robot manipulator. i. srSimEnv, adalah kelas yang mewakili lingkungan di mana robot yang disimulasikan berada, berisi antara lain definisi obyek-obyek yang ada di lingkungan. j. srODEWorld, adalah kelas yang mewakili dunia physics engine ODE. k. PhyObject, adalah kelas dasar untuk mewakili obyek pada physics engine ODE. l. VroboController, adalah kelas yang mewakili metoda pengendalian robot virtual pada dunia physics engine srOdeWorld. m. PhySimData, adalah kelas yang menangani data simulasi, terdiri dari beberapa instans kelas srJointData n. srJointData, adalah kelas yang menyimpan data sendi yang diperoleh selama simulasi robot, instans kelas ini menjadi anggota dari kelas PhySimData 2. Subsistem Visualisasi, akan mempunyai 2 kelas utama, yaitu : a. srOSGCanvas, adalah kelas yang bertugas menampilkan hasil rendering dari osgViewer::Viewer pada sebuah panel dari pustaka wxWidgets b. srOSGScene, adalah kelas yang membungkus osg::Group yang berisi node-node yang akan ditampilkan pada viewer OpenSceneGraph 3. Beberapa kelas yang menjadi bagian dari subsistem Antarmuka Pengguna yang terkait dengan subsistem Pemodelan dan Simulasi, adalah : a. srFrame, adalah kelas yang merepresentasikan window teratas dari aplikasi SIRUPP. b. srPnlAngle, adalah panel yang menampilkan sudut sendi (theta) dari model robot yang disimulasikan c. srPnlEffector, adalah panel yang menampilkan posisi efektor akhir dari lengan robot d. srPnlModel, adalah panel yang menampilkan pengaturan model robot dan deskripsi obyek-obyek lingkungan kerja robot yang sedang dimuat aplikasi
54
e. srPnlPoV, adalah panel yang menampilkan pengaturan sudut pandang dari visualisasi 3D. f. srPnlSimSet, adalah panel yang menampilkan pengaturan parameterparameter pengendalian dan simulasi fisika. 4. Kelas lain yang terkait, adalah : a. SiruppApp, adalah kelas utama yang mewakili aplikasi SIRUPP. Ketika aplikasi dijalankan, kelas inilah yang diinisialisasi paling awal, dan kelas ini pula yang terakhir di-destroy ketika aplikasi dimatikan. b. RoboController, adalah kelas yang menangani koneksi ke Unit Kendali yang mengendalikan robot riil. Kerjasama dari kelas-kelas yang paling penting ditampilkan pada Gambar III.9.
Gambar III.9 Diagram kerjasama kelas-kelas modul simulator. 3.5
Implementasi Modul Simulator Berbasis Physics Engine
3.5.1 Implementasi Subsistem Pemodelan dan Simulasi
Sebagaimana dipaparkan di atas, subsistem ini diimplementasikan dalam kelaskelas. Diagram kelas dari kelas-kelas terpenting ditampilkan pada gambar berikut. Pada gambar tersebut, tidak semua anggota dari kelas-kelas tersebut ditampilkan.
55
Gambar III.10 Diagram kelas SimManager, srRobotModel dan srODEWorld. .
56
Setelah subsistem ini diimplementasikan, selanjutnya dilakukan pengujian awal untuk mengetahui besarnya langkah waktu yang tepat untuk simulasi. ODE menyediakan dua jenis fungsi untuk melangkahkan waktu dalam dunia virtual sebagai berikut. -
void
dWorldStep
(dWorldID,
dReal
stepsize),
fungsi ini
menggunakan metoda “matrik besar” yang memakan waktu dengan orde m3 dan memori dengan orde m2, dengan m adalah banyaknya baris constraint. Untuk sistem yang besar, fungsi ini akan memakan banyak memori dan sangat lambat, namun saat ini merupakan fungsi yang paling akurat. -
void dWorldQuickStep (dWorldID, dReal stepsize), fungsi ini
menggunakan metoda iteratif yang memakan waktu dengan orde m*N dan memori dengan orde m, dengan m adalah banyaknya baris constraint dan N adalah banyaknya iterasi. Untuk sistem besar, jauh lebih cepat dari dWorldStep, namun kurang akurat. Untuk modul simulator yang dibangun, fungsi yang dipakai adalah dWorldStep. Hal tersebut dilakukan karena dari pengujian awal, diketahui bahwa dWorldQuickStep mempunyai masalah dalam menangani friksi pada sendi, satu
hal yang sangat penting dalam menyimulasikan robot manipulator. Dari pengujian, untuk model robot dan obyek lngkungan sederhana, fungsi dWorldStep akan memakan waktu 1-5 milidetik. Namun pengujian juga menunjukkan bahwa satu loop yang dilakukan srThread memakan waktu total berkisar 10-15 milidetik. Selanjutnya dicari sebuah nilai langkah simulasi yang cukup stabil, sehingga jarak tiap langkah simulasi dapat dibuat relatif sama. Dari pengujian diperoleh nilai langkah simulasi yang baik sebesar 50 milidetik. Pemilihan nilai yang lebih kecil dari 50 milidetik cenderung menyebabkan jarak waktu antara satu langkah dengan langkah yang selanjutnya tidak bisa stabil, kadang bisa memenuhi nilai pengaturan, namun lebih sering nilainya jauh di atas dari nilai pengaturan. Pemilihan nilai 50 milidetik yang relatif besar mempertimbangkan ada proses lain yang harus dilakukan aplikasi, seperti visualisasi 3D yang akan dijelaskan pada subbab berikutnya.
57
3.5.2 Implementasi Subsistem Visualisasi
Pada subsistem ini, kelas srOSGScene akan mengambil data dari srRobotModel, srODEWorld,
serta
srSimEnv,
dan
menerjemahkan
obyek-obyek
yang
didefinisikan di kelas-kelas tersebut menjadi obyek-obyek visual. Pengambilan data akan dilakukan seiring langkah simulasi. Dengan demikian obyek-obyek visual dalam srOSGSCene selalu mengikuti perubahan posisi dan orientasi dari obyek yang divisualkan. Untuk menampilkan visualisasinya sendiri, kelas srOSGCanvas akan melakukan rendering dari obyek-obyek visual dalam srOSGScene pada panel wxWidgets.
Proses rendering akan dilakukan pada saat antarmuka idle. Dengan demikian walaupun obyek visual di srOSGScene selalu sinkron dengan obyek yang diwakili, namun proses rendering di antarmuka yang dilihat pengguna tidak sinkron dengan jalannya simulasi. Mekanisme ini dipilih supaya proses jalannya simulasi tidak dibebani proses rendering ke antarmuka pengguna. Pada saat antarmuka aplikasi tidak idle, maka tampilan visual 3D tidak di-render ulang, baru setelah antarmuka idle, maka srOSGCanvas akan me-render ulang data dari srOSGScene.
Gambar III.11 Tampilan visualisasi 3D.
58
Seperti ditampilkan pada gambar di atas, selain bentuk geometris robot divisualisasikan, kerangka sistem koordinat untuk masing-masing link,
yang
merujuk ke konvensi D-H, ditampilkan untuk memudahkan pengguna memahami hubungan parameter D-H yang dimasukkan dengan bentuk geometris robot. Hal tersebut terkait dengan fungsi SIRUPP sebagai sebuah aplikasi untuk pembelajaran. 3.5.3 Implementasi Subsistem Antarmuka Pengguna
Untuk memungkinkan pengguna mengakses subsistem Pemodelan dan Simulasi yang telah dikembangkan di atas, diperlukan antarmuka yang memungkinkan pengguna memasukkan dan mengubah paramater pemodelan robot, serta mengatur jalannya simulasi. Berikut adalah tampilan dari window utama dan panel-panel yang terkait dengan modul simulator.
tombol-tombol untuk memulai./ menghentikan simulasi panel sudut (srPnlAngle) panel posisi efektor akhir (srPnlEffector) panel pemodelan (srPnlModel)
Gambar III.12 Tampilan window utama SIRUPP. Window utama yang ditampilkan di atas merupakan window yang langsung
terbuka ketika SIRUPP dijalankan. Secara default, panel yang akan langsung ditampilkan adalah panel Sudut Sendi, panel Efektor Akhir, dan panel Log.
59
Gambar III.13 Panel pengaturan model robot : parameter D-H. Panel Model Robot (Gambar III.13) di atas dapat ditampilkan dengan memilih menu Pengaturan Pengaturan model robot. Mengingat banyaknya parameter yang terlibat, maka digunakan widget notebook yang mempunyai beberapa halaman. Gambar III.13 menunjukkan halaman Parameter D-H sedang aktif. Pada halaman ini pengguna dapat memasukkan banyaknya (cacah) link dari robot yang akan disimulasikan, serta nilai-nilai parameter-parameter D-H. Perubahan yang dilakukan dapat disimpan ke dalam file model dengan memilih menu File Simpan File.
Gambar III.14 Panel pengaturan model robot : parameter link. Gambar III.14 menampilkan halaman Parameter Link pada panel Model Robot sedang aktif. Pada halaman ini pengguna dapat memasukkan bentuk geometri,
60
massa, dan ukuran dari masing-masing link. Parameter panjang tidak dapat diubah karena panjang link akan mengikuti parameter D-H.
Gambar III.15 Panel pengaturan model robot : parameter sendi. Gambar III.15 menampilkan halaman Parameter Sendi pada panel Model Robot sedang aktif. Pada halaman ini pengguna dapat memasukkan batasan sudut, dan friksi dari sendi robot virtual. Di sini pengguna juga bisa mengubah parameter terkait pengendalian robot virtual, yaitu kecepatan, percepatan, dan kecepatan maksimal dari gerakan sendi robot virtual.
Gambar III.16 Panel pengaturan model robot : posisi dan orientasi robot. Gambar III.16 menampilkan halaman Parameter Robot pada panel Model Robot sedang aktif. Pada halaman ini pengguna dapat memasukkan posisi kaki (base) dari robot dan orientasi kaki robot virtual.
61
Gambar III.17 Panel pengaturan obyek lingkungan. Gambar III.17 menampilkan panel Obyek Lingkungan. Panel ini menampilkan model dari obyek-obyek yang ada di lingkungan virtual robot. Untuk saat ini, fasilitas pengubahan dan penyimpanan belum diimplementasikan pada panel tersebut. Pada panel ini, pengguna bisa memuat file lingkungan dengan format .xml yang sudah dibuat dengan editor teks.
Gambar III.18 Panel pengaturan sudut sendi. Gambar III.18 menampilkan panel Sudut Sendi. Pada panel ini pengguna dapat memasukkan target sendi robot yang diinginkan saat simulasi berjalan. Kotak-
62
kotak di sebelah kanan dengan warna latar biru muda menunjukkan posisi aktual dari sudut sendi robot virtual pada saat itu.
Gambar III.19 Panel pengaturan posisi efektor akhir. Gambar III.19 menampilkan panel Efektor Akhir. Saat simulasi berjalan, pada panel ini pengguna dapat memasukkan target posisi efektor akhir robot. Subsistem pemodelan kemudian akan menghitung sudut-sudut target dari robot (kinematika balik) dan menerapkan sudut-sudut tersebut. Kotak-kotak di sebelah kanan dengan warna latar biru muda menunjukkan posisi aktual dari efektor akhir robot pada saat itu.
Gambar III.20 Panel pengaturan simulasi. Gambar III.20 menampilkan panel Pengaturan Simulasi. Pada panel ini pengguna dapat mengatur parameter pengendalian yang digunakan. 3.5.4 Integrasi Dengan Subsistem Kendali
Integrasi modul simulator dengan subsistem Kendali perlu dibahas tersendiri, mengingat kaitan yang cukup erat antara modul Simulator dengan subsistem
63
Kendali. Merujuk diagram Use Case SIRUPP pada Gambar III.2, ketika aplikasi melakukan simulasi, baik secara manual maupun otomatis, dimungkinkan untuk menghubungkan gerakan robot virtual dengan robot riil. Saat robot riil dihubungkan dengan robot virtual, maka robot riil akan melakukan gerakan yang sama dengan gerakan yang diperintahkan pada robot virtual. Untuk memungkinkan hal tersebut, maka dibangun sebuah antarmuka untuk menginisialisasi dan melakukan kalibrasi posisi sendi robot riil, sebelum menghubungkan robot riil dengan robot virtual. Implementasi dialog Robot Riil ditampilkan pada Gambar III.21.
Gambar III.21 Dialog untuk mengatur koneksi ke robot riil. 3.5.5 Integrasi dengan Subsistem-subsistem Lain dalam Framework SIRUPP
Hubungan
modul simulator dengan subsistem Jaringan dan subsistem
Perencanaan Gerak, terutama berkaitan dengan mode Simulasi Otomatis. Pada dasarnya hubungan tersebut mengenai penggunaan kelas srMotionPlan oleh subsistem Jaringan dan subsistem Perencanaan Gerak. Ketika aplikasi SIRUPP bertindak sebagai server pada penggunaan SIRUPP untuk klien-server, maka subsistem Jaringan memegang peranan terbesar pada aplikasi SIRUPP. Ketika sebuah klien menggerakkan robot dengan mengirim perintah ke server, maka server akan langsung berkomunikasi dengan subsistem Kendali.
64
Namun bila pengguna di sisi klien menginginkan untuk menggerakkan robot riil dalam satu rangkaian gerakan, maka klien akan menuliskan rencana gerakan tersebut dalam file teks dengan format tertentu, dan kemudian mengirimkan file tersebut ke server. Selanjutnya subsistem Jaringan di sisi server akan meneruskan file tersebut kepada subsistem Pemodelan dan Simulasi, yang akan memuat file tersebut dalam instans srMotionPlan. Untuk memulai rencana gerakan tersebut, subsistem Pemodelan dan Simulasi akan menunggu perintah dari subsistem Jaringan, yang menerima perintah untuk memulai gerakan dari klien. Terkait dengan subsistem Perencanaan Gerak, dari antarmuka pengguna, subsistem Perencanaan Gerak akan menerima titik awal dan titik akhir gerakan robot yang diinginkan pengguna. Dengan memeriksa model robot yang sedang digunakan dan obyek-obyek yang ada di lngkungan robot, maka subsistem ini akan menghitung trayektori gerakan yang mampu menghindari halangan yang ada. Selanjutnya setelah trayektori diperoleh. subsistem ini akan memuat hasil perhitungan ke instans dari srMotionPlan, yang selanjutnya akan digunakan subsistem Pemodelan dan Simulasi untuk menggerakkan robot.
65