MEMBUAT AUGMENTED REALITY (AR) BEKERJA
5.8 PLATFORM
Membangun aplikasi AR berarti memilih Platform AR untuk dibangun. Platform ini adalah seperangkat API dan alat untuk memungkinkan pengembang membuat konten yang berinteraksi dengan dunia nyata. Dua yang paling banyak tersedia adalah ARKit Apple dan ARCore Google (yang berevolusi dari proyek sebelumnya dari Google yang disebut Tango yang merupakan perangkat lunak dan perangkat keras telepon khusus). Microsoft Hololens dan Magic Leap keduanya membuat platform pengembang AR untuk perangkat keras Head Mounted Display pelanggan mereka. Bagian selanjutnya ini membahas fitur utama ARCore dan ARKit dan membandingkannya dari sudut pandang pengembang.
Gambar 5-19. Aplikasi ini menggunakan gambar cetak yang digunakan semua perangkat untuk relokasi untuk membagikan koordinatnya
Apple
ARKit Secara khusus, ARKit adalah sistem VIO, dengan beberapa deteksi pesawat 2D sederhana. VIO melacak posisi relatif perangkat Anda di luar angkasa (pose 6DOF Anda) secara real time; yaitu, pose Anda dihitung ulang di antara setiap penyegaran bingkai di layar Anda, sekitar 30 kali atau lebih per detik. Perhitungan ini dilakukan dua kali, secara paralel. Pose Anda dilacak melalui sistem visual (kamera) dengan mencocokkan titik di dunia nyata dengan piksel pada sensor kamera setiap bingkai. Pose Anda juga dilacak oleh sistem inersia (akselerometer dan giroskop Anda — IMU).
Output dari kedua sistem tersebut kemudian digabungkan melalui filter Kalman yang menentukan mana dari dua sistem yang memberikan perkiraan terbaik dari posisi "nyata"
Anda (kebenaran dasar) dan menerbitkan pembaruan tersebut melalui ARKit SDK. Sama
seperti odometer Anda di mobil Anda melacak jarak yang telah ditempuh mobil, sistem VIO melacak jarak yang telah ditempuh iPhone Anda dalam ruang 6D. 6D berarti 3D gerak XYZ (terjemahan), ditambah 3D pitch/yaw/roll (rotasi).
Keuntungan besar yang dibawa VIO adalah pembacaan IMU dilakukan sekitar 1.000 kali per detik dan didasarkan pada akselerasi (gerakan pengguna). Perhitungan mati digunakan untuk mengukur pergerakan perangkat antara pembacaan IMU. Perhitungan mati cukup banyak menebak, sama seperti jika saya meminta Anda untuk mengambil langkah dan memperkirakan berapa inci langkah itu. Kesalahan dalam sistem inersia terakumulasi dari waktu ke waktu, sehingga semakin banyak waktu antara frame IMU atau semakin lama sistem inersia berjalan tanpa mendapatkan "reset" dari sistem visual, semakin banyak tracking akan menyimpang dari kebenaran dasar.
Pengukuran visual/optik dibuat pada kecepatan bingkai kamera, jadi biasanya 30 bingkai per detik, dan didasarkan pada jarak (perubahan pemandangan di antara bingkai).
Sistem optik biasanya mengakumulasi kesalahan pada jarak (dan waktu pada tingkat yang lebih rendah), sehingga semakin jauh Anda melakukan perjalanan, semakin besar kesalahannya. Kabar baiknya adalah bahwa kekuatan masing-masing sistem membatalkan kelemahan yang lain.
Gambar 5-20. ARKit Apple Apple
Jadi, sistem tracking visual dan inersia didasarkan pada sistem pengukuran yang sama sekali berbeda tanpa saling ketergantungan. Ini berarti bahwa kamera dapat ditutupi atau mungkin melihat pemandangan dengan sedikit fitur optik (seperti dinding putih) dan sistem inersia dapat "membawa beban" untuk beberapa bingkai. Atau, perangkat bisa diam dan sistem visual dapat memberikan pose yang lebih stabil daripada sistem inersia. Filter Kalman terus-menerus memilih pose kualitas terbaik, dan hasilnya adalah tracking yang stabil.
Sejauh ini, sangat bagus, tetapi yang menarik adalah bahwa sistem VIO telah ada selama bertahun-tahun, dipahami dengan baik di industri, dan ada beberapa implementasi yang sudah ada di pasar. Jadi, fakta bahwa Apple menggunakan VIO tidak berarti banyak. Kita perlu melihat mengapa sistemnya begitu kuat.
Bagian utama kedua dari ARKit adalah deteksi pesawat sederhana. Ini diperlukan agar Anda memiliki "dasar" untuk menempatkan konten Anda; jika tidak, konten itu akan terlihat seperti mengambang mengerikan di luar angkasa. Ini dihitung dari fitur yang terdeteksi oleh sistem optik (titik-titik kecil, atau titik-awan, yang Anda lihat dalam demonstrasi) dan algoritme hanya meratakannya karena tiga titik menentukan bidang. Jika Anda melakukan ini cukup lama, Anda dapat memperkirakan di mana lokasi sebenarnya. Titik-titik ini membentuk cloud titik yang jarang, yang telah kita bahas sebelumnya di bab ini, yang digunakan untuk tracking optik. cloud titik yang jarang menggunakan lebih sedikit memori dan waktu CPU untuk dilacak, dan dengan dukungan sistem inersia, sistem optik dapat bekerja dengan baik dengan sejumlah kecil titik untuk dilacak. Ini adalah jenis cloud titik yang berbeda dengan cloud titik padat, yang dapat terlihat dekat dengan fotorealisme (beberapa pelacak yang sedang diteliti dapat menggunakan cloud titik padat untuk tracking, sehingga lebih membingungkan).
Beberapa Misteri Dijelaskan
Dua misteri ARKit adalah: "Bagaimana Anda mendapatkan 3D dari satu lensa?" dan
"Bagaimana Anda mendapatkan skala metrik (seperti dalam demonstrasi pita pengukur itu)?"
Rahasianya di sini adalah memiliki penghapusan kesalahan IMU yang sangat bagus (yaitu, membuat tebakan perhitungan mati menjadi sangat akurat). Ketika Anda bisa melakukannya, inilah yang terjadi:
Untuk mendapatkan 3D dari satu lensa, Anda harus memiliki dua tampilan pemandangan dari tempat yang berbeda, yang memungkinkan Anda melakukan perhitungan stereoskopik posisi Anda. Ini mirip dengan cara mata kita melihat dalam 3D dan mengapa beberapa pelacak mengandalkan kamera stereo. Sangat mudah untuk menghitung jika Anda memiliki dua kamera karena Anda mengetahui jarak antara keduanya dan bingkai yang diambil pada saat yang sama. Untuk menghitung ini hanya dengan satu kamera, Anda perlu mengambil satu bingkai, lalu bergerak, lalu menangkap bingkai kedua. Dengan menggunakan perhitungan mati IMU, Anda dapat menghitung jarak yang dipindahkan antara dua bingkai dan kemudian melakukan perhitungan stereo seperti biasa (dalam praktiknya, Anda mungkin melakukan perhitungan dari lebih dari dua bingkai untuk mendapatkan akurasi yang lebih).
Jika IMU cukup akurat, "gerakan" antara dua bingkai ini terdeteksi hanya dengan gerakan otot kecil yang Anda lakukan saat mencoba menahan tangan Anda! Jadi itu terlihat seperti sihir.
Untuk mendapatkan skala metrik, sistem juga mengandalkan perhitungan mati yang akurat dari IMU. Dari pengukuran akselerasi dan waktu yang disediakan IMU, Anda dapat mengintegrasikan mundur untuk menghitung kecepatan dan mengintegrasikan kembali untuk mendapatkan jarak yang ditempuh antara bingkai IMU. Matematikanya tidak sulit. Yang sulit adalah menghilangkan kesalahan dari IMU untuk mendapatkan pengukuran akselerasi yang hampir sempurna. Kesalahan kecil, yang terakumulasi 1.000 kali per detik selama beberapa detik yang diperlukan bagi Anda untuk memindahkan telepon, dapat berarti kesalahan skala
metrik 30% atau lebih. Fakta bahwa Apple telah mengerjakan ini hingga kesalahan satu digit persen sangat mengesankan.
Gambar 5-21. Tango mulai sebagian besar berfokus pada tracking gerakan ponsel dalam ruang 3D
Bukankah ARCore Hanya Tango-Lite?
Salah satu pengembang yang saya ajak bicara sekitar waktu peluncuran ARCore dengan bercanda mengatakan, "Saya baru saja melihat ARCore SDK, dan mereka benar-benar mengganti nama Tango SDK, mengomentari kode kamera kedalaman dan mengubah flag compiler." Saya menduga itu sedikit lebih dari itu, tetapi tidak lebih (ini bukan hal yang buruk!).
Misalnya, browser web baru yang mendukung ARCore sangat bagus untuk pengembang, tetapi terpisah dari SDK inti. Dalam posting ARKit saya baru-baru ini, saya bertanya-tanya mengapa Google tidak merilis versi Tango VIO (yang tidak memerlukan kamera kedalaman) 12 bulan yang lalu, mengingat mereka memiliki semua bagian yang siap untuk digunakan.
Sekarang mereka punya!
Ini adalah berita bagus, karena ini berarti bahwa ARCore adalah perangkat lunak yang sangat matang dan teruji dengan baik (setidaknya memiliki pengembangan dua tahun lebih banyak di Google daripada yang dimiliki ARKit di Apple — meskipun membeli Metaio dan Flyby membantu Apple mengejar ketinggalan), dan ada banyak peta jalan fitur yang dibariskan untuk Tango, yang tidak semuanya bergantung pada data kedalaman 3D, yang sekarang akan menemukan jalannya ke ARCore.
Mengesampingkan penamaan, jika Anda menambahkan perangkat keras sensor kamera kedalaman ke telepon yang menjalankan ARCore, Anda akan memiliki telepon Tango.
Sekarang Google memiliki jalan yang lebih mudah untuk mendapatkan adopsi SDK secara luas dengan dapat mengirimkannya ke ponsel unggulan OEM. Tidak ada yang akan menyerahkan ponsel Android yang bagus untuk yang lebih buruk dengan AR (sama seperti tidak ada yang
akan menyerahkan ponsel hebat apa pun untuk ponsel Windows dengan AR, jadi Microsoft tidak repot; itu langsung ke HMD). Sekarang orang akan membeli telepon yang akan mereka beli, dan ARCore akan ditarik secara gratis. Banyak ide orisinal ditujukan untuk pemetaan dalam ruangan. Baru kemudian AR dan VR menjadi kasus penggunaan paling populer.
Jika kita mempertimbangkan namanya, saya pikir itu menarik bahwa Tango selalu digambarkan seperti “telepon yang selalu tahu lokasinya” (Gambar 5-21). Saya belum pernah bertemu satu orang pun yang terkesan dengan itu. Bagi saya, itu memposisikan ponsel sebagai sesuatu yang lebih selaras dengan Google Maps, dan AR adalah renungan (apakah itu cara Google melihatnya masih bisa diperdebatkan). Dengan nama baru, semuanya AR, sepanjang waktu, seperti yang ditunjukkan pada Gambar 5-22.
Gambar 5-22. Google ARCore adalah evolusi Tango tanpa perangkat keras kamera kedalaman
Jadi, Haruskah Saya Membangun di ARCore Sekarang?
Jika Anda menyukai Android dan memiliki S8 atau Pixel, jawabannya adalah ya.
Lakukan itu. Jika Anda menyukai iPhone, jangan repot-repot menggantinya. Hal yang harus menjadi fokus pengembang adalah bahwa membangun aplikasi AR yang disukai orang sangat menantang. Akan jauh lebih sedikit upaya untuk mempelajari cara membangun ARKit atau ARCore daripada upaya mempelajari apa yang harus dibangun. Ingat juga bahwa ARKit/ARCore SDK adalah versi 1.0. Mereka benar-benar dasar (VIO, deteksi pesawat, pencahayaan dasar) dan akan menjadi fitur yang jauh lebih lengkap selama beberapa tahun ke depan (pemahaman Scene 3D, oklusi, multipemain, persistensi konten, dll.). Ini akan menjadi kurva pembelajaran yang konstan bagi pengembang dan konsumen. Namun untuk saat ini, fokuslah untuk mempelajari apa yang sulit (aplikasi apa yang akan dibuat) dan tetap berpegang pada apa yang Anda ketahui untuk teknologi yang mendasarinya (cara membuatnya: Android, IOS Xcode, dll.). Setelah Anda memahami apa yang membuat aplikasi bagus, buat keputusan tentang platform terbaik untuk diluncurkan sehubungan dengan jangkauan pasar, dukungan fitur AR, monetisasi, dan sebagainya.
Bagaimana dengan Tango, Hololens, Vuforia, dan Lainnya?
Jadi, Tango adalah merek (sudah dikalahkan oleh Google), bukan produk. Ini terdiri dari desain referensi perangkat keras (RGB, fisheye, kamera kedalaman, dan beberapa spesifikasi CPU/GPU) dan tumpukan perangkat lunak yang menyediakan VIO (tracking gerak), pemetaan jarang (pembelajaran area), dan rekonstruksi 3D padat (persepsi kedalaman).
Hololens (dan Magic Leap) memiliki tumpukan perangkat lunak yang persis sama, tetapi mencakup beberapa chip pemrosesan sinyal digital dasar (DSP), yang mereka sebut sebagai Unit Pemrosesan Holografik, untuk membongkar pemrosesan dari CPU/GPU dan menghemat daya. Desain chip yang lebih baru dari Qualcomm akan memiliki fungsi ini di dalamnya, menghilangkan kebutuhan untuk pemrograman DSP khusus dan mengurangi biaya perangkat keras di masa mendatang. Vuforia hampir sama lagi, tetapi perangkat kerasnya independen.
Masing-masing menggunakan jenis sistem VIO yang sama. Baik Hololens, Magic Leap, maupun Tango tidak menggunakan kamera kedalaman untuk tracking (meskipun saya yakin mereka mulai mengintegrasikannya untuk membantu dalam beberapa kasus sudut). Jadi mengapa ARKit begitu bagus? Jawabannya adalah bahwa ARKit tidak benar-benar lebih baik daripada Hololens, tetapi perangkat keras Hololens tidak tersedia secara luas.
Jadi, pada akhirnya, alasan ARKit lebih baik adalah karena Apple mampu melakukan pekerjaan untuk memasangkan algoritma VIO dengan erat ke sensor dan menghabiskan banyak waktu untuk mengkalibrasinya untuk menghilangkan kesalahan dan ketidakpastian dalam perhitungan pose.
Perlu dicatat bahwa ada banyak alternatif untuk sistem OEM besar. Ada banyak pelacak akademis (misalnya, ORB Slam bagus dan OpenCV memiliki beberapa opsi) tetapi hampir semuanya hanya optik (mono RGB, atau stereo, dan/atau berbasis kamera kedalaman;
beberapa menggunakan peta jarang, beberapa padat, beberapa peta kedalaman, dan yang lainnya menggunakan data semi-langsung dari sensor—ada banyak cara untuk menguliti kucing ini. Ada sejumlah startup yang bekerja pada sistem tracking. Augmented Pixels memiliki satu yang berkinerja baik, tetapi pada akhirnya hari, setiap sistem VIO membutuhkan pemodelan dan kalibrasi perangkat keras untuk bersaing.