Table of Contents

Mengontrol Proses Pemantauan Mega

Artikel ini menjelaskan cara mengontrol berbagai fungsi dan parameter dalam proses pemantauan Mega untuk memenuhi kebutuhan berbagai skenario aplikasi.

Sebelum Memulai

Alur kerja tracker

Alur kerja tracker adalah sebagai berikut:

flowchart LR
  subgraph startup_graph[Memulai]
    direction TB
    sstart((session dimulai))
    create[Dibuat secara asli]
    load(Memuat target)
    init_g[[Inisialisasi]]
  end
  
  subgraph init_graph[Inisialisasi]
    direction TB
    init_{Inisialisasi 6DoF berhasil<br>atau bukan 6DoF}
    init[[Proses inisialisasi pelacakan lokal]]
    localization_g[[Lokalisasi awal]]
  end

  subgraph localization_graph[Lokalisasi awal]
    direction TB
    localize__{Lokalisasi diaktifkan dan<br>melebihi interval permintaan}
    localize[Lokalisasi cloud]
    localize_{Terlokalisasi ke blok dan<br>blok telah dimuat}
    tracking_g[[Pelacakan]]
  end
  
  subgraph tracking_graph[Pelacakan]
    direction TB
    tracking[[Pelacakan terus-menerus]]
  
    localizet_{Lokalisasi diaktifkan dan<br>melebihi interval permintaan}
    localize2[Lokalisasi cloud]
    localize2_{Terlokalisasi ke blok dan<br>blok telah dimuat}
    localization_g2[[Lokalisasi awal]]
  end

  subgraph stopping_graph[Berhenti]
    direction TB
    unload(Membuang target)
    dispose[Dihancurkan secara asli]
    sstop([session berhenti])
  end

  sstart --> create --> load --> init_g
  init --> init_ --> |Yes| localization_g
  localize --> localize_ --> |Yes| tracking_g
  localize_ --> |No| localize__ --> |Yes| localize
  unload --> dispose --> sstop
  init_ --> |No| init

  tracking --> localizet_ --> |Yes| localize2 --> localize2_ --> |Yes| tracking
  localizet_ --> |No| tracking
  localize2_ --> |No| localization_g2

  startup_graph --> init_graph
  init_graph --> localization_graph
  localization_graph --> tracking_graph
  tracking_graph --> localization_graph
  tracking_graph --> stopping_graph

Alur tersebut secara umum dibagi menjadi beberapa tahap:

  • Memulai:
    • Setelah session dimulai, tracker di lapisan asli akan dibuat.
    • Setelah Start() target sendiri, target akan dimuat ke dalam tracker yang sesuai.
  • Inisialisasi:
    • Saat menggunakan 6DoF frame source, akan masuk ke proses inisialisasi pelacakan lokal.
    • Saat menggunakan non-6DoF frame source, tahap inisialisasi akan dilewati dan langsung masuk ke tahap lokalisasi awal.
    • Proses ini mungkin memakan waktu, tergantung pada kompleksitas adegan dan kemampuan performa perangkat, dan biasanya terkait dengan algoritma yang digunakan di lapisan bawah frame source.
    • Dalam konfigurasi default, konten tahap ini tidak akan ditampilkan. Anda dapat mengontrol perilaku ini melalui opsi komponen ActiveController.
  • Lokalisasi awal:
    • Jika lokalisasi diaktifkan dan melebihi interval permintaan, tracker akan mengirim permintaan lokalisasi ke cloud.
      • Setelah lokalisasi berhasil, jika blok yang sesuai dengan id yang dikembalikan oleh layanan lokalisasi telah dimuat, maka masuk ke tahap pelacakan; jika blok belum dimuat, maka terus menunggu hingga blok selesai dimuat dan menunggu permintaan lokalisasi berikutnya.
      • Setelah lokalisasi gagal, tracker akan terus menunggu permintaan lokalisasi berikutnya.
    • Proses ini mungkin memakan waktu, tergantung pada tingkat kemudahan adegan untuk dilokalisasi dan kondisi jaringan.
    • Dalam konfigurasi default, konten tahap ini tidak akan ditampilkan. Anda dapat mengontrol perilaku ini melalui opsi komponen ActiveController.
  • Pelacakan:
    • Tracker akan terus melacak blok saat ini.
    • Jika lokalisasi diaktifkan dan melebihi interval permintaan, tracker akan mengirim permintaan lokalisasi ke cloud.
      • Setelah lokalisasi berhasil, jika id yang dikembalikan oleh layanan lokalisasi tidak berubah, maka lanjut melacak; jika id berubah dan blok telah dimuat, maka beralih ke blok baru dan lanjut melacak; jika id berubah dan blok belum dimuat, maka terus menunggu hingga blok selesai dimuat dan menunggu permintaan lokalisasi berikutnya.
      • Setelah lokalisasi gagal, tracker akan terus melacak blok saat ini dan menunggu permintaan lokalisasi berikutnya.
    • Dalam konfigurasi default, hanya konten di bawah node target yang berada dalam status pelacakan (TargetController.IsTracked == true) yang akan ditampilkan. Anda dapat mengontrol perilaku ini melalui opsi komponen ActiveController.
  • Berhenti:
    • Setelah session berhenti, target akan dibuang dan tracker di lapisan asli akan dihancurkan.

