Anda di halaman 1dari 38

Dokumen Pengembangan Produk

LAB. SISTEM KENDALI & KOMPUTER, STEI – ITB

LEMBAR SAMPUL DOKUMEN

Judul Dokumen Dokumen Implementasi Produk:


Simulator CABbaGe
Jenis Dokumen IMP (Implementasi Produk)
Catatan: Dokumen ini dikendalikan penyebarannya oleh LSKK, STEI – ITB
Nomor Dokumen IMP-01
Nomor Revisi Versi 01
Nama File B400-virtual surgeryver01.doc
Tanggal Penerbitan 03 - 07 – 2010
Unit Penerbit Tim H2VS (Human Heart Virtual Surgery)
Jumlah Halaman 38 (termasuk lembar sampul ini)

Data Pengusul
Pengusul Nama: Tim H2VS Jabatan: Mahasiswa S2
- Santi Fitri A.S 23208304
- Zakia Lutfiyani 23208316
- Siti Amanah 23208347
- Gina Indriani 23208349
Tanggal: 03 -0 7 - 2010 Tanda-tangan: 
Lembaga: Program Magister Teknik Elektro
Opsi Teknologi Informasi
Bidang Khusus Teknologi Media Digital and Game

Alamat: Lab. Sistem Kendali & Komputer, Labtek VIII, STEI – ITB
Jl. Ganesha No.10 Bandung
Telepon: Faks: Email:
081385882688 zakia.lutfiyani@gmail.com
DAFTAR ISI

LEMBAR SAMPUL DOKUMEN...................................................................................1


DAFTAR ISI.....................................................................................................................2
DAFTAR GAMBAR........................................................................................................3
DAFTAR TABEL.............................................................................................................4
CATATAN SEJARAH PERBAIKAN DOKUMEN.........................................................5
1. PENGANTAR.........................................................................................................6
1.1 Ringkasan Isi Dokumen..................................................................................6
1.2 Tujuan Penulisan dan Aplikasi Kegiatan........................................................6
1.3 Referensi.........................................................................................................8
1.4 Daftar Singkatan dan Istilah............................................................................8
2. PERANCANGAN UMUM...................................................................................10
2.1 Pendahuluan..................................................................................................10
2.2 Prosedur Implementasi..................................................................................10
2.3 Struktur Implementasi...................................................................................15
2.4 Rencana Pengujian........................................................................................15
3. IMPLEMENTASI SISTEM SIMULASI...............................................................16
3.1 Penyederhanaan Sistem Simulasi.................................................................16
3.2 Implementasi Denyut Jantung ......................................................................17
3.3 Implementasi Tool Movement ......................................................................21
3.4 Implementasi Cutting....................................................................................25
3.5 Implementasi Bleeding..................................................................................34
4. IKHTISAR IMPLEMENTASI..............................................................................37
4.1 Ikhtisar Implementasi....................................................................................37
4.2 Permasalahan................................................................................................38
DAFTAR GAMBAR

Gambar 1 Antar muka SOFA untuk obyek jantung.........................................................19


Gambar 2 Obyek jantung dilihat dari beberapa model....................................................20
Gambar 3 Simulasi gerak pada SOFA............................................................................23
Gambar 4 Simulasi gerak pada simulator CABbaGe......................................................24
Gambar 5 Flowchart program utama..............................................................................26
Gambar 6 Scene graph untuk simulasi pemotongan pembuluh darah............................ 29
Gambar 7 Tampilan simulasi sebelum pemotongan....................................................... 31
Gambar 8 Tampilan simulasi ketika terjadi pemotongan................................................31
Gambar 9 Tampilan simulasi setelah pemotongan..........................................................32
Gambar 10 Trayektori pergerakan pisau......................................................................... 32
Gambar 11 Collision model dari pisau adalah sphere model........................................... 33
Gambar 12 Garis-garis putih merupakan vektor-vektor normal segitiga........................33
Gambar 13 Scene Graph lengkap....................................................................................35
Gambar 14 Scene Graph khusus node Blood..................................................................36
DAFTAR TABEL

Tabel 1-1 Daftar singkatan dan istilah.................................................................................9


Tabel 2 Ikhtisar Implementasi...........................................................................................37
CATATAN SEJARAH PERBAIKAN DOKUMEN

VERSI, TGL, OLEH PERBAIKAN


1.0, 03 Juli 2010, Tim H2VS Draft pertama
1. PENGANTAR
1.1 Ringkasan Isi Dokumen
Dokumen ini terdiri dari beberapa bab yaitu bab Pengantar, Spesifikasi Perangkat
Keras, Spesifikasi Rancangan Sistem, dan Penutup. Penjelasan ringkasan isi masing-
masing bab tersebut adalah sebagai berikut:

1. Bab Pengantar berisi penjelasan mengenai ringkasan isi dokumen, tujuan


penulisan dan aplikasi/kegunaan dokumen, referensi, dan daftar singkatan.
Bab ini bertujuan untuk memudahkan pemanfaatan dokumen ini.
2. Bab Spesifikasi Perangkat Keras
3. Bab Spesifikasi Rancangan Sistem berisi sub-bab Rancangan Fungsional
Sistem, Rancangan Struktural Sistem, Rancangan Behavioral Sistem,
Rancangan Sub-sistem, Rancangan Data, Rancangan Versi Aplikasi, dan
Rancangan Antarmuka Pengguna.
4. Bab Penutup berisi beberapa catatan dan kesimpulan dari uraian-uraian yang
telah disampaikan pada bab-bab sebelumnya.

1.2 Tujuan Penulisan dan Aplikasi Kegiatan


Tujuan penulisan dokumen ini secara umum adalah untuk mendokumentasikan
tahap perancangan rinci sistem (system detail design) simulator bedah jantung
koroner (Simulator CABbaGe) yang sedang dikembangkan oleh kelompok Human
Heart Virtual Surgery (Tim H2VS). Dokumentasi yang dilakukan pada tahap ini juga
merupakan dokumentasi terakhir dari satu set kegiatan dokumentasi pengembangan
prototipe produk1.

