Arsitektur Perangkat Lunak Augmented Reality



Pendahuluan

Memasuki pertemuan kelima belas sebagai pertemuan terakhir dalam mata kuliah Augmented Reality, kita akan membahas topik yang menyatukan seluruh komponen yang telah dipelajari selama satu semester, yaitu arsitektur perangkat lunak AR. Setelah mempelajari berbagai aspek seperti display, tracking, kalibrasi, registrasi, visual coherence, interaksi, modeling, annotation, authoring, navigasi, dan kolaborasi, kini saatnya kita memahami bagaimana semua komponen tersebut diorganisasikan ke dalam sebuah sistem perangkat lunak yang utuh dan berfungsi.

Augmented Reality adalah domain aplikasi yang menuntut dalam hal teknologi perangkat lunak, menggabungkan komponenkomponen dari berbagai bidang, masingmasing dengan tantangannya sendiri. Kompleksitas mengintegrasikan beragam komponen ke dalam satu aplikasi realtime adalah tantangan yang dibagikan oleh AR dan VR. Namun, AR memiliki kebutuhan tambahan seperti integrasi dengan dunia nyata dan dukungan untuk gaya komputasi mobile, yang membuat AR bahkan lebih menuntut daripada VR.

Pada pertemuan ini, kita akan membahas secara mendalam tentang kebutuhan aplikasi AR, kebutuhan rekayasa perangkat lunak, sistem objek terdistribusi, dataflow, scene graphs, dan dukungan pengembang. Pemahaman tentang arsitektur perangkat lunak AR akan membekali mahasiswa dengan pengetahuan untuk merancang dan mengimplementasikan sistem AR yang skalabel, maintainable, dan efisien.


1. AR Application Requirements (Kebutuhan Aplikasi AR)

Kebutuhan Fungsional


Aplikasi AR memiliki seperangkat kebutuhan fungsional yang membedakannya dari aplikasi perangkat lunak konvensional. Kebutuhan fungsional ini mencakup kemampuan dasar yang harus dimiliki oleh setiap sistem AR.

Tracking dan Registrasi: Setiap aplikasi AR harus mampu melacak posisi dan orientasi pengguna atau objek di dunia nyata, serta mendaftarkan (mendaftarkan) konten virtual ke lokasi yang tepat di dunia nyata. Tanpa tracking yang akurat, konten AR tidak akan terintegrasi dengan baik dengan lingkungan fisik.

Rendering Realtime: Aplikasi AR harus mampu merender konten virtual dalam waktu nyata, biasanya pada kecepatan minimal 30 frame per detik, untuk menciptakan ilusi bahwa objek virtual benarbenar ada di dunia nyata. Keterlambatan (latency) yang terlalu tinggi dapat menyebabkan ketidaknyamanan dan pusing pada pengguna.

Interaksi Multimodal: Pengguna harus dapat berinteraksi dengan konten AR melalui berbagai modalitas, termasuk gestur, suara, sentuhan, dan arah pandang. Sistem harus mampu menangani input dari berbagai sumber dan memberikan respons yang sesuai.

Integrasi dengan Dunia Nyata: Konten AR harus terintegrasi secara visual dengan dunia nyata, termasuk mempertimbangkan aspek seperti pencahayaan, bayangan, dan oklusi (penutupan) agar objek virtual terlihat seperti benarbenar ada di lingkungan fisik.

Kesadaran Konteks: Aplikasi AR harus mampu memahami dan merespons konteks di mana ia digunakan, termasuk lokasi pengguna, waktu, lingkungan sekitar, dan aktivitas yang sedang dilakukan.

Kebutuhan NonFungsional

Selain kebutuhan fungsional, aplikasi AR juga memiliki kebutuhan nonfungsional yang signifikan.

Kinerja (Performance): Aplikasi AR harus berjalan dengan kinerja tinggi untuk mendukung pengalaman realtime. Ini mencakup waktu respons yang cepat, frame rate yang stabil, dan penggunaan sumber daya yang efisien.

