Preskoči na sadržaj
FORTRONIQ

MODUL 3 · RAZVOJ OKRUŽENJA PROŠIRENE STVARNOSTI

Nastavna jedinica 3.5

Integracija segmenata u funkcionalno okruženje

Scena koja radi u razvojnom okruženju nije aplikacija. Da bi postala aplikacija, mora se postaviti izgradnja za odabranu platformu, zatražiti dopuštenja, potpisati paket i instalirati ga na uređaj. Tek kad se na to doda veza s podacima iz pogona i uređeno izdavanje inačica, okruženje postaje funkcionalno.

Moći ću:
  • postaviti izgradnju aplikacije za odabranu platformu
  • odrediti potrebna dopuštenja i način njihova traženja
  • objasniti potpisivanje paketa i postupak instalacije
  • procijeniti i smanjiti veličinu paketa aplikacije
  • povezati aplikaciju s podacima iz pogona
  • urediti označavanje inačica i isporuku korisnicima

Što se u integraciji spaja

Integracija je korak u kojem se dijelovi koji su dotad nastajali odvojeno spoje u jednu cjelinu koja radi na uređaju. Spajaju se četiri stvari: scena s modelima i logikom, okvir za praćenje prostora, sklopovlje s odabranog radnog mjesta i podaci iz pogona.

Redoslijed nije proizvoljan. Prvo se izgradi paket bez podataka i provjeri da se pokreće i da prepoznaje metu. Zatim se dodaju dopuštenja i provjeri da ih korisnik doista dobiva. Tek onda se uključuje veza s podacima, jer bi u suprotnom svaka pogreška mogla doći s triju strana istodobno.

Integracija je i mjesto na kojem se prvi put vidi prava brzina rada. U razvojnom okruženju scena se izvodi na računalu s mnogo jačim procesorom i bez ograničenja potrošnje. Na uređaju se ista scena izvodi uz kameru koja radi neprekidno i uz bateriju koja se prazni, pa razlika u broju sličica u sekundi između računala i tableta zna biti dvostruka. Zbog toga se mjerenje nikada ne uzima iz razvojnog okruženja.

Na projektu AR-1 integracija ima jasnu granicu uspjeha: tehničar uzme tablet iz nosača, pokrene aplikaciju, snimi natpisnu pločicu i unutar dvije sekunde vidi prvi od osam koraka. Sve što se radi u ovoj jedinici mjeri se tom rečenicom.

Što se spajaIz koje jedinice dolaziProvjera pri spajanju
Scena, modeli, logika3.1scena se pokreće bez pogreške
Meta i sidra3.2meta se prepoznaje na uređaju
Sučelje i interakcija3.3gumbi rade i tekst je čitljiv
Uređaj i oprema3.4aplikacija radi u nosaču i pri zatečenom svjetlu
Podaci iz pogona3.5oznaka ćelije se dohvaća, potvrda se šalje

Postavke izgradnje

Izgradnja (build) je postupak u kojem se scena i skripte pretvore u paket koji uređaj može instalirati. Prije prve izgradnje postavlja se nekoliko stvari koje se poslije teško mijenjaju. Najvažnija je naziv paketa, jedinstvena oznaka po kojoj uređaj razlikuje aplikacije; njezina promjena znači novu aplikaciju, a ne novu inačicu.

Za Android se uz to postavlja najmanja podržana inačica sustava, arhitektura procesora, usmjerenje zaslona i način prikaza. Za iOS se postavljaju oznaka razvojnog računa, profil za isporuku i opis svrhe za svako dopuštenje. Za naočale se dodatno bira ulazna točka u prostorno sučelje sustava i način na koji se aplikacija zaustavlja kad korisnik skine uređaj.

Uz to se odlučuje što ulazi u paket, a što ne. Scene koje se ne koriste, probni modeli i teksture iz ranijih pokusa ostaju u projektu i, ako se ne isključe, završe u paketu. Prije prve prave izgradnje projekt se zato pregleda i sve što nije u upotrebi premjesti u zasebnu mapu koja se ne uključuje.

