Update to LaTeKiSS 1.1

This commit is contained in:
Raffaele Mignone 2020-09-26 15:47:29 +02:00
parent 3e09ccf968
commit 0b64790140
Signed by: norangebit
GPG Key ID: F5255658CB220573
7 changed files with 93 additions and 77 deletions

View File

@ -1,25 +1,40 @@
pandoc src/*.md src/metadata.yaml --template latekiss --resource-path src -V hidelinks -V monochrome -o src/thesis_monochrome_oneside.tex
pandoc src/*.md src/metadata.yaml --template latekiss --resource-path src -V hidelinks -V monochrome -V twoside -o src/thesis_monochrome_twoside.tex
pandoc src/*.md src/metadata.yaml --template latekiss --resource-path src -o src/thesis_color_oneside.tex
pandoc src/*.md src/metadata.yaml --template latekiss --resource-path src -V twoside -o src/thesis_color_twoside.tex
cd src
pdflatex thesis_monochrome_oneside.tex
bibtex thesis_monochrome_oneside
pdflatex thesis_monochrome_oneside.tex
pdflatex thesis_monochrome_twoside.tex
bibtex thesis_monochrome_twoside
pdflatex thesis_monochrome_twoside.tex
pdflatex thesis_color_oneside.tex
bibtex thesis_color_oneside
pdflatex thesis_color_oneside.tex
pdflatex thesis_color_twoside.tex
bibtex thesis_color_twoside
pdflatex thesis_color_twoside.tex
cd ..
mkdir out
mv src/*.pdf out/
rm src/thesis*
pandoc src/*.md src/metadata.yaml \
-o out/thesis_monochrome_oneside.pdf \
--template latekiss \
--resource-path src \
--top-level-division chapter \
-F pandoc-crossref \
--bibliography src/bib.bib \
--highlight-style monochrome
pandoc src/*.md src/metadata.yaml \
-o out/thesis_monochrome_twoside.pdf \
-V twoside \
--template latekiss \
--resource-path src \
--top-level-division chapter \
-F pandoc-crossref \
--bibliography src/bib.bib \
--highlight-style monochrome
pandoc src/*.md src/metadata.yaml \
-o out/thesis_oneside.pdf \
-V colorlinks \
--template latekiss \
--resource-path src \
--top-level-division chapter \
-F pandoc-crossref \
--bibliography src/bib.bib \
pandoc src/*.md src/metadata.yaml \
-o out/thesis_twoside.pdf \
-V colorlinks \
-V twoside \
--template latekiss \
--resource-path src \
--top-level-division chapter \
-F pandoc-crossref \
--bibliography src/bib.bib \

View File

@ -9,10 +9,10 @@ Risulta importate non fare confusione tra AR e \ac{VR}, in quanto la prima, part
Recentissima, per applicazione, invece è la \ac{MR}, che può essere definita come un'AR potenziata, infatti in un'esperienza di MR l'utente oltre a percepire oggetti virtuali è in grado anche di interagire con essi.
Volendo elaborare una definizione di questi concetti, usando un paragone cinematografico, possiamo dire che in *The Matrix*\cite{wachowski:Matrix:1999} viene usata la VR.
Invece in *Iron Man*\cite{favreau:IronMan:2008} quando *Tony Stark* è in volo e gli vengono mostrate a video informazioni aggiuntive sta usando l'AR, mentre quando interagisce con gli ologrammi sta usando tecnologie di mixed reality.
Volendo elaborare una definizione di questi concetti, usando un paragone cinematografico, possiamo dire che in *The Matrix*[@wachowski:Matrix:1999] viene usata la VR.
Invece in *Iron Man*[@favreau:IronMan:2008] quando *Tony Stark* è in volo e gli vengono mostrate a video informazioni aggiuntive sta usando l'AR, mentre quando interagisce con gli ologrammi sta usando tecnologie di mixed reality.
Per una definizione più accurata possiamo ricorrere a quella elaborata nel 1994 da *Paul Milgram* e da alcuni suoi colleghi, che introducono il concetto di ***reality-virtuality continuum***\cite{milgram:AugmentedRealityClass:1994}.
Per una definizione più accurata possiamo ricorrere a quella elaborata nel 1994 da *Paul Milgram* e da alcuni suoi colleghi, che introducono il concetto di ***reality-virtuality continuum***[@milgram:AugmentedRealityClass:1994].
Nel loro lavoro hanno definito un segmento (vedi fig. \ref{rvc}) che ha ai propri estremi, da un lato l'ambiente reale, quello in cui viviamo, e dall'altro quello virtuale, completamente generato al computer.
Esattamente a metà strada tra essi risiede la realtà mista, dove gli oggetti reali e virtuali convivono ed hanno pari valenza.
@ -35,7 +35,7 @@ Obiettivo di questa macchina era estendere l'esperienza audio-visiva del cinema
Durante la visione lo spettatore veniva immerso nell'azione grazie ad una visone 3D e all'audio stereofonico, inoltre poteva percepire il vento, le vibrazioni, generate tramite l'inclinazione della macchina, e addirittura gli odori.
Nonostante le potenzialità della macchina[^cinema-4d], per mancanza di investitori, *Heilig* fu costretto ad abbandonare il suo progetto.
Una prima applicazione di AR *moderna* invece la troviamo nel 1968 quando *Ivan Sutherland* costruisce il primo visore (vedi fig. \ref{sutherland}) in grado di aggiungere elementi generati dal computer alla visione umana\cite{sutherland:HeadmountedThreedimensionalDisplay:1968}.
Una prima applicazione di AR *moderna* invece la troviamo nel 1968 quando *Ivan Sutherland* costruisce il primo visore (vedi fig. \ref{sutherland}) in grado di aggiungere elementi generati dal computer alla visione umana[@sutherland:HeadmountedThreedimensionalDisplay:1968].
Mentre per il battesimo si dovrà attendere il 1990 quanto *Tom Caudell* introduce per la prima volta il termine *augmented reality*.
![Vista frontale del visore di Sutherland](figures/headmounted2.jpg){#sutherland width=400 height=250px}
@ -44,11 +44,11 @@ Sempre agli inizi degli anni 90 arriva anche la prima applicazione non accademic
Tramite degli *head-up display*, ovvero un visore a sovrimpressione, venivano mostrate ai piloti delle informazioni aggiuntive, come velocità, quota, beccheggio.
In questo modo il pilota non aveva la necessità di guardare gli strumenti dell'abitacolo e poteva concentrarsi sul pilotaggio del velivolo.
A partire dalla fine degli anni 90 le tecnologie AR hanno trovato sempre maggiore applicazione nel campo dell'intrattenimento\cite{williamsii:HistoryAugmentedReality:2016}.
A partire dalla fine degli anni 90 le tecnologie AR hanno trovato sempre maggiore applicazione nel campo dell'intrattenimento[@williamsii:HistoryAugmentedReality:2016].
Infatti è proprio a cavallo tra secondo e terzo millennio, che per la prima volta, durante una partita di \ac{NFL}, la linea gialla del *primo down* viene generata da un computer.
Negli ultimi anni il fiorente progresso tecnologico ha consentito la diffusione sempre maggiore di apparecchi che permettono di fondere elementi virtuali con la realtà che li circonda.
Uno dei prodotti più riusciti sono senza dubbio i *Google Glass* (vedi fig. \ref{googleglass})\cite{x:Glass:2019}, presentati al grande pubblico durante il Google I/O del 2013, hanno la forma di comuni occhiali, ma con l'aggiunta di un'appendice che racchiude una fotocamera e un prisma usato per ottenere un *head-up display*.
Uno dei prodotti più riusciti sono senza dubbio i *Google Glass* (vedi fig. \ref{googleglass})[@x:Glass:2019], presentati al grande pubblico durante il Google I/O del 2013, hanno la forma di comuni occhiali, ma con l'aggiunta di un'appendice che racchiude una fotocamera e un prisma usato per ottenere un *head-up display*.
L'interazione può avvenire sia tramite un touchpad (in grado di riprodurre audio mediante conduzione ossea[^conduzione-ossea]) sia mediante comandi vocali.
Grazie a quest'ultima caratteristica è possibile avere un'esperienza d'uso *hand-free* che li ha resi particolarmente utili in campo industriale e medico.
@ -58,18 +58,18 @@ La crescente diffusione degli smartphone e il progressivo aumento delle loro cap
In questo modo è scaturita una continua richiesta di contenuti AR, che ha spinto molti player del settore tecnologico ad investire in questo campo.
Investimenti che hanno fatto nascere una moltitudine di \ac{SDK} per la realtà aumentata in grado di funzionare su smartphone.
Agli inizi del 2014 viene presentato *Google project Tango*\cite{googleatap:SayHelloProject:2014} uno dei progetti più interessanti e innovativi nel campo della visione artificiale e dell'AR.
Nasce dalla divisione ATAP[^atap] di Google sotto la guida di Johnny Lee, uno dei leader di *Kinect* in *Microsoft*, con l'intento di estendere le capacità di visione artificiale degli smartphone, rendendoli in grado di capire l'ambiente circostante\cite{eddy:GoogleFuturePhones:2015}.
Agli inizi del 2014 viene presentato *Google project Tango*[@googleatap:SayHelloProject:2014] uno dei progetti più interessanti e innovativi nel campo della visione artificiale e dell'AR.
Nasce dalla divisione ATAP[^atap] di Google sotto la guida di Johnny Lee, uno dei leader di *Kinect* in *Microsoft*, con l'intento di estendere le capacità di visione artificiale degli smartphone, rendendoli in grado di capire l'ambiente circostante[@eddy:GoogleFuturePhones:2015].
I *Tango devices* avevano la forma e le funzionalità di un normale smartphone, ma erano dotati di hardware specifico che gli consentiva di comprendere meglio, velocemente e più a fondo l'ambiente fisico che lo circondava.
Sebbene nel 2016 sia stata rimossa la dicitura *project* e sono stati commercializzati alcuni dispositivi di Lenovo e Asus, *Tango* non ha mai avuto grande successo né tra i produttori, né tra i consumatori.
Il mancato successo è stato determinato da una parte, dalla tendenza di Google a lanciare prodotti in eterna beta e dall'altra, dal costante miglioramento degli algoritmi di visione digitale che permettevano di ottenere risultati soddisfacenti anche su smartphone con hardware standard, e quindi più a buon mercato.
La soluzione di Google, da progetto avveniristico, si è ritrovata ad essere limitata ed acerba per il settore professional, in cui stavano emergendo soluzioni decisamente più potenti ed interessanti come *Microsoft HoloLens*[^mixed-reality] (vedi fig. \ref{hololens})\cite{microsoft:MicrosoftHoloLens:2019}, ma troppo costosa e limitante per quello consumers.
La soluzione di Google, da progetto avveniristico, si è ritrovata ad essere limitata ed acerba per il settore professional, in cui stavano emergendo soluzioni decisamente più potenti ed interessanti come *Microsoft HoloLens*[^mixed-reality] (vedi fig. \ref{hololens})[@microsoft:MicrosoftHoloLens:2019], ma troppo costosa e limitante per quello consumers.
![Microsoft HoloLens](figures/hololens.jpg){#hololens width=400 height=250px}
Il mancato successo di *Tango* unito alla concorrenza di altri *SDK* per la realtà aumentata, tra cui *ARKit* di Apple\cite{apple:ARKitAppleDeveloper:2019}, hanno convinto Google ad abbandonare completamente il progetto, trovandosi nella strana situazione di essere stata una delle prime ad investire in AR per smartphone, ma nonostante ciò essere indietro rispetto alla concorrenza.
Le risorse investite e le conoscenze accumulate con *Tango* hanno però permesso a Google di recuperare velocemente il terreno perso, così dalle ceneri di *Tango*\cite{kastrenakesGoogleProjectTango2017a} nasce *ARCore*, la piattaforma AR di Google\cite{googlear:ARCoreGoogleDeveloper:2019}.
Il mancato successo di *Tango* unito alla concorrenza di altri *SDK* per la realtà aumentata, tra cui *ARKit* di Apple[@apple:ARKitAppleDeveloper:2019], hanno convinto Google ad abbandonare completamente il progetto, trovandosi nella strana situazione di essere stata una delle prime ad investire in AR per smartphone, ma nonostante ciò essere indietro rispetto alla concorrenza.
Le risorse investite e le conoscenze accumulate con *Tango* hanno però permesso a Google di recuperare velocemente il terreno perso, così dalle ceneri di *Tango*[@kastrenakesGoogleProjectTango2017a] nasce *ARCore*, la piattaforma AR di Google[@googlear:ARCoreGoogleDeveloper:2019].
## Principi di funzionamento
@ -110,7 +110,7 @@ La maggiore applicazione di queste tecnologie si ha nella navigazione in realtà
[^olfactory]: Si è soliti associare l'AR principalmente a contenuti audio-video, ma in realtà è un settore che comprende tutti e cinque i sensi. Un'ipotetica tecnologia, che dato in input un piatto, riesce a farci percepite il sapore e l'odore andrebbe ascritta comunque al campo dell'AR.
[^destructive]: Anche se meno conosciuta, la branca *de-costruttiva*, si pone l'obiettivo di rimuovere del contenuto dal mondo reale. Una delle applicazioni più interessanti, sebbene ancora in fase sperimentale, è la realizzazione di un AD blocker per il mondo reale \cite{vanhemert:ARExperimentThat:2015}. L'AR de-costruttiva resta ad oggi ancora marginale, sia per una carenza di idee di applicazione, sia perché espone, più di quanto non succeda con l'AR costruttiva, l'utente ai pericoli dell'AR che già hanno portato a dei decessi. Mediaticamente più interessanti sono state le morti ascrivibili a *Pokémon GO* \cite{pokemongodeathtracker:PokemonGODeath:2019}.
[^destructive]: Anche se meno conosciuta, la branca *de-costruttiva*, si pone l'obiettivo di rimuovere del contenuto dal mondo reale. Una delle applicazioni più interessanti, sebbene ancora in fase sperimentale, è la realizzazione di un AD blocker per il mondo reale [@vanhemert:ARExperimentThat:2015]. L'AR de-costruttiva resta ad oggi ancora marginale, sia per una carenza di idee di applicazione, sia perché espone, più di quanto non succeda con l'AR costruttiva, l'utente ai pericoli dell'AR che già hanno portato a dei decessi. Mediaticamente più interessanti sono state le morti ascrivibili a *Pokémon GO* [@pokemongodeathtracker:PokemonGODeath:2019].
[^mixed-reality]: Sebbene HoloLens sia un visore per la mixed reality, possiamo annoverarlo anche tra i dispositivi AR in quanto la realtà aumentata è una tecnologia abilitate per l'MR.

View File

@ -4,7 +4,7 @@
### Caratteristiche principali
ARCore è stata costruita intorno a tre caratteristiche principali\cite{googlear:FundamentalConceptsARCore:2019}:
ARCore è stata costruita intorno a tre caratteristiche principali[@googlear:FundamentalConceptsARCore:2019]:
- **Motion tracking**:
Grazie ad un processo chiamato \ac{COM}, ARCore è in grado di capire come il telefono si posiziona rispetto all'ambiente circostante.
@ -36,7 +36,7 @@ Questa operazione prende il nome di *hit test*.
La scelta di ARCore rispetto ad altri ambienti di sviluppo non è stata determinata da una supremazia tecnica.
La costruzione di una rappresentazione interna dell'ambiente e il posizionamento in questo sono le caratteristiche comuni a molte librerie di realtà aumentata markerless.
Infatti non è possibile notare una sostanziale differenza tra ARCore e la già citata ARKit, o l'altrettanto valida Vuforia\cite{vuforia:VuforiaAugmentedReality:2019}.
Infatti non è possibile notare una sostanziale differenza tra ARCore e la già citata ARKit, o l'altrettanto valida Vuforia[@vuforia:VuforiaAugmentedReality:2019].
Il campo in cui ARCore eccelle rispetto alla concorrenza invece è la gestione della luce.
Questo punto di forza, però, viene abbondantemente compensato dall'impossibilità di riconoscere un oggetto reale[^image-recognition] (sia esso statico che dinamico) dato un modello 3D.
@ -66,7 +66,7 @@ Con queste ultime è possibile appoggiarsi ad un motore grafico per la gestione
Per quanto i vantaggi di queste soluzioni siano innegabili, bisogna considerare che facendo ricorso ad esse si sta introducendo un ulteriore strato di software nel processo di sviluppo;
software distribuito tramite licenze proprietarie che comportano costi di utilizzo.
Oltre alle soluzioni elencate in precedenza, per lo sviluppo in ambiente Android, Google mette a disposizione Sceneform\cite{googlear:SceneformSDKAndroid:2019}, un framework per la gestione del rendering di oggetti 3D, ottimizzato per dispositivi mobili che permette di creare velocemente applicazioni in AR sfruttando Java.
Oltre alle soluzioni elencate in precedenza, per lo sviluppo in ambiente Android, Google mette a disposizione Sceneform[@googlear:SceneformSDKAndroid:2019], un framework per la gestione del rendering di oggetti 3D, ottimizzato per dispositivi mobili che permette di creare velocemente applicazioni in AR sfruttando Java.
Inoltre essendo pensato specificamente per Android e ARCore offre una serie di ulteriori vantaggi, come la gestione del ciclo di vita dell'activity o la gestione automatica delle ombre.
Per lo sviluppo delle applicazioni di esempio si è scelto di fare affidamento proprio su quest'ultima soluzione, in quanto offre un ottimo trade-off tra facilità di accesso e potenzialità.

View File

@ -14,10 +14,10 @@ L'utilizzo di oggetti animati oltre ad essere un orpello grafico diventa, in mol
Questo è ancora più vero nello sviluppo di applicazioni AR su smartphone che, per forza di cose, hanno nell'utenza consumers lo sbocco naturale.
Il mancato utilizzo di un'animazione potrebbe segnare in modo permanete l'esperienza utente e quindi determinare il fallimento del progetto.
Non a caso uno dei problemi più discussi nell'issues tracker di Sceneform su GitHub\cite{googlear:Animated3DObjects:2019}, è proprio la totale mancanza di supporto alle animazioni.
Non a caso uno dei problemi più discussi nell'issues tracker di Sceneform su GitHub[@googlear:Animated3DObjects:2019], è proprio la totale mancanza di supporto alle animazioni.
Sebbene ci siano stati dei lavori in questo senso ed una prima contabilità con i modelli animati FBX sia stata aggiunta alla code base, ad oggi non è possibile utilizzare questa funzione, in quanto è in fase di testing per il solo personale interno.
In attesa di un rilascio al pubblico, l'unica via percorribile è quella presentata dalla stessa Google durante un codelab\cite{googlear:ChromaKey:2019}.
In attesa di un rilascio al pubblico, l'unica via percorribile è quella presentata dalla stessa Google durante un codelab[@googlear:ChromaKey:2019].
La soluzione consiste nel renderizzare un schermo trasparente nel mondo reale e proiettare su di esso un video.
Affinché l'*illusione* riesca è necessario usare un video che sfrutti il *chroma key*[^chroma-key], in questo modo l'integrazione con il mondo reale risulta migliore.
Inoltre per impedire che l'utente possa guardare il retro dello schermo è consigliabile rendere quest'ultimo solidale con l'utente.

View File

@ -69,7 +69,7 @@ Inoltre bisogna modificare anche il file di layout affinché non utilizzi più l
### Cloud Anchor Helper
Quando viene caricata un'ancora sul server viene associata ad essa un valore alfanumerico che ci permette di identificarla univocamente.
Dato che il codice risulta essere molto lungo e quindi difficile da ricordare e ricopiare, si è scelto di appoggiarsi al servizio *firestore * di Firebase\cite{firebase:Firebase:2019} per creare una relazione uno a uno tra l'UUID e uno *short code* intero.
Dato che il codice risulta essere molto lungo e quindi difficile da ricordare e ricopiare, si è scelto di appoggiarsi al servizio *firestore * di Firebase[@firebase:Firebase:2019] per creare una relazione uno a uno tra l'UUID e uno *short code* intero.
Queste operazioni avvengono tramite la classe `CloudAnchorHelper` che fornisce due metodi principali `getShortCode` e `getCloudAnchorId`.

View File

@ -18,7 +18,7 @@ Infatti, a differenza di altre soluzioni, ARCore presenta alcune limitazioni in
Nonostante questo, non si può parlare di una vera e propria lacuna, ma più di una scelta progettuale.
Google ha preferito delegare il riconoscimento di pattern alle altre, e numerose, soluzioni offerte da essa stessa.
Infatti tramite la libreria open source TensorFlow\cite{googlebrain:TensorFlow:2019} o le soluzioni in cloud, come il machine learning kit di Firebase\cite{firebase:IntroducingMLKit:2018} è possibile adempiere perfettamente a questi compiti.
Infatti tramite la libreria open source TensorFlow[@googlebrain:TensorFlow:2019] o le soluzioni in cloud, come il machine learning kit di Firebase[@firebase:IntroducingMLKit:2018] è possibile adempiere perfettamente a questi compiti.
### Riconoscimento delle superfici verticali
@ -62,3 +62,5 @@ Sebbene questi vantaggi siano tangibili e innegabili, sono presenti anche molte
Le animazioni e il movimento o, più in generale, l'assenza di un motore grafico vero e proprio, pesano come una spada di Damocle sull'affidabilità della libreria.
Durante l'utilizzo di Sceneform si ha sempre l'impressione di star utilizzando un prodotto ancora acerbo e incompleto, per cui l'utilizzo di questa soluzione deve essere attentamente valutata da parte dello sviluppatore.
# Bibliografia

View File

@ -93,47 +93,46 @@ copyright: |
dedication: A Noemi e alla sua autentica bellezza
#######################
babel: italian
lang: it-IT
toc: true
toc-depth: 3
lof: true
logo: figures/logo.png
monochrome: false
hidelinks: false
logo: src/figures/logo.png
twoside: false
openright: true
numbersections: true
eulerchapternumber: true
floatnumbering: true
bibliography: bib.bib
#######################
onlyused: true
acronym-title: Acronimi
ac-onlyused: true
ac-title: Acronimi
acronym:
- name: API
description: Application Program Interface
- name: AR
description: Augmented Reality
- name: AV
description: Augmented Virtuality
- name: COM
description: Concurrent Odometry and Mapping
- name: CPU
description: Central Processing Unit
- name: GPS
description: Global Positioning System
- name: IMU
description: Inertial Measurement Unit
- name: MR
description: Mixed Reality
- name: NDK
description: Native Development Kit
- name: NFL
description: National Football League
- name: SDK
description: Software Development Kit
- name: SLAM
description: Simultaneous Localization And Mapping
- name: UUID
description: Universally Unique Identifier
- name: VR
description: Virtual Reality
- short: API
long: Application Program Interface
- short: AR
long: Augmented Reality
- short: AV
long: Augmented Virtuality
- short: COM
long: Concurrent Odometry and Mapping
- short: CPU
long: Central Processing Unit
- short: GPS
long: Global Positioning System
- short: IMU
long: Inertial Measurement Unit
- short: MR
long: Mixed Reality
- short: NDK
long: Native Development Kit
- short: NFL
long: National Football League
- short: SDK
long: Software Development Kit
- short: SLAM
long: Simultaneous Localization And Mapping
- short: UUID
long: Universally Unique Identifier
- short: VR
long: Virtual Reality
---