Ketersediaan (Availability): Untuk aplikasi AR yang digunakan dalam konteks kritis seperti perawatan medis atau industri, ketersediaan sistem menjadi sangat penting. Sistem harus dapat diandalkan dan memiliki mekanisme pemulihan dari kegagalan.

Keamanan (Security): Aplikasi AR seringkali mengakses data sensitif seperti lokasi pengguna, gambar dari kamera, atau data pribadi. Keamanan data ini harus dilindungi dari akses yang tidak sah.

Skalabilitas (Scalability): Untuk aplikasi AR yang digunakan oleh banyak pengguna secara bersamaan, sistem harus mampu menskalakan sumber daya sesuai dengan permintaan.

Portabilitas (Portability): Aplikasi AR harus dapat berjalan di berbagai perangkat dan platform, termasuk smartphone, tablet, smart glasses, dan headmounted display dari berbagai vendor.



2. Software Engineering Requirements (Kebutuhan Rekayasa Perangkat Lunak)

Tantangan Rekayasa Perangkat Lunak AR


Membangun perangkat lunak AR menghadirkan tantangan unik bagi para rekayasawan perangkat lunak. Kompleksitas mengintegrasikan komponenkomponen dari berbagai bidang (visi komputer, grafika 3D, interaksi manusiakomputer, jaringan) ke dalam satu aplikasi realtime membutuhkan pendekatan arsitektur yang matang.

Heterogenitas Komponen: Komponen dalam sistem AR berasal dari berbagai domain dengan paradigma dan antarmuka yang berbeda. Visi komputer mungkin menggunakan C++ dengan pustaka OpenCV, sementara rendering menggunakan Unity atau Unreal Engine dengan arsitektur yang sama sekali berbeda.

Kebutuhan Realtime: Banyak komponen AR memiliki batasan waktu yang ketat. Data tracking harus diproses dalam milidetik, rendering harus selesai dalam 3060 frame per detik, dan interaksi pengguna harus mendapatkan respons hampir seketika.

Kompleksitas Integrasi: Menggabungkan semua komponen ini menjadi satu sistem yang koheren membutuhkan perhatian pada antarmuka antar komponen, manajemen data, dan sinkronisasi.

Pendekatan Arsitektur

Untuk mengatasi kompleksitas ini, berbagai pendekatan arsitektur telah dikembangkan dalam rekayasa perangkat lunak AR.

Arsitektur Monolitik: Semua komponen sistem berada dalam satu program yang sama. Pendekatan ini cepat untuk diprogram tetapi sulit untuk dipelihara dan dikembangkan lebih lanjut.

Arsitektur Komponen: Sistem dibangun dari komponenkomponen yang dapat diganti dan digunakan ulang. Komponen berkomunikasi melalui antarmuka yang terdefinisi dengan jelas.

Arsitektur ClientServer: Satu atau lebih server menyediakan layanan untuk satu atau lebih klien. Klien berinteraksi dengan pengguna, sementara server menangani tugastugas berat seperti tracking atau rendering.

Arsitektur PeertoPeer: Setiap komponen dapat berfungsi sebagai server dan klien secara bersamaan. Pendekatan ini menawarkan fleksibilitas dan ketahanan tertinggi tetapi paling kompleks untuk diimplementasikan.

Prinsip Rekayasa Perangkat Lunak untuk AR

Beberapa prinsip rekayasa perangkat lunak sangat relevan untuk pengembangan AR.

Modularitas: Sistem harus dibagi menjadi modulmodul yang kohesif dengan antarmuka yang jelas. Ini memungkinkan pengembangan paralel, pengujian independen, dan penggantian komponen tanpa mempengaruhi seluruh sistem.

Reusabilitas: Komponen yang sama (misalnya, modul tracking atau modul rendering) harus dapat digunakan kembali di berbagai aplikasi AR untuk mengurangi upaya pengembangan.

