diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml deleted file mode 100644 index bd74dc04..00000000 --- a/.github/workflows/pages.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Deploy Website -on: - push: - branches: # triggers the workflow on push events to the main branch - - main - workflow_dispatch: # allows you to run the workflow manually -permissions: - contents: read - pages: write - id-token: write -concurrency: - group: "pages" - cancel-in-progress: true - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v2 - with: - fetch-depth: 0 # Fetch all history for all branches and tags. This is required for the git revision date plugin and git authors plugin. - - name: Set up Python - uses: actions/setup-python@v2 - with: - python-version: '3.x' - - name: Install MkDocs and plugins - run: pip install mkdocs mkdocs-mermaid2-plugin mkdocs-git-revision-date-localized-plugin mkdocs-git-authors-plugin - - name: Build with MkDocs - run: mkdocs build - # - name: Check for hard links and symlinks - # run: | - # find site -type l -exec echo "Symlink found: {}" \; -o -type f -links +1 -exec echo "Hard link found: {}" \; - - name: Upload build artifacts - uses: actions/upload-pages-artifact@v3 - with: - name: github-pages - path: site - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 - diff --git a/docs/elec/Hat/Hat.kicad_pcb b/Hardware/Hat/Hat.kicad_pcb similarity index 100% rename from docs/elec/Hat/Hat.kicad_pcb rename to Hardware/Hat/Hat.kicad_pcb diff --git a/docs/elec/Hat/Hat.kicad_prl b/Hardware/Hat/Hat.kicad_prl similarity index 100% rename from docs/elec/Hat/Hat.kicad_prl rename to Hardware/Hat/Hat.kicad_prl diff --git a/docs/elec/Hat/Hat.kicad_pro b/Hardware/Hat/Hat.kicad_pro similarity index 100% rename from docs/elec/Hat/Hat.kicad_pro rename to Hardware/Hat/Hat.kicad_pro diff --git a/docs/elec/Hat/Hat.kicad_sch b/Hardware/Hat/Hat.kicad_sch similarity index 100% rename from docs/elec/Hat/Hat.kicad_sch rename to Hardware/Hat/Hat.kicad_sch diff --git a/docs/elec/Hat/Hat.kicad_sch-bak b/Hardware/Hat/Hat.kicad_sch-bak similarity index 100% rename from docs/elec/Hat/Hat.kicad_sch-bak rename to Hardware/Hat/Hat.kicad_sch-bak diff --git a/docs/elec/Hat/PCA9517D_112/PCA9517D_112.kicad_sym b/Hardware/Hat/PCA9517D_112/PCA9517D_112.kicad_sym similarity index 100% rename from docs/elec/Hat/PCA9517D_112/PCA9517D_112.kicad_sym rename to Hardware/Hat/PCA9517D_112/PCA9517D_112.kicad_sym diff --git a/docs/elec/Hat/PCA9517D_112/PCA9517D_112.step b/Hardware/Hat/PCA9517D_112/PCA9517D_112.step similarity index 100% rename from docs/elec/Hat/PCA9517D_112/PCA9517D_112.step rename to Hardware/Hat/PCA9517D_112/PCA9517D_112.step diff --git a/docs/elec/Hat/PCA9517D_112/SOIC127P600X175-8N.kicad_mod b/Hardware/Hat/PCA9517D_112/SOIC127P600X175-8N.kicad_mod similarity index 100% rename from docs/elec/Hat/PCA9517D_112/SOIC127P600X175-8N.kicad_mod rename to Hardware/Hat/PCA9517D_112/SOIC127P600X175-8N.kicad_mod diff --git a/docs/elec/Hat/PCA9517D_112/how-to-import.htm b/Hardware/Hat/PCA9517D_112/how-to-import.htm similarity index 100% rename from docs/elec/Hat/PCA9517D_112/how-to-import.htm rename to Hardware/Hat/PCA9517D_112/how-to-import.htm diff --git a/docs/elec/Hat/fabrication-toolkit-options.json b/Hardware/Hat/fabrication-toolkit-options.json similarity index 100% rename from docs/elec/Hat/fabrication-toolkit-options.json rename to Hardware/Hat/fabrication-toolkit-options.json diff --git a/docs/elec/Hat/fp-info-cache b/Hardware/Hat/fp-info-cache similarity index 100% rename from docs/elec/Hat/fp-info-cache rename to Hardware/Hat/fp-info-cache diff --git a/docs/elec/Hat/sym-lib-table b/Hardware/Hat/sym-lib-table similarity index 100% rename from docs/elec/Hat/sym-lib-table rename to Hardware/Hat/sym-lib-table diff --git a/docs/elec/Hat_CoVASPSy_v1re2_Schema-1.pdf b/Hardware/Hat_CoVASPSy_v1re2_Schema-1.pdf similarity index 100% rename from docs/elec/Hat_CoVASPSy_v1re2_Schema-1.pdf rename to Hardware/Hat_CoVASPSy_v1re2_Schema-1.pdf diff --git a/docs/elec/Interface/Interface.kicad_pcb b/Hardware/Interface/Interface.kicad_pcb similarity index 100% rename from docs/elec/Interface/Interface.kicad_pcb rename to Hardware/Interface/Interface.kicad_pcb diff --git a/docs/elec/Interface/Interface.kicad_prl b/Hardware/Interface/Interface.kicad_prl similarity index 100% rename from docs/elec/Interface/Interface.kicad_prl rename to Hardware/Interface/Interface.kicad_prl diff --git a/docs/elec/Interface/Interface.kicad_pro b/Hardware/Interface/Interface.kicad_pro similarity index 100% rename from docs/elec/Interface/Interface.kicad_pro rename to Hardware/Interface/Interface.kicad_pro diff --git a/docs/elec/Interface/Interface.kicad_sch b/Hardware/Interface/Interface.kicad_sch similarity index 100% rename from docs/elec/Interface/Interface.kicad_sch rename to Hardware/Interface/Interface.kicad_sch diff --git a/docs/elec/Interface/fp-info-cache b/Hardware/Interface/fp-info-cache similarity index 100% rename from docs/elec/Interface/fp-info-cache rename to Hardware/Interface/fp-info-cache diff --git a/docs/elec/Interface_CoVASPSy_v1re2_Schema.pdf b/Hardware/Interface_CoVASPSy_v1re2_Schema.pdf similarity index 100% rename from docs/elec/Interface_CoVASPSy_v1re2_Schema.pdf rename to Hardware/Interface_CoVASPSy_v1re2_Schema.pdf diff --git a/docs/elec/Mezzanine_CoVASPSy_v1re2_Schema.pdf b/Hardware/Mezzanine_CoVASPSy_v1re2_Schema.pdf similarity index 100% rename from docs/elec/Mezzanine_CoVASPSy_v1re2_Schema.pdf rename to Hardware/Mezzanine_CoVASPSy_v1re2_Schema.pdf diff --git a/docs/elec/mezzanine/mezzanine.kicad_pcb b/Hardware/mezzanine/mezzanine.kicad_pcb similarity index 100% rename from docs/elec/mezzanine/mezzanine.kicad_pcb rename to Hardware/mezzanine/mezzanine.kicad_pcb diff --git a/docs/elec/mezzanine/mezzanine.kicad_prl b/Hardware/mezzanine/mezzanine.kicad_prl similarity index 100% rename from docs/elec/mezzanine/mezzanine.kicad_prl rename to Hardware/mezzanine/mezzanine.kicad_prl diff --git a/docs/elec/mezzanine/mezzanine.kicad_pro b/Hardware/mezzanine/mezzanine.kicad_pro similarity index 100% rename from docs/elec/mezzanine/mezzanine.kicad_pro rename to Hardware/mezzanine/mezzanine.kicad_pro diff --git a/docs/elec/mezzanine/mezzanine.kicad_sch b/Hardware/mezzanine/mezzanine.kicad_sch similarity index 100% rename from docs/elec/mezzanine/mezzanine.kicad_sch rename to Hardware/mezzanine/mezzanine.kicad_sch diff --git a/docs/img/Logo/Autotech_original.jpeg b/Logo/Autotech_original.jpeg similarity index 100% rename from docs/img/Logo/Autotech_original.jpeg rename to Logo/Autotech_original.jpeg diff --git "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (carr\303\251)_promo Ecole.svg" "b/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (carr\303\251)_promo Ecole.svg" similarity index 100% rename from "docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (carr\303\251)_promo Ecole.svg" rename to "Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (carr\303\251)_promo Ecole.svg" diff --git "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole.svg" "b/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole.svg" similarity index 100% rename from "docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole.svg" rename to "Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole.svg" diff --git a/docs/Asservissement.md b/docs/Asservissement.md deleted file mode 100644 index f9061f2d..00000000 --- a/docs/Asservissement.md +++ /dev/null @@ -1 +0,0 @@ -Page asservissement \ No newline at end of file diff --git a/docs/Camera.md b/docs/Camera.md deleted file mode 100644 index 03a1518e..00000000 --- a/docs/Camera.md +++ /dev/null @@ -1,4 +0,0 @@ -les mode de camera peuve etre obtenu avec - -picam2 = Picamera2() -picam2.sensor_modes \ No newline at end of file diff --git a/docs/Deroulement_course.md b/docs/Deroulement_course.md deleted file mode 100644 index d13a490c..00000000 --- a/docs/Deroulement_course.md +++ /dev/null @@ -1,98 +0,0 @@ -# Déroulement de la course - -Cette page sert à détailler les différentes étapes auxquelles vous pouvez/devez participer au cours de l'année. - -## Tests sur pistes - -Respectivement un et deux mois avant la course, ainsi que les 2 jours qui la précèdent, l'ENS vous ouvre ses portes pour des essais sur piste. Ils auront installé une piste en utilisant les mêmes composants que le jour de la course sur laquelle vous pouvez essayer de faire tourner votre voiture. - -!!! warning -Ces essais sont très importants ! Faites au maximum pour y aller ! En effet, votre voiture peut très bien tourner sur le simulateur ou sur une piste artisanale si vous en avez une mais se comporter de manière très différente dans les conditions de la course. C'est une occasion de ne pas travailler dans le vide et de vous assurer concrètement de la validité de l'avancement de votre projet. - -### Où aller - -Ces essais ont lieu au même endroit qu'aura lieu la course. Rendez-vous donc à l'ENS (4 Avenue des Sciences, 91190 Gif-sur-Yvette). - -- Passez les 2 portes tournantes, vous arrivez dans la cour interne. -- Suivez l'allée jusqu'au bout. -- Passez la porte et prenez l'escalier à gauche. -- Montez 2 étages. -- Dans le corps principal du batiment (longue allée avec plusieurs étages de plateforme), allez tout au fond à droite. - -### A ne pas oublier - -Pensez à embarquer tout votre matériel. Voiture, batteries, testeur/chargeur de batterie, câbles de remplacement, mini-routeur diffusant du Intech_Second, vos PCs, etc. C'est un peu loin pour faire l'aller-retour si vous avez oublié des choses. - -## Homologation - -Il s'agit de la première partie de la course. Vous devez pouvoir montrer que votre voiture respecte les critères définis par le règlement. - -!!! Note -Vous pouvez faire votre homologation la veille vers la fin de journée si vous êtes encore là pour vos essais sur pistes (ce qui est fortement recommandé !!). Si vous le pouvez, faites le, cela sera un énorme gain de temps (et diminution de stress) pour vous le jour J. - -L'homologation se déroule de la façon suivante : - -- - -## Le contre-la-montre - -Vous voici le jour J, homologué, prêts à en découdre. Félicitations pour cette première étape ! -Vous passez donc maintenant à la première phase des qualifications : le contre-la-montre ! - -### Aparte : pour la com - -Avant de vous parler des courses, petit conseil pour la com : c'est le moment de faire des rushs (je rappelle que vous devez faire un clip à la fin du GATE). Si vous voulez avoir une bonne vue des courses, mettez vous sur les plateformes en hauteur pour filmer (un étage suffit). Et hésitez pas à filmer d'autres moments de la journée, vous savez pas de quoi vous aurez besoin pour le clip (et puis ça fait des moments sympas entre vous 😉). - -### Revenons à nos moutons - -Le principe est simple : vous devez effectuer 2 tours de piste seul et avec obstacles le plus rapidement possible. Vous avez pour cela 2 essais (séparés par un peu de temps pour vous permettre de corriger des choses si le premier se déroule mal). Ne sera retenu évidemment que le meilleur des 2 chronos. Si jamais vous ne parvenez pas à terminer les 2 tours, votre temps sera mis au maximum (le maximum sera normalement défini un peu au-dessus du temps de la voiture ayant fini les 2 tours avec le plus haut temps). - -Un classement sera alors dressé qui pemerttra de définir les poules pour la seconde phase des qualifications. - -C'est maintenant l'heure de la pause du midi, bon appétit ! - -## Courses à plusieurs - -Passons à la deuxième phase des qualifications. Vous allez affronter d'autres voitures sur pistes cette fois (4 à 8 voitures selon le nombre de voitures présentes à la course), et ce, sur 3 tours. - -A chaque course la voiture accumule des points pour le classement général des qualifications : 10 points pour le premier, 6 points pour le 2nd, 4 pour le 3ème, et 2 points pour les voitures ayant terminé la course. Une voiture ne bouclant pas les 3 tours n'obtient aucun point. - -!!! note - -Pour information, pour notre année, le fait de ne pas terminer les 3 tours faisait que l'on avait 0 point, même si on les avait quasiment fait (par exemple, se crasher au dernier virage, on parle d'expérience 😭). M. Taillandier-Loize a indiqué qu'il demanderait à ce que cette règle soit rediscutée pour plutôt offrir des points par tour. On espère que ça sera accepté. - -!!! warning - -Attention, voici des règles importantes : - -- Les équipes ont 3 min pour installer leur véhicule sur la piste. -- L’ensemble des véhicules de la poule est positionné sur la grille de départ selon les résultats des qualifications. -- Une fois que toutes les équipes ont annoncé être prêtes, il est interdit de toucher les véhicules. Le signal de départ est donné oralement par l’arbitre. -- L’ordre d’arrivée est relevé après un nombre de tours définis à l’avance (3 par défaut pour la phase de qualification et 5 pour les phases finales). -- Une voiture ne terminant pas le nombre de tours définis n'est pas classée. -- Un véhicule ayant un comportement notoirement agressif envers les véhicules adverses est disqualifié retiré de la piste, de même qu'une voiture empêchant volontairement une autre de la doubler. -- Un véhicule immobilisé sur la piste plus de 10 secondes en l'absence d'une voiture le bloquant est retiré de la piste. -- Un véhicule ayant parcouru plus de 2 m à contre-sens est retiré de la piste. - -## Finales - -On espère que tout s'est bien passé pour vous jusqu'ici ! C'est le moment, la dernière ligne droite, l'heure de briller ! - -Bon pour cette partie je vais reprendre la docu de la course : - -A l'issue des qualifications, chaque voiture obtient 2 scores : - -- le total coursesQualif (la somme des points obtenus lors des 2 courses de qualification) -- le total CLM+courseQualif(le score précédent plus les points obtenus en qualification contre la montre). - -2 manches sont composées de chacune de 3 courses. - -Les 2 premiers de chaque poule (avec le score courseQualif, le score CLM+courseQualif servant à départager les ex-aequo) font les courses 1 de chaque manche, les 3ème et 4ème font les courses 2 de chaque manche et les autres font la course 3 de chaque manche. Le classement des qualifications (avec le score courseQualif, le score CLM+courseQualif servant à départager les ex-aequo) détermine la grille de départ, la voiture ayant le plus de points s’élançant en tête sur la grille de départ. - -Les arbitres relèvent l’ordre d’arrivée après un nombre de tours définis à l’avance (5 par défaut) et attribuent les points de la manière suivante : 25 pts pour le 1er, 18 pts pour le 2e, 15 pts pour le 3e, 12 pts pour le 4e ; 10 pts pour le 5e, 8 pts pour le 6e ; 6 pts pour le 7e, 4 pts pour le 8e ; 2 pts pour le 9e et 1 pt pour le 10e. Une voiture ne terminant pas le nombre de tours défini obtient 0 point. Une fois les voitures de la première course classées, on continue l'attribution des points aux voitures de la 2nde course. - -Le classement final se fait avec les points des 2 courses finales uniquement. En cas d'égalité, le score CLM+courseQualif est pris en compte pour le classement final. Si il y a de nouveau égalité, le score coursesQualif départage les équipes. - -Les prix récompensent les 1er, 2ème, 3ème du classement général. S'y ajoute un prix de l'innovation et un prix pour les 1ers parmi les licences. - -Et voilà, CoVAPSy, c'est finiii... On espère que vous avez tout cassé (sauf la voiture svp) ! La partie technique du GATE est globalement finie, il vous reste donc les actions de promotions à faire, bon courage 😉 diff --git a/docs/IA.md b/docs/IA.md deleted file mode 100644 index dc07f627..00000000 --- a/docs/IA.md +++ /dev/null @@ -1,5 +0,0 @@ - -Raceline is a Trakmania IA its journey is desribed here: [https://www.youtube.com/watch?v=cUojVsCJ51I](https://www.youtube.com/watch?v=cUojVsCJ51I) -[https://linesight-rl.github.io/linesight/build/html/index.html](https://linesight-rl.github.io/linesight/build/html/index.html) -[https://arxiv.org/abs/1806.06923](https://arxiv.org/abs/1806.06923) - diff --git a/docs/Instruction_manual_UST-10LX_MRS0020D_en_1513910662-1.pdf b/docs/Instruction_manual_UST-10LX_MRS0020D_en_1513910662-1.pdf deleted file mode 100644 index 511f6217..00000000 Binary files a/docs/Instruction_manual_UST-10LX_MRS0020D_en_1513910662-1.pdf and /dev/null differ diff --git a/docs/Lidar.md b/docs/Lidar.md deleted file mode 100644 index 2ee9fbc9..00000000 --- a/docs/Lidar.md +++ /dev/null @@ -1,106 +0,0 @@ -# Lidar - -## UST-10lx basics - -an image showing a UST-10lx with an orange top. We can read Hokuyo Smart Urg underneath - - -Les Lidar utiliser par INTech sont des [UST-10LX](https://www.hokuyo-aut.jp/search/single.php?serial=167) concu et vendu par Hokuyo. Une documentation non officel (mais plutot complete [existe ici])(https://sourceforge.net/p/urgnetwork/wiki/Home/). Le manuel -du l'UST-10lx est [télécharchable ici](./Instruction_manual_UST-10LX_MRS0020D_en_1513910662-1.pdf) - -## UST-10lx connectivity - -Il communique par Ethernet en utilisant le protocole [Secure Communications Interoperability Protocol (SCIP)](https://en.wikipedia.org/wiki/Secure_Communications_Interoperability_Protocol). Ce protocol peut faire peur a premiere vue mais nous n'utilison que les commande decrit [ici](https://sourceforge.net/p/urgnetwork/wiki/scip_en/). Pour communiquer par ethernet, les lidar possede une adresse IP: - -``` -192.168.0.10:10940/24 -``` - -Il faut donc choisir une adresse ip dans le bon sous-resaux. Nous avons arbitrairement choisi: - -``` -192.168.0.20 -``` - -## UST-10lx specs - -an image showing a UST-10lx with an orange top. We can read Hokuyo Smart Urg underneath - - -| Spec | Value | Unit | -|---------------------|----------------------|------| -| Min distance | 20 | mm | -| Max distance | 30000 | mm | -| Accuracy | ±40 | mm | -| Scan angle | 270 | ° | -| Angular resolution | 0.25 | pt/° | -| Angular resolution | 1440 | pt/tr| -| Scan rate | 40 | Hz | -| Poids | 130 | g | -| Voltage | 10-30 | VDC | -| Current @24VDC | 150 (450 at startup) | mA | - - -## Using HokuyoReader class - -This class is from [cassc/tcp_hokuyo.py](https://gist.github.com/cassc/26ac479624cb028b2567491a68c34fb8) -This class is simpler than [hokuyolx](#using-hokuyolx-class) - -Create the class instance with -``` python -sensor = HokuyoReader(IP, PORT) -``` - -use `HokuyoReader.stop()` to get rid of any leftover data or problems from an improper shutdown and start mesuring with `HokuyoReader.startContinuous(0, 1080)` with 0 and 1080 the steps that are mesured - -```pyhton -sensor.stop() -sensor.startContinuous(0, 1080) -``` - -Distances can be retrived as a numpy array with the `HokuyoReader.rDistance()` (r standing for radial) - -```python -distance_array=sensor.rDistance() -``` - -Use `HokuyoReader.stop()` to gracefully shutdown the lidar - -```pyhton -sensor.stop() - -``` - -!!! note - This class has been renamed to Lidar to be more descriptive in code. - -!!! note - After contacting the author, he has agreed to licence his script as MIT (none before), allowing us to do the same on this repository. - -## Using Hokuyolx class - -This class comes from [SkoltechRobotics/hokuyolx](https://github.com/SkoltechRobotics/hokuyolx). -This class has considerably more options than [HokuyoReader](#using-hokuyoreader-class) but is more complicated to understand. This class is documented at [http://hokuyolx.rtfd.org/](http://hokuyolx.rtfd.org/). As of 12/12/24 it doesn't work out off the box and we use [HokuyoReader](#using-hokuyoreader-class) - -## Les galères - -On a eu pas mal de galères avec le lidar qui ce déconnecter de manière intempestive. En temps normal, soit le lidar est débranché, l’interface eth0 est Down et elle n’a pas d’IP, soit le lidar est branché et l’interface est UP avec un IP static (192.168.1.20). Malheureusement, des fois, pour des raisons un peu mystère, l’interface rester UP, mais perd son IP fixe. - -Débrancher et rebrancher le lidar a systématiquement marché, mais n’adresse pas la cause du problème. 2 théories : -- Le câble est baisé et fait un faux contact -- Le Network manager de la RPI fout la merde - -Comme la languette de rétention, Ethernet était un peu mort donc on a reserti un nouveau connecteur (Merci MiNET ❤️). Cela a résolu une grande partie du problème et nous n’avons observer que deux récidives : l’une directement après l’autre le 03/04/25 lors des essais sur piste. - -###Quelques commandes utiles - -```bash -ip a -``` -Permets de voir les différentes interfaces réseau, leurs statuts et les IP associer. - -```bash -watch -n 0.1 "ip a" -``` -Permet d’exécuter toutes les 0,1 s (le max) une commande et d’affiche le résultat, ici`ip a`. - diff --git a/docs/Simulateur.md b/docs/Simulateur.md deleted file mode 100644 index e568c8d5..00000000 --- a/docs/Simulateur.md +++ /dev/null @@ -1,132 +0,0 @@ -# Simulateur - -Cette page de documentation détaille le fonctionnement des scripts utilisés dans le cadre de l'utilisation de [Webots](https://cyberbotics.com) pour entrainer une IA sur une simulation de piste. - ---- -## Objectifs - -On cherche à simuler le déplacement d'une voiture dans un environnement semblable à la piste de la course. A chaque étape de la simulation on donne en entrée les données des différents capteurs à un model qui nous renvoie une consigne d'angle de roues à appliquer au véhicule pour la prochaine étape de la simulation. - - ---- -## Organisation basique à une voiture - -Une première approche pourrairt être d'organiser notre monde avec une [Piste](#piste) et une [Voiture](#voiture). Dans cette approche toute la logique serait géré au niveau du [Driver](https://cyberbotics.com/doc/automobile/driver-library) de la [Voiture](#voiture): -- obtenir la data des capteurs -- exécuter le model pour obtenir une consigne -- update l'état de la voiture en accord avec cette consigne -- puis finalement calculer les rewards données à la fin de chaque episode pour entrainer l'[IA](./IA.md) - -!!! note - Le problème de cette architecture est qu'elle n'est pas scalable. Elle nous force à n'utiliser qu'une seule voiture en même temps car en augmentant le nombre de voitures, elles gèreraient toutes leur propre model en local et on entraînerait donc _n_ models au lieu d'un 1 ce qui est inutile. - -
-```mermaid -flowchart TD - A("`__fa:fa-car TT02_0__ - Hokuyo - (_AI model_)`") -``` -
- ---- -## Organisation complexe à _n_ voitures - -Pour s'affranchir de ces limites on propose de déplacer l'éxécution du model dans un controller séparé des _n_ voitures. On choisira donc de crééer un [Robot](https://cyberbotics.com/doc/reference/robot) de type [Supervisor](https://cyberbotics.com/doc/reference/supervisor) qu'on nommera `WorldSupervisor` en ajoutant le field `supervisor TRUE` dans la string de définition du node correspondant à notre supervisor. Notre objectif est de créer _n_ voitures à l'initialisation du monde et de faire communiquer les voitures et le WorldSupervisor via des [Emitters](https://www.cyberbotics.com/doc/reference/emitter)/[Receivers](https://www.cyberbotics.com/doc/reference/receiver). Il faut donc que le WorldSupervisor ait _n_ couples d'[Emitters](https://www.cyberbotics.com/doc/reference/emitter)/[Receivers](https://www.cyberbotics.com/doc/reference/receiver) pour communiquer à chaque voiture sur un channel différent. - -!!! warning - _n_ n'est pas connu avant l'éxecution du controller du WorldSupervisor. Or, l'état d'un [Robot](https://cyberbotics.com/doc/reference/robot) pour les fonctions de controller dans Webots ne change pas dynamiquement i.e. si le WorldSupervisor s'ajoute lui-même des devices via son controller au cours de l'éxecution, ces derniers ne seront pas acessibles via la méthode `getDevice(name)`. - -C'est pour cela qu'en plus d'un WorldSupervisor gérant la logique de l'[IA](./IA.md), nous avons besoin d'un autre [Supervisor](https://cyberbotics.com/doc/reference/supervisor) dont le rôle est de créer le WorldSupervisor avec ses _n_ couples d'[Emitters](https://www.cyberbotics.com/doc/reference/emitter)/[Receivers](https://www.cyberbotics.com/doc/reference/receiver) et les _n_ voitures au début de l'initialisation du monde. On nommera ce nouveau [Supervisor](https://cyberbotics.com/doc/reference/supervisor) `WorldInit`. - -!!! warning - L'API [Emitters](https://www.cyberbotics.com/doc/reference/emitter)/[Receivers](https://www.cyberbotics.com/doc/reference/receiver) ne garantit pas un planning spécifique pour la transmission. Il arrive parfois que plusieurs paquets soient regroupés et reçus ensemble ou qu'aucun packet ne soit reçu. Ces cas doivent donc être traités et on perd le déterminisme de l'entraînement. - ---- -### Pendant l'initialisation du monde - -
-```mermaid -flowchart TD - Init("WorldInit") --> |crée| A("`__WorldSupervisor__ - (_AI model_) - supervisor_emitter_0 - supervisor_receiver_0 - supervisor_emitter_1 - supervisor_receiver_1 - ... - supervisor_emitter_n-1 - supervisor_receiver_n-1`") - - Init --> |crée| B("`__fa:fa-car TT02_0__ - - Hokuyo - TT02_emitter - TT02_receiver`") - - Init --> |crée| C("`__fa:fa-car TT02_1__ - Hokuyo - TT02_emitter - TT02_receiver`") - - Init --> D[...] - style D fill:none,stroke:none - linkStyle 3 stroke-width:0,marker-end:none - Init --> |crée| E("`__fa:fa-car TT02_n-1__ - Hokuyo - TT02_emitter - TT02_receiver`") -``` -
- ---- -### Pendant l'exécution des controllers -
-```mermaid -flowchart TD - Super("`__WorldSupervisor__ - supervisor_emitter_0 - supervisor_receiver_0 - supervisor_emitter_1 - supervisor_receiver_1 - ... - supervisor_emitter_n-1 - supervisor_receiver_n-1`") --> |commande| B("`__fa:fa-car TT02_0__ - Hokuyo - TT02_emitter - TT02_receiver`") - - Super --> |commande| C("`__fa:fa-car TT02_1__ - Hokuyo - TT02_emitter - TT02_receiver`") - - Super --> D[...] - style D fill:none,stroke:none - linkStyle 2 stroke-width:0,marker-end:none - - Super --> |commande| E("`__fa:fa-car TT02_n-1__ - Hokuyo - TT02_emitter - TT02_receiver`") -``` -
- ---- -## Environnement Webots utilisé - -### Piste - -Le monde utilisé est `Simulateur/worlds/piste2.wbt`. Ce monde vient de la version 2023 du [github officiel CoVAPsy](https://github.com/ajuton-ens/CourseVoituresAutonomesSaclay). - -### Voiture - -La voiture utilisé est TT02(`Simulateur/protos/TT02_2023b.proto`). Ce proto vient de la version 2023 du [github officiel CoVAPsy](https://github.com/ajuton-ens/CourseVoituresAutonomesSaclay). - -### Capteurs - -Les capteurs utilisés sont : - -- Un [Lidar](./Lidar.md) aux specifications de notre vrai lidar. - -- Un [TouchSensor](https://cyberbotics.com/doc/reference/touchsensor) uniquement sur le simulateur pour détecter les collisions. diff --git a/docs/UV_USAGE.md b/docs/UV_USAGE.md deleted file mode 100644 index b7cc2bdb..00000000 --- a/docs/UV_USAGE.md +++ /dev/null @@ -1,127 +0,0 @@ -# UV Dependency Management Guide - -This project now uses [UV](https://github.com/astral-sh/uv) for fast, reliable Python package management. - -## Quick Start - -### Install UV -```bash -curl -LsSf https://astral.sh/uv/install.sh | sh -source $HOME/.cargo/env -``` - -### Install Project Dependencies -```bash -# Install all runtime dependencies -uv sync - -# Install with documentation dependencies -uv sync --extra docs - -# Install with development dependencies -uv sync --extra dev - -# Install all optional dependencies -uv sync --all-extras -``` - -### Running Python Scripts and Commands -```bash -# Run a script using the project's virtual environment -uv run python src/HL/main.py - -# Run a script directly (if defined in pyproject.toml) -uv run covapsy-main - -# Run any command with the project's dependencies -uv run mkdocs serve - -# Note: Always use 'uv run' prefix to ensure you're using the UV-managed environment -``` - -### Managing Dependencies - -#### Add a new dependency -```bash -# Add runtime dependency -uv add numpy - -# Add development dependency -uv add --dev pytest - -# Add documentation dependency -uv add --optional docs mkdocs -``` - -#### Remove a dependency -```bash -uv remove package-name -``` - -#### Update dependencies -```bash -# Update all packages -uv lock --upgrade - -# Update specific package -uv add package-name@latest -``` - -### Virtual Environment Management - -UV automatically manages virtual environments. You can also: - -```bash -# Activate the virtual environment manually -source .venv/bin/activate - -# Or run commands directly -uv run python your_script.py -``` - -### Lock File - -The `uv.lock` file pins exact versions for reproducible builds. Commit this file to version control. - - -### Old way (pip): -```bash -pip install -r requirements.txt -``` - -### New way (UV): -```bash -uv sync -``` - -## Benefits of UV - -- **Fast**: 10-100x faster than pip -- **Reliable**: Deterministic resolution with lock files -- **Cross-platform**: Works on Linux, macOS, Windows -- **Drop-in replacement**: Compatible with existing Python tooling -- **Modern**: Built in Rust with modern dependency resolution - -## Troubleshooting - -### Common Issues - -#### "Plugin not installed" or "Module not found" errors -**Problem**: Running commands directly (e.g., `mkdocs serve`) instead of through UV. -**Solution**: Always prefix commands with `uv run`: -```bash -# ❌ Wrong -mkdocs serve - -# ✅ Correct -uv run mkdocs serve -``` - -#### UV installs unwanted dependencies -**Problem**: UV may incorrectly resolve optional dependencies due to dependency resolution bugs. -**Solution**: Remove problematic lock files and clear cache: -```bash -rm uv.lock -uv cache clean -uv sync --extra docs -``` diff --git a/docs/building_docs.md b/docs/building_docs.md deleted file mode 100644 index 51352797..00000000 --- a/docs/building_docs.md +++ /dev/null @@ -1,175 +0,0 @@ -# How to use Markdown and MkDocs - -This documentation is built using Markdown and MkDocs. This page is a guide to get you started contributing. - -## What is Markdown - -> Markdown is a lightweight markup language used to format text in a simple and readable way. It uses plain-text syntax to define elements like headings, lists, links, and emphasis (e.g., **bold**, *italic*). Markdown is commonly used in documentation, blogging platforms, and version control systems like GitHub because it is easy to write and converts seamlessly into HTML for web display. -ChatGPT - -Markdown files are often recognizable by their `.md` and rarely `.markdown` file extensions. - -## Basic Syntax - -### Bold and Italics - -To make bold text, surround your text with double asterisks: - - - - - -
**This text will be bolded**This text will be bolded
- -For italics, use a single asterisk: - - - - - -
*This text will be italicized*This text will be italicized
- -These can be combined: - - - - - -
***This text will be bold and italic***This text will be bold and italic
- -### Headings - -Headings are denoted using `#` at the beginning of a line. The number of `#` determines the depth of the header: - -| Input | Render | -|------------------|------------------ | -| # Heading 1 |