Mengatur Tingkat Dukungan Perangkat

Properti MegaTrackerFrameFilter.MinInputFrameLevel dari MegaTrackerFrameFilter digunakan untuk menentukan tingkat perangkat minimum yang didukung oleh Mega.

alt text

Mega dapat berjalan pada hampir semua jenis sumber data frame, tetapi sumber data frame yang berbeda memiliki pengaruh yang berbeda terhadap efek pelacakan.

Secara default, Mega akan memilih sumber data frame dengan tingkat tertinggi yang didukung oleh perangkat untuk pelacakan. Sesi yang mendukung Mega dalam konfigurasi default telah dikonfigurasi dengan sumber data frame yang mendukung 6DoF dan 5DoF.

Untuk mendukung sumber data frame dengan tingkat tertentu saat Mega berjalan, diperlukan dua syarat:

Misalnya, untuk mendukung pelacakan 3DoF dalam sesi default, diperlukan:

Sebagai contoh lain, untuk menghapus dukungan pelacakan 5DoF dalam sesi default, diperlukan:

Jika tidak ada sumber data frame yang memenuhi syarat yang tersedia, penyusunan sesi akan gagal.

Memahami Status Sistem Saat Ini

Dalam konfigurasi sesi default, Pesan UI akan ditampilkan di layar, yang berisi informasi tentang status pelacakan Mega.

Ketika pemetaan berhasil, informasi layanan Mega akan berisi teks status Found; ketika pemetaan gagal, informasi layanan Mega akan berisi teks status NotFound.

Blok yang telah dimuat akan ditampilkan sebagai Block [scnObj=<objName>] (<trackingStatus>): <name> (<id>). Di mana <objName> adalah nama objek skenario yang sesuai dengan blok, <name> adalah nama blok, dan <id> adalah ID blok. trackingStatus mungkin berupa Tracking atau NotTracking, masing-masing menunjukkan apakah blok saat ini sedang dilacak.

alt text alt text

Ketika pemetaan berhasil, informasi blok yang ditemukan tetapi belum dimuat akan ditampilkan sebagai Block [scnObj=?]: <name> (<id>).

alt text

Kiat

NotFound adalah status normal, dan status ini sering muncul selama seluruh proses kerja Mega. Saat status ini muncul, pelacakan masih berlanjut. Biasanya, tidak perlu melakukan penanganan khusus terhadap status NotFound dalam pengembangan aplikasi.

Anda dapat menggunakan acara MegaTrackerFrameFilter.LocalizationRespond untuk mendapatkan status pemetaan saat ini, sehingga dapat mengetahui apakah sistem saat ini telah menemukan target pelacakan.

Kode berikut menunjukkan cara menggunakan acara ini, serta cara penanganan status异常yang umum perlu diperhatikan oleh aplikasi:

private void Awake()
{
    megaTracker.LocalizationRespond += HandleLocalizationStatusChange;
}
        