Tahap system design merupakan merupakan tahap awal dari fase sintesis dalam
siklus hidup pengembangan produk (product development life cycle). Tahap ini
disebut sebagai tahap awal fase sintesis karena sejak di tahap ini sudah mulai
digunakan pendekatan bottom up, yaitu memanfaatkan semua rincian persyaratan
dan kebutuhan yang telah dispesifikasikan pada tahap analisis sebelumnya untuk
1
Penjelasan mengenai prototipe produk ini pernah diuraikan pada dokumen B100
membentuk suatu sistem CABbaGe yang utuh. Domain yang digunakan di tahap ini
bukan lagi domain bisnis (business domain) yang menggunakan sudut pandang
pengguna (user), namun telah masuk ke domain aplikasi (application domain) yang
menggunakan sudut pandang pengembang (developer) aplikasi.

Seperti yang telah disampaikan sebelumnya, Simulator CABbaGe merupakan


simulator berbasis perangkat lunak, sehingga sebagian besar kegiatan dokumentasi
di tahap ini mendokumentasi pemodelan sistem dengan mengikuti runtun kegiatan
perancangan perangkat lunak/aplikasi (software/application design).

Secara lebih khusus, tujuan penulisan dokumen ini adalah untuk


mendokumentasikan:

1. Rincian rancangan perangkat keras sistem Simulator CABbaGe;


2. Deskripsi dan pemodelan rancangan aplikasi Simulator CABbaGe yang
berbasis perangkat lunak, meliputi:
a. pemodelan fungsional sistem Simulator CABbaGe,
b. pemodelan struktural (struktur statis) sistem Simulator CABbaGe,
dan
c. pemodelan behavioral (kondisi dinamis) sistem Simulator CABbaGe;
2. Mendefinisikan dan mendeskripsikan spesifikasi perangkat keras yang
dibutuhkan dalam pengembangan sistem Simulator CABbaGe;
3. Rincian rancangan antarmuka sistem Simulator CABbaGe, baik antarmuka
antara perangkat keras dengan perangkat lunak sistem, maupun antarmuka
perangkat lunak antar sub-sistem;
4. Deskripsi dan pemodelan spesifikasi data yang diterima, diolah, disimpan,
dan dikeluarkan oleh produk Simulator CABbaGe; dan
5. Simpulan hasil perancangan produk Simulator CABbaGe dan menjadi acuan
bagi tahap implementasi dalam siklus hidup pengembangan sistem Simulator
CABbaGe.

Pendeskripsian dan pemodelan rancangan sistem Simulator CABbaGe dalam


dokumen ini diharapkan dapat memperjelas konsep produk Simulator CABbaGe
yang telah direncanakan dan dispesifikasikan kebutuhan serta persyaratannya di
tahap-tahap sebelumnya. Melalui deskripsi dan pemodelan yang jelas tersebut,
diharapkan nantinya implementasi pengembangan dapat terarah dan dilakukan
dengan pemahaman yang seragam, dan jika ada perbaikan atau penyempurnaan
dapat dilakukan dengan lebih mudah.

1.3 Referensi
[1] Tim H2VS, B100-virtual surgeryver02.doc, LSKK-ITB, 2009
[2] Tim H2VS, B200-virtual surgeryver01.doc, LSKK-ITB, 2009
[3] Tim H2VS, B300-virtual surgeryver01.doc, LSKK-ITB, 2010
[4] G. Sparks, The Use Case Model, UML Case Tool by Sparks System, 2000
[5] Malan, Ruth, and Bredmeyer, Dana, Functional Requirement and Use Cases.
Hewlett Packard Company, Bredmeyer Consulting,
http://www.digilife.be/quick references/PT/ Functional%20Requirements
%20and%20Use%20Cases.pdf, 2008
[6] http://www.ambysoft.com/essays/userInterfaceDesign.html, diakses tanggal 2
Juli 2007
[7] Fishwick, Paul A., Computer Simulation: The Art and Science of Digital World
Construction, http://www.cis.ufl.edu/~fishwick/introsim/paper.html, 28 Juni
2008
[8] Anonymous, http://www.ist.ucf.edu/background.htm, diakses tanggal 21 juni
2008

1.4 Daftar Singkatan dan Istilah


Berikut adalah daftar kepanjangan atau arti dari singkatan-singkatan atau istilah-
istilah yang terdapat dalam dokumen ini.

Tabel 1-1 Daftar singkatan dan istilah


SINGKATAN/ KEPANJANGAN/
ISTILAH ARTI
Simulator Simulator bedah jantung koroner (Coronary Artery Bypass
CABbaGe Grafting)
SOFA Simulation Open Framework Architecture
3D 3 Dimensi
H2VS Human Heart Virtual Surgery
Modul bagian dari sub sistem
DOF Degree of Freedom
SPH Smoothed Particle Hydrodynamics
Toolbar tempat peletakkan tombol
GUI Graphical User Interface, bagian yang berhubungan dengan
pengguna secara langsung yang berupa tampilan grafis
USB Universal Serial Bus
CPU Central Processor Unit
2. PERANCANGAN UMUM
2.1 Pendahuluan
Pada dokumen B200 sebelumnya telah diuraikan entitas-entitas yang terlibat dalam
aplikasi Simulator CABbaGe. Pada B300, entitas-entitas tersebut diterjemahkan
menjadi objek-objek virtual yang akan diimplementasikan dalam bentuk program
pada tahap ini. Selain itu, pada dokumen B300 juga telah didefinisikan atribut dan
perilaku setiap entitas, serta relasi entitas tersebut dengan entitas-entitas lainnya.

