Jump to: navigation, search

BASI

Bacasable-cover.jpg

Description

Dans un socle de taille imposante, une couche de sable est placée sous un projecteur. La projection dépend de la topographie du sable, qui peut être modifiée par les visiteurs. Une fois fonctionnel, ce dispositif permettra de mener des recherches en matière d'interactivité et de visualisation de données.

Toute la classe de B3 conçoit et réalise un "bac à sable" en se répartissant les tâches à accomplir.

Le projet s'organise en 2 temps:

  1. conception et réalisation des assets (programmatiques et matériels)
  2. intervention artistique de chaque étudiant (ou par équipe de 2) dans le dispositif

Phase 1 : Réalisation de l'objet

Time frame: 2 mois.

Cette étape est collaborative. L'ensemble des tâches, identifiées en groupe lors d'une réunion de lancement, est divisé en 2 grandes catégories: tangible et software. 2 "responsables de départements" sont désignés par une élection à la majorité simple. L'attribution des tâches se fait en autonomie et est validée par l'équipe pédagogique.

L'équipe "tangible" réalise le plan du dispositif et un budget. L'équipe "programmation" réalise une analyse de la solution à développer rencontrant les contraintes évoquées dans 'Enjeux'.

Une "roadmap" est ensuite réalisée en commun. Elle reprend un planning et des délivrables à chaque étape.

Trois étapes importantes sont reprises sur ce document:

  1. dates des premiers prototypes
  2. date du premier test complet (version alpha)
  3. date de la version finale


Au terme de la phase 1, une démonstration technique "grand public" est possible. L'approbation de cette phase est faite par l'équipe pédagogique, qui valide la qualité des différents assets. En cas de problèmes ou de manquements au cahier des charges, des modifications et corrections pourront être demandées. La seconde phase ne peut pas démarrer avant approbation de la phase 1.