private void HandleLocalizationStatusChange(MegaLocalizationResponse response)
{
    var status = response.Status;
    wakingUpCount = status == MegaTrackerLocalizationStatus.WakingUp ? wakingUpCount + 1 : 0;
    if (wakingUpCount >= 5)
    {
        // Layanan sedang membangkitkan, pengguna terminal perlu menunggu
    }

    if (status == MegaTrackerLocalizationStatus.QpsLimitExceeded)
    {
        // Batas QPS terlampaui, ada kemungkinan pengguna terminal mengalami kegagalan pemetaan secara acak (kualitas pelacakan keseluruhan menurun)
        // Biasanya, diperlukan pembayaran untuk meningkatkan batas QPS guna menjamin kualitas pelacakan pada jumlah pengguna saat ini
    }

    if (status == MegaTrackerLocalizationStatus.ApiTokenExpired)
    {
        // Token telah kedaluwarsa, hal ini hanya akan terjadi saat menggunakan antarmuka Token untuk mengakses layanan
        // Untuk mengatasi masalah ini, aplikasi perlu meminta Token dari backend sendiri dan memanggil MegaTrackerFrameFilter.UpdateToken untuk memperbarui
    }
}

Jika aplikasi sering mengalami status MegaTrackerLocalizationStatus.RequestTimeout, biasanya hal ini menunjukkan bahwa kondisi jaringan perangkat yang terhubung ke layanan tidak baik. Disarankan untuk mengoptimalkan lingkungan jaringan guna meningkatkan kualitas pelacakan. Dalam skenario di mana kondisi jaringan tidak dapat ditingkatkan, Anda dapat mempertimbangkan untuk menambah waktu batas permintaan.

Catatan

Tidak dapat memperoleh pose yang dikembalikan oleh pemetaan melalui acara ini.

Faktanya, pose yang dikembalikan oleh pemetaan tidak diperlukan dalam pengembangan aplikasi. EasyAR akan menghitung pose yang lebih akurat melalui algoritma lokal setelah pemetaan dikembalikan dan mengembalikannya kepada pengembang untuk digunakan. Pose tersebut sudah tercermin dalam transformasi blok, dapat merujuk ke Mendapatkan Hasil Eksekusi Sesi.

Pause dan Lanjutkan

Fitur pelacakan dan penentuan lokasi Mega dapat dipause dan dilanjutkan secara terpisah.

Pause Tracking

Set MegaTrackerFrameFilter.enabled to false to pause tracking.

By default, after tracking is paused, all content under the block nodes will be hidden.

Pause Localisasi

Anda dapat menghentikan localisasi dengan mengatur MegaTrackerFrameFilter.EnableLocalization menjadi false.

Peringatan

Menghentikan localisasi akan mempengaruhi kinerja pelacakan. Umumnya, tidak disarankan untuk mengubah pengaturan ini. Gunakan fitur ini di bawah panduan dukungan teknis EasyAR.

Jika localisasi dihentikan selama eksekusi aplikasi, pastikan untuk menyebutkan hal ini saat melaporkan masalah ke EasyAR.

Layanan dan Kontrol Permintaan

Anda dapat mengontrol perilaku permintaan layanan dengan mengubah parameter komponen MegaTrackerFrameFilter.

Jarak permintaan dan waktu habis

Pilih objek Mega Tracker di bawah session, lalu ubah opsi di bawah Request Time Parameters untuk mengatur jarak waktu permintaan layanan dan waktu habis.

alt text

Dalam skrip, Anda dapat mengubah MegaTrackerFrameFilter.RequestTimeParameters untuk mencapai efek yang sama.

Peringatan

Mengubah jarak permintaan akan mempengaruhi efek pelacakan. Umumnya tidak disarankan untuk diubah. Gunakanlah dengan panduan dukungan teknis EasyAR.

Jika jarak permintaan telah diubah selama eksekusi aplikasi, pastikan untuk menyebutkan hal ini saat melaporkan masalah ke EasyAR.

切换定位库

Gunakan MegaTrackerFrameFilter.SwitchEndPoint untuk beralih ke pustaka lokalisasi saat runtime. Saat menggunakan antarmuka ini, tampilan kamera dan sesi tidak akan terputus.

Topik terkait