Berangkat dari skenario setiap fungsi dasar yang terdapat di bagian Rancangan
Fungsional di B300, dan dari karakteristik entitas-entitas sistem yang terdapat di
bagian Rancangan Struktural di dokumen yang sama, pada tahap ini
diimplementasikan behavior/perilaku dinamis entitas-entitas tersebut yang
tergabung dalam beberapa modul sistem Simulator CABbaGe. Selain itu juga akan
disampaikan rencana pengujian dan hasil pengujian untuk modul tersebut.

2.2 Prosedur Implementasi

Macam Data
Rancangan Data yang digunakan antara lain :
1. Data konfigurasi simulasi, didapat setelah pengguna melakukan setting
konfigurasi simulasi yang akan dijalankan. Data ini meliputi data konfigurasi
yang ingin dijalankan, termasuk data setting metoda yang akan disimulasikan.
Jika pengguna tidak menset konfigurasi, sistem akan menggunakan konfigurasi
default mulai simulasi pada menu latihan dan metoda pembedahan yang akan
dijalankan adalah off-pump.
2. Data tindakan dari pengguna terhadap setiap kasus yang dihadapi, dapat berupa
instruksi perubahan obyek posisi X, Y, Z maupun parameter-parameter medis
yang kemudian divisualisasikan.
3. Data respon sistem terhadap tindakan yang diberikan oleh pengguna,
berdasarkan alasan medis, ataupun matematika fisika.
List Environtment
Pada bagian ini didaftar semua environtment yang mungkin dibutuhkan dan
dikembangkan untuk dipertimbangkan dalam manajemen kompleksitas. Artinya,
dalam implementasinya dapat lebih disederhanakan sesuai dengan kebutuhan.
Virtual Environment pada aplikasi Simulator CABbaGe
- Ruangan dilengkapi AC atau kipas angin
- Bed (Tempat Tidur) yang digunakan oleh pasien pada proses pembedahan
- Kursi untuk operator
- Pasien yang akan dibedah
- Dokter bedah jantung atau calon dokter bedah jantung
- Tiang infus
- Tensimeter dan stetoskop binaural
- Lampu sorot yang dapat diatur (fleksibel)
- Tempat Sampah
- Tangan Penolong Pembedahan
- Alat-alat pembedahan (klem penjepit, pisau bedah, gunting, sterna shaw,
jarum suntik, pinset, kapas, alcohol 70 %, waskom, alat injeksi, , infuse, lap,
benang, kain penutup/duk, baju ganti pasien, baju steril, oksigen)
Keterangan: model 3D dibuat dengan 3DSMax

Entitas jantung sebelum pembedahan :


- Pada metoda on-pump, jantung tidak berdenyut dan fungsi jantung
digantikan oleh mesin
- Pada metoda off-pump, jantung berdenyut dan fungsi jantung tidak
digantikan oleh mesin

Entitas pembuluh darah sebelum pembedahan :


- Darah mengalir dalam pembuluh darah
- Pembuluh darah dalam keadaaan utuh
Entitas jantung setelah pembedahan :
- Pada metoda on-pump, fungsi jantung dikembalikan normal
- Pada metoda off-pump, fungsi jantung tetap seperti fungsi jantung sebelum
pembedahan

Entitas pembuluh darah setelah pembedahan :


- Keluar darah segar
- Pembuluh darah dalam keadaan terpotong akibat pembedahan
Keterangan : perlu fluid modelling & partikel

Skenario Aplikasi Simulator CABbaGe

Organ jantung (detak dan perubahan bentuk organ) serta pembuluh darah
dimodelkan dan dipresentasikan kepada user melalui tampilan-tampilan grafis dan
audio. Representasi berupa visualisasi ini tidak hanya dalam bentuk objek tiga
dimensi, namun juga diharapkan dapat mewakili karakteristik alami organ jantung,
dalam hal ini sistem pembedahan jantung.

Interaksi pengguna dengan model visual jantung (misal, pengirisan obyek, tusukan
jarum, dan pemotongan obyek) jika tidak dapat secara default diwakili oleh
penggunaan perangkat mouse, keyboard, ataupun joystick, akan diwakilkan pada
tampilan grafis dan suara (atau audio visual keluaran).

Untuk mengatasi hal ini, dengan teknologi komputer, ditawarkan suatu alternatif
bagi pembelajaran pembedahan secara virtual yang disebut dengan Virtual Surgery.
Untuk keperluan tersebut, dirancanglah sebuah aplikasi simulasi yang dinamakan
Simulator CABbaGe.  

Pada awalnya tim Human Heart Virtual Surgery (H2VS) berencana membuat suatu
aplikasi pembelajaran (e-learning) 3 dimensi dalam bentuk simulator. Simulator
CABbaGe (simulator bedah jantung koroner) ini secara umum merupakan teknik
virtual reality yang mensimulasikan prosedur pembedahan, yang membantu ahli
bedah memperbaiki rencana pembedahan dan berlatih proses pembedahan  dengan
model 3D. Hasil simulator pembedahan dapat dievaluasi sebelum pembedahan
dilakukan terhadap pasien sebenarnya. Ini akan membantu ahli bedah memperoleh
gambaran yang jelas terhadap hasil pembedahan. Jika ahli bedah menemukan
beberapa kesalahan, ia akan dapat memperbaikinya dengan mengulangi prosedur
pembedahan berkali-kali sampai menghasilkan hasil akhir yang sesuai dengan
parameter hasil pembedahan yang baik. Ahli bedah juga dapat mengamati anatomi
dari berbagai sudut.  

Adapun ide awal perancangan simulator CABbaGe memiliki skenario seperti


berikut ini.

1. Tahapan awal
 Masuk aplikasi.
 Pemilihan konfigurasi (tutorial, latihan, atau ujian).
 Pemilihan metoda (on-pump atau off-pump).
 Pemilihan guider (suara atau teks).