Izgradnja ima i dva načina rada. Razvojna izgradnja uključuje zapisnik, mjerenje brzine i mogućnost spajanja s računalom radi traženja pogrešaka; sporija je i veća. Izgradnja za isporuku sve to isključuje i dodatno sažima sadržaj. Mjerenja koja ulaze u dokumentaciju rade se isključivo na izgradnji za isporuku, jer bi razvojna dala lošije i neupotrebljive brojke.

PostavkaAndroidiOSNaočale
Naziv paketaobrnuti naziv domeneisto, uz oznaku računaisto
Najmanja inačica sustavaprema popisu okviraprema popisu okviraprema uređaju
Usmjerenje zaslonavodoravno ili okomitovodoravno ili okomitonije primjenjivo
Potpisivanjevlastiti ključrazvojni profilprema sustavu uređaja
Način instalacijekabelom ili interni kanalinterni kanalkabelom ili upravitelj
Oznaka inačicebroj i nazivbroj i nazivbroj i naziv
naziv paketa : hr.primjer.ar1
inačica      : 1.1 (izgradnja 14)
sustav       : Android 12 i noviji
usmjerenje   : vodoravno
dopuštenja   : kamera, mreža

Pažnja

Oznaka inačice mora rasti pri svakoj isporuci. Ako se paket isporuči s istim brojem, uređaji ga neće prepoznati kao noviji i tehničari će nastaviti raditi sa starom aplikacijom, a da nitko neće znati zašto ispravak ne djeluje.

Dopuštenja

Aplikacija proširene stvarnosti ne može raditi bez pristupa kameri. Uz kameru se najčešće traže i mreža, pohrana, mikrofon za glasovne naredbe te, u lokacijskim primjenama, položaj uređaja. Svako od tih dopuštenja korisnik mora odobriti, a suvremeni sustavi ga traže u trenutku prve uporabe, a ne pri instalaciji.

Zbog toga se uz zahtjev daje kratko obrazloženje. Poruka aplikaciji je potreban pristup kameri ne govori ništa; poruka kamera služi za prepoznavanje natpisne pločice ćelije govori sve. Obrazloženje se piše jednom i ulazi u postavke izgradnje, jer ga neki sustavi traže kao uvjet za objavu.

Mora se predvidjeti i što se događa ako korisnik dopuštenje odbije. Aplikacija tada ne smije prekinuti rad nego objasniti što zbog toga ne radi i ponuditi otvaranje postavki. Odbijeni mikrofon znači rad bez glasovnih naredbi; odbijena kamera znači da proširena stvarnost nije moguća, pa se prikazuje uputa u običnom obliku.

Dopuštenja se traže i redom kojim su potrebna, a ne sva odjednom pri pokretanju. Niz od pet pitanja na prvom zaslonu korisnik zatvara ne čitajući, pa se poslije čudi zašto glasovne naredbe ne rade. Kamera se traži kad se otvara prikaz, mikrofon kad se prvi put upotrijebi glasovna naredba, a položaj samo ondje gdje se doista koristi.

DopuštenjeZašto se tražiAko je odbijeno
Kameraprepoznavanje mete i praćenje prostoraprikaz upute bez proširene stvarnosti
Mrežadohvat podataka o ćeliji i slanje potvrderad s unaprijed učitanim podacima
Pohranaspremanje trajnih sidara i zapisasidra vrijede samo do zatvaranja
Mikrofonglasovne naredbeupravljanje gumbima
Položajprepoznavanje ćelije na velikom prostoruručni odabir ćelije

Potpisivanje, izgradnja i instalacija

Paket se prije instalacije potpisuje. Potpis je kriptografski dokaz da paket dolazi od poznatog izdavača i da poslije nije izmijenjen. Ključ za potpisivanje čuva se izvan projekta, na sigurnom mjestu, uz zapis o tome tko mu ima pristup. Gubitak ključa znači da se postojeća aplikacija više ne može nadograditi, nego se mora instalirati kao nova.