Ekstensibilitas: Arsitektur harus memungkinkan penambahan fitur baru tanpa mengubah struktur dasar sistem.

Maintainability: Kode harus ditulis dengan cara yang memudahkan pemeliharaan dan perbaikan bug di masa depan.

3. Distributed Object Systems (Sistem Objek Terdistribusi)

Konsep Dasar


Sistem objek terdistribusi adalah pendekatan arsitektur di mana objekobjek perangkat lunak berjalan pada proses atau komputer yang berbeda dan berkomunikasi satu sama lain melalui jaringan. Pendekatan ini sangat relevan untuk AR karena aplikasi AR seringkali melibatkan komponenkomponen yang berjalan pada perangkat yang berbeda (misalnya, headset, smartphone, server cloud).

Dalam sistem objek terdistribusi, setiap objek memiliki antarmuka yang terdefinisi dengan jelas (biasanya menggunakan Interface Description Language atau IDL), dan komunikasi antar objek dilakukan melalui Remote Procedure Call (RPC) atau Remote Method Invocation (RMI). Ini memungkinkan komponen untuk berkomunikasi seolaholah mereka berada dalam proses yang sama, meskipun sebenarnya terdistribusi di jaringan.

Contoh Implementasi: CORBA

Salah satu teknologi yang sering digunakan untuk sistem objek terdistribusi adalah CORBA (Common Object Request Broker Architecture). CORBA menyediakan middleware yang menangani detail komunikasi jaringan, sehingga pengembang dapat fokus pada logika aplikasi.

Dalam konteks AR, CORBA telah digunakan dalam berbagai framework termasuk DWARF (Distributed Wearable Augmented Reality Framework). DWARF menggunakan CORBA untuk komunikasi antar service, di mana setiap service berjalan sebagai proses independen yang dapat ditempatkan pada perangkat keras yang berbeda, bahkan pada perangkat mobile.

Kelebihan dan Keterbatasan

Sistem objek terdistribusi menawarkan beberapa kelebihan untuk AR. Fleksibilitas tinggi karena komponen dapat didistribusikan di berbagai perangkat sesuai dengan kebutuhan. Skalabilitas lebih baik karena beban dapat didistribusikan di beberapa mesin. Reusabilitas meningkat karena komponen dapat digunakan kembali di berbagai aplikasi.

Namun, sistem objek terdistribusi juga memiliki keterbatasan. Kompleksitas meningkat secara signifikan karena manajemen komunikasi jaringan. Latensi menjadi masalah karena panggilan jarak jauh lebih lambat daripada panggilan lokal. Keandalan tergantung pada ketersediaan jaringan dan komponen yang terlibat.



4. Dataflow (Aliran Data)

Konsep Dasar


Pendekatan dataflow adalah arsitektur di mana data mengalir melalui serangkaian komponen pemrosesan (filter) yang terhubung melalui saluran (pipes). Setiap filter menerima data masukan, memprosesnya, dan menghasilkan data keluaran yang kemudian diteruskan ke filter berikutnya. Pendekatan ini sangat sesuai untuk aplikasi AR di mana data streaming dari berbagai sensor (kamera, IMU, GPS) perlu diproses secara realtime.

Arsitektur dataflow juga dikenal sebagai arsitektur Pipe and Filter. Ini adalah salah satu arsitektur tertua dan paling sederhana, di mana setiap komponen membaca aliran data sebagai masukan dan menghasilkan aliran data sebagai keluaran.

Penerapan dalam AR

Dalam AR, aliran data dapat dimulai dari sensor (kamera, IMU) yang menghasilkan data mentah. Data ini kemudian mengalir melalui serangkaian filter: filter untuk preprocessing (misalnya, pengurangan noise), filter untuk tracking (menentukan posisi dan orientasi), filter untuk registrasi (mencocokkan data tracking dengan model virtual), dan akhirnya filter untuk rendering (menampilkan konten virtual). Setiap filter dapat beroperasi secara independen dan paralel, meningkatkan efisiensi keseluruhan sistem.