2. Tahapan teknis pembedahan
 Persiapan ruang bedah berikut peralatannya.
 Anestesi pasien.
 Pembelahan jaringan dada, sternum, dan perikardium.
 Pemasangan mesin pompa jantung (on-pump).
 Pemilihan pembuluh vena/arteri dari tangan, kaki, atau mamari.
 Pemotongan pembuluh yang dipilih.
 Pencangkokkan pembuluh yang telah dipilih ke area pembuluh yang
tersumbat.
 Pencabutan mesin pompa jantung.
 Penutupan perikardium, sternum, dan jaringan dada.
3. Tahap akhir
 Penawaran untuk pindah ke konfigurasi ujian, otomatis ditawarkan sistem
kepada user.
 Keluar aplikasi (untuk user yang tidak menginginkan masuk ke konfigurasi
ujian).
Aplikasi ini dibangun menggunakan framework yang dinamakan SOFA, sebuah
framework baru yang mulai dikenalkan pada tahun 2007. Adapun untuk pembuatan
interface dari aplikasi yang dirancang, SOFA dapat dijadikan sebagai library
eksternal yang diintegrasikan pada perangkat lunak pembuat interface. 

Dari ide awal ini, diperlukan banyak perangkat maupun sumber acuan guna
mendukung perancangan tersebut, yang di antaranya adalah ilmu yang komprehensif
tentang pembedahan jantung, perangkat haptic untuk mendukung tahapan teknis
pembedahan, dokumentasi SOFA yang lengkap sebagai sumber acuan pembentuk
simulasi, serta perangkat komputasi yang memadai. Untuk mengatasi hal tersebut,
maka dibuatlah penyederhanaan produk sebagai berikut. 

1. Pemilihan physics engine SOFA sebagai framework pembuatan aplikasi.

2. Tahapan teknis pembedahan

 Pemotongan pembuluh vena/arteri dari tangan, kaki, atau mamari.

 Pencangkokkan pembuluh yang telah dipilih ke area pembuluh yang 


tersumbat.

 
Aplikasi dibatasi dengan tidak melibatkan tahapan teknis yang menyeluruh serta
pembuatan interface aplikasi simulator CABbaGe. Hal ini dilakukan karena sarana
dan prasarana serta waktu pengerjaan produk yang terbatas.  

2.3 Struktur Implementasi


Aplikasi Simulator CABbaGe ini dikembangkan dengan menggunakan SOFA.
Struktur foldernya :
CABbaGe
Bin; berisi executable program
CABbaGe
Debug ; berisi hasil debug file dengan VS-2008
Src; berisi file-file source code yang
dikembangkan.
CommonCode; berisi file-file header dan *.cpp yang secara
umum digunakan oleh SOFA.
Graphics; berisi file-file library, header grafis
SDKs; berisi folder/file-file library, header, .dll dari
SOFA

2.4 Rencana Pengujian


Setiap area test dibagi dalam sub group:
1. Degenerate Cases :
Pengujian yang menyebabkan tidak ada proses yang dilaksanakan
2. Boundary Cases :
Pengujian dengan memberikan nilai-nilai batas dari struktur datanya
3. Non-unique Cases:
Pengujian dengan memberikan data normal
4. Exception cases :
Pengujian yang dilakukan pada situasi yang tidak pernah mungkin terjadi,

3. IMPLEMENTASI SISTEM SIMULASI


3.1 Penyederhanaan Sistem Simulasi
Model merupakan representasi dari sistem nyata yang terdiri atas kumpulan dari
interaksi komponen-komponen yang menerima input dan menghasilkan output
untuk suatu tujuan tertentu. Konseptualisasi model merupakan upaya untuk
membuat representasi dari sistem nyata yang lebih sederhana yang disesuaikan
dengan tujuan.
Anatomi tubuh manusia dan sistem obstetri merupakan sistem yang sangat
kompleks. Implementasi pada pemodelan grafis komputer, tentunya tidak dapat
seluruhnya dimodelkan dalam kondisi ideal. Oleh karena itu tidak dapat dihindari
dilakukan pendekatan dan penyederhanaan sistem dengan tetap mempertahankan
fungsi sebagai simulator.

Hal utama yang membatasi yaitu pertimbangan kompleksitas agar lebih terjangkau
untuk diaplikasikan menjadi suatu simulator. Sedangkan pemodelan soft body
dengan sistem mass-spring sendiri mempunyai keterbatasan-keterbatasan antara
seperti di bawah ini.

1. Dua buah obyek soft body yang bersinggungan tidak dapat menangani
tumbukan sehingga akan tembus. Hal ini disebabkan obyek soft body pada
dasarnya tidak berupa obyek padat (solid), tetapi berupa susunan partikel-
partikel bermassa yang saling dihubungkan dengan pegas semu. Jadi
sebenarnya banyak ruang kosong. Itulah sebabnya tumbukan antar dua obyek
soft body tidak tertangani.
2. Sulit menemukan parameter soft body yang sesuai untuk pemodelan,
sehingga kurang merepresentasikan sifat material yang dimodelkan.

Beberapa penyederhanaan dan pendekatan sistem simulasi yang dilakukan antara


lain pada denyut jantung, tool movement, cutting dan bleeding.

3.2 Implementasi Denyut Jantung


File XML dibuat untuk mengimplementasikan biomodeling denyut jantung. Dalam
SOFA, modul untuk denyut jantung belum diciptakan. Untuk itu dibuatlah modul
pembangun denyut jantung. File yang dibuat adalah DetakSinusForceField.cpp,
DetakSinusForceField.h, dan DetakSinusForceField.inl. Ketiga file tersebut
diintegrasikan ke dalam modul sofacomponenforcefield.

Persamaan matematika yang telah dibuat di bab sebelumnya, diimplementasikan


dalam DetakSinusForceField.inl. Berdasarkan algoritma yang telah dibangun, maka
persamaan dituangkan dalam bahasa pemrograman seperti di bawah ini.