Instalacija u pogonu ne ide preko javnih trgovina aplikacijama. Uobičajena su tri puta: izravno kabelom na uređaj, preko internog kanala za isporuku unutar poduzeća i preko sustava za upravljanje uređajima koji aplikaciju sam postavlja na sve zadužene uređaje. Treći je put najbolji kad ima više od nekoliko uređaja, jer jamči da svi rade s istom inačicom.

Uz paket se isporučuje i kratka uputa za instalaciju: koji je uređaj podržan, koja je inačica sustava potrebna, koja dopuštenja treba odobriti i kako se provjerava da je instalacija uspjela. Bez te upute prva instalacija u pogonu redovito zapne na sitnici, primjerice na postavci koja zabranjuje instalaciju iz nepoznatog izvora.

projekt AR-1postavkeizgradnjeprevođenjepotpisdopuštenja:kamera, mrežapaket 96 MBinstalacija na uređajprovjera u ćelijigranica 150 MBinačica 1.1, popis promjenakabelom ili upraviteljemsvaka isporuka nosi novu oznaku inačice i zapis o tome što je promijenjeno
Slika 3.5 — Tijek od projekta do uređaja: postavke, prevođenje, potpisivanje, paket i instalacija, uz dopuštenja koja se postavljaju uz izgradnju.

Prva izgradnja gotovo nikada ne prođe iz prvog pokušaja. Najčešće smeta nedostajuće dopuštenje, pogrešna arhitektura procesora ili prevelika tekstura. Zato se izgradnja radi rano, dok je scena još mala, a ne na kraju — tada se pogreške rješavaju jedna po jedna, a ne sve odjednom pod rokom.

Veličina paketa

Paket aplikacije mora stati u dogovorenu granicu. Na projektu AR-1 ta je granica 150 MB, a izmjerena veličina gotovog paketa iznosi 96 MB. Granica nije hir: velik paket dugo se prenosi preko bežične mreže hale, zauzima mjesto na uređaju i odbija korisnike od nadogradnje.

Najveći dio paketa nisu skripte nego teksture. Jedna tekstura 1024 × 1024 bez sažimanja zauzima oko 4 MB, a sa sažimanjem prilagođenim uređaju svega oko pola megabajta. Zato se sažimanje uključuje uvijek, a razlučivost se bira prema tome koliko se tekstura izbliza gleda, a ne prema tome kolika je izvorna slika.

Drugi izvor su modeli i zvuk. Model prihvatnice s 12 000 trokuta u zapisu glTF sa sažimanjem zauzima 2,1 MB, što je zanemarivo. Snimljena govorna uputa za osam koraka može, ako se ne sažme, zauzeti više od samog modela. Sadržaj koji se rijetko koristi — primjerice shema ožičenja — ne ugrađuje se u paket nego se dohvaća s poslužitelja pri prvoj uporabi.

Uz veličinu paketa prati se i veličina koju aplikacija zauzme nakon instalacije. Ona je uvijek veća, jer se dio sadržaja pri prvom pokretanju raspakira, a uz to se spremaju trajna sidra, opisi prostora i zapisi o zahvatima. Na tabletu s više korisnika ti zapisi rastu, pa se u aplikaciju ugrađuje brisanje starijih zapisa nakon dogovorenog roka.

Veličina paketa aplikacijeRačunski prikaz

Prikaz procjenjuje veličinu paketa iz broja i razlučivosti tekstura te broja modela. Osnovni dio aplikacije s knjižnicama okvira zauzima oko 88 MB, a dogovorena granica na projektu AR-1 iznosi 150 MB.

Teksture—MB
Modeli—MB
Ukupno paket—MB
Odnos prema granici od 150 MB—

Prikaz pokazuje odnos triju veličina: osnovnog dijela aplikacije, tekstura i modela. Iz njega slijedi i redoslijed kojim se paket smanjuje: prvo sažimanje tekstura, pa njihova razlučivost, pa broj modela u paketu. Skraćivanje koda gotovo nikada nije mjesto na kojem se dobiva prostor.

Podaci iz pogona i isporuka inačica