Contoh klasik penerapan dataflow dalam AR adalah aliran video dari kamera yang diproses untuk deteksi marker, kemudian digunakan untuk tracking, dan akhirnya digabungkan dengan konten virtual untuk ditampilkan kepada pengguna.

Kelebihan dan Keterbatasan

Arsitektur dataflow menawarkan beberapa kelebihan. Kesederhanaan karena setiap komponen hanya perlu memahami antarmuka inputoutputnya. Reusabilitas tinggi karena filter dapat digunakan kembali di berbagai aplikasi. Dukungan alami untuk paralelisme karena filter dapat berjalan secara independen.

Namun, arsitektur dataflow juga memiliki keterbatasan. Overhead komunikasi bisa tinggi karena data harus disalin antar filter. Global state tidak ada, sehingga sulit untuk berbagi informasi antar filter. Laten total bisa tinggi karena data harus melewati banyak filter secara berurutan.



5. Scene Graphs (Graf Adegan)

 Konsep Dasar


Scene graph adalah struktur data hierarkis yang mengorganisasi objekobjek dalam adegan 3D. Setiap node dalam scene graph dapat berupa objek grafis (seperti mesh, material, atau transformasi) atau objek nongrafis (seperti logika aplikasi). Scene graph memungkinkan pengelolaan transformasi spasial dan hubungan antar objek secara efisien.

Keuntungan utama scene graph adalah kemampuannya untuk mengelola hirarki transformasi. Jika sebuah objek induk bergerak, semua objek anak akan bergerak bersama dengan induknya. Ini sangat berguna dalam AR di mana objek virtual harus tetap berada di lokasi yang benar relatif terhadap dunia nyata.

Penerapan dalam AR

Dalam AR, scene graph sering digunakan untuk mengelola semua objek virtual dalam adegan. Objekobjek ini termasuk model 3D, anotasi, antarmuka pengguna, dan elemen visual lainnya. Scene graph juga dapat digunakan untuk mengelola objek nongrafis seperti marker tracking atau sensor data.

Beberapa pustaka scene graph populer yang digunakan dalam AR termasuk Open Inventor, OpenSG, dan Open Scene Graph. Beberapa sistem AR juga menggunakan scene graph proprietary yang dibangun di atas OpenGL.

Pendekatan "Node in Scene Graph" untuk aplikasi memungkinkan pengembang untuk menyematkan logika aplikasi langsung ke dalam scene graph, dengan node nongrafis yang berisi kode kontrol. Ini menyederhanakan integrasi antara aplikasi dan visualisasi karena logika aplikasi adalah bagian dari struktur adegan.

Kelebihan dan Keterbatasan

Scene graph menawarkan beberapa kelebihan. Manajemen objek terstruktur karena semua objek diorganisasi secara hierarkis. Transformasi efisien karena transformasi induk secara otomatis diterapkan ke anak. Integrasi erat antara grafis dan logika aplikasi karena node nongrafis dapat disematkan.

Namun, scene graph juga memiliki keterbatasan. Kompleksitas overhead karena setiap node membutuhkan memori dan pemrosesan. Kinerja dapat menjadi masalah untuk adegan yang sangat besar dengan ribuan node. Fleksibilitas terbatas karena struktur hierarkis kaku.



6. Developer Support (Dukungan Pengembang)

Framework dan Middleware


Untuk memudahkan pengembangan aplikasi AR, berbagai framework dan middleware telah dikembangkan. Framework menyediakan struktur dasar dan komponen yang sudah jadi, sehingga pengembang dapat fokus pada logika aplikasi spesifik mereka. Middleware menyediakan lapisan komunikasi yang menangani penemuan anggota kelompok, manajemen keanggotaan, dan penerusan paket data.

Beberapa framework AR yang terkenal meliputi:

DWARF (Distributed Wearable Augmented Reality Framework): Framework yang mendukung aplikasi AR terdistribusi dengan serviceservice yang berkomunikasi melalui middleware CORBA. DWARF menyediakan komponen untuk tracking, world model, rendering, interaksi, dan konteks.

Studierstube: Framework AR yang menggunakan pendekatan scene graph untuk aplikasi, memungkinkan beberapa pengguna berbagi lingkungan AR yang sama.

ARCS (Augmented Reality Component System): Framework yang berfokus pada arsitektur modular dan dapat dikonfigurasi ulang untuk aplikasi AR.

Alat Pengembangan

Selain framework, berbagai alat pengembangan mendukung pembuatan aplikasi AR.

Unity dengan Vuforia: Kombinasi populer untuk pengembangan AR di perangkat mobile. Unity menyediakan engine rendering dan logika aplikasi, sementara Vuforia menyediakan kemampuan tracking dan registrasi.

ARKit dan ARCore: SDK dari Apple dan Google untuk pengembangan AR di platform iOS dan Android.

Alat Authoring: Berbagai alat authoring memungkinkan pengembang untuk membuat konten AR tanpa pemrograman intensif.

Praktik Terbaik Pengembangan

Beberapa praktik terbaik untuk pengembangan AR telah diidentifikasi.

Pengembangan Agile: Menggunakan metodologi agile dengan siklus iteratif pendek untuk merespon perubahan kebutuhan dengan cepat.

CI/CD Pipelines: Menerapkan continuous integration dan continuous delivery untuk mengotomatisasi build, testing, dan deployment aplikasi AR.

Desain untuk Performa: Mengoptimalkan aplikasi untuk kinerja realtime dengan manajemen sumber daya yang efisien dan rendering yang dioptimalkan.

Pengujian Pengguna: Melakukan pengujian usability secara teratur dengan pengguna aktual untuk memastikan aplikasi memenuhi kebutuhan mereka.

Simpulan
kita telah mempelajari arsitektur perangkat lunak augmented reality secara mendalam. Kita mulai dengan kebutuhan aplikasi AR yang mencakup kebutuhan fungsional seperti tracking, rendering, interaksi multimodal, integrasi dengan dunia nyata, dan kesadaran konteks, serta kebutuhan nonfungsional seperti kinerja, ketersediaan, keamanan, skalabilitas, dan portabilitas.

Selanjutnya, kita membahas kebutuhan rekayasa perangkat lunak yang mencakup tantangan heterogenitas komponen, kebutuhan realtime, dan kompleksitas integrasi. Berbagai pendekatan arsitektur seperti monolitik, komponen, clientserver, dan peertopeer telah dikembangkan untuk mengatasi tantangan ini.

Kita juga mempelajari sistem objek terdistribusi yang memungkinkan komponen AR berjalan pada perangkat yang berbeda dan berkomunikasi melalui jaringan. Pendekatan dataflow (pipe and filter) memungkinkan pemrosesan streaming data dari sensor secara efisien. Scene graph menyediakan struktur untuk mengelola objek virtual dalam adegan 3D. Terakhir, dukungan pengembang melalui framework, middleware, dan alat pengembangan memudahkan pembuatan aplikasi AR.

Pemahaman tentang arsitektur perangkat lunak AR melengkapi pengetahuan kita tentang augmented reality secara keseluruhan. Selama pertemuan ini, kita telah mempelajari berbagai aspek AR: dari definisi dan karakteristik dasar, display, tracking, kalibrasi, registrasi, visual coherence, interaksi, modeling, annotation, authoring, navigasi, kolaborasi, hingga arsitektur perangkat lunak. Dengan bekal pengetahuan ini, mahasiswa diharapkan mampu merancang, mengimplementasikan, dan mengevaluasi aplikasi AR yang efektif, efisien, dan bermakna bagi pengguna.

Tidak ada komentar:

Posting Komentar