void
DetakSinusForceField<DataTypes>::addTriangleSurfacePressure(VecDeriv
& f, const VecCoord& x, const VecDeriv& /*v*/, const Real& pressure)
{
typedef BaseMeshTopology::Triangle Triangle;

for (int i = 0; i < m_topology->getNbTriangles(); i++)


{
Triangle t = m_topology->getTriangle(i);

if ( isInPressuredBox(x[t[0]]) &&
isInPressuredBox(x[t[1]]) && isInPressuredBox(x[t[2]]) )
{

Deriv ab = x[t[1]] - x[t[0]];


Deriv ac = x[t[2]] - x[t[0]];

Deriv p = (ab.cross(ac)) * (pressure /


static_cast<Real>(6.0));

if (m_mainDirection.getValue() != Deriv())
{
Deriv n = ab.cross(ac);
n.normalize();
Real scal = n * m_mainDirection.getValue();
p *= fabs(scal);
}

f[t[0]] += p;
f[t[1]] += p;
f[t[2]] += p;
}
}
}

typename DetakSinusForceField<DataTypes>::Real
DetakSinusForceField<DataTypes>::computeMeshVolume(const VecDeriv&
/*f*/, const VecCoord& x)
{
typedef BaseMeshTopology::Triangle Triangle;

Real volume = 0;
int i = 0;

for (i = 0; i < m_topology->getNbTriangles(); i++)


{
Triangle t = m_topology->getTriangle(i);
Deriv ab = x[t[1]] - x[t[0]];
Deriv ac = x[t[2]] - x[t[0]];
volume += (ab.cross(ac))[2] * (x[t[0]][2] + x[t[1]][2] +
x[t[2]][2]) / static_cast<Real>(6.0);
}
return volume;
}

void
DetakSinusForceField<DataTypes>::addTriangleSurfacePressure(VecDeriv
& f, const VecCoord& x, const VecDeriv& /*v*/, const Real& pressure)
{
typedef BaseMeshTopology::Triangle Triangle;

for (int i = 0; i < m_topology->getNbTriangles(); i++)


{
Triangle t = m_topology->getTriangle(i);

if ( isInPressuredBox(x[t[0]]) &&
isInPressuredBox(x[t[1]]) && isInPressuredBox(x[t[2]]) )
{

Deriv ab = x[t[1]] - x[t[0]];


Deriv ac = x[t[2]] - x[t[0]];

Deriv p = (ab.cross(ac)) * (pressure /


static_cast<Real>(6.0));

if (m_mainDirection.getValue() != Deriv())
{
Deriv n = ab.cross(ac);
n.normalize();
Real scal = n * m_mainDirection.getValue();
p *= fabs(scal);
}
f[t[0]] += p;
f[t[1]] += p;
f[t[2]] += p;
}
}
}
Setelah file-file tersebut disimpan, kemudian dibuatlah suatu file scn sebagai file
pembangun utama dalam SOFA (lihat Lampiran). Dari langkah-langkah yang
tersebut di atas, didapatlah hasil dengan antar muka seperti di bawah ini.
Keterangan.
Kiri: model visual.
Kanan: model wire.

Gambar 1 Antar muka SOFA untuk obyek jantung.

Gambar 1 merupakan tampilan antar muka obyek jantung dari sisi view. Bagian ini
diperuntukkan untuk melihat tampilan gambar, baik dari segi visual, behaviour,
collision, maupun mapping. Berikut merupakan tampilan obyek jantung dilihat
secara detil dari berbagai model.
Fixed
constraint
Keterangan.
Kiri atas: model behavior jantung.
Kanan atas : model collision jantung.
Kiri bawah : model mapping jantung.
Kanan bawah : enam titik fixed constraint pada obyek jantung.

Gambar 2 Obyek jantung dilihat dari beberapa model.

3.3 Implementasi Tool Movement


Modul pergerakan pisau bedah (tool movement) dideskripsikan sebagai berikut.
 Masukan:
- Waktu yang dibutuhkan untuk pergerakan pisau bedah
- Titik koordinat posisi obyek yang akan dibedah
- Titik koordinat awal dan titik koordinat yang dituju
- Sudut rotasi (satuan dalam radian)
 Keluaran
- Titik koordinat yang terletak antara segment waktu
- Orientasi pisau bedah
 Proses
- Menghitung titik koordinat
- Menghitung sudut rotasi

Deskripsi tersebut diimplementasikan dalam perangkat lunak dan disimpan dalam


sebuah file xml, yaitu linearConstraint.cpp, LinearConstraint.h dan
LinearConstraint.inl. Dalam SOFA, perhitungan untuk modul tool movement yang
dituangkan pada ketiga file .xml diatas belum dibuat. Ketiga file tersebut
diintegrasikan ke dalam modul sofacomponentconstraint yang terdapat pada SOFA.
Terlebih dahulu diset parameter banyaknya titik waktu, dengan menggunakan
bahasa pemrograman seperti di bawah ini.

//WARNING : we consider that the key-events are in chronological


order
//here we search between which keyTimes we are, to know which are
the motion to interpolate
while( it_t != m_keyTimes.getValue().end() && !finished)
{
if( *it_t <= cT) {
prevT = *it_t;
prevM = *it_m;}
else {
nextT = *it_t;
nextM = *it_m;
finished = true;}
it_t++;
it_m++;
}

//if we found 2 keyTimes, we have to interpolate a velocity (linear


interpolation)
if(finished){
Real dTsimu = (Real) this->getContext()->getDt();
Real dt = (cT - prevT) / (nextT - prevT);
Deriv m= (nextM-prevM)*dt;
Deriv mPrev= (nextM-prevM)*(((cT-dTsimu) - prevT) / (nextT - prevT));
//set the motion to the Dofs
for (SetIndexArray::const_iterator it = indices.begin();
it != indices.end(); ++it){
dx[*it] = (m - mPrev) * (1/dTsimu);
}
}