Aplikacija koja stoji sama za sebe brzo zastari. Uputa za zamjenu prihvatnice povezuje se s podacima o ćeliji: oznakom ćelije, oznakom robota, brojem radnog naloga i podatkom o zadnjem zahvatu. Ti podaci dolaze iz sustava za održavanje, a aplikacija ih dohvaća po prepoznatoj meti, jer meta nosi oznaku ćelije.

Veza ide u oba smjera. Kad tehničar dovrši osmi korak, aplikacija šalje potvrdu: tko je zahvat obavio, kada, koliko je trajao i je li koji korak preskočen. Time uputa prestaje biti pomagalo i postaje dio zapisa o održavanju. Podaci se šalju preko sučelja koje je unaprijed dogovoreno, uz provjeru korisnika i šifriranu vezu.

Inačice se označavaju dosljedno. Prva radna inačica koja je izašla iz radionice nosi oznaku 1.0, ispravci nakon ispitivanja podižu drugi broj, a veće promjene prvi. Uz svaku inačicu ide kratak popis promjena, pisan za tehničara, a ne za programera: što je novo, što je ispravljeno i mora li se nešto raditi drukčije.

Podaci koji ulaze i izlaze iz aplikacije traže i osnovnu pažnju prema sigurnosti. Uređaj se u pogonu dijeli, pa se prijava korisnika ne sprema trajno, a zapisi se šalju preko šifrirane veze. Na uređaju se ne drži ništa što ondje ne mora biti: ni popis svih ćelija ni podaci o zahvatima starijima od dogovorenog roka. Time se u slučaju gubitka uređaja gubi oprema, a ne podaci pogona.

Isporuka se ne radi usred smjene. Nova se inačica postavlja na jedan uređaj, provjeri u ćeliji, pa tek onda proširi na ostale. Stara se inačica čuva dok se nova ne potvrdi u radu, jer povratak na prethodno stanje mora biti moguć u nekoliko minuta.

Ključni pojmovi

PojamZnačenje
IntegracijaSpajanje programskih i sklopovskih dijelova u cjelinu koja radi na uređaju.
IzgradnjaPostupak pretvaranja projekta u paket koji se instalira na uređaj.
Naziv paketaJedinstvena oznaka po kojoj uređaj razlikuje aplikacije.
DopuštenjeOdobrenje korisnika za pristup kameri, mreži, pohrani, mikrofonu ili položaju.
PotpisivanjeKriptografski dokaz da paket dolazi od poznatog izdavača i da nije izmijenjen.
Sažimanje teksturaPostupak kojim tekstura u paketu zauzima višestruko manje mjesta.
Oznaka inačiceBroj koji raste pri svakoj isporuci i uz koji ide popis promjena.

Provjeri se

Kratka provjera prije prelaska na sljedeću jedinicu. Odgovor se potvrđuje klikom, a obrazloženje se prikazuje odmah.

Pitanje 1 od 5

Kada se od korisnika traži dopuštenje za kameru?

Suvremeni sustavi traže dopuštenje u trenutku uporabe, a obrazloženje pomaže korisniku da ga odobri.

Pitanje 2 od 5

Što se događa ako se izgubi ključ za potpisivanje?

Bez izvornog ključa nova inačica ne prolazi kao nadogradnja nego kao nova aplikacija.

Pitanje 3 od 5

Koji dio najčešće zauzima najviše mjesta u paketu?

Teksture bez sažimanja brzo nadmaše sve ostalo; jedna tekstura 1024 × 1024 zauzima oko 4 MB.

Pitanje 4 od 5

Zašto oznaka inačice mora rasti pri svakoj isporuci?

Paket s istom oznakom uređaji ne prepoznaju kao nadogradnju, pa ispravak ne dođe do korisnika.

Pitanje 5 od 5

Kako se aplikacija ponaša ako korisnik odbije dopuštenje za mikrofon?

Odbijeno dopuštenje isključuje pripadnu mogućnost, a ne cijelu aplikaciju.

Odgovoreno 0 od 5.