diff --git a/Calibration/mainwindow.cpp b/Calibration/mainwindow.cpp
index 7fa941748ad44d6a88fe02e190afc58655ba4f2a..682e215dc58870175596822ac1ab30bf2b1ab3a7 100644
--- a/Calibration/mainwindow.cpp
+++ b/Calibration/mainwindow.cpp
@@ -180,7 +180,9 @@ void MainWindow::configure() {
             // Find the position of the beamer with the intersections
             intersectionFound = sandbox.findIntersections();
 
-            if (!intersectionFound)
+            if (intersectionFound)
+                sandbox.findBeamerPosition();
+            else
                 pteConsole_cursor.insertText("Position not found. \n \n");
 
         } while(!intersectionFound);
diff --git a/Demo/Demo.pro.user b/Demo/Demo.pro.user
index 69fe5875eb619318e0b3803d26c3ca8923f29981..ec16310269afc3dd02da983987df013360c6adee 100644
--- a/Demo/Demo.pro.user
+++ b/Demo/Demo.pro.user
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.5.2, 2020-07-03T15:47:20. -->
+<!-- Written by QtCreator 4.5.2, 2020-07-08T17:27:23. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
diff --git a/Demo/mainwindow.cpp b/Demo/mainwindow.cpp
index 9a9c829fd44dd9cb097f109bc154e860fb3b267a..e5786cd65d6149dcbc9ea7ce9edde75d7b890429 100644
--- a/Demo/mainwindow.cpp
+++ b/Demo/mainwindow.cpp
@@ -38,7 +38,6 @@ void MainWindow::startApplication()
             do
             {
                 Mat frame = levelColoredFrame(&useSandbox);
-                frame = useSandbox.resizeFrameForBeamer(frame);
 
                 ui->lblImage->setPixmap(QPixmap::fromImage(QImage(frame.data, frame.cols, frame.rows, frame.step, QImage::Format_RGB888)));
                 waitKey(10);
diff --git a/README.md b/README.md
index 3ca655bede2b4df919da13e6b3718383db2b0800..4f5b99d8f21af3b44fa44510024a15d15df5b98f 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,160 @@
-# SandboxRefactorConfig
+## Pré-requis
 
+- Ubuntu 18
+- librealsense2:amd64/bionic 2.34.0-0~realsense0.2251
+  - librealsense2-dkms:all 1.3.13-0ubuntu1
+  - librealsense2-utils:amd64/bionic 2.34.0-0~realsense0.2251
+  - librealsense2-dev:amd64/bionic 2.34.0-0~realsense0.2251
+  - librealsense2-dbg:amd64/bionic 2.34.0-0~realsense0.2251
+- opencv
+  - libopencv-dev:amd64/bionic-security 3.2.0+dfsg-4ubuntu0.1
+  - libopencv-dev:amd64/bionic-security 3.2.0+dfsg-4ubuntu0.1
+- qtcreator
+  - qtcreator:amd64/bionic 4.5.2-3ubuntu2
+  - build-essential:amd64/bionic 12.4ubuntu1
+
+Les installations d'OpenCV et de Qtcreator ont été faites avec la commande apt-get install. L'installation de QtCreator avec les installeurs fournis sur le site internet utilisent d'autres path ce qui peut poser des problèmes. L'installation d'OpenCV via Github fournit une intallation différente que celle d'apt-get.
+```
+sudo apt-get install libopencv-dev python-opencv
+sudo apt-get install qtcreator build-essential
+```
+
+## Utilisation
+### Configuration Beamer
+Lancer le script beamer_config afin de calibrer l'affichage du beamer par rapport au pc. Le beamer doit être en mode clone.
+```
+sh beamer_config.sh
+```
+
+### Calibration
+1. Démarrer l'application de calibration
+2. Suivre la procédure indiquée
+   1. Génération de la matrice de rotation
+      1. Placer la planche sur le bac à sable.
+      2. Adapter la bordure à la projection en déplaçant les coins à l'aide de la souris
+      3. générer la matrice (Calcul aussi la distance camére-sandbox)
+   2. Détection de la position du beamer
+      1. Enlever la planche
+      2. Placer le disque sur la croix au sein du bac pour que les lignes soient vertes
+      3. Capturer le point
+      4. Répéter les étapes 2.2.2 et 2.2.3 2 autres fois à différentes hauteurs
+      5. Répéter les étapes 2.2.2, 2.2.3 et 2.2.4 deux autres fois dans d'autres positions
+   3. Sauvegarder le fichier
+   Le fichier de sauvegarde nommé "device" dans le dossier de build de l'application de configuration.
+
+### Démo
+1. Copier le fichier "device" dans le dossier de build de l'application de démo.
+2. Démarrer l'application de démo
+3. Appuyer sur le bouton start pour démarrer
+   1. Si un problème survient comme l'absence de fichier de configuration la démo ne se lance pas.
+4. Appuyer sur une touche pour arrête la démo.
+
+## Développement
+L'API contient des états ce qui implique une procédure stricte à suivre pour faire la calibration.
+
+### Calibration
+La classe de l'API ```Sandbox``` permet de gérer l'ensemble de l'API.
+
+#### Gestion de la caméra
+Le SDK de Intel RealSense permet de détecter tous les péripériques compatibles. Cette commande permet de récupérer la liste qui a été chargée.
+```C++
+device_list Sandbox::getListRealSenseDevices()
+```
+
+Si un périhpérique est branché par après, il est nécessaire de recharger la liste avec cette commande.
+```C++
+void Sandbox::loadListRealSenseDevices()
+```
+
+L'API stocke le premier périphérique comme celui actif. Un getter/setter a été mis en place pour le modifier.
+```C++
+void Sandbox::setRealSenseDevices(device device)
+device Sandbox::getRealSenseDevice()
+```
+
+Pour utiliser la caméra, il faut la démarrer en début de processus et la femer à la fin.
+```C++
+void Sandbox::startCamera()
+void Sandbox::stopCamera()
+```
+
+#### Génération de matrice de rotation
+La première étape de calibration est la génération de matrice de rotation. Au sein de cette étape la distance entre le plan et la caméra de profondeur. Pour ce faire, une bordure est générée que l'utilisateur peut ensuite déplacer les sommets de la bordure.
+
+Cette commande génère la bordure et retourne la frame avec la bordure dessinée.
+```C++
+Mat Sandbox::generateBorder()
+```
+
+Cette commande permet de trouver un sommet de la bordure s'il et suffisamment proche et retourne l'index.
+```C++
+int Sandbox::findEdgeBorder(int x, int y)
+```
+
+Cette commande permet de définir une nouelle position pour la bordure et de retourner la frame modifiée.
+```C++
+Mat SandboxeditEdgeBorder(int selectedPoint, int x, int y)
+```
+
+Une fois la bordure placée, cette méthode génère la matrice de rotation.
+```C++
+void Sandbox::applyBorder()
+```
+
+#### Détection de la position du beamer
+- A effectuer après la génération de matrice
+- 3 points régressions linéaires à effectuer
+  - Capturer 3 points pour faire une régresion linéaire
+
+Cette commande détecte les cercles dans une frame et si l'un d'entre eux contient la position du pixel à chercher en fonction du numéro de la régression linéaire. Cette méthode la frame modifiée, ainsi que l'index du cercle contenant le pixel et la liste des cercles.
+```C++
+tuple<Mat, int, vector<Vec3f>> Sandbox::detectPointToDetectBeamer(int indexPoint)
+```
+
+Si un cercle a été trouvé, la commande pour capturer un point peu être lancer en passant le cercle contenant le pixel.
+```C++
+void Sandbox::capturePoint(Vec3f crc)
+```
+
+Cette procédure est à exécuter 3 fois avant de calculer la régression linéaire.
+```C++
+void Sandbox::makeRegression(
+```
+
+Après avoir exécuté la régression, incrémenter le numéro de régression linéaire et recommencer le processus jusqu'à avoir calculé 3 régressions linéaires.
+
+Une fois les 3 régressions effectuées. Cette commande permet de vérifier que ces régressions sont assez précises pour calculer la position du beamer.
+```C++
+bool Sandbox::findIntersections()
+```
+
+Cette commande permet de calculer la position du beamer.
+```C++
+void Sandbox::findBeamerPosition()
+```
+
+#### Sauvegarde
+L'API contient toute la configuration dans ses états qui peuvent être stockés dans un fichier avec cette commande.
+```C++
+bool Sandbox::serialize(ostream& stream)
+```
+
+Cette configuration peut être ensuite chargée avec cette commmande.
+```C++
+bool Sandbox::deserialize(istream& stream)
+```
+
+La classe contient d'autres méthodes qui servent à réinitialiser certains états ou redessiner une frame.
+```C++
+void Sandbox::clearCapturedPoint() 
+void Sandbox::clearBorder()
+Mat Sandbox::redrawFrameWithBorder()
+```
+
+### Application d'utilisation
+La classe de l'API ```UseSandbox``` permet de gérer uniquement ce qui est nécessaire à l'utilisation. Elle contient des méthodes spécifiques pour le chargement de configuration, pour l'utilisation cette classe fait appel à ```Sandbox```.
+
+Cette commande charge le fichier de configuration "device" dans le dossier courant et, si le chargement fonctionne, démarre la caméra.
+```C++
+void UseSandbox::loadConfiguration(string filename)
+```
\ No newline at end of file
diff --git a/build-Calibration-Desktop-Debug/Calibration b/build-Calibration-Desktop-Debug/Calibration
index b4bbb68db02bf9a01957c9639a03dd718673b35f..fbf0f48fe3663c4062921ba6f99524e3920f5f62 100755
Binary files a/build-Calibration-Desktop-Debug/Calibration and b/build-Calibration-Desktop-Debug/Calibration differ
diff --git a/build-Calibration-Desktop-Debug/device b/build-Calibration-Desktop-Debug/device
index c515b5885e929bc4996508c30753036ff8358a08..8854f918de188f3d2b6a9a00f888ebe69979c037 100644
--- a/build-Calibration-Desktop-Debug/device
+++ b/build-Calibration-Desktop-Debug/device
@@ -1 +1 @@
-840412061564	2705.8	0	0.265	-0.205	478	253	575	436	3	2	6	51725	3886	32	20586	51726	0	
\ No newline at end of file
+840412061564	2724.24	0.0382088	0.0627249	-0.223183	313	286	554	421	3	2	6	61810	55941	80	15887	62001	0	
\ No newline at end of file
diff --git a/build-Calibration-Desktop-Debug/mainwindow.o b/build-Calibration-Desktop-Debug/mainwindow.o
index 36997d88fd964a991dcc69be42387da7d05fb762..e6c108b29da6c3180de06b9b91e82d6984439a23 100644
Binary files a/build-Calibration-Desktop-Debug/mainwindow.o and b/build-Calibration-Desktop-Debug/mainwindow.o differ
diff --git a/build-Demo-Desktop-Debug/Demo b/build-Demo-Desktop-Debug/Demo
index 4360cceb13ca1f3d2bcd5053cd814a6ec4a3be56..74846af6c77718315609ffbd965ec35f954e2a91 100755
Binary files a/build-Demo-Desktop-Debug/Demo and b/build-Demo-Desktop-Debug/Demo differ
diff --git a/build-Demo-Desktop-Debug/device b/build-Demo-Desktop-Debug/device
index c515b5885e929bc4996508c30753036ff8358a08..c8e1c8bb8fcfcce7c1cfd888f8de19a2f2388882 100644
--- a/build-Demo-Desktop-Debug/device
+++ b/build-Demo-Desktop-Debug/device
@@ -1 +1 @@
-840412061564	2705.8	0	0.265	-0.205	478	253	575	436	3	2	6	51725	3886	32	20586	51726	0	
\ No newline at end of file
+840412061564	2592.99	0	0.265	-0.205	294	142	582	442	3	2	6	53398	14504	80	23718	19525	0	
\ No newline at end of file
diff --git a/build-sandbox-Desktop-Debug/libsandbox.a b/build-sandbox-Desktop-Debug/libsandbox.a
index c2f9c5805d7b8dc2c8ead8f02789bdcbfa997a83..990b985025abacb2e8b144cdbd8fee42ae5d03a1 100644
Binary files a/build-sandbox-Desktop-Debug/libsandbox.a and b/build-sandbox-Desktop-Debug/libsandbox.a differ
diff --git a/build-sandbox-Desktop-Debug/transformframe.o b/build-sandbox-Desktop-Debug/transformframe.o
index 2103caab4894d76ce5d76645e4a6b720d1fd9556..cc8f500a2f9fb675cdf63b2a652467657cc622be 100644
Binary files a/build-sandbox-Desktop-Debug/transformframe.o and b/build-sandbox-Desktop-Debug/transformframe.o differ
diff --git a/device b/device
new file mode 100644
index 0000000000000000000000000000000000000000..8854f918de188f3d2b6a9a00f888ebe69979c037
--- /dev/null
+++ b/device
@@ -0,0 +1 @@
+840412061564	2724.24	0.0382088	0.0627249	-0.223183	313	286	554	421	3	2	6	61810	55941	80	15887	62001	0	
\ No newline at end of file
diff --git a/notesperso b/notesperso
deleted file mode 100644
index 0661c9582049df92fc45fe5f36bee004656d4ebc..0000000000000000000000000000000000000000
--- a/notesperso
+++ /dev/null
@@ -1,2 +0,0 @@
-for serialization:
-    sudo apt-get install libboost-all-dev
\ No newline at end of file
diff --git a/sandbox/transformframe.cpp b/sandbox/transformframe.cpp
index 72d863724007a4d12446cbd24a696c3ea2a6896a..cb31dc5c2e0b319db2b237e7d18330f63eea7ecf 100644
--- a/sandbox/transformframe.cpp
+++ b/sandbox/transformframe.cpp
@@ -104,14 +104,6 @@ void TransformFrame::transformationFrame(Mat &depth, Mat &src, Mat &dst, Camera
         }
     }
     cout << "temps de calcul: " << (getTickCount() - t1) / getTickFrequency() << endl;
-    for (int i = 0; i < matRotation.rows; i++)
-    {
-        for (int j = 0; j < matRotation.cols; j++)
-        {
-            Point pixelIJ(j, i);
-            cout << matRotation.at<uint16_t>(pixelIJ) << endl;
-        }
-    }
     warpAffine(dst, dst, matRotation, dst.size(), INTER_LINEAR);
     dilate(dst, dst, Mat(), Point(-1, -1), 2, 1, 1);
     erode(dst, dst, Mat(), Point(-1, -1), 2, 1, 1);