Berdasarkan algoritma yang telah dirancang, untuk menghitung titik posisi ruang
yang terletak pada segment waktu digunakan pendekatan fungsi garis lurus dan
interpolasi linier yang dituangkan dalam persamaan, maka implementasi dalam
bahasa pemrogramannya seperti di bawah ini.

//if we found 2 keyTimes, we have to interpolate a position (linear


interpolation)
if(m_keyTimes.getValue().size() != 0 && cT >=
*m_keyTimes.getValue().begin() && cT <=
*m_keyTimes.getValue().rbegin() && nextT!=prevT){
const SetIndexArray & indices = m_indices.getValue().getArray();
Real dt = (cT - prevT) / (nextT - prevT);
Deriv m = prevM + (nextM-prevM)*dt;
//set the motion to the Dofs
for (SetIndexArray::const_iterator it = indices.begin(); it !=
indices.end(); ++it){
//x[*it] = x0[*it] + m ;
Vec3d x0c( x0[*it][0], x0[*it][1],x0[*it][2]);
Quat x0r( x0[*it][3], x0[*it][4], x0[*it][5], x0[*it][6]);
x0r.normalize();
Vec3d c( m[0], m[1], m[2]);
Quat qr = createFromEuler( m[3], m[4], m[5]);
x0r *= qr;
x0r.normalize();
for (int i=0; i<3; i++)
x[*it][i] = Real ( x0c[i] + c[i]);
for (int i=0; i<4; i++)
x[*it][i+3] = Real ( x0r[i]);

Pada program diatas //set the motion to the Dofs adalah menampilkan posisi
dan orientasi yang baru, tetapi terlebih dahulu dihitung sudut rotasinya
menggunakan metoda quaternion yang diimplementasikan dalam bahasa
pemrograman seperti di bawah ini.

Quat LinearConstraint<DataTypes>::createFromEuler(Real a0, Real a1,


Real a2)
{
Real quat[4];
quat[3] = cos(a0/2)*cos(a1/2)*cos(a2/2) + sin(a0/2)*sin(a1/2)*sin(a2/2);
quat[0] = -sin(a0/2)*cos(a1/2)*cos(a2/2) + cos(a0/2)*sin(a1/2)*sin(a2/2);
quat[1] = -cos(a0/2)*sin(a1/2)*cos(a2/2) - sin(a0/2)*cos(a1/2)*sin(a2/2);
quat[2] = -cos(a0/2)*cos(a1/2)*sin(a2/2) + sin(a0/2)*sin(a1/2)*cos(a2/2);
Quat qr( quat[0], quat[1], quat[2], quat[3] );
qr.normalize();
return qr;
}

Didalam SOFA terdapat file .scn yang berfungsi sebagai file pembangun utama.
Ketiga file .xml diatas adalah pendukung dari file .scn. Untuk simulasi gerak pada
SOFA, diimplementasikan file .scn tersebut sehingga diperoleh tampilan antar muka
seperti di bawah ini.

Gambar 3 Simulasi gerak pada SOFA.

Gambar 3 merupakan tampilan untuk simulasi gerak pada SOFA, dan belum
diintegrasikan pada simulator CABbaGe. Pada gambar diatas tampak 3 sumbu
berwarna, sumbu tersebut mewakili sumbu-sumbu pada bidang kartesius. Sumbu x
diwakili oleh sumbu berwarna merah, sumbu y diwakili oleh sumbu berwarna hijau
dan sumbu z diwakili oleh sumbu berwarna biru. Apabila simulasi gerak telah
diintegrasikan pada simulator CABbaGe, maka diperoleh tampilan antar muka
seperti di bawah ini.
Gambar 4 Simulasi gerak pada simulator CABbaGe

Pada Gambar 4 simulasi gerak telah diintegrasikan dengan simulator CABbaGe.


Pisau bedah untuk membedah direpresentasikan oleh benda panjang yang
menyerupai pisau berwarna putih yang terletak diatas meja bedah disamping tubuh
yang akan dibedah organnya.

3.4 Implementasi Cutting


Implementasi dibagi menjadi dua tahap.
1. Tahap pra-implementasi adalah tahap pembuatan obyek pembuluh darah dan
pisau. Obyek dibuat dengan software 3ds max, kemudian untuk pembuatan
mesh-nya dengan menggunakan software Gmesh. Obyek pembuluh darah
digambarkan sebagai sebuah silinder yang memiliki ketebalan dan tengahnya
berrongga. Pembuatan mesh dimulai dengan penempatan titik-titik yang diatur
terutama pada daerah yang akan dipotong, agar pemotongan tampak mulus.
Setelah itu titik-titik dihubungkan, sehingga terbentuk segitiga-segitiga yang
membentuk tetrahedron-tetrahedron.
2. Tahap implementasi adalah tahap pembuatan program simulasi pemotongan
pembuluh darah dengan menggunakan SOFA.

Arsitektur perangkat lunak yang digunakan dalam membangun program ini


mengikuti SOFA framework. Penggunaan arsitektur ini ditujukan untuk
mempercepat proses pengembangan karena dapat menggunakan fasilitas-fasilitas
STAR atas modul-modul yang dapat
yang sudah disediakan SOFA. SOFA tersusun
digunakan sesuai kebutuhan, karena itu untukT menyusun sebuah program dengan
SOFA, programmer tinggal memilih modul-modul
Input parameter: koordinat tersebut sesuai yang
dibutuhkannya, menentukan parameter-parameter
trayektori, jumlah titik, simulasi,
Poisson dan menambahkan
beberapa program jika dibutuhkan.ratio, modulus Young, stiffness,
koefisien damping, radius sphere

Algoritma dari program yang akan dijalankan ditampilkan dalam bentuk flowchart
Inisialisasi titik, sisi,
sebagai berikut.
permukaan, volume

t=0

t = t +1

Tidak
Apakah t <
END
blade movement
time?

Collision detection

Ya
Remove Tidak
Apakah terjadi
tetrahedron
collision?
Ya

Gambar 5 Flowchart program utama.

Aplikasi rumus perhitungan deteksi tabrakan pada program adalah sebagai berikut.
template<class Sphere>
bool DiscreteIntersection::testIntersection( Sphere& sph, Triangle&
triangle)
{
double EPSILON = 0.00001;
//Vertices of the triangle:
Vector3 p0 = triangle.p1();
Vector3 p1 = triangle.p2();
Vector3 p2 = triangle.p3();
// Center of the sphere
const Vector3 sphCenter(sph.center());
// Radius of the sphere
const double r = sph.r();
//Normal to the plane (plane spanned by tree points of the triangle)
Vector3 normal = cross( (p1 - p0), (p2 - p0) );
normal.normalize();
//Distance from the center of the sphere to the plane.
double distance = sphCenter*normal - normal*p0;
//Projection of the center of the sphere onto the plane
Vector3 projPoint = sphCenter - normal*distance;
//Distance correction in case is negative.
if (distance < 0.0)
distance = -distance;
//Distance to the sphere:
distance -= r;
//If the distance is positive, the point has been proyected outside
//the sphere and hence the plane does not intersect the sphere
//and so the triangle (that spanned the plane) cannot be inside the
sphere.
if (distance > EPSILON)
{
return false;
}

//However, if the plane has intersected the sphere, then it is


//necessary to check if the projected point "projPoint" is inside
//the triangle.
#define SAMESIDE(ap1,ap2,ap3,ap4) (((cross((ap4-ap3),(ap1-ap3))) *
(cross((ap4-ap3),(ap2-ap3)))) >= 0)
if ( (SAMESIDE(projPoint,p0,p1,p2) &&
SAMESIDE(projPoint,p1,p0,p2) && SAMESIDE(projPoint,p2,p0,p1)))
{
return true;
}
#undef SAMESIDE
return false;
}