Enjeux techniques

  • construction de la structure
    • recherche matériau (quel bois, quel sable)
    • mise au point du support projecteur/kinect/ordi
    • calcul de focale
  • rendu temps réel de la surface (via reconstruction d'un mesh en fonction de la depth map)
  • détection des bras et mains des visiteurs (non rendus) + zones de contact probables avec la surface
  • calibration de la projection - ajustement de la visualisation au support + masques
  • mise au point d'un dev kit:
    • utilisable par tout le monde (simplifié)
    • permettant le travail offline
  • déploiement sur l'ordinateur (VNC)
  • mode "autonome": rotation automatique des visualisations

Délivrables

  1. équipes et tâches par étudiants (dont responsables)
  2. plan, budget et analyse
  3. roadmap
  4. prototypes - tangible et programmatique
  5. version alpha
  6. version 1

Phase 2 : Intervention artistique

Le travail réalisé lors de la phase 1 a permis de sensibiliser les étudiants au dispositif. Un temps d'arrêt théorique et réflexif est nécessaire à la seconde phase de travail. Une bibliographie concernant la topologie, la topographie et l'interactivité est proposée aux étudiants.

Une discussion dirigée par l'équipe pédagogique est organisée autour du dispositif en fonctionnement, permettant de dégager ses caractéristiques et ses enjeux artistiques, ainsi que d'assurer la relation aux textes théoriques proposés.

Sur base des pistes artistiques dégagées au cours de cette discussion, les étudiants préparent une intervention individuelle et personnelle dans le dispositif. Ce projet est présenté devant le groupe et validé par l'équipe pédagogique. Le projet doit comporter une esquisse montrant le résultat potentiel.

Critères d'évaluation:

  • relation aux textes proposés
  • qualité artistique
  • faisabilité

Equipe

Nom Département Groupe Rôle
Drugmand Emmanuelle tangible caisse Responsable
Baltzis Sélina tangible caisse Intervenant
Curez John tangible caisse Intervenant
Maronet Mégane tangible support projecteur Intervenant
Micheletti Renaud tangible support projecteur Intervenant
Sobnack Gavin code calibration Responsable
Van Laere Delphine code calibration Intervenant
Warenghien Annie code calibration Intervenant
Beghin Aurélie code 3D Intervenant
Boitte Mickael code 3D Intervenant
Jon Puit // // enseignant, conseil en conception de l'objet
François Zajéga // // enseignant, supervision

Suivi du projet

Kick-off

Whiteborad-bacasable-20150929.jpg

La réunion de lancement a eu lieu le 29/09/2015 en fin d'après-midi. Le projet a été présenté aux étudiants, ainsi que le wiki via lequel le suivi du projet va être assuré.

Durant cette réunion, les grandes lignes du projet ont été revues en groupes, dont notamment les spécifications de l'objet tangible.

Propositions refusées:

  • socle cylindrique (trop difficile à réaliser)
  • format du bac correspondant au ratio projecteur


Décisions:

  • dimensions de la caisse: 160 x 80 x variable ( largeur | profondeur | hauteur )
  • hauteur de la caisse: entre 30 cm (fond de la caisse au sol) et 1m
  • possibilité de divisier la caisse en 2 morceaux de 80 x 80cm
  • débordement de l'image projecteur pourra être utilisé pour afficher des information sur une tablette posée au bord du socle
  • hauteur du bac 30 cm
    • 10 cm de sécurité au-dessus du sable
    • 20 cm de sable


Problèmes identifiés:

  • poids du sable, estimé à 1.4 T/m³, induit pour un volume de 0.256 m³ un poids de 358 kilos
    • stress important sur la structure
  • étanchéité du bac
  • détection via Kinect
    • détection des bras ou des objets passant dans le champ de captation via un filter spacial
    • détection des points de contact avec le sable


Pistes:

  • utiliser des palettes pour consolider le fond du bac
  • éviter le MDF pour les parois
  • utiliser une bâche pour l'étanchéité

La prochaine réunion consistera à identifier les responsables de 'département' et les différents rôle de chaque étudiant.

Réunion #1

date: 05/10/2015

Equipes et tâches

Le travail a été scindé en 2 départements: tangible et code.

Pour ne pas se marcher sur les pieds, chaque département est lui-même divisé en 2 groupes:

  • Tangible
    • caisse : ce groupe se charge de la conception et réalisation du socle et du bas à sable à proprement parlé.
    • support projecteur: ce groupe se charge du système d'accrochage du projecteur et de la kinect.
  • Code
    • calibration: ce groupe se focalise sur l'ajustement de l'image sur la surface de projection.
    • 3D: ce groupe se charge de l'analyse des infromations provenant de la kinect.

Compte rendu

Tangible

  • Pas de division pour le bac en 80x80
  • Dimensions fixées à 160x80x30 (bac) et 160x80x70 (table)
  • 358kg de sable: Ok.
  • Problème d'étanchéité : Joint de silicone, car la bâche serait visible (+ difficulté à rendre les coins bien lisses.)

Code

Rappels sur :

  • Le fonctionnnement de la distance focale
  • La projection d'image avec projecteur
  • Le fonctionnement de la kinect
  • Ce qu'est la depthmap
  • Ce qu'est la normale


Problèmes identifiés:

Pour la calibration Kinect/projecteur :

  • Focale de la kinect
  • Focale du projecteur
  • Décalage entre le centre optique et l'image projetée

En 3D :

  • Détection du bras doit être exclu
  • Gestion de la depthmap
  • Calcul de la normale
  • Optimisation pour éviter le bruit
  • "Trous" dans la Depthmap


Pistes:

  • Le projecteur Dell S320 semble avoir la meilleure distance focale pour le projet
  • Kinect : la focale de la Kinect est de 57,8
  • Tester la kinect et le projecteur et adapter l'un en fonction de l'autre

Todos pour le 13/10

  • Tangible
    • produire les plans pour les 2 parties de la structure
    • choix des matériaux avec l'acord de J. Puit
    • les faire valider par J. Puit
  • Code
    • préparation du code permettant de modifier la caméra 3D de processing ( instruction opengl pour openframeworks )
    • préparation du code permettant de charger une image N/B dans processing + extraction de la luminosité de chaque pixel

Réunion #2

Les todos fixées il y a un mois au niveau du groupe tangible n'ayant pas été respectées, le travail a pris beaucoup du retard. La matinée du 10/11/2015 a donc été dédiée au rattrapage de ce retard.

Le projet sera présenté lors du festival VIA en février 2016. Il reste donc 3 mois de travail pour finaliser un premier prototype fonctionnel.

Code

Présentation du programme de cours créactifs! et du projet LandGen.

Prise en main de proclipse, debuggage de l'installation de Java sur la machine d'Annie.

  • Découverte d'eclipse
  • Premier projet sur base du Aproject.
  • Configuration d'un working set pour les recherche dans les fichiers.
  • Auto-completion

Fin de la matinée: exercice basé la méthode PApplet.camera(). Recherche des valeurs par défaut utilisées par processing.

Corrigé de l'exercice: CameraOpengl project

Proclipse-CameraOpengl 586.png


Tangible

Travail sur les plans de la table, du bac à sable et du support projecteur.

  • Prise de mesure des planches disponibles.
  • Explication des problèmes de résistance de la table, et solution grâce à des planches présentées sur la tranche (voir plan).
  • Mesure du projecteurs Dell S320
  • Recherches sur le positionnement du projecteur et de la kinect en fonction de leur optique respective.

Premiers plans, ikea style, de l'objet.

Planning temporaire

  • décembre 2015
    • montage des éléments tangibles
    • suivi du cours processing avancé par le groupe code
  • janvier 2016
    • Mise en place d'une version alpha
    • Correction des éléments tangibles, nouveaux plans si besoin
    • Debuggage applicatif
  • février 2016
    • Premiers essais d'intervention artistique dans le dispositif
    • Sélection des meilleurs essais
    • Présentation dans le cadre du festival VIA
  • mars/avril 2016
    • Amélioration des essais
    • Intervention d'autres années dans le dispositif
  • mai 2016
    • Présentation du dispositif durant les jurys.

Todos pour le 17/11

  • Tous
    • Vérification des horaires et disponibilités de chacun, mise en place du planning efffectif le 17/11
  • Tangible
    • Finalisation et validation des plans par J. Puit
    • Liste précise de matériel + coût des matériaux
  • Code
    • Installer SourceTree (mac osx) ou TortoiseHG (windows & linux).
    • Test de calibration avec le code du corrigé : projection d'un parallélipipède virtuel sur son équivalent tangible. Un socle par exemple.

Réunion #3

01/12/2015

Tangible

  • plan du support en cours
  • plan du socle en cours

Code

Essai de calibration sur socles posés au sol réalisés le 17 et 24 novembre.

  • Correspondance objet virtuel / objet physique ok > même proportion.
  • Positionnement de la caméra dans le monde 3D / position du projecteur: +/- dans l'axe
  • Gros problème: focale.

Projectorcentral-projector-calculator.png

Travail avec un Dell S320. Calculator: http://www.projectorcentral.com/Dell-S320-projection-calculator-pro.htm.

  • throw ratio constant: 0.63
  • image ratio: 16/9

La taille des objets projetés est ok, mais le trapèze n'est pas bon.

Réunion #4

Tangible

  • plan du socle presque ok, petites remarques sur la précision
  • plan support projo en attente

Achat matériel:

  • Sable Blanc seché Quarteux :

https://www.plan-it.be/fr/construction/produits-de-construction/sables/sable-s%C3%A9ch%C3%A9-quartzeux-ptb-'type-2'-25-kg/6010819 1.69€/25kg

  • Poubelle:

https://www.plan-it.be/fr/salle-de-bains-cuisine-int%C3%A9rieur/entretien-m%C3%A9nager/poubelles-de-recyclage/poubelles/poubelle-de-rue-allibert-'magnum'-polypropyl%C3%A8ne-noir-70-l/6346377 15.99€/70L

Code

  • Suite des tests de calibrage projecteur/camera
  • Déplacement des objets par rapport au centre 0,0,0 du monde 3D
  • Problème : la perspective 3D ne correspond pas du tout à la réalité
  • Analyse du code : méthodes P3D pour la perspective, la projection et la focale
  • Documentation sur le fonctionnement d'un frustum ( lien 1, lien 2, lien 3, et lien 4 )
  • Appel direct de la méthode 'projection' dans le code et tests de modification dans sa matrice.
  • Piste : trouver comment intervenir dans la matrice de 'projection' pour obtenir la perspective voulue.


Les "chemins", les fonctions, utilisés pour la perspective dans OpenGL :

  • camera
  • defaultCamera
  • perspecive -> frustum
  • FOV

Semaine blanche

Les premières semaines de janvier à arts² sont dédiées à des activités spécifiques par atelier. Nous en profitons pour faire réaliser le premier prototype fonctionnel de BASI.

Différentes tâches sont à accomplir:

  • code
  • tangible
    • mise en ligne des plans (version pdf)
    • réalisation de la table
    • réalisation du support projecteur
  • mise en commun
    • premier test de projection sur la surface

Planning

Programme de la semaine, jour par jour.

Jour Tangible Code
Lundi PM Validation 12mm/18mm atelier bois Validation du corrigé CameraOpenGL - configuration Landgen
Mardi AM Tracés / découpes Table et support Ecriture et sauvegarde fichier config camera - configuration Landgen
Mardi PM Tracés/ découpes suite - Encrage support au plafond Ecriture et sauvegarde fichier config camera - configuration Landgen
Mercredi AM Montage Table (Correction découpe divers)
découpes suite
Fusion code CameraOpenGL + Landgen
Modification de la sauvergarde de la caméra - Adaptation du mesh avec la kinect (suite)
Mercredi PM
Jeudi AM Premier test de projection + Aller chercher le sable à Brico Plan It
Jeudi PM Sable + charnière de renforcement, détails,.. Mise en place du code sur iMAc
Vendredi AM Présentation du système
Vendredi PM ... ...

Code

Pour la calibration CaméraOpenGL/projecteur :

  • Ajout de trois vues (left, top et free) dans l'interface pour visualiser la position de la caméra dans l'espace 3D, et handlers pour contrôler la caméra en left et top ;
  • Ajout d'un système d'enregistrement des données dans un fichier .XML, afin de sauver les modifications apportées à l'aide des sliders sur la position de la caméra 3D, son centre et sa perspective ;
  • Modification du frustum de la caméra dans le code pour corriger les problèmes de perspective ;
  • Ajout de sliders pour corriger la position du cube sur l'axe x, y et z, et enregistrement de ces données dans le fichier .XML pour le déplacer si la caméra est correctement positionnée mais que le cube n'est pas bien placé ;
  • Duplication du projet (sans l'interface, les sliders et les vues) en vue de son intégration au projet 3D/Kinect ;


Pour la 3D/Kinect :

  • Création d'un mesh;
  • Système de gestion d'un UV en fonction des points de l'image ;
  • Remplacement de l'image fixe par le flux vidéo de la Kinect, avec sa depthmap ;
  • Problème de logique rencontré : avec la Kinect, l'image et l'UV étaient inversés : le problème venait d'un mauvais ordre de calcul : dans les systèmes Linux et Mac, Eclipse commence le calcul par la fin, mais sur Windows, Eclipse commence par le début du calcul (les priorités dans le calcul sont différentes) en ajoutant des parenthèses dans le calcul de problème a été corrigé;
    • linux: (1 - 0.5 + 0.5 ) = (1 - ( 0.5 + 0.5 ) ) = 0
    • windows: ( 1 - 0.5 + 0.5 ) = ( ( 1 + 0.5 ) + 0.5 ) = 1
  • Suppression d'une translation de l'image pour la recentrer sur l'origine du plan
  • Test sans la depthmap -> problème d'orientation, l'image se creusait, ce qui était le plus proche était le plus loin -> rotation de caméra en y pour corriger ce problème (ainsi l'axe z etait orienté vers la camera);
  • Code fonctionnel (modele solide blanc, avec une lumiere)
  • Rencontre d'un problème récurrent OutofBoundaries : avec les UV, avec les importations de flux de la kinect, avec la depthmap et avec la texture.


Fusion des projets 3D/Kinect et CameraOpenGL :

  • Avant de fusionner les deux projets : repositionnement de la caméra 3D par rapport au projecteur avec le projet Calibration, et ajout de sliders dans le projet 3D/kinect pour contrôler la portée de repérage minimum et maximum de la Kinect ;
  • Intégration du code de la caméra/projecteur dans le projet Kinect :
  • Mise en place de la caméra 3D dans le plan Kinect ; problème rencontré : le plan du projet 3D/kKnect était opposé à la caméra 3D, une rotation du plan a permis de le remettre de face, à plat. On a positionné le plan en le contrôlant à l'aide d'un mouseX dont la valeur a été récupérée avec un print ;
  • Finalement, déplacement des objets avec des sliders en x, y, z et avec un resize pour les mapper correctement, en supprimant les décalages avec la l'objet projeté;
  • Mise en place de texture sur le mesh;

BASI code 1.JPG BASI code 2.JPG BASI code 4.JPG BASI code 5.JPG BASI code 6.JPG


Démonstration du résultat du mapping avec kinect/projection :

Tangible

Fournisseurs de sable à contacter:


Fournisseur choisi : Brico Plan It, Sable de bac à sable DECOR, 15 sacs de 25kg (1.99e/sac)

BILAN DE LA SEMAINE TANGIBLE

  • Lundi
    • Retard dû à l'examen de philosophie.
    • Mise à jour du Github - Briefing et planning de la semaine
  • Mardi
    • Briefing des actvités de la journée - Instructions sur les outils à manipuler.
    • Tracés et découpes de 11h30 à 15h (besoin de rendre le matériel et les clefs).
    • Premier problème : Mauvaises mesures d'une planche, on recommence sur une grande chute.

Mardi.jpg

  • Mercredi
    • Tracés et découpes de 9h30 à 11h30 (Besoin des outils pour un autre Workshop se déroulant simultanément).

Mercredi.jpg

  • Jeudi
    • Débriefing matinal : Annonce de la suspension du projet dû au retard général. Bilan sur le ressenti de chacun, avis, etc.
    • Problèmes majeures : le manque de temps pour l'accès aux outils, le fait qu'on ne savait pas s'en servir de base.
    • Après midi: fin des grosses découpes/On commence les encoches.
    • Problème perçu en fin de journée : on a tout fait 10cm trop court pour la table (utilisation d'un mètre dérouleur, d'où on commençait à mesurer à partir de 10, mais oublie d'ajouter 10 à la fin de la mesure...)
  • Vendredi
    • Correction et finition de toutes les planches.

Vendredi.jpg Vendredi2.jpg


Montage :

Remarques pédagogiques

(préliminaires)

Les enjeux du projets sont:

  • aborder la conception d'un dispositif complet
    • construction d'une structure
    • création d'outils logiciels spécifiques
  • programmation java
    • compréhension de la caméra opengl
    • modification d'un mesh avec les données RT d'une kinect
  • utilisation de git (versionnage du code) - pour les plans et les sources
  • travail collaboratif en sous-équipes avec responsables
  • documentation continue


BASI a été pensé comme un outil mis à disposition de l'atelier ainsi qu'une épreuve de reverse engineering. De ce fait, rien n'a été lissé: les outils et les problèmes rencontrés sont réels, même si l'analyse et la découpe des tâches est faite par le professeur responsable (un assistant dans le cas présent).

L'avancement est donc lent pour plusieurs raisons:

  • la majorité des élèves n'avaient jusqu'ici été confrontés qu'à des projets de petite envergure;
  • ...

Resources

Make it rain

Un projet de Gary Glesener, de l'Université de Californie, directeur du centre de recherche MEDL.
"The Augmented Reality Sandbox is mobile and can be set up in any classroom, allowing students and researchers to see their creations come to life in color and in real time." - extrait du commentaire de la vidéo youtube.