Académique Documents
Professionnel Documents
Culture Documents
CONCEPTION ET RÉALISATION
D’UN
SCANNER 3D LASER EMBARQUÉ
Travail de Bachelor
Formation en emploi
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
2 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Travail de Bachelor
Préambule
Ce travail de Bachelor est réalisé en vue de l'obtention du titre de Bachelor of Sciences en Ingénierie.
Son contenu, sans préjuger de sa valeur, n'engage ni la responsabilité de l'auteur, ni celles du jury du travail
de Bachelor et de l'Ecole.
Aucune utilisation, même partielle, de ce travail ne peut être faite sans l'autorisation écrite préalable de la
Direction. Toutefois, l'entreprise ou l'organisation qui a confié un sujet de travail de Bachelor peut utiliser les
résultats du travail pour ses propres besoins.
La cheffe du
Département de la formation
En Emploi
L. Larghi
Imhof Yannick 3
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Résumé
Le scanner 3D est un module portatif, monté sur trépied, conçu pour scanner un volume intérieur tel qu’une
salle, une pièce d’appartement ou une grotte, de manière à obtenir les données nécessaires à la création
d’un modèle virtuel.
Outre le module en lui-même, l’architecture du système comprend une centrale de données implémentée
sous la forme d’un service web, et une application cliente permettant de commander le scanner.
4 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Préambule ..........................................................................................................................................................3
Résumé ...............................................................................................................................................................4
Table des matières .............................................................................................................................................5
Introduction........................................................................................................................................................7
Complément aux éléments de la pré-étude ......................................................................................................8
Conception mécanique ..................................................................................................................................8
Composants électroniques et électromécaniques .........................................................................................8
Servomoteur SG51R ...................................................................................................................................8
Schéma électronique ..................................................................................................................................8
Géométrie de l’optique ................................................................................................................................10
Scanner complet...........................................................................................................................................11
Développement logiciel....................................................................................................................................12
Architecture du projet ..................................................................................................................................12
Infrastructure ...............................................................................................................................................13
Outils ............................................................................................................................................................13
Préparation du microcontrôleur Arduino Yùn .............................................................................................14
Mise à jour de l’image système du Yùn ....................................................................................................14
Configuration de la pile réseau OpenWRT ...............................................................................................15
Invalider la réinitialisation automatique de la configuration Wifi ...........................................................17
Obtenir la date courante avec une précision à la nanoseconde ..............................................................18
Configuration préalable du télémètre .........................................................................................................18
Firmware ......................................................................................................................................................19
Mise en œuvre de l’IDE Arduino ..............................................................................................................19
Problème de téléchargement du sketch via Wifi .....................................................................................20
Bus SPI ......................................................................................................................................................21
Gestion des moteurs pas-à-pas ................................................................................................................24
Gestion du télémètre ...............................................................................................................................32
Gestion du servomoteur ..........................................................................................................................34
Schéma de classes ....................................................................................................................................34
Fonctionnalités .........................................................................................................................................37
Centrale ........................................................................................................................................................47
Service Windows ......................................................................................................................................47
Imhof Yannick 5
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
6 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Introduction
Ce document détaille les étapes ayant permis la réalisation d’un scanner 3D laser embarqué, selon le cahier
des charges défini par l’analyse préliminaire du même projet, à laquelle il fait suite.
Quelques considérations viennent compléter et corriger certains des éléments présents dans ladite analyse,
notamment l’ajout du second axe de rotation du module, alors à peine évoqué. Le schéma électronique
s’adapte en conséquence à ces nouveautés, et le système de calibrage, manuel dans le cadre de l’analyse,
est maintenant automatisé.
Le présent document présente de manière succincte les outils utilisés dans le cade de ce projet, et se
concentre sur les aspects propres au développement logiciel. Un accent particulier est donné aux
problématiques rencontrées durant l’implémentation du firmware, par exemple :
Quelle configuration adopter pour chaque périphérique du bus SPI permettant la communication
avec chacun depuis la carte Arduino Yùn ?
Quels paramètres définir pour les pilotes de moteur pas-à-pas en vue d’obtenir les meilleures
performances possibles ?
Quelle stratégie adopter avec le télémètre, dans le cadre de l’acquisition des mesures, dans le but
de conserver, voire optimiser, les vitesses déjà très faibles, définies en analyse ?
Quel système d’axe choisir dans lequel exprimer les mesures, et comment calibrer le scanner de
manière à s’y conformer ?
Comment communiquer les données de mesures au monde extérieur ?
Au second plan viennent les questions relatives à la commande du scanner et à la gestion des données, avec
entre autres :
Quelles sont les commandes auxquelles le scanner doit pouvoir répondre et dans quelles
circonstances ?
Qui persiste les données, de la centrale ou l’application cliente, et sous quelle forme ?
Quel doit être le format final des données de mesure ?
Imhof Yannick 7
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Les éléments conçus durant la pré-étude ont donc été complétés par un second moteur, deux poulies de
transmission et une seconde courroie crantée. Les caractéristiques mécaniques de ces nouveaux éléments
sont identiques à celles des précédents, et les deux moteurs sont du même type. Les deux axes peuvent être
pilotés indépendamment l’un de l’autre, mais restent solidaires. Lors de la rotation selon l’axe vertical c’est
donc le module complet qui bouge, reposant sur un ensemble de roulements au sein de la poulie réceptrice,
laquelle constitue la base fixe du système.
Schéma électronique
Le complément mécanique, avec l’ajout d’un moteur et du servomoteur du système de calibrage, induit
également la modification du schéma électronique. De plus, malgré l’attention particulière dont ce dernier a
bénéficié durant la pré-étude, il est à noter que certaines erreurs s’y étaient glissées et que certains éléments
se sont avérés manquants durant le développement du firmware.
1
(Micro servo SG51R)
8 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Le second moteur est piloté par un second pilote L6470, lequel nécessite son propre chip select (gear CS), et
le servo sera directement piloté depuis le Yùn via une broche compatible avec les signaux PWM (servo cmd).
Le système admet aussi maintenant la possibilité de réinitialiser les périphériques chaînés sur le bus SPI, non
seulement de manière logicielle, mais également via un signal délivré par une broche du Yùn dédiée à cette
tâche (SPI dev rst). Une autre broche permet aux pilotes des moteurs de notifier un problème, comme par
exemple un dépassement de limite de courant (stp flagn).
Imhof Yannick 9
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Deux autres broches seront dédiées à l’écoute d’interruptions permettant d’une part de savoir que les
moteurs ont atteint la position demandée (stp busy), et d’autre part que des données de mesure sont en
attente au niveau du pont SPI-UART de la part du télémètre (uart rx irq).
Ces connexions supplémentaires se prolongent jusqu’au pont SPI-UART, ce qui induit la nécessité de
dédoubler également l’adaptateur de tension TTL, puisque ce dernier n’offre que quatre broches utiles.
Il reste encore à noter la correction de la connectique relative aux signaux Rx/Tx du télémètre, à l’inverse de
ce que spécifiait la pré-étude.
Géométrie de l’optique
La conception mécanique du système dans son ensemble était basée sur l’hypothèse d’un laser émis au
centre de la lentille principale du télémètre. En réalité, le laser est émis en périphérie de cette lentille à tel
point que dès le premier essai, après à peine un quart de cercle de rotation du miroir, le système de fixation
de ce dernier est entrée en conflit avec le laser. Ce dernier n’étant plus réfléchi, le scanner a connu son
premier « trou noir », c’est-à-dire un point où aucune mesure de distance ne peut être réalisée.
Cet événement a bien sûr induit un certain nombre d’adaptations au niveau mécanique :
10 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
De manière plus positive, ce problème a également mis en évidence la notion de trou noir citée
précédemment, avec comme suite l’implémentation de la prise en charge et du traitement de ces points par
le firmware et le logiciel client final.
Les dessins de fabrication modifiés selon les nouvelles spécifications sont annexés au présent document.
Scanner complet
Après assemblage des deux systèmes de rotation et ajout des compléments électroniques, le scanner peut
être fixé sur un trépied d’appareil photo standard. Son poids total est de 1.75 kg pour un encombrement de
162/208 x 234 mm, câbles inclus.
Imhof Yannick 11
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Développement logiciel
Architecture du projet
Le schéma ci-dessous donne une vue d’ensemble des éléments composant le système et des articulations
qui les lient. Chaque élément est détaillé dans les pages qui suivent.
12 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Dans le cadre d’un développement basé sur la carte Arduino Yùn, la particularité se situe dans le fait qu’elle
abrite non seulement le microcontrôleur mais également une déclinaison embarquée du système Linux
intégrant la pile réseau OpenWRT. Dès le démarrage, le système Linux se rend disponible en Wifi selon son
paramétrage courant. Par défaut, la carte se définit en point d’accès Wifi publiant son propre SSID ARDUINO-
YUN90XXXXXX en accès libre à l’adresse 192.168.240.1.
Dans le cadre de ce projet, les valeurs par défaut ne seront utilisées qu’aux premières connexions lors du
paramétrage définitif.
Infrastructure
Comme le précisait la pré-étude, un routeur physique est dédié à la mise en œuvre du réseau Wifi. Ce routeur
est un Netgear N600 gibabit double bande.
Chacun de ces réseaux masque son SSID et applique un cryptage de sécurité en WPA2-PSK. A noter au final
que, le Yùn n’étant pas compatible avec la bande passante des 5.0 GHz, le SSID SCAN3DN restera inactif.
Le routeur fait également office de serveur DHCP pour son sous-réseau et filtre les accès par adresse
physique. Trois réservations d’adresse existent :
Outils
Pour pouvoir interagir avec le système Linux embarqué, différents outils sont nécessaires.
Un terminal de connexion SSH tel que Putty2 permet un accès à la ligne de commande.
Un outil de déploiement de fichiers tel que WinSCP3 offre une vue graphique de l’arborescence des
fichiers distants, et permet la synchronisation des répertoires.
Des exemples de connexion avec chacun d’eux sont disponibles en annexe du présent document.
Pour pouvoir tester et visualiser les requêtes REST ou SOAP, deux autres outils ont été mis en œuvre :
SoapUI 4 permet, entre autre, de mémoriser des requêtes REST ou SOAP et d’en visualiser les
réponses données par le service cible.
Fiddler5 est un sniffer qui permet de visualiser également la structure des requêtes et réponses HTTP.
2
(PuTTY Download Page)
3
(WinSCP Downloads)
4
(SoapUI homepage)
5
(Fiddler homepage)
Imhof Yannick 13
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Quelques vérifications permettent de constater que la documentation disponible pour le système Arduino
natif semble plus riche et plus facile d’accès. L’image système du Yùn doit donc préalablement être mise à
jour vers la version 1.5.3, dernière version disponible, ainsi que recommandé par sur le site Arduino6,7.
6
(Arduino Yún)
7
(Upgrading the OpenWrt-Yun image on the Yún)
14 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
La procédure requiert l’utilisation d’une carte SD formatée. L’image doit être téléchargée et placée à la racine
de la carte SD. Une connexion SSH permet ensuite de lancer la commande de mise à jour. Cette procédure
peut aussi être réalisée via l’interface du serveur web.
Une fois la mise à jour réalisée, les différentes interfaces correspondent un peu plus à ce qui était attendu,
et le système va pouvoir être paramétré selon les prérequis du projet.
Système général :
Nouveau mot de passe système : yunscan3d
Nouveau nom d’hôte plus parlant : YUNSCAN3D
Synchronisation de l’horloge.
Imhof Yannick 15
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Configuration réseau :
Désactiver le serveur DHCP pour les deux interfaces.
Définir les deux interfaces en clients DHCP.
Configuration Wifi :
Définir l’interface Wifi en client du réseau dédié SCAN3DG
Clé de cryptage WPA2-PSK:
gxUxD99=t_9,PKkiyTaQvII(8#;PCts6sUoi{W5t$Z94Eb6p2\5!BL"*X}df%z!
16 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Mais même lorsque le routeur est pleinement opérationnel et le Wifi actif, le system du Yùn nécessite plus
d’une minute pour se connecter, ce qui implique la perte systématique des données de configuration.
Pour remédier à cette situation, il suffit de commenter la ligne « wifi-live-or-reset » du script de démarrage
dans l’onglet system > startup.
Imhof Yannick 17
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
opkg update
opkg install coreutils-date
Une seconde commande « date » complète est ensuite disponible dans le répertoire /usr/bin, laquelle est
compatible avec l’option « %N ».
Cette option était attendue afin de permettre la gestion d’un journal d’activité sur le microcontrôleur en
remplacement des messages console. Mais nous verrons que la taille mémoire disponible pour le sketch a
induit certaines restrictions, et si le code source des classes de journalisation est encore disponible, il n’est
ni utilisé, ni compilé.
La particularité vient du fait que le paramétrage de la carte ne peut être réalisé qu’au moyen du port USB. Le
port série ne donne pas accès à ces options, aucune commande sérielle n’étant définie à cette fin 8 . Le
paramétrage doit donc être réalisé avant l’insertion du télémètre dans le scanner.
L’idée initiale était, dans la séquence d’acquisition des données, d’activer le laser, prendre une unique
mesure, puis désactiver le laser, ceci pour chaque point du volume. Mais force a été de constater par la
pratique que le temps nécessaire au laser pour s’activer, de même que pour se désactiver, varie entre 3 et 5
[s]. Une telle séquence aurait alors induit un temps de 8 à 12 [s] pour une unique mesure.
8
(LR4 Data Sheet 10-11)
18 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Afin de garder le temps nécessaire à la prise d’une mesure le plus bas possible, le démarrage du laser et son
arrêt ne sont finalement effectués qu’une unique fois, en début, respectivement en fin, de cycle de scanning,
avec une activité en continu entre ces deux moments.
Le prix de ce choix est une nette perte de maîtrise sur les évènements durant le scanning, où toute la
séquence sera en définitive structurée autour de la prise en charge la plus rapide possible d’un flux de
mesures en continu.
Malgré ce paramétrage tout à fait normal et standard, il faut remarquer que les données reçues sur le port
série peuvent adopter un caractère assez erratique. L’extrait d’un journal de debug en annexe permet de se
faire une idée. Et ce ne sont pas les exemples de code9 fournis par le fabriquant qui auraient pu permettre
de s’y attendre.
Firmware
Mise en œuvre de l’IDE Arduino
L’environnement de développement propre à la plateforme Arduino est en libre accès au téléchargement10
et bénéficie d’un installeur. La dernière version stable au moment de ce travail de Bachelor est la version
1.6.11, et propose des déclinaisons pour chacun des trois principaux systèmes d’exploitation.
9
(LR4 Sample software with source code)
10
(Download the Arduino Software)
Imhof Yannick 19
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Si l’installation est simple et rapide, l’environnement n’offre que très peu d’aide au développement. Et à part
les fonctionnalités essentielles de compilation et de transfert du binaire sur le microcontrôleur, il est possible
de formater automatiquement son code selon le principe usuel d’indentation, et de faire vérifier la
compatibilité du code caractère avec le système. Mais celui qui espérait une assistance au code voit ses
attentes quelque peu déçues. En contrepartie, une bibliothèque d’exemples très riche est immédiatement
accessible via l’interface et le néophyte a tout loisir d’essayer de compiler et de tester chaque exemple pour
comprendre comment le système s’articule.
Il est à noter que la configuration par défaut de l’IDE active un compilateur C++11, ainsi que l’atteste la
présence du flag « -std=gnu++11 » dans les options de compilation. Cette observation permet de mieux situer
le cadre de compatibilité de l’IDE avec le langage.
Lors du téléchargement, la signature du microcontrôleur est vérifiée. Au moment de ce contrôle, le bus SPI
est utilisé, et une réponse inadéquate, sur la broche MISO en particulier, induit un échec lors du transfert
avec un message AVR device not responding :
Dans le cas du scanner 3D, le bus SPI est connecté à une série de périphériques, et le problème apparaît. Le
côté déroutant vient du fait qu’en débranchant une partie des périphériques du bus SPI, depuis le second
pilote de moteur, le transfert s’effectue sans problème. Par acquis de conscience, le fonctionnement du Yùn
a été vérifié sur la base d’une procédure définie par un forum11 référençant le même problème.
11
(avrdude - not responding & other problems)
20 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Mais au final, la broche MOSI du Yùn utilisé pour ce projet donne la tension attendue de 5V, et le problème
reste sans vraie solution, à part le transfert du sketch via le port micro-USB et un transfert manuel des fichiers
web.
Bus SPI
Comme l’illustre le schéma électronique, si le Yùn est le cerveau du système, le bus SPI n’est rien de moins
que son épine dorsale, faisant le lien entre le Yùn et tous les périphériques, excepté le servomoteur.
Le SPI12 est un bus de communication série synchrone utilisé pour le transfert de données sur une courte
distance, ayant la faveur particulière des systèmes embarqués. La communication est en full-duplex selon
une architecture maître-esclave. Dans le cas du scanner, les périphériques sont connectés en mode
indépendant.
Le maître initie la communication en définissant sur le bus trois paramètres avec les valeurs attendues par
l’esclave ciblé. Ces paramètres sont :
la fréquence de l’horloge
l’ordre dans lequel transmettre les bits
le mode de transmission
L’ordre dans lequel transmettre les bits revient à dire quel bit, du plus significatif ou du moins significatif,
doit être envoyé et/ou lu en premier. Généralement, le bit le plus significatif est transmis en premier.
Le mode de transmission est composé de la polarité de l’horloge CPOL et de la phase de l’horloge CPHA :
Pour une polarité CPOL = 0, le bus est actif à l’état logique haut, et en attente à l’état logique bas :
o Pour une phase CPHA = 0, les données sont échantillonnées sur le flanc montant et envoyées
sur le flanc descendant.
o Pour une phase CPHA = 1, les données sont échantillonnées sur le flanc descendant et
envoyées sur le flanc montant.
12
(Serial Peripheral Interface Bus)
Imhof Yannick 21
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Pour une polarité CPOL = 1, le bus est actif à l’état logique bas, et en attente à l’état logique haut :
o Pour une phase CPHA = 0, les données sont échantillonnées sur le flanc descendant et
envoyées sur le flanc montant.
o Pour une phase CPHA = 1, les données sont échantillonnées sur le flanc montant et envoyées
sur le flanc descendant.
L’environnement Arduino met à disposition une bibliothèque SPI.h dédiée à la communication sur le bus SPI.
Cette bibliothèque intègre une classe SPISettings, laquelle rassemble les trois paramètres en un unique
conteneur logique. Deux constantes prédéfinies, MSBFIRST et LSBFIRST, donnent l’ordre de transmission, et
quatre autres permettent le paramétrage aisé du mode13 :
Au final, les valeurs de ces trois paramètres sont définies par les spécifications de chacun des périphériques
et ne varient pas durant l’exécution du programme.
13
(SPI library)
14
(L6470 ch. 8 – p. 38)
22 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
A noter que le L6470 demande que le signal CS soit maintenu à l’état logique haut (inactif) pendant un
minimum de 800 [ns] après la lecture/écriture de chaque octet de manière à décoder la commande et
renvoyer la réponse lors du transfert suivant. Le côté full duplex de la communication devient dès lors un peu
plus circonstanciel.
15
(SC16IS740/750/760 ch. 11 – p. 43)
Imhof Yannick 23
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Le SC16SI750 propose un mode de lecture en FIFO ininterrompu, et, au contraire du L6470 n’impose pas une
modification du signal CS à chaque octet.
Figure 27 - Les phases d'un moteur pas-à-pas bipolaire en mode « full step »
Le nombre de pas de rotation est déterminé par construction, et les moteurs à aimant permanent peuvent
compter jusqu’à 48 pas dans le cas des moteurs de style can stack16.
La séquence de pilotage des électroaimants détermine le sens de rotation du moteur, et selon le type de
construction, peut permettre la création de demi-pas de positionnement.
La période du cycle influence la vitesse du moteur et par extension son comportement général (glissement
par perte de pas, vibrations, bruit).
16
(Stepper Motors)
24 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
La tension aux bornes de ces mêmes bobines influence le couple fourni par le moteur, et par voie de
conséquence, en fonction de la charge, définit l’accélération et la décélération maximum admissibles, ainsi
que son taux d’échauffement.
Ce sont-là les principes de base, qui exposés aussi succinctement, peuvent donner à penser que la gestion
d’un moteur pas-à-pas relève de l’évidence. Mais il n’en est rien, et la lecture de notes telles que celles de
Sorin Manea (Microchip)17 permet d’en prendre la mesure, et d’admettre que c’est un sujet qui aurait à lui
seul pu faire l’objet de ce travail de bachelor.
En conséquence, c’est le développement de pilotes hardware dédiés comme le L6470 qui a permis l’essor
des moteurs pas-à-pas, au détriment de leurs prédécesseurs, les servomoteurs, dans tout système qui
nécessite un contrôle de vitesse ou de positionnement. Globalement, le moteur pas-à-pas bénéficie
d’avantages non négligeables comme une relative simplicité de mise en œuvre, une bonne précision, un
couple correct à des vitesses modérées et un faible coût. Les servomoteurs restent en lice dès qu’une charge
importante s’associe à une accélération importante. Les pilotes dédiés facilitent donc grandement la gestion
d’un moteur pas-à-pas et offrent en particulier la possibilité de générer le courant d’alimentation des bobines
en respectant une approximation de la sinusoïde d’un courant alternatif. Ce procédé est communément
appelé microstepping, et permet au moteur d’adopter un comportement plus doux en phase d’accélération
ou de décélération tout en évitant les pics de courant présents dans un signal carré.
17
(Stepper Motor Control with dsPIC DSCs)
Imhof Yannick 25
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Moteur PG35S-D48-HHC2
Le type de moteur utilisé pour le scanner est un bipolaire à aimants permanents alimenté en courant continu
à une tension de 24 [V]18.
Ce moteur a de base 48 pas de rotation, lesquels, associés à un réducteur 1/35.4, permettent d’obtenir 1698
pas de rotation, tout en offrant un couple de transmission relativement élevé pour ce type de matériel.
18
(Standard PG Step Motors)
26 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Configuration du L6470
Selon ce qui précède, faire fonctionner un moteur pas-à-pas sans pilote dédié n’est pas une mince affaire. Et
derrière l’idée d’utiliser le L6470, se profilait l’espoir de simplicité et de facilité d’accès. La réalité est tout
autre et, il est dès lors difficile d’imaginer le niveau réel de difficulté d’une implémentation sans pilote
lorsqu’on prend conscience de celui que l’on rencontre avec un pilote.
Le L6470 intègre un nombre impressionnant de paramètres permettant aussi bien d’optimiser que de
personnaliser le comportement du moteur piloté. Dans le cadre de ce projet, plusieurs tentatives ont été
menées afin d’atteindre les performances mises en avant par les spécifications du type de moteur choisi,
comme par exemple une vitesse maximum de 2100 [pps] (~ 1.27 s-1 compte tenu du réducteur). Mais force
est de reconnaître que cela n’a pas été possible, ni même d’appliquer les éléments de calcul exposés par la
documentation technique19.
Selon les circonstances, le moteur commençait à vibrer tout en émettant des bruits pour le moins
inquiétants. Des échauffements très importants ont pu être constatés, ainsi que des arrêts brutaux suite à
un dépassement de courant maximum. A l’inverse, il est également arrivé que le moteur ne démarre pas, ou
tourne à un rythme très ralenti, comme hésitant. A noter également qu’il n’a pas été possible de faire
fonctionner le moteur en mode full step, à moins d’invalider la protection contre le dépassement de courant
ou de s’en tenir à des vitesses très faibles. Ces échecs ne sont pas tous détaillés, et leur origine n’a pas pu
être précisément déterminée faute de temps, mais la compatibilité entre le moteur et le pilote choisis est
peut-être en cause.
19
(L6470 34 - Ch 7)
Imhof Yannick 27
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
En conséquence :
𝐾𝑉𝐴𝐿 𝐼𝑝𝑘 ∙ 𝑅
𝐾𝑉𝐴𝐿𝑥 = − 𝐵𝐸𝑀𝐹𝑐𝑜𝑚𝑝 = − 𝐵𝐸𝑀𝐹𝑐𝑜𝑚𝑝
𝜇𝑠𝑡𝑒𝑝 ∙ 𝑉𝑆𝑐𝑜𝑚𝑝 ∙ 𝐾𝑡ℎ𝑒𝑟𝑚 𝑉𝑆 ∙ 𝜇𝑠𝑡𝑒𝑝 ∙ 𝑉𝑆𝑐𝑜𝑚𝑝 ∙ 𝐾𝑡ℎ𝑒𝑟𝑚
0.4 ∙ 8
𝐾𝑉𝐴𝐿𝑥 = − 0.5198 = −0.5188 [−]
24 ∙ 128 ∙ 1 ∙ 1
En admettant que le déroulement mathématique, ainsi que les valeurs appliquées, soient corrects, cette
dernière valeur est peut-être exacte mathématiquement parlant, mais ne peut en aucun cas être définie
physiquement.
20
(Voltage mode control operation and parameter optimization)
21
(Evaluation software with graphical user interface for STSPIN motor driver ICs)
28 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Partant des données techniques du moteur relatives au couple en fonction de la vitesse, et d’une méthode
de calcul22 confirmée par les relations qui suivent23, le calcul d’une pseudo-constante de force électromotrice
a pu être tenté.
𝑀𝑚 = 𝐾𝑡 ∙ 𝐼(𝑡) et 𝐾𝑒 = 𝐾𝑡
Avec
Comme chacun peut le constater, le caractère constant de 𝐾𝑒 n’est pas des plus évident. En désespoir de
cause, c’est la moyenne de ces valeurs qui sera utilisée :
𝐾𝑒 = 1.3124
Mais au final, il semble que les caractéristiques de ce type de moteur ne sont que difficilement prises en
charge par le pilote :
22
(Reading the motor constants from typical performance characteristics)
23
(Moteur à courant continu)
Imhof Yannick 29
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Les outils mathématiques ayant échoué, les valeurs des paramètres adoptées ci-après ont été définies par
voie empirique et itérative, en ayant préalablement posé les hypothèses suivantes :
30 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Par curiosité, ces valeurs ont été introduites dans l’outil de configuration automatique et donnent la courbe
de compensation suivante :
Commandes et gestion
Une fois le paramétrage du profil de vitesse réalisé et relativement correct, la gestion du moteur devient
effectivement simple. Le L6470 gère en temps réel une position angulaire absolue. La seule particularité vient
du fait que si le microstepping est actif, cette position correspond à un nombre de microsteps depuis l’origine
angulaire. Un signal BUSY permet de connaître le moment auquel le déplacement est terminé, et un second
signal FLAG informe qu’un problème est survenu.
Le registre dédié à la position a une taille de 22bits et accepte une plage allant de -221 à +221-1. Il est accessible
aussi bien en lecture qu’en écriture, à la condition que le moteur soit arrêté. Le moteur admet 1’698 steps
de progression, et le pilote définit 128 µsteps intermédiaires. En conséquence, un tour complet du moteur
demande 217’344 µsteps. Cette valeur doit encore être doublée du fait de la réduction induite par le système
de transmission par courroie crantée, soit 434'688 µsteps.
Cette valeur de position est utilisée par la commande goTo, laquelle définit automatiquement le
déplacement incrémental nécessaire à atteindre une nouvelle position absolue. Le sens de rotation peut être
laissé à l’appréciation du pilote (chemin minimum optimal) ou imposé. Dans le premier cas, la notion
d’optimisation semble un peu surfaite étant donné que pour revenir à l’origine après avoir parcouru deux
tours le pilote refait effectivement les deux tours en sens inverse. Dans le second cas, il faut être prudent,
puisque par exemple retourner à l’origine depuis la position 1000 en imposant un sens positif, va induire un
déplacement infini.
Ajoutons encore la commande goHome permettant de revenir à l’origine et, concernant les déplacements,
tous les outils nécessaires à l’implémentation du scanner sont définis.
Connectique
Concernant le câblage, outre les éléments relatifs au bus SPI, les pilotes de moteur utilisent les broches
suivantes sur le microcontrôleur Yùn.
Imhof Yannick 31
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Gestion du télémètre
Commandes de la carte d’acquisition, le LR4
Le télémètre, interrogé depuis le microcontrôleur via le port série du LR4, n’offre pas de grande particularité.
Le port série doit être configuré avec une vitesse de 9600 bauds, pour une taille de mot de 8 bits, sans parité
et 1 bit de stop.
La réception d’une commande est quittancée par une chaîne « ok » si ladite commande correspond à l’un
des deux premiers caractères précités. Sinon, pour tout autre élément que le « i », une chaîne « badcmd »
est renvoyée.
Les données de mesure sont formatées en chaînes d’une longueur systématique de sept caractères dont les
cinq premiers constituent la mesure en elle-même exprimée en millimètres, et les deux derniers font office
de séparateur adoptant le format standard Linux du retour de ligne « \r\n », ou en ASCII, un caractère 13
(0xD) suivi d’un caractère 10 (0xA).
24
(LR4 Data Sheet)
32 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Ces éléments constituent la base prévisible du comportement du LR4, mais comme évoqué précédemment,
les données reçues peuvent adopter un autre format beaucoup plus difficile à anticiper et à gérer.
En particulier dans la phase de démarrage du laser, il arrive que tous les digits d’une même mesure soient
des caractères « 0 » (0x30), ou plus ennuyeux, que le buffer de réception du port série soit presque
instantanément saturé de ces mêmes caractères.
Configuration du SC16IS750
Au même titre que le L6470, le pont SPI-UART SC16IS750 offre beaucoup d’options de configuration. Mais
les capacités limitées de son client, le LR4, en invalide une bonne partie. La particularité du chip relève du
fait que certains registres ne sont accessibles qu’en fonction de valeurs présentes dans d’autres et dès lors
la séquence d’affectation des registres doit obéir à un ordre logique.
Différentes interruptions, selon différentes priorités, sont disponibles, en fonction des éléments de
transmission mais également des erreurs à traiter. En particulier, l’interruption programmable en fonction
du nombre de caractères reçus dans le FIFO RX est intéressante. Mais la résolution, en octets, de cette
interruption est un multiple de 4, alors que, comme nous l’avons vu, la taille d’une mesure renvoyée par le
LR4 est de 7 octets. En guise de sécurité, si la quantité de données reçues reste inférieure au niveau de
déclanchement paramétré, imaginons ce dernier défini à 8 caractères par exemple, le SC16IS750 génère alors
une autre interruption déclenchée par un timeout équivalent au temps nécessaire à la réception de 4
caractères. Donc le choix est posé, et après divers essais visant à définir l’option avec la meilleure réactivité,
le niveau de déclanchement est fixé à 4 caractères, chaîné avec une attente active des 3 caractères
manquants. Accessoirement, une interruption est également générée lors du retour à un état où toutes les
interruptions en attente ont été traitées, et qu’il faudra filtrer.
La vitesse de transmission est fonction de la fréquence de l’horloge embarquée, qui est, dans le cas présent,
de 14.7456 [MHz]. Le diviseur de fréquence est défini comme suit25 :
𝑐𝑟𝑦𝑠𝑡𝑎𝑙 𝑖𝑛𝑝𝑢𝑡 𝑓𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦 14745600
𝑝𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 1
𝑑𝑖𝑣𝑖𝑠𝑜𝑟 = = = 96 = 0𝑥60
𝑑𝑒𝑠𝑖𝑟𝑒𝑑 𝑏𝑎𝑢𝑑 𝑟𝑎𝑡𝑒 ∙ 16 9600 ∙ 16
Les octets de poids fort et faible de ce diviseur sont chargés respectivement dans les registres DLL et DLM.
En accord avec ce qui précède et les éléments attendus par le LR4, les options suivantes sont appliquées :
Connectique
Concernant le câblage, le pont SPI-UART étant l’un des périphériques connectés au bus SPI, il partage une
partie de son câblage avec les pilotes des moteurs, et s’octroie quelques broches supplémentaires sur le
microcontrôleur Yùn.
25
(SC16IS740/750/760)
Imhof Yannick 33
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Broche 8 – signal CS
La broche 8 active la communication avec le pont SPI-UART sur le bus SPI.
Gestion du servomoteur
Généralités
Un servomoteur peut être comparé à un moteur pas-à-pas en ce sens qu’il se destine à la gestion d’un
système asservi de positionnement. Selon le domaine d’utilisation (hydraulique, modélisme, prototypage,
etc.) la taille d’un servomoteur peut être très variable, de même que le niveau de charge et le type de
mouvement généré (fraction de tour, multitours, déplacement linéaire)26.
Connectique
Le signal de commande PWM, nécessaire au servomoteur, est directement par le microcontrôleur Yùn, sur
une broche compatible avec ce type de signal.
Schéma de classes
Le langage de programmation étant le C++, le firmware est structuré en différentes classes.
Chaque périphérique matériel piloté bénéficie de sa classe propre. Les périphériques connectés au bus SPI
ont clairement une base de fonctionnalités commune, lesquelles ont été rassemblées dans une classe
parente.
26
(Servomoteur)
34 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Ces classes de gestion de matériel offrent leurs services au système de gestion des fonctionnalités, lequel
bénéficie également de sa propre classe.
Le code est structuré en différents fichiers, chaque classe étant définie dans son propre fichier d’en-tête et
implémentée dans le fichier source associé.
Par ailleurs, le système Arduino met à disposition du développeur bon nombre de classes de gestion bas
niveau dont les classes décrites ci-après tirent parti.
A noter également que l’implémentation s’est fortement inspirée des exemples disponibles dans le domaine
public, que ce soit dans les forums de développement, la littérature Sparkfun, ou surtout Arduino, en
particulier les éléments relatifs à la communication entre les deux mondes hébergés par la carte Arduino
Imhof Yannick 35
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Yùn, la bibliothèque Bridge 27 . Les liens vers les références principales sont disponibles dans la table de
documentation.
BaseSpiDevice
La classe BaseSpiDevice est la classe de base pour tous les périphériques connectés au bus SPI.
Elle rassemble les propriétés nécessaires à la configuration du bus propre au périphérique, ainsi que les
méthodes de transfert de données sur le bus, et utilise à cette fin la bibliothèque SPI d’Arduino. C’est une
classe abstraite qui laisse à ses héritiers le soin d’implémenter leurs spécificités en termes de configuration
et d’initialisation.
Le signal RESET étant partagé par tous les périphériques du bus SPI, il est accessible par des méthodes de
classe présentes dans chaque héritier. La réinitialisation logicielle, quant à elle, est propre à chaque instance.
SpiStepperDriver
La classe SpiStepperDriver hérite de BaseSpiDevice, et offre les fonctionnalités de gestion propre au moteur
au moyen d’une interface de communication transparente avec le L6470.
Cette classe est instanciée deux fois pour permettre le paramétrage et la gestion des moteurs
indépendamment l’un de l’autre.
Les signaux BUSY et FLAG étant partagés par les deux instances, ils sont accessibles par des méthodes de
classe, en particulier le statut de l’interruption BUSY qui par nécessité doit être accessible au gestionnaire de
l’interruption.
SpiRangeFinder
La classe SpiRangeFinder hérite de BaseSpiDevice, et offre les fonctionnalités de gestion propre au télémètre.
Elle reprend à son compte toute la gestion de la chaîne de communication avec le LR4, via le pont SPI-UART
et les adaptateurs de tension.
Le signal d’interruption signalant des données en attente est défini en propriété de classe, là aussi pour être
accessible au gestionnaire de l’interruption.
ServoDriver
La classe ServoDriver utilise la bibliothèque Arduino Servo28, et hérite de la classe du même nom.
Elle encapsule simplement les constantes des deux positions extrêmes du composant et le numéro de broche
délivrant le signal PWM. Deux méthodes permettent de positionner le gabarit dans l’une ou l’autre des
configurations.
ScanningEngine
La classe ScanningEngine constitue le cœur du firmware et utilise les ressources mises à disposition par toutes
les autres classes.
Elle est en lien avec l’extérieur grâce au serveur et au client HTTP, et exploite un dictionnaire de commandes
lui permettant de répondre aux sollicitations de la centrale.
27
(Bridge Library for Yún devices)
28
(Servo library)
36 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Fonctionnalités
Conventions géométriques et système d’axes
Les valeurs des données de mesure retournées par le scanner sont basées
sur la convention des géographes29, avec quelques particularités.
Principe de calibrage
Le calibrage est une fonctionnalité du scanner lui permettant de définir la position de son référentiel par
rapport à son environnement. En elle-même, cette fonctionnalité n’est pas réellement nécessaire pour
réaliser un scan, c’est-à-dire faire l’acquisition des distances entre le module et les obstacles formant son
environnement. Un scanning réalisé sans calibrage ne serait pas très différent du même scanning après
calibrage, excepté le fait que l’affichage en environnement 3D virtuel montrerait un résultat orienté de
manière aléatoire et difficile à appréhender. Le calibrage est donc là pour permettre aux données de
s’accorder au mieux avec la représentation humaine.
Le processus de calibrage comprend deux phases en vue de calibrer premièrement la position du miroir
permettant au laser de trouver le plan horizontal, et deuxièmement la position globale du module
permettant au laser de coïncider avec l’axe X.
29
(Coordonnées sphériques)
Imhof Yannick 37
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Le calibrage utilise les fonctionnalités de mesure du scanner et selon l’environnement peut partiellement
échouer. Dans un tel cas, l’origine correspondra à la position du système au moment de son démarrage.
Calibrage du miroir
Lors du calibrage du miroir, un gabarit de forme triangulaire est présenté face au laser, avec la particularité
d’être l’élément de l’environnement le plus proche du module. Un processus de recherche, basé sur cette
distance minimale, permet ensuite de prendre six mesures à intervalle de 17° le long du gabarit. Sur ces six
points, quatre sont utilisés pour définir les équations de deux droites dont on cherche ensuite le point
d’intersection30 (Xi ;Yi). La position de ce dernier point est enfin utilisée pour calculer le décalage angulaire
nécessaire pour retrouver l’horizontale depuis l’origine courante, compte tenu de la position décalée du
laser.
30
(Gieck p. F1)
38 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Légende :
CM = calibration measure
MP = mirror position
MO = mirror offset
Calibrage du module
Le principe de calibrage de la position globale du module est assez similaire. Le gabarit est retiré, puis neuf
mesures propres à l’environnement sont prises à l’horizontale sur une plage de 180°, tous les 20°. Ces neuf
points, appartenant au plan XY du référentiel, sont ensuite analysés pour en extraire trois, consécutifs et
alignés, c’est-à-dire appartenant à la même équation de droite, moyennant une tolérance de ± 20 [mm]
Imhof Yannick 39
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
définie empiriquement. On admet implicitement que la droite identifie quelque chose qui ressemble à un
mur.
Lorsque ces conditions sont réunies, le décalage est calculé pour placer le module parallèlement à la droite,
cette dernière étant assimilée à l’axe Y du référentiel, avec une résultante perpendiculaire pour la direction
du laser correspondant à l’axe X.
Selon les conditions rencontrées pendant les mesures, ce calibrage peut facilement échouer, et l’origine du
module reste à sa valeur initiale. C’est la raison pour laquelle la mise en place initiale du module dans son
environnement n’est pas anodine.
CM = calibration measure
GP = gear position
GO = gear offset
Processus de scanning
Le processus de scanning constitue la fonctionnalité principale du scanner, et son bon déroulement peut être
perturbé par différents facteurs dont les plus évidents sont détaillés ci-dessous.
1. Phénomène de Black Hole : le trou noir est un phénomène stellaire dont la principale caractéristique
est une gravité telle que pas même la lumière ne s’en échappe. Du point de vue du scanner, l’effet
est identique à chaque point de mesure où la lumière du laser est incapable de revenir. Ce sont par
exemple les points à « l’infini » (la distance de mesure maximum du télémètre est dépassée), les
surfaces « absorbantes » comme un épais tapis ou d’indice de réflexion trop faible comme celles de
couleur noire matte.
2. Arrêt de l’un des moteurs : étant donné le paramétrage empirique des pilotes de moteurs, un
déplacement long et rapide peut occasionner un dépassement de courant avec un arrêt d’urgence à
la clé. Le câble d’alimentation peut s’emmêler, entraver le déplacement et provoquer l’arrêt par
débranchement ou dépassement de courant.
3. Erreur de connexion vers la centrale : dans un réseau Wifi, toutes sortes de facteurs peuvent rompre
une connexion établie et fonctionnelle.
40 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Imhof Yannick 41
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Après une phase d’initialisation dépendante de la résolution de scanning à mettre en œuvre, le processus se
structure en une séquence de quatre activités principales répétées en boucle jusqu’à compléter le cycle par
la dernière mesure.
Il reste encore à préciser que le premier point de mesure ne se situe pas à la latitude 0. Si tel était le cas, les
résolutions de scanning induisant des positions angulaires multiples de 90° répèteraient inutilement la
mesure des deux points à la verticale du module, sur l’axe Z, à chaque méridien. En conséquence, les mesures
démarrent à une latitude équivalente au demi-angle de la résolution.
Résolution de scanning
Afin de laisser à l’utilisateur le choix de privilégier la qualité au détriment de la vitesse, le scanner est capable
de gérer 11 niveaux de résolution. Par défaut, il adopte la résolution la plus grossière offrant la durée de
scanning la plus courte.
Les durées indiquées dans le tableau ci-dessous sont des estimations extrapolées à partir des tests réalisés,
et ne peuvent être considérées comme absolues.
42 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Ainsi que le montre le schéma ci-dessus, l’idée générale est d’augmenter notablement les capacités
d’interface du microcontrôleur avec l’extérieur, et en particulier du point de vue réseau avec la présence
d’une interface Wifi.
La répartition des « tâches » entre les deux mondes est assez évidente :
Le microcontrôleur gère les périphériques tels que les sondes, les moteurs, les accéléromètres et
autres capteurs.
Le processeur offre des services de connexion au monde via le réseau, de stockage étendu par l’USB
ou la carte SD et d’acquisition audio et vidéo.
Ces deux mondes doivent pouvoir communiquer et c’est là le rôle du Bridge. C’est aussi là que le mariage
trouve rapidement quelques limites. Pour citer les principaux exemples, l’unique contrôleur UART est
monopolisé dans ce cadre, 3 des 5 interruptions disponibles du microcontrôleur lui sont également dédiées,
31
(Arduino Yún)
Imhof Yannick 43
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
et il est préférable d’éviter d’utiliser les broches 0 et 1 du Yùn, toujours pour la même raison. Le bon
fonctionnement du bus SPI pourrait également être influencé mais cela ne s’est heureusement pas vérifié.
Une fois ces éléments pris en compte, la bibliothèque Bridge livre tout son potentiel, qui n’est de loin pas
négligeable. C’est typiquement elle qui donne accès au serveur web disponible sous l’environnement Linux
et permet donc de rendre le microcontrôleur « visible » depuis Internet. C’est elle également qui publie la
console sérielle permettant de visualiser les traces de debug si utiles au développeur. Et la création de
processus permettant l’exécution de commandes Linux est également de son ressort.
Concernant le dialogue sur le réseau, en utilisant le protocole REST et en respectant une certaine syntaxe
attendue par le serveur dans la racine de l’URL, il est possible d’envoyer des commandes à ce dernier, qu’il
transmettra ensuite au microcontrôleur lorsque ce dernier est à l’écoute.
Dans le cadre du scanner, la première option a pris toute son importance dans la prise en charge du
dictionnaire de commandes.
Ce type de tâche déléguée a été intensivement utilisée dans le cadre de la gestion de échanges HTTP entre
le Yùn et la centrale. Ainsi le formatage au formalisme JSON de tous les acquittements de commandes, ou
des données de mesures est réalisé par le processeur.
Dictionnaire de commandes
La liste ci-dessous détaille les URLs auxquelles le scanner répond, et la commande correspondante qui sera
exécutée.
32
(Getting Started with the Arduino Yún)
33
(Beginner's Introduction to Yun Web Services)
44 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Mouvements généraux :
o Augmentation de la latitude, ou rotation du miroir dans le sens trigonométrique (5°).
http://192.168.24.44:8068/arduino/Cmd/EB/
o Diminution de la latitude, ou rotation du miroir dans le sens anti-trigonométrique (5°).
http://192.168.24.44:8068/arduino/Cmd/EC/
o Augmentation de la longitude, ou rotation du module dans le sens trigonométrique (5°).
http://192.168.24.44:8068/arduino/Cmd/ED/
o Diminution de la longitude, ou rotation du module dans le sens anti-trigonométrique (5°).
http://192.168.24.44:8068/arduino/Cmd/EE/
o Réinitialisation manuelle de l’origine.
http://192.168.24.44:8068/arduino/Cmd/EF/
Transmettre son statut courant
http://192.168.24.44:8068/arduino/Cmd/H/
Réaliser une calibration
http://192.168.24.44:8068/arduino/Cmd/F/
Réaliser un scanning
http://192.168.24.44:8068/arduino/Cmd/Gx/
x étant la résolution de scanning (valeur entre B et L)
Stopper le scanning en cours
http://192.168.24.44:8068/arduino/Stop/
Se réinitialiser (ATmega32u4)
http://192.168.24.44:8068/arduino/Cmd/D/
Redémarrer (AR9331 + ATmega32u4)
http://192.168.24.44:8068/arduino/Cmd/C/
L’un des problèmes principaux rencontré de manière récurrente durant le développement du firmware, a
été la nécessité de conserver une taille compatible avec les 28 ko disponibles en mémoire flash.
Et malgré le fait de respecter au mieux certaines règles34, au fur et à mesure des développements et de
l’extension des fonctionnalités, la nécessité de cibler les modules absolument nécessaires au travail en cours
s’est imposée. Le code intègre donc une dizaine de directives qui permettent de compiler le sketch de
manière sélective.
34
(How to reduce program size)
Imhof Yannick 45
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Mais en définitive, la principale mesure pour rester dans la cible a été, dans la version RELEASE du code, de
supprimer la console, et donc au même titre toutes les constantes de chaînes des messages. La conséquence
directe est que dans sa version finale, le scanner ne délivre plus aucun message sur la console SSH.
Les directives de compilation s’inscrivent dans une hiérarchie de dépendance que le code gère
automatiquement. Néanmoins, typiquement dans le cas des tests relatifs au calibrage, le développeur devra
également choisir entre les messages du miroir ou ceux du module en commentant les lignes appropriées.
Séquence de démarrage
Le parallélisme des systèmes induit encore une dernière problématique dont il faut tenir compte. Si
l’ATmega32u4 démarre en quelques fractions de secondes, il n’en va pas de même pour le système Linux35.
De plus, chaque système est indépendant, et redémarrer l’un n’implique pas le redémarrage de l’autre.
Néanmoins, l’interdépendance fonctionnelle, dans le cas du scanner, n’est pas symétrique : le
microcontrôleur a besoin du système Linux, l’inverse n’est pas vrai. La priorité va donc au fait que Linux soit
opérationnel au moment où le microcontrôleur démarre.
D’un côté plus fonctionnel, une fois les deux systèmes disponibles, le scanner commence par une calibration.
Puis lorsqu’il est prêt à l’emploi, il se connecte à la centrale, transmet son adresse IP, et requiert un
identifiant.
35
(Arduino Yún)
46 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Après avoir reçu son identifiant, il se met à l’écoute des commandes en provenance de l’application cliente
relayées par la centrale.
Centrale
L’architecture de la centrale se compose de trois éléments interconnectés :
Service Windows
Le service Windows au cœur du système du scanner peut presque être assimilé à une coquille vide. C’est un
processus qui offre un espace de fonctionnement et des droits système à un ou plusieurs services web WCF
en self-hosting. Sa particularité est d’être structuré de manière à permettre la gestion de ces services sous la
forme d’add-ins, selon une architecture définie par Microsoft37,38.
Figure 50 - Structure d'une application pouvant accueillir des add-ins selon Microsoft
36
(What Is Windows Communication Foundation)
37
(Walkthrough: Creating an Extensible Application)
38
(AddIn Enabled Applications)
Imhof Yannick 47
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Le détail de l’implémentation ne sera pas abordé, étant donné qu’elle est intégralement basée sur différents
didacticiels provenants de la documentation Microsoft, ainsi que sur l’expérience professionnelle de l’auteur.
Cette implémentation met en œuvre un pipeline de communication entre le host et ses add-ins au moyen de
deux interfaces identiques (contrats de fonctionnalités) mais propres à chacun des deux « côtés » du pipeline.
S’ajoutent à cela les mécanismes de « traduction » depuis et vers chacune de ces deux interfaces. Pour le
lecteur passionné, les références de ces didacticiels sont disponibles dans la table de documentation.
Common :
Cet assembly rassemble à la fois les classes permettant l’intégration du service web comme add-in
du service Windows, ainsi que toutes les classes nécessaires à la traduction des erreurs systèmes en
faults propres au protocole SOAP39. Il publie également la classe permettant la création d’éléments
dans le journal des évènements Windows40.
DAL (Data Access Layer)
Cet assembly publie la classe S3DDAL, laquelle formalise la couche métier. Elle fait le lien entre les
éléments de contrats publics publiés par le service web, et la base de données. C’est elle qui
implémente toutes les fonctionnalités à orientation métier comme par exemple la conversion des
coordonnées sphériques en coordonnées cartésiennes.
Entity
L’assembly Entity publie les entités de la base de données et les fonctionnalités CRUD. Il est
implémenté sur la base d’Entity Framework 6, la technologie d’accès aux données recommandées
par Microsoft41.
39
(Planned and Unplanned Exceptions in WCF)
40
(Tracing and Message Logging)
41
(Entity Framework)
48 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Imhof Yannick 49
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
ScanCmd et DataContracts
Les assemblies ScanCmd et DataContrats définissent toutes les classes relatives à la publication du
service web par WCF. Les tâches de conversion des commandes de l’application cliente à destination
du scanner, et des réponses du scanner à destination de l’application cliente, leur sont dévolues.
En second point, le format traditionnel des données échangées sous REST est JSON. Les requêtes SOAP quant
à elles adoptent la structure XML. A titre de comparaison, les données d’une même mesure sont présentées
ci-dessous en provenance du scanner et à destination de l’application cliente après conversion :
Scanner (JSON):
{
"id":"0100",
"ix":"00000283",
"ro":"04df",
"tt":"00030a40",
"dt":"000563a0"
}
Application cliente (XML):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:rem="http://www.scanner3d.ch/RemoteControlService">
<soapenv:Header/>
<soapenv:Body>
<rem:AddMeasurePoint>
<!--Optional:-->
<rem:measure>
<!--Optional:-->
<rem:Client>80744CE7-D84F-4485-BA79-378022E031E9</rem:Client>
<!--Optional:-->
42
(Representational state transfer)
43
(Simple Object Access Protocol)
50 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
<rem:Index>283</rem:Index>
<!--Optional:-->
<rem:Scanner>3D004DE4-0447-498A-BDFC-49E1C2E8CE1D</rem:Scanner>
<!--Optional:-->
<rem:X>-421.9811</rem:X>
<!--Optional:-->
<rem:Y>177.2566</rem:Y>
<!--Optional:-->
<rem:Z>-1094.7972</rem:Z>
</rem:measure>
</rem:AddMeasurePoint>
</soapenv:Body>
</soapenv:Envelope>
Enfin, que ce soit du côté du scanner, ou du côté de l’application cliente, la centrale entretient des flux de
communication bidirectionnels. Elle est donc, pour chacun des deux partenaires, à la fois serveur et cliente.
Si la part serveur est en permanence à l’écoute des requêtes extérieures, les clients sont instanciés
dynamiquement à la demande.
De plus, le décalage du laser par rapport à l’axe Y induit une variation du décalage ̅̅̅̅̅
𝑂𝑀 en fonction de la
latitude courante. En prenant le miroir comme plan de référence, il est possible de visualiser les positions
extrêmes du point M.
Imhof Yannick 51
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Constatations :
Le centre du laser se positionne au point (-5 ;7) du plan XZ. L’amplitude du décalage est donc de
−5
√(−5)2 + 72 = 8.6 [mm]. Les maxima sont donnés pour les latitudes valant tan−1 ( ) ± 180°. Compte
7
tenu de la position du miroir, 𝑀𝑚𝑎𝑥 intervient à 144.5° et 𝑀𝑚𝑖𝑛 à 324.5°. Il est dès lors possible de définir la
variation ̅̅̅̅̅̅
𝑂′𝑀 comme :
52 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
̅̅̅̅̅ + 𝑀𝑆
La distance mesurée physiquement 𝜌 correspond à 𝑂𝑀 ̅̅̅̅, mais le système d’axes demande 𝜌′ =
̅̅̅̅
𝑂𝑆.
Dans le référentiel relatif xy, ̅̅̅̅̅
𝑂𝑀 est une quantité systématiquement négative sur l’axe y. En
conséquence, la longitude 𝜃 doit être diminuée de ∆𝜃 pour cos 𝛿 > 0 et augmentée de ∆𝜃 pour
cos 𝛿 < 0.
La latitude 𝛿 doit devenir 𝛿′
𝑑𝑥𝑦 = ̅̅̅̅̅
𝑀𝑆′ = (𝜌 − ̅̅̅̅̅
𝑂𝑀) ∙ cos 𝛿
̅̅̅̅ = √𝜌𝑥𝑦 2 + ℎ2
𝜌′ = 𝑂𝑆
̅̅̅̅̅
𝑂𝑀
𝜃 ′ = 𝜃 − 𝑠𝑖𝑔𝑛(cos 𝛿) ∙ ∆𝜃 = 𝜃 − 𝑠𝑖𝑔𝑛(cos 𝛿) ∙ tan−1 ( )
𝑑𝑥𝑦
ℎ
𝛿 ′ = tan−1 ( )
𝜌𝑥𝑦
A partir de ces nouvelles coordonnées sphériques, les lois de transformation normales44 peuvent s’appliquer.
Lorsque le service reçoit les données d’une mesure, une séquence de trois tâches parallèles
interdépendantes est instanciée. Le scanner retrouve la main dès que la couche réseau a terminé le transfert
des données.
Chacune de ces tâches est liée à une seconde tâche de traitement d’erreur le cas échéant. Si l’application
cliente se déconnecte, une erreur à l’envoi est détectée et les tentatives de connexion cessent. L’application
reçoit ses données dès qu’elle se reconnecte.
44
(Coordonnées sphériques)
Imhof Yannick 53
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Configuration système
Pour pouvoir fonctionner, le service web demande une certaine configuration au niveau du système.
Accessoirement, si deux add-in de gestion du scanner sont installés sur la même machine (configuration test
et production fonctionnant en parallèle par exemple), il y a de fortes chances qu’ils utilisent les deux le même
port IP. Dans ce cas, le service de partage de port Net.Tcp Port Sharing Service doit être démarré, et
l’utilisateur du service Windows doit être ajouté dans la configuration présente dans le fichier
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SMSvcHost.exe.config.
Base de données
La principale tâche de la base de données est bien évidemment de persister les coordonnées des mesures.
Chaque scanning est répertorié avec le scanner ayant fait le travail ainsi que le client l’ayant requis. Les
caractéristiques générales du scanning sont mémorisées de même qu’une statistique des temps de
54 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
traitements. Les données originelles de chaque point de mesure sont conservées à côté du résultat des deux
transformations (coordonnées sphériques « corrigées » et coordonnées cartésiennes).
La base de données conserve également la liste des scanners et clients inscrits, avec leurs adresses et ports
IP. C’est ce qui permet au service d’officier comme agent de liaison entre chaque scanner et chaque
application cliente. Du côté du scanner sont également mémorisées les constantes géométriques nécessaires
aux changements de référentiels.
Un script développé en Transact-SQL permet de créer l’intégralité des éléments moyennant l’installation
préalable de SQL Server et la modification des chemins d’accès aux fichiers de données et de journalisation.
A noter, que l’add-in du service web hérite des droits du login utilisé pour le démarrage du service Windows.
Etant donné que le service web doit pouvoir accéder à la base de données, différentes possibilités existent
pour qu’il y soit autorisé. Dans l’idéal, un utilisateur dédié au service doit être créé et répercuté dans les
sécurités de SQL Server. Un rôle doit ensuite lui être attribué au niveau de la base de données avec les
autorisations nécessaires sur les objets. Dans la cadre de ce projet, le login utilisé est membre du groupe des
administrateurs, ce qui simplifie les choses mais n’est pas très probant du point de vue de la sécurité.
Application cliente
Vue d’ensemble
L’application cliente peut être vue comme une télécommande un peu plus évoluée. L’interface définit deux
parties distinctes, d’un côté tous les éléments nécessaires au pilotage du scanner, et de l’autre l’affichage du
résultat du scanning, avec l’état courant de l’avancement du travail, et la possibilité d’exporter les données.
L’une des idées, en début de projet, envisageait la création d’une application mobile, avec un développement
cross-platforms au moyen du framework Xamarin45. Mais d’une part le temps restant à disposition après les
développements du firmware et des services était insuffisant, et d’autre part, les plateformes mobiles ne
sont pas en adéquation avec la finalité visant à pouvoir exploiter les données au moyen d’un logiciel tiers.
45
(Download Xamarin)
Imhof Yannick 55
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
L’application cliente se base donc finalement sur le framework Windows Forms, et se concentre sur les
aspects fonctionnels plutôt qu’esthétiques. Il faut encore préciser que ce n’est pas une application de gestion,
en ce sens qu’elle ne permet pas de gérer les données de scanning dans leur globalité.
Pour être pleinement fonctionnelle, l’application s’attend d’une part à pouvoir se connecter à la centrale, et
d’autre part à trouver un scanner disponible. A la connexion, elle informe la centrale de son existence en lui
transmettant son adresse IP et demande en retour un identifiant au sein du système.
Puis, selon le contexte actif lors de sa dernière déconnexion, le client va chercher à obtenir les dernières
données qui lui sont destinées ou simplement la liste des scanners connectés s’il n’était à l’origine d’aucune
demande de scanning.
Une fois le scanner cible sélectionné, il est possible de le piloter. L’activation des boutons de commandes est
fonction de ce que le contexte métier autorise. La plupart des commandes sont par exemple inaccessibles
pendant un scanning. Toutes les commandes sont lancées de manière asynchrone et affichent des messages
d’erreurs détaillés en cas de problème. A noter que ces messages, en l’état, s’adressent plus à un développeur
qu’à l’utilisateur lambda. A titre d’exemple, ci-dessous, le message affiché lorsque la connexion à la centrale
n’est pas possible.
Structure de la solution
L’implémentation de l’application cliente se répartit en quatre assemblies.
Ressources :
Cet assembly rassemble tous les éléments de ressources statiques. Ce sont typiquement les textes
des messages d’erreurs ou des retours de statuts. Les ressources graphiques comme les icônes de
boutons ou les GIFs animés de gestion de progression s’y trouvent également.
Services
Cet assembly publie deux choses essentielles pour l’application qui sont d’une part le proxy WSDL en
vue de la connexion au service WCF de la centrale, et d’autre part les classes du service WCF en self-
56 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Configuration système
Pour pouvoir fonctionner, le client demande une certaine configuration au niveau du système.
L’ordre des lignes correspond à la séquence selon laquelle les points de mesure ont été définis par le scanner.
La séquence et les liens nécessaires à la création des vertex permettant l’affichage du volume dans une scène
3D ne sont pas présents et doivent être définis par traitement.
46
(Point cloud)
Imhof Yannick 57
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Ce type de fichier peut ensuite être ouvert dans un logiciel de traitement approprié comme Meshlab47.
Au moment de la rédaction de ces lignes, le temps a malheureusement manqué pour aller plus avant dans
l’apprentissage de l’utilisation de ce logiciel de manière à pouvoir traiter le nuage et recréer le volume scanné
en réalité virtuelle.
Matières à amélioration
Du point de vue de la conception dans son ensemble, certains choix se sont avec le recul avérés discutables.
Les principaux sont détaillés ici dans l’optique d’être simplement formalisés et permettre des choix futurs
plus avisés.
Eléments mécaniques
Goupilles élastiques
Les alésages des goupilles élastiques positionnant les paliers de l’axe de transmission du miroir
étaient volontairement cotés sans tolérances, pensant que l’élasticité des goupilles compenserait les
défauts de concentricité. Mais au montage, les roulements étaient sur-contraints, offrant un frein
sensible à la rotation de l’axe. Ce défaut a été finalement corrigé grâce aux compétences des gens
de l’atelier, et le palier du module, lui, est positionné avec des goupilles rectifiées.
Roulements à cage ouverte.
Pour des raisons de coût et de disponibilité, les roulements permettant la rotation du miroir étaient
à cage ouverte. Malheureusement, durant la phase de montage, des corps étrangers se sont logés
dans l’un des roulements occasionnant de légers à-coups durant la rotation. Il n’a pas été possible
d’éliminer complétement ce défaut. En conclusion, dans le cas d’un prototype tel que le scanner il
est préférable d’utiliser systématiquement des roulements fermés.
47
(Meshlab homepage)
58 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Eléments électromécaniques
Positionnement du gabarit par servomoteur.
Lors de la pré-étude, le gabarit de calibrage devait être placé et retiré manuellement. L’ajout du
servomoteur est venu en réponse à la volonté de créer un système un peu plus autonome. Cette idée
est intervenue durant la seconde phase de conception, où il a fallu « faire avec l’existant », et surtout
avec la place disponible. Le servomoteur est donc sans doute l’un des plus petits que l’on puisse
trouver. C’est là, peut-être, la raison du fait que, lors de la mise en place ou du retrait du gabarit, le
servo semble osciller rapidement autours de la position de consigne. Le gabarit est des plus légers,
mais sa géométrie induit une inertie assez importante au vu de son poids et il semble que le servo
ne soit pas en mesure de la contrecarrer, avec ce phénomène de vibration à la clé. La régulation du
servo est arrêtée durant le calibrage ce qui stoppe les vibrations et autorise les mesures.
Corrélation moteur – précision de positionnement
La précision angulaire d’un moteur pas-à-pas vient en grande partie de sa construction et de sa
géométrie interne. C’est encore accentué par le fait d’être associé à un réducteur favorisant une
correspondance entre la position physique et les échelles angulaires courantes. Ce projet se base sur
un moteur équipé d’un réducteur 1/35.4. Aucune loi de proportionnalité entière ne lie la structure
interne des 48 positions du moteur aux presque 1698 positions de celle de l’axe extérieur (1698.11
ou 1699.2 selon la méthode de calcul). Dès lors, sans une référence extérieure, cette légère erreur
se propage et se cumule proportionnellement au nombre de tours.
Adéquation moteur – pilote.
Le moteur choisi lors de la pré-étude l’a été pour son angle de stepping très faible, et son couple
relativement important. Ce choix n’a pas pris en compte le fait que pilote et moteur doivent être en
adéquation l’un avec l’autre pour bénéficier des meilleures performances. Ce facteur s’avère être en
définitive le premier à prendre en compte dans le choix de ce type de composants, les autres
paramètres étant indirectement conditionnés par cette adéquation. Le présent point, appuyé par le
précédent, pousserait aujourd’hui à un autre choix de moteur, en faveur par exemple d’un moteur
Imhof Yannick 59
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
pas-à-pas hybride48. De tels moteurs offrent de par leur construction un pas de progression déjà très
fin avant réduction.
Eléments logiciels
Sécurité réseau.
Dans un projet de système embarqué, le réseau informatique est semblable à une colonne vertébrale
sans laquelle rien ne fonctionne. La présence du réseau implique que la question de la sécurité soit
abordée. Dans le cadre de ce projet où Linux et Windows doivent se parler, la seule possibilité de
gérer la sécurité se situe au niveau du transport sous le protocole HTTPS. Mais cette option demande
la mise en œuvre de certificats et de connaissances qui restent à acquérir. En conséquence le projet
ne gère que certains éléments très basiques des aspects sécuritaires.
Précision des mesures
La précision de mesure du télémètre s’inscrit dans une tolérance de ± 1 [mm]. Mais cela ne fait pas
tout, et du fait de l’inadéquation partielle entre les moteurs et leurs pilotes, ajouté aux possibilités
de glissement, dues au jeu des courroies ou au microstepping, les valeurs angulaires des mesures ne
sont pas totalement fiables.
Calibrage au moyen du gabarit
La procédure de calibrage telle que définie précédemment nécessite encore d’être améliorée, voire
partiellement repensée. Il arrive qu’en fin de processus, le calibrage ait échoué et que le référentiel
soit visiblement incorrect. Il est alors nécessaire de relancer un calibrage, ou de mettre
manuellement le scanner en position attendue avant de réinitialiser l’origine des axes.
Présence de Black Hole au sein du gabarit de calibrage.
Le principe du gabarit de calibrage est fondé sur le fait que les mesures
réalisées dans son champ de présence soient sans surprise. Mais il est
arrivé que le télémètre délivre un résultat erroné. Lorsque le laser pointe
précisément à l’angle du triangle, la distance mesurée peut être très
largement supérieure à la distance physique. Le cas n’a été formellement
identifié qu’une unique fois, mais compte tenu du point précédent, cela
suffit à remettre en question cette solution. Figure 64 - Black Hole au sein
du gabarit
Fonctionnalités
Calibrage au moyen de switches
Le L6470 peut accepter le signal d’un switch en entrée et sur la base de ce signal stopper la rotation
du moteur. Ce principe pourrait être utilisé en lieu et place du gabarit afin de permettre une
calibration automatique sans calcul et peut-être plus précise. Le principe pourrait être généralisé au
deux axes de rotation et le positionnement du référentiel sphérique ne serait dépendant que de la
qualité de la mise en œuvre du scanner sur son trépied (niveau, orientation, etc.)
Référence de positionnement par capteur angulaire
Les valeurs angulaires des coordonnées sont fournies par les pilotes des moteurs pas-à-pas. Même
dans le cas d’un moteur correctement apparié à son pilote, le microstepping peut induire un
glissement entre la position angulaire effective et celle maintenue par le pilote. L’ajout de capteurs
angulaires permettrait d’obtenir la position physique indépendamment du pilote de manière plus
objective.
48
(Stepper Motors)
60 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Conclusion
Le scanner 3D existe bel et bien, et sa réalisation respecte le cahier des charges défini lors de l’analyse
préliminaire. Un seul point fait exception, le temps ayant manqué pour l’intégration de Sketchup.
La conception mécanique a révélé une faiblesse dans le choix du type de la transmission, mais globalement
elle répond aux attentes qui lui sont adressées.
Malgré une capacité en termes de mémoire flash un peu restrictive, le microcontrôleur Yùn remplit son rôle
de chef d’orchestre. Les possibilités offertes par la présence de Linux n’ont certainement pas toutes été
identifiées.
Le télémètre a surpris par son comportement erratique au démarrage et à l’arrêt du laser, mais il a rendu ce
projet réalisable. A noter que sa fréquence de mesures est finalement en adéquation avec la structure
logicielle en grande partie asynchrone et dépendante d’implémentations tierces (bibliothèque Bridge). Le
fait d’avoir du temps entre deux mesures facilite la synchronisation.
Les pilotes moteurs ont offerts des capacités très riches, qui n’ont malheureusement pas pu être exploitées
du fait d’un mauvais choix en termes de moteurs pas-a-pas. C’est là certainement le principal élément
négatif, étant donné que ce seul point remet en cause jusqu’à la validité des coordonnées de mesures.
La méthodologie de calibrage pourrait être considérée comme le second point négatif si elle s’avérait
impossible à stabiliser.
La structure logicielle orientée services a pu être mise en œuvre malgré les différences en termes de
protocoles et de structure de données.
Plus personnellement, le simple fait de pouvoir tenir le scanner dans les mains et le voir fonctionner est déjà
une réussite. Ce projet devient ainsi la réalisation d’un vieux rêve : créer quelque chose de concret de bout
en bout.
Remerciements
Je tiens à remercier ma femme, Martine, souvent seule à gérer la maison, ainsi que mes enfants, Maël et
Aurélien, pour leur soutien sans faille à tous les trois durant ces 52 mois d’études, et pour qui ma présence a
pris trop souvent un aspect fantomatique. Je leur suis profondément reconnaissant pour leur patience, et
leur compréhension face aux absences répétées, et à tous les « bonne journée et à demain » lancés à 7h30
du matin sur le pas de porte.
Je remercie également Corine et ma maman pour leur relecture courageuse et les corrections d’orthographe.
Je remercie mes beaux-parents pour avoir pris le relai dans les améliorations de la maison attendues par ma
femme, et la conception du caisson de validation des mesures, ainsi qu’à Martine et Sébastien pour sa
réalisation.
Je remercie enfin tous ceux qui nous ont soutenu plus discrètement, que ce soit en gardant nos enfants dans
certains moments chargés, ou simplement en ayant une petite pensée positive à l’occasion, et je sais qu’ils
sont nombreux.
Imhof Yannick 61
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Dossier de gestion
Rencontres avec M. Bressy
Date Objectifs
08.12.2015 Entrée en matière concernant le sujet du TB
Ebauche du cadre à donner au TB.
11.03.2016
Principe du concept basé sur un laser et une caméra.
Abandon du premier concept.
19.04.2016
Nouvelle orientation basée sur un télémètre.
Point de situation.
13.05.2016
Validation du schéma électronique.
02.09.2016 Point de situation Skype.
Signatures de l’affiche GAPS et du résumé.
16.09.2016
Démonstration du scanner.
Résumé d’activités
Les éléments qui suivent résument les activités de réalisation des semaines 27 à 38 2016, c’est-à-dire du
travail de bachelor en lui-même, sans le temps d’analyse préliminaire. Le détail complet est disponible dans
le CD accompagnant le présent document.
62 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Imhof Yannick 63
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Authentification
Le soussigné, Imhof Yannick, atteste par la présente avoir réalisé seul ce travail et n’avoir utilisé aucune autre
source que celles expressément mentionnées, si ce n’est les connaissances acquises durant ses études et son
expérience acquise dans une activité professionnelle.
Cugy, le 23.09.2016
Imhof Y.
64 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
References
Table des illustrations
Figure 1 - Architecture générale du projet .........................................................................................................4
Figure 2 - Principe de mise en œuvre.................................................................................................................4
Figure 3 - Application cliente connectée et en attente ......................................................................................4
Figure 4 - Le scanner 3D réalisé..........................................................................................................................7
Figure 5 - Système de rotation selon l'axe vertical (vu de .................................................................................8
Figure 6 - Schéma électronique, pilotes des moteurs ........................................................................................9
Figure 7 - Schéma électronique, intégration du télémètre ..............................................................................10
Figure 8 - Vue en coupe des éléments mécaniques des axes de rotation .......................................................11
Figure 9 - Scanner 3D complet .........................................................................................................................11
Figure 10 - Architecture du projet ....................................................................................................................12
Figure 11 - Login du serveur web Linino, mot de passe "doghunter" ..............................................................14
Figure 12 - Mise à jour de l'image du microcontrôleur en ligne de commande ..............................................14
Figure 13 - Login du serveur web LuCI, mot de passe "arduino" .....................................................................15
Figure 14 - Terminal SSH connecté au système Linux du Yùn ..........................................................................15
Figure 15 - Configuration générale du système Linux ......................................................................................16
Figure 16 - Configuration DHCP du système Linux ...........................................................................................16
Figure 17 - Configuration Wifi du système Linux en client ..............................................................................17
Figure 18 - Invalider la réinitialisation automatique de la configuration Wifi .................................................18
Figure 19 - Paramétrage de la carte additionnelle LR4 ....................................................................................19
Figure 20 - Erreur au téléchargement du sketch via Wifi.................................................................................20
Figure 21 - Procédure de vérification de la tension délivrée par la broche MOSI ...........................................20
Figure 22 - Schéma de connexion SPI repris de Wikipedia ..............................................................................21
Figure 23 – Diagramme séquentiel du bus SPI .................................................................................................22
Figure 24 - Constantes Arduino pour la librairie SPI ........................................................................................22
Figure 25 - Diagramme séquentiel SPI du L6470..............................................................................................23
Figure 26 - Diagramme séquentiel SPI du SC16IS750 ......................................................................................23
Figure 27 - Les phases d'un moteur pas-à-pas bipolaire en mode « full step » ...............................................24
Figure 28 - Moteur pas-à-pas construit selon le style "can stack" ...................................................................24
Figure 29 - Activation du microstepping pour le L6470 ...................................................................................25
Figure 30 - Spécifications du type de moteur ..................................................................................................26
Figure 31 - Caractéristiques du couple délivré et du courant consommé en fonction de la vitesse ...............26
Figure 32 - Déterminer le coefficient BEMF maximum ....................................................................................28
Figure 33 - Outil de configuration automatique de la compensation BEMF....................................................29
Figure 34 - Compensation BEMF résultante.....................................................................................................31
Figure 35 - Signal PWM à destination d'un servo ............................................................................................34
Figure 36 - Schéma de classes du firmware (signatures masquées) ................................................................35
Figure 37 - Convention des géographes ...........................................................................................................37
Figure 38 - Système d'axes du scanner ............................................................................................................37
Figure 39 - Principe de calibrage du miroir (plan XZ du référentiel) ................................................................38
Figure 40 - Calibrage du miroir .........................................................................................................................39
Figure 41 - Calibrage du module (plan XY du référentiel) ................................................................................39
Figure 42 - Calibrage du module ......................................................................................................................40
Figure 43 - Calibrage du miroir .........................................................................................................................40
Imhof Yannick 65
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
66 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Documentation
Arduino. Arduino Yún. 2016. <http://playground.arduino.cc/Hardware/Yun>.
Gabarra, Mark. Is there an easy way to enumerate the bindings listed in configuration? 27 04 2006.
<https://blogs.msdn.microsoft.com/markgabarra/2006/04/27/is-there-an-easy-way-to-enumerate-
the-bindings-listed-in-configuration/>.
Manea, Sorin. «Stepper Motor Control with dsPIC DSCs.» 2009. Microchip.
<http://ww1.microchip.com/downloads/en/AppNotes/01307A.pdf>.
Imhof Yannick 67
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
—. How to: Use a Custom User Name and Password Validator. 2016. <https://msdn.microsoft.com/en-
us/library/aa702565(v=vs.110).aspx>.
Poli, Enrico. «Voltage mode control operation and parameter optimization.» 03 2015. STMicroelectronics.
<http://www.st.com/content/ccc/resource/technical/document/application_note/ad/fc/fb/f0/f7/c
7/4c/48/DM00061093.pdf/files/DM00061093.pdf/jcr:content/translations/en.DM00061093.pdf>.
Porcupine Electronics LLC. «LR4 Data Sheet.» 05 02 2013. LR4 - USB Laser Rangefinder.
<http://static1.squarespace.com/static/53a4c712e4b095f006b5b72c/t/53af20a1e4b02786d79e1b
4c/1403986081191/LR4+Data+Sheet.pdf>.
Precision Microdrive. «Reading the motor constants from typical performance characteristics.» 02 02 2014.
Precision Microdrive. <https://www.precisionmicrodrives.com/tech-blog/2014/02/02/reading-
motor-constants-typical-performance-characteristics>.
Saha, Prodip K. Custom Error Behavior by implementing IErrorHandler at WCF Service. 10 02 2013.
<http://www.aspnet4you.com/wcf/index.php/2013/02/10/76/>.
68 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Singh, Rahul Rajat. A Beginner's Tutorial on Creating WCF REST Services. 03 04 2013.
<http://www.codeproject.com/Articles/571813/A-Beginners-Tutorial-on-Creating-WCF-REST-
Services>.
ST Microelectronics. «Evaluation software with graphical user interface for STSPIN motor driver ICs.» 2016.
ST Microelectronics. <http://www.st.com/content/st_com/en/products/development-
tools/software-development-tools/motor-control-software-development-tools/stsw-
spin002.html>.
Imhof Yannick 69
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Annexes
Paramétrage détaillé du routeur
Type de routeur : Netgear N600 gigabit dual band
Adresse IP : 192.168.24.42
Login administrateur : admin
Mot de passe : yunscan3d
Paramétrage Wifi :
70 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Paramétrage DHCP :
Imhof Yannick 71
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Utilisateur : root
Mot de passe : yunscan3d
Console du microcontrôleur :
telnet localhost 6571
Reset du microcontrôleur
reset-mcu
Reboot Linux
/sbin/reboot
72 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
Utilisateur : root
Mot de passe : yunscan3d
Imhof Yannick 73
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
Les mesures sont reconnaissables à leur séquence de 7 codes ASCII terminée par un retour de chariot (cariage
return #13 – line feed #10, ou « 0xD-0xA »). A noter le fait qu’une bonne partie de ces mesures sont des
caractères « 0 » (ASCII 0x30)
Le problème principal est constitué par les séquences ininterrompues de « 0 », lesquelles la plupart du temps,
saturent le buffer du FIFO UART.
- < Start > - 30-30-30-30-30-D-A
Range finder (CS:8) is online RHR FIFO empty.
Triggered! (3) - Count:4
Manufacturer: Porcupine Electronics 30-30-34-37-35-D-A
Product: LR4 + Fluke 414D 30-30-34-37-35-D-A
Hardware Version: Rev 5 30-30-34-37-35-D-A
Firmware Version: 2.0.3 30-30-34-37-35-D-A
Serial Number: 002051 30-30-34-37-35-D-A
30-30-34-37-35-D-A
2051 30-30-34-37-35-D-A
Enabling laser 30-30-34-37-35-D-A
- < End > - 30-30-34-37-35-D-A
Triggered! (2) - Count:0 30-30-34-37-35-D-A
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-RHR FIFO empty. 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
Triggered! (2) - Count:1 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-D-A 30-30-30-30-30-30-30-30-30-30-30-RHR FIFO
RHR FIFO empty. empty.
Triggered! (3) - Count:2 Triggered! (2) - Count:5
30-30-34-37-35-D-A 30-30-30-30-30-D-A
30-30-34-37-35-D-A RHR FIFO empty.
30-30-34-37-35-D-A Triggered! (3) - Count:6
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-34-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
30-30-30-30-30-30-30-30-30-30-30-30-RHR FIFO 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
empty. 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
Triggered! (2) - Count:3 30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-
74 Imhof Yannick
Scanner 3D embarqué
Formation en emploi
Travail de Bachelor
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-RHR FIFO empty. RHR FIFO empty.
Triggered! (2) - Count:7 Triggered! (2) - Count:11
30-30-30-30-30-D-A 30-30-34-37-35-D-A
RHR FIFO empty. RHR FIFO empty.
Triggered! (3) - Count:8 Triggered! (2) - Count:12
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A RHR FIFO empty.
30-30-34-37-35-D-A Triggered! (2) - Count:13
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A RHR FIFO empty.
30-30-34-37-35-D-A Triggered! (2) - Count:14
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-34-37-35-D-A RHR FIFO empty.
30-30-34-37-35-D-A Triggered! (2) - Count:15
30-30-34-37-35-D-A 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- RHR FIFO empty.
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- Triggered! (2) - Count:16
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- RHR FIFO empty.
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- Triggered! (2) - Count:17
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- RHR FIFO empty.
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- Triggered! (2) - Count:18
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- RHR FIFO empty.
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- Triggered! (2) - Count:19
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- RHR FIFO empty.
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- Triggered! (2) - Count:20
30-30-30-30-30-30-30-30-30-30-30-30-30-30-30- 30-30-34-37-35-D-A
30-RHR FIFO empty. RHR FIFO empty.
Triggered! (2) - Count:9 Disabling laser
30-30-30-30-30-D-A
RHR FIFO empty.
Triggered! (2) - Count:10
Imhof Yannick 75
Scanner 3D embarqué
Travail de Bachelor Formation en emploi
76 Imhof Yannick
4 3 2 1
F F
1
1
15° A
E E
49 H7
56.75
61
Ra 0.8
A
1.50
D D
COUPE A-A
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 01
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 31.05.2016
Flasque suiveuse
APPR.
FAB.
4 3 2 1
4 3 2 1
F F
15°
1
A
E E
A
21 H7
29.75
34
Ra 0.8
D D
1.50
COUPE A-A
C C
0.2 0.3
Ra 3.2
1:1
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 02
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 31.05.2016
Flasque moteur
APPR.
FAB.
4 3 2 1
8 7 6 5 4 3 2 1
F F
56
28
22.50 22.50
10 10
B
6.40
E E
4x
0.50
R0
.30
C
22.50
.30
R0
47 H7
60
45°
45°
D D
22.50
Ra 0.8
30
DÉTAIL C
ECHELLE 2 : 1
B
2x M6 COUPE B-B
C C
13 13
0.2 0.3
Ra 3.2
( )
14
1:2
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 02
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 31.05.2016
Palier
APPR.
FAB.
A MATERIAU:
AIMgSi1 No. DE PLAN
A
YIM006-00
QUAL.
Dim: 60 x 30
A3
Nb: 1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
100
F 4 F
28 37 2x 15 x 45
22.50 22.50
A 2x 0.5 x 45
8 ±0.05
Ra 0.8
E 8.50 9 E
22.50
3.
4 H12
20.50
40
43
8.50
9
16
18 ±0.05
60
8.50
D D
22.50
60
3.
2
6.
40
30
4 H1
8.50
4x
18 ±0.05
C A C
COUPE A-A
0.2 0.3
Ra 3.2
( )
B Tolérances générales ISO 2768-m B
1:2
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 02
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 16.09.2016
Longeron
APPR.
FAB.
A MATERIAU:
EN AW-6060 No. DE PLAN
A
YIM007-00
QUAL.
Dim: 4 x 60
A3
Nb: 1
8 7 6 5 4 3 2 1
4 3 2 1
F 8.50 9 F
A
B
4 H12
8.50
19
18 ±0.05
E E
8.50
4 H12
A 8.50
4x 1 x 45 COUPE A-A
18 ±0.05
D 25 6 D
M3 3.40
C C
COUPE B-B
0.2 0.3
Ra 3.2
( )
B 1:1 B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 01
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 16.09.2016
Support
APPR.
FAB.
4 3 2 1
4 3 2 1
F F
15
4.50 4.50
A 4x M3
E E
Ra 0.8
5 H7
14
A COUPE A-A
0.5 x 45 0.5 x 45
D D
C C
0.2 0.3
Ra 3.2
1:1
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 01
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 31.05.2016
Coupleur
APPR.
FAB.
4 3 2 1
8 7 6 5 4 3 2 1
F 100 F
28 54
23.50 23.50
22.50 22.50
2x 15 x 45 4
E 3 E
2xM
43
22.50
21
3
4x M
24
9
60
D D
9
22.50
21
0
6.6
30
4x
C C
0.2 0.3
Ra 3.2
( )
B 1:2 Tolérances générales ISO 2768-m B
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 15.05.2016
Longeron
APPR.
FAB.
A MATERIAU:
EN AW-6060 No. DE PLAN
A
YIM011-00
QUAL.
Dim: 4 x 60
A3
Nb: 1
8 7 6 5 4 3 2 1
4 3 2 1
F F
15
Ra 1.6
3
E E
12
3.40
3
3
D D
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: N8
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
Butée miroir
AUTEUR Imhof Y. 14.05.2016
VERIF.
APPR.
FAB.
4 3 2 1
4 3 2 1
F F
15
E 12 E
3
M3
12
3.40
6
3
D 3 D
Ra 1.6
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 14.05.2016
Mord miroir
APPR.
FAB.
4 3 2 1
4 3 2 1
F F
65
E E
0.50 x 45 0.50 x 45
5 h6
M3
4.50
9.50
D D
C C
0.2 0.3
Ra 3.2
( )
B 1:1 B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 20.05.2016
Tige
APPR.
FAB.
4 3 2 1
8 7 6 5 4 3 2 1
F F
6.50 16 3.50
1.50 1.50
Angle vif Angle vif
Ra 0.8 Denture T5
z = 18
E 21 p6 E
21 p6
27.80
Ra 0.8
5 H7
14
14
1.50
D D
Ra 0.8
2 x M3
15° 15°
3.50
C 1 x 45 1 x 45 C
0.2 0.3
1:1 Ra 3.2
( )
B Tolérances générales ISO 2768-m B
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 01
R1
R1
AUTEUR
VERIF.
Imhof Y. 20.05.2016
Poulie motrice
APPR.
FAB.
A MATERIAU:
EN AW - 6082 No. DE PLAN
A
YIM102-01
QUAL.
Dim: T5 z=18 Ø27.80
A3
Nb: 1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
F F
3 26
9 14.50
-0.10
8 -0.20
E 0.5 x 45 0.5 x 45 E
0.5 x 45 0.5 x 45
4 h6
0.5 x 45
A
0
.2
2
R0
M6
14
8
20
R0.
3.70 -0.10
0
D D
7 0.50
11 13
Angles vifs
+0.10
12.40 0
DÉTAIL A
C ECHELLE 5 : 1 C
0.2 0.3
Ra 3.2
( )
B 1:1
Tolérances générales ISO 2768-m B
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 01
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 20.05.2016
Axe tendeur
APPR.
FAB.
A MATERIAU:
9SMnPb28 No. DE PLAN
A
YIM104-01
QUAL.
Dim: Ø14
A3
Nb: 1
8 7 6 5 4 3 2 1
4 3 2 1
F F
49
E 6 6 E
3
Ra 0.8
5 h6
0.50 x 45 0.50 x 45
D D
C C
0.2 0.3
Ra 3.2
1:1
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 14.05.2016
Axe moteur
APPR.
FAB.
4 3 2 1
4 3 2 1
F F
0
10 -0.10
0.5 x 45 0.5 x 45 A
E E
+0.30
30 +0.10
34
D D
A
COUPE A-A
C C
0.2 0.3
Ra 3.2
( )
B 1:1 B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 14.05.2016
Entretoise ext.
APPR.
FAB.
4 3 2 1
4 3 2 1
0
10 -0.10
F
0.5 x 45 0.5 x 45 A F
E E
-0.10
47 -0.30
42
D D
A
COUPE A-A
C C
0.2 0.3
Ra 3.2
( )
B 1:1 B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 14.05.2016
Entretoise int.
APPR.
FAB.
4 3 2 1
8 7 6 5 4 3 2 1
F F
21
19 ±0.05
1.50 1.50
15
° 15°
A
1.50
1.50
Denture T5
Ra 0.8 z=36
E E
3.40
19 ±0.05
6.50
°
B
4x 30
38
4x
4x
49 p6
30 H7
56.45
D D
0.02 B
5 H7
0.50 x 45
2x
19 ±0.05
Ra 0.8 0.50 x 45
3x
Ra 0.8
C C
AUTEUR
VERIF.
Imhof Y. 20.05.2016
Poulie suiveuse
APPR.
FAB.
A MATERIAU:
EB AW - 6082 No. DE PLAN
A
YIM201-01
QUAL.
1:1 Dim: T5 z=36 Ø56.45
A3
Nb: 1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
F F
63
32 8 17.50 A
0.50 x 45 0.50 x 45 0.50 x 45
C B 0.50 x 45
E E
4x 3
0°
28.60 -0.10
0.05 D
30 H7
30 H7
0
34
25
48
D D
Ra 0.8 Ra 0.8
Ra 1.6
8x M3
+0.20
1.60 0
+0.10 38
C 29.50 0 Ra 1.6 C
COUPE A-A
0.2 0.3
Ra 3.2
2.50 0.20 1:2 ( )
B 15°
R0.16 Tolérances générales ISO 2768-m B
15°
DÉTAIL C
AUTEUR Imhof Y. 28.08.2016
VERIF.
DÉTAIL B ECHELLE 4 : 1
APPR.
FAB.
A ECHELLE 4 : 1 MATERIAU:
EN AW - 6082 No. DE PLAN
A
YIM203-00
QUAL.
Dim: Ø 50
A3
Nb: 1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
19 ±0.05 19 ±0.05
21
F 10 A F
0.50 x 45 0.50 x 45
E E
0.50 x 45
30
20
50
6.50
5 H7
12.50
19 ±0.05
Ra 1.6
3x
D Ra 1.6 D
3
COUPE A-A
A
Ra 1.6
2x M3 3x M3
Ra 1.6
12
C 25.40 C
0.2 0.3
Ra 3.2
( )
B 1:1 Tolérances générales ISO 2768-m B
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 01
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
3
AUTEUR
VERIF.
Imhof Y. 28.08.2016
Support mirroir
APPR.
9 FAB.
A MATERIAU:
EN AW - 6082 No. DE PLAN
A
YIM315-01
QUAL.
A3
5 Dim: Ø 50
Nb: 1
8 7 6 5 4 3 2 1
4 3 2 1
F F
E E
D D
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 16.09.2016
Support
APPR.
FAB.
électronique
A MATERIAU: No. DE PLAN
A
YIM316-00
QUAL.
n/a A4
4 3 2 1
4 3 2 1
F F
E E
D D
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 16.09.2016
Interface trépied
APPR.
FAB.
4 3 2 1
8 7 6 5 4 3 2 1
27
21
F 14 1.50 F
12 0.50 x 45
1.50 15°
15
°
COUPE A-A A
1.50
1.50
Ra 0.8 Denture T5
z = 36
E E
2x M6
D B
13
E
C
49 p6
0.05 D
0.1 D
40 H7
17 H7
56.45
34
14
38
D D
Ra 0.8
2x
13
Ra 0.8
R0.3
0
C C
Ra 0.8
.3
R0
Poulie suiveuse
15
1.40
0.20
VERIF.
15° 15°
APPR.
FAB.
trépied
A DÉTAIL C MATERIAU:
EB AW - 6082 No. DE PLAN
A
YIM019-01
QUAL.
0.10 A3
DÉTAIL B 2 0.10 Dim: T5 z=36 Ø56.45
ECHELLE 5 : 1 Nb: 1
1.50
ECHELLE 5 : 1 MASSE: ECHELLE:2:1 FEUILLE 1 SUR 1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
F F
37.50 26.50
0
A
3.60
24.50 -0.10
12
6x
E
+0.20
8 0
R1 0.05 E
E 6
Ra 0.8
E
D
B C
30°
Ra 0.8
0.05 D
17 j6
6 x 60°
9 j6
60
42
34
12
26
52
M4
D D
6.60
11
Ra 0.8
2x
2x
Ra 0.8
°
135
0.50 x 45
C 1 x 45 0.50 x 45 C
3
COUPE A-A A
7
11
25
0.2 0.3
Ra 3.2
0.10 2 1.50 ( )
B 15° 0.10 1:2 Tolérances générales ISO 2768-m B
15°
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
SIGNATURE DATE TITRE:
15°
NOM
Axe trépied
15°
0.20
0.90
0.20
1.40
VERIF.
R0
APPR.
DÉTAIL C
FAB.
A DÉTAIL B MATERIAU:
EN AW - 6082 No. DE PLAN
A
YIM020-00
QUAL.
Dim: Ø 60
A3
ECHELLE 5 : 1 ECHELLE 5 : 1 Nb: 1
MASSE: ECHELLE:2:1 FEUILLE 1 SUR 1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
F F
150
30 94
16.50 47 26 ±0.05
10.51 13 ±0.05
5
E
7.50 A 11.5011.50
2x 0.50 x 45 E
30°
30°
2 M3
2
14
8 ±0.05
x
7 Ra 0.8
x
M
2x
4
M3
13 ±0.05
11.5011.50
30°
15
26 ±0.05
60
R1 2x
41.25
3 5 H7
D D
30
M3
6.04
30°
6xM 30°
R21
3
6
30° A
6 x 60°
14 COUPE A-A
C C
0.2 0.3
Ra 3.2
1:2 ( )
B Tolérances générales ISO 2768-m B
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 15.07.2016
Chassis trépied
APPR.
FAB.
A MATERIAU:
EN AW-6060 No. DE PLAN
A
YIM021-00
QUAL.
Dim: 60 x 5
A3
Nb: 1
8 7 6 5 4 3 2 1
8 7 6 5 4 3 2 1
F F
13 16
1.50 1.50
8 15° 15°
A
COUPE A-A 2 x M3
1.50
Denture T5
E Ra 0.8 z = 18 E
Ra 0.8
B
0.50 x 45
21 p6
0.1 C
27.80
10 k6
Ra 0.8
5 H7
15
10
2x
D 0.05 C D
C
Angle vif
10
Angle vif A
1.10
0.20
R0
.40
15°
C C
8°
2 0.10
DÉTAIL B
ECHELLE 5 : 1 0.2 0.3
Ra 3.2
1:1 ( )
B Tolérances générales ISO 2768-m B
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
10.50 AUTEUR
VERIF.
Imhof Y. 15.07.2016
Poulie motrice
APPR.
FAB.
trépied
A MATERIAU:
EN AW - 6082 No. DE PLAN
A
YIM022-01
QUAL.
Dim: T5 z=18 Ø27.80
A3
Nb: 1
8 7 6 5 4 3 2 1
4 3 2 1
26 ±0.05
13 ±0.05
F A 11.50 11.50
F
COUPE A-A
B
13 ±0.05
11.50
5 H7
E E
26 ±0.05
26 H7
2x
11.50
D 4x 1 x 45 A D
35
COUPE B-B
8
C C
2x 4.50
0.2 0.3
1:1 Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 16.07.2016
Support
APPR.
FAB.
4 3 2 1
8 7 6 5 4 3 2 1
F F
3 29.50
9
0.50 x 45 0.50 x 45
13
0.50 x 45 0.50 x 45
0.50 x 45
E E
4 h6
Ra 0.8
-0.10
8 -0.20
M6
14
B
2
.20
R0
A
3.70 -0.10
7
0
D 11 D
+0.10
12.40 0
14.50
C C
0.50
R0
.3
0
Angle vifs
0.2 0.3
0.20
Ra 3.2
( )
°
0.90
15
TOLERANCES:
LINEAIRES: ± 0.1
ANGULAIRES: ± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 15.07.2016
Axe tendeur
APPR.
FAB.
trépied
A MATERIAU:
9SMnPb28 No. DE PLAN
A
YIM024-01
QUAL.
Dim: Ø14
A3
Nb: 1
8 7 6 5 4 3 2 1
4 3 2 1
F F
E E
D D
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 16.09.2016
Support servo
APPR.
FAB.
4 3 2 1
4 3 2 1
F F
E E
D D
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
NOM SIGNATURE DATE TITRE:
AUTEUR
VERIF.
Imhof Y. 16.09.2016
Gabarit
APPR.
FAB.
4 3 2 1
4 3 2 1
F F
E E
D D
C C
0.2 0.3
Ra 3.2
( )
B B
Tolérances générales ISO 2768-m
SAUF INDICATION CONTRAIRE: FINITION: CASSER LES
LES COTES SONT EN MILLIMETRES ANGLES VIFS
NE PAS CHANGER L'ECHELLE REVISION 00
ETAT DE SURFACE: Ra 3.2
TOLERANCES:
LINEAIRES:
ANGULAIRES:
± 0.1
± 30'
HEIG-VD - Scanner 3D
Support
NOM SIGNATURE DATE TITRE:
adaptateurs TTL
VERIF.
APPR.
FAB.
4 3 2 1