Aplikasi pemotongan pembuluh darah disusun dari kelas-kelas utama (parents)


sebagai berikut.
1. DefaultPipeline, yakni kelas default deteksi tabrakan dan pemodelan
pipeline.
2. BruteForceDetection, yakni kelas untuk menyatakan collision detection
dengan menggunakan extensive pair-wise test.
3. MinProximityIntersection, yakni kelas yang berupa sekumpulan metoda
untuk menghitung ketika dua obyek berjarak cukup dekat sehingga akan
terjadi tabrakan (collision).
4. DefaultContactManager, yakni kelas default untuk menciptakan rekasi
terhadap tabrakan.
5. DefaultCollisionGroupManager, yakni kelas yang bertanggung jawab
terhadap pencarian obyek yang bertabrakan di grup yang sama, untuk
integrasi waktu yang konsisten.
6. DiscreteIntersection, yakni kelas yang melakukan Discrete Intersection.

Untuk dapat melakukan proses cutting atau pemotongan obyek, ditambahkan


program CuttingManager, yang disimpan pada node BLADE (pisau). Pada program
CuttingManager ini mensyaratkan 4 hal berikut harus ada.
1. Model Tool, dalam hal ini digunakan sphere model (bentuk bola) untuk
menggambarkan model collision dari pisau.
2. Model Surface, pada program simulasi ini digunakan model segitiga untuk
permukaan (surface), model tetrahedron untuk volume, dan mapping dari
tetrahedron ke segitiga.
3. Intersection Model, pada program ini digunakan model
MinProximityIntersection.
4. DetectionNP = Narrow Phase Detection, yang berfungsi mendeteksi kontak
antara bola (sphere) dan segitiga (triangle).
Gambar 6 Scene graph untuk simulasi pemotongan pembuluh darah.
Scene graph pada gambar 6 di atas menggambarkan kelas-kelas yang digunakan untuk
menjalankan simulasi pemotongan secara lengkap.

Data-data yang tersimpan pada setiap kelas pada node TOCUT akan dirinci sebagai berikut.

1. MeshLoader, memuat nama file obyek dengan extention .msh.


2. MechanicalObject, memuat data koordinat posisi DOF (1189 titik), kecepatan, gaya, gaya
luar, vektor dx, free position DOF, free velocity, rest position.
3. TetrahedronSetTopologyContainer, memuat data jumlah titik (1189), daftar index segitiga
(9236), daftar index tetrahedron (4195).
4. TetrahedronFEMForceField, memuat data initial points, metoda displacement (large),
poisson ratio (0.45), modulus Young (3).
5. OglModel, memuat data vertex, vektor normal, koordinat segitiga, material (ambient,
diffuse, specular).
6. TriangleSetTopologyContainer, memuat jumlah titik dan daftar indeks segitiga
permukaan (1692).
7. Tetra2TriangleTopologicalMapping, memuat obyek yang akan di-mapping (dari
Tetrahedron ke Triangle).
8. TriangleModel, memuat data contact stiffness (10), koefisien contact friction (damping)
(0.01), warna collision model, menghitung normal, mengaktifkan collision model,
moving, simulated.

Simulasi ini belum dapat digunakan secara interaktif, karena pergerakan pisau diatur dengan
menggunakan metoda trayektori. Data mengenai posisi pisau pada waktu tertentu disimpan di
kelas LinearConstraint pada node BLADE.

Dengan mengimplementasikan perancangan yang telah dibuat, simulasi pemotongan dapat


ditampilkan sesuai harapan yang utama, yakni terjadinya pemotongan pembuluh darah. Berikut
tampilan dari hasil simulasi yang telah dijalankan.

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 30 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
Gambar 7. Tampilan simulasi sebelum pemotongan.

Gambar 8 Tampilan simulasi ketika terjadi pemotongan.

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 31 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
Gambar 9 Tampilan simulasi setelah pemotongan.

