Projet

Général

Profil

Wiki » Historique » Révision 10

Révision 9 (Baptiste Pelouas, 03/01/2015 12:08) → Révision 10/46 (Baptiste Pelouas, 03/01/2015 12:15)

Wiki
====

Présentation
============

Le principe de base
-------------------

Un peu de géométrie (niveau collège/lycée): la triangulation...
[cf. http://fr.wikipedia.org/wiki/Résolution_d'un_triangle]

<img src="http://www.redmine.org/attachments/7069/Redmine_logo.png" title="Redmine web site" alt="Redmine web site">

Deux angles et le côté commun


!Resolve_triangle_with_c_alpha_beta.png!


On considère un triangle dont un côté c et les deux angles α et β qui le bordent sont connus. Le dernier angle s'obtient par complément à π et les deux autres côtés par la loi des sinus :

a = \frac {c\sin\alpha}{\sin(\alpha+\beta)}
b = \frac {c\sin\beta}{ \sin(\alpha+\beta)}
\gamma = \pi-\alpha-\beta\,
S = \frac12 c^2 \, \frac{\sin\alpha\sin\beta}{\sin(\alpha+\beta)}

Vue de dessus, le point focal de la webcam {A}, l'axe de rotation du faisceau laser (plan) {B} et un point sur l'objet {C}, forme un triangle.

Les données connues:

* distance: dist(AB)
* angles: ang(CAB) et ang(ABC) (! tout les 2 inférieurs a Pi/2 !)

Les inconnues:

* distances: dist(AC) et dist(BC)
* angle: ang(ACB)

Le calcul:

* ang(ACB) = Pi - ang(CAB) - ang(ABC)
* soit H la projection de C sur [AB], donc

Le résultat escompté
--------------------

* un **nuage de points 3D coloré** (format .ply)
* ? un maillage 3D (coloré)? (format .stl)

Les composants
--------------

* un **plateau circulaire** ou l'on pose l'objet a scanner, dont on pilote l'angle de rotation.
* un **laser** (rouge classe 1 voir 2) plan vertical, dont on pilote l'angle de rotation.
* une **webcam** pour visualiser le trait(rouge) déformé émis par le laser sur l'objet.
* un arduino Uno (actuellement: un YABBAS), et divers composants électroniques pour piloter les objets ci-dessus, et faire la liaison avec le logiciel de traitement.
* une alimentation de pc ( 5 Volt principalement utilisé)
* un **logiciel** de traitement pour effectuer les calculs ( et calibrations ), et fournir le résultat. Écrit en JAVA (au vu de mes compétences en programmation et de l'espoir d'une portabilité accru).