Heading 1

| -| ## Heading 2 |

Heading 2

| -| ### Heading 3 |

Heading 3

| -| #### Heading 4 |

Heading 4

| -| ##### Heading 5 |
Heading 5
| - -!!! warning - A space is required for a heading to work. - - - \#Heading 1 ❌ - - \## Heading 1 ✔️ - -### Links - -To add links, use the following syntax: - -\[The text that will be displayed](The link to follow) - -\[A link to example.org](https://example.org/) - -[A link to example.org](https://example.org/) - -!!! Note - These can be used for internal links as well. For example, we can link this section with \[Links](#Links) or \[Links](/building_docs/#Links): [Links](#links). - - The second method can be generalized to reach any page or header on the website. - -### Images - -The syntax to add images is almost the same as links. Alt text is the text used by accessibility readers. It should therefore be descriptive rather than a title. - -\!\[Alt text](path/to/image.png) - -\!\[A square version of the autotech logo. It is used as a favicon for the site](img/favicon.png) - -![A square version of the autotech logo. It is used as a favicon for the site](img/favicon.png) - -!!! Note - See [Images in HTML](#images-in-html) for more fine-grain control of images. - -### Code Blocks - -Code blocks in Markdown can be created using triple backticks (\`\`\`). You can specify the language for syntax highlighting by adding the language name after the opening backticks. Here is an example of a code block in Python: - -\`\`\`python - -def hello_world(): - - print("Hello, world!") - -\`\`\` - -```python -def hello_world(): - print("Hello, world!") -``` - -You can also create inline code by wrapping text in single backticks (\`). For example, \`print("Hello, world!")\` renders as `print("Hello, world!")`. - -## Advanced Syntax - -Markdown's strength is in the simplicity of writing, but that sometimes comes back to bite us when trying to do something a little more complicated. Luckily, most Markdown renderers accept some HTML in Markdown files. This is the case with MkDocs and GitHub. **HTML should only be used as necessary.** - -### Comments - -In Markdown, there is no built-in syntax for comments. However, you can use HTML comments to add notes or comments that will not be rendered in the final output. Here is an example: - -``` - -``` - -### Images in HTML - -Images are impossible to scale or render next to text. Using the HTML `` tag, it is possible to customize your image's behavior. Here is an example of an image that is scaled and displayed to the right. Keep in mind that images **can't** be rendered above the position of the `` tag: - -``` -A square version of the autotech logo. It is used as a favicon for the site -``` - -A square version of the autotech logo. It is used as a favicon for the site - -!!! warning - Due to differences in how the HTML and Markdown are compiled, there are different paths when adding images in HTML and Markdown. - -
- -### Admonitions - -Admonitions are a way to highlight important information in your documentation. MkDocs supports several types of admonitions, such as notes, warnings/caution, danger, and tips/hint. Here is an example of how to use them: - -``` -!!! note - This is a note admonition. -``` -!!! note - This is a note admonition. - -``` -!!! warning - This is a warning admonition. -``` -!!! warning - This is a warning admonition. - -## Using MkDocs - -For full documentation, visit [mkdocs.org](https://www.mkdocs.org). - -### Commands - -* `mkdocs serve` - Start the live-reloading docs server. It should now be accessible at [127.0.0.1:8000](http://127.0.0.1:8000/) on ***your machine**** `mkdocs gh-deploy` - Build the documentation site on the gh-pages branch of your repository. - -!!! Note - On the [Club-INTech/CoVAPSy](https://github.com/Club-INTech/CoVAPSy) repository, `mkdocs gh-deploy` is automatically called upon push to the main branch. It can still be manually called when on another branch, but [gh-pages](https://github.com/Club-INTech/CoVAPSy/tree/gh-pages) will be overwritten by any push on main. - -### Project Layout - - mkdocs.yml ## The configuration file. - docs/ - index.md ## The documentation homepage. - ... ## Other markdown pages, images, and other files. - img/ - favicon.png ## The icon that appears on the browser tab. - ... other images - -### Using GitHub Pages - -Navigate to the repository, then to settings/pages. Using the drop-down menus, select "Deploy from branch" for source and "gh-pages" and "/root" for branch. - -!!! Note - You may have to run `mkdocs gh-deploy` for the gh-pages branch to show. See [Commands](#commands). diff --git "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (carr\303\251)_promo Ecole_transparent.png" "b/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (carr\303\251)_promo Ecole_transparent.png" deleted file mode 100755 index b3c13413..00000000 Binary files "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (carr\303\251)_promo Ecole_transparent.png" and /dev/null differ diff --git "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_blanc.png" "b/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_blanc.png" deleted file mode 100644 index b7c48769..00000000 Binary files "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_blanc.png" and /dev/null differ diff --git "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_blanc_120px.png" "b/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_blanc_120px.png" deleted file mode 100644 index 55f269f9..00000000 Binary files "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_blanc_120px.png" and /dev/null differ diff --git "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_noir.png" "b/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_noir.png" deleted file mode 100644 index a67ea072..00000000 Binary files "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_noir.png" and /dev/null differ diff --git "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_transparent.png" "b/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_transparent.png" deleted file mode 100644 index 3a478e11..00000000 Binary files "a/docs/img/Logo/Logo_\303\251quipe N\302\26020_AutoTech 2025 (long)_promo Ecole_transparent.png" and /dev/null differ diff --git a/docs/img/UST-10LX_Scan_pattern.png b/docs/img/UST-10LX_Scan_pattern.png deleted file mode 100644 index da6f082a..00000000 Binary files a/docs/img/UST-10LX_Scan_pattern.png and /dev/null differ diff --git a/docs/img/UST-10lx.jpg b/docs/img/UST-10lx.jpg deleted file mode 100644 index 7de34604..00000000 Binary files a/docs/img/UST-10lx.jpg and /dev/null differ diff --git a/docs/img/favicon.ico b/docs/img/favicon.ico deleted file mode 100644 index 48ff8b1f..00000000 Binary files a/docs/img/favicon.ico and /dev/null differ diff --git a/docs/img/favicon.png b/docs/img/favicon.png deleted file mode 100755 index b3c13413..00000000 Binary files a/docs/img/favicon.png and /dev/null differ diff --git a/docs/index.md b/docs/index.md deleted file mode 100755 index 134fbf30..00000000 --- a/docs/index.md +++ /dev/null @@ -1,11 +0,0 @@ -# Home - -Bonjour à toi, cher INTech-ien intéressé par AutoTech. Ces pages seront ta bible pour commencer à contribuer à AutoTech. - -Cette documentation a pour objectif d’être autosuffisante, mais comme aucune documentation n’est parfaite, n’hésite pas à te rapprocher de tes 2A. - -Le conseil le plus précieux que je puisse te donner est de documenter au fur et à mesure, et d’utiliser exclusivement Git. - -Utilise Git, car tu seras amené à faire des modifications par-ci par-là, et notamment pendant le rush de la course, tu pourrais être tenté de faire du scp (ssh copy). Résiste. Faire ça pose problème, car tu risques de perdre des versions de code qui fonctionnaient bien. Dans la même veine, utilise et abuse de la fonctionnalité Release de GitHub. Elle te sera très utile lorsque tu seras dans le rush et que plus rien ne fonctionnera. - -Enfin, documente au fur et à mesure. Tu pourrais être tenté de dire : « C’est le rush, je documenterai plus tard. » Résiste là aussi. Premièrement, tu pourrais mieux comprendre certains éléments en les documentant proprement. Deuxièmement, tu risques d’oublier des choses. Et troisièmement, tu pourrais te retrouver à rédiger la documentation le 17 septembre, alors que ta première réunion avec les 1A est le 18 septembre et que tu n’as pas touché au projet depuis la mi-avril. \ No newline at end of file diff --git a/docs/requirments.txt b/docs/requirments.txt deleted file mode 100644 index 99f97a46..00000000 --- a/docs/requirments.txt +++ /dev/null @@ -1,4 +0,0 @@ -mkdocs -mkdocs-mermaid2-plugin -mkdocs-git-revision-date-localized-plugin -mkdocs-git-authors-plugin \ No newline at end of file