Gambar 10 Trayektori pergerakan pisau.

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 32 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
Gambar 11 Collision model dari pisau adalah sphere model.

Gambar 12 Garis-garis putih merupakan vektor-vektor normal segitiga.

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 33 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
3.5 Implementasi Bleeding
Untuk dapat diimplementasikan dengan menggunakan SOFA, maka di bawah ini adalah
penjelasan mengenai scene graph beserta node-node serta komponen yang ada di dalamnya.
Setiap scene graph memiliki node utama yang diberi root node. Di dalam root node harus
terdapat:
1. komponen untuk menangani rangkaian pemodelan dan deteksi tumbukan
2. komponen untuk menangani collision;
3. komponen yang menyediakan metode untuk menghitung jika dua primitive saling
berdekatan yang dianggap bertabrakan;
4. komponen yang menangani reaksi terhadap collision;
5. komponen untuk mengumpulkan obyek-obyek dalam grup yang sama dalam hal ini utuk
konsistensi integrasi waktu

Obyek-obyek yang terlibat dalam simulasi diletakkan dalam child node. Berikut ini adalah
obyek-obyek yang diperlukan beserta komponen-komponen yang diperlukan.
1. Pembuluh darah
2. Pisau

Komponen-komponen pada node pembuluh darah dan node pisau tidak dibahas di sini
karena bukan merupakan bagian dari tesis ini.
3. Darah

Node adalah bagian penting dari simulasi bleeding dan diberi nama Blood.
Pada node ini harus terdapat komponen yang nantinya bertanggung jawab terhadap
berjalannya simulasi bleeding.
 Komponen yang menangani algoritma SPH yaitu SPHFluidForceField

Pada komponen ini semua parameter yang berhubungan dengan inisialisasi SPH
ditentukan yaitu: radius sebuah partikel (smoothing length), massa partikel, tekanan,
densitas, viskositas, dan tegangan permukaan.
 Komponen yang menangani visualisasi bleeding

Komponen ini merupakan child node dari node Blood. Komponen yang berhubungan
untuk visualisasi adalah OglModel, dan FluidSurfaceMapping yang di dalamnya

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 34 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
menggunakan algoritma Marching Cube. Dalam komponen ini nilai isovalue ditentukan.
 Komponen yang bisa mendukung pencarian partikel tetangga terdekat yaitu
SpatialGridContainer.
 Komponen yang menyediakan sumber partikel yaitu ParticleSource.
 Komponen yang bisa menahan darah ketika jatuh ke bawah yaitu PlaneForceField.
 Komponen untuk integrasi waktu yang bertanggung jawab terhadap perubahan keadaan
sistem. Komponen yang digunakan adalah RungeKutta4Solver.

Berikut ini adalah scene graph SOFA pada simulasi bleeding.

Gambar 13 Scene Graph lengkap

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 35 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
Gambar 14 Scene Graph khusus node Blood

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 36 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
4. IKHTISAR IMPLEMENTASI
4.1 Ikhtisar Implementasi
Program secara umum berjalan lambat, dimungkinkan karena masih menggunakan komputer
(laptop) yang mempunyai spesifikasi grafis rendah, jauh dari yang seharusnya dibutuhkan. Hasil
pengujian juga belum maksimal karena komputer (laptop) yang dipakai untuk trial program
banyak yang tidak dapat dijalankan/banyak error. Hal ini dimungkinkan karena ketidakmampuan
sistem komputer yang masih terbatas. Berikut adalah ikhtisar pengembangan dari modul dan
proses produk Simulator CABbaGe yang telah diuraikan pada dokumen B300.

Tabel 1 Ikhtisar Implementasi

Versi Done To Do
Versi I, dengan pengembangan yang diharapkan:
A Tampilan 3D dari objek pembedahan -
B Tampilan toolbar yang mewakili entitas konfigurasi pointer,
-
entitas konfigurasi sistem, entitas alat bantu
C Penerapan deformable object pada suatu yang menyerupai

jaringan atau organ manusia
Versi II, dengan pengembangan yang diharapkan:
Penerapan deformable object pada jantung √
Pemodelan matematis untuk denyut jantung √
Pemodelan matematis untuk tool movement √
Pemodelan matematis untuk cutting √
Pemodelan matematis untuk bleeding √
Sistem dapat menerima input lewat interaksi yang diwakili oleh
entitas Dokter bedah, serta dapat memberikan output audio- -
visual hasil pemrosesan terhadap input tersebut
Versi III, dengan pengembangan yang diharapkan: -
Sistem dapat mensimulasikan proses pemotongan pembuluh

darah

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 37 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.
4.2 Permasalahan
Kesulitan-kesulitan dan permasalahan -permasalahan yang dihadapi:
 Dokumentasi yang terbatas menyebabkan penulis kesulitan untuk mengeksplorasi SOFA
dalam melakukan perancangan maupun implementasi denyut jantung.
 Perangkat yang terbatas dan mahal seperti haptic yang sulit didapat, menyebabkan
aplikasi yang dibuat belum dapat dikembangan sebagaimana mestinya.
 Perangkat prosesing data yang terbatas spesifikasinya, sehingga hasil implementasi
simulator CABbaGe belum dapat dievaluasi untuk dapat dikembangkan secara maksimal.
 SOFA merupakan sebuah framework yang dapat dikatakan baru, sehingga belum banyak
contoh proyek yang dapat dijadikan sebagai sumber acuan.

Nomor Dokumen: SPE-011 Nomor Revisi: 01 Tanggal: 03/07/2010 Halaman 38 dari 38


© 2010 oleh LSKK STEI-ITB. Pengungkapan dan penggunaan seluruh isi dokumen hanya dapat dilakukan atas ijin tertulis LSKK-STEI ITB Jalan
Ganesha 10 Bandung, 40132 Indonesia.

Anda mungkin juga menyukai