diff --git a/public/newsletters/2702206/attachments/2a92d6eb-f05b-4344-b7ba-354325d62938.jpg b/public/newsletters/2702206/attachments/2a92d6eb-f05b-4344-b7ba-354325d62938.jpg new file mode 100644 index 0000000..ada5cdf Binary files /dev/null and b/public/newsletters/2702206/attachments/2a92d6eb-f05b-4344-b7ba-354325d62938.jpg differ diff --git a/public/newsletters/2702206/attachments/3ca55032-5f23-4738-8d3e-e380cb03d3b9.png b/public/newsletters/2702206/attachments/3ca55032-5f23-4738-8d3e-e380cb03d3b9.png new file mode 100644 index 0000000..105b98c Binary files /dev/null and b/public/newsletters/2702206/attachments/3ca55032-5f23-4738-8d3e-e380cb03d3b9.png differ diff --git a/public/newsletters/2702206/attachments/4be89b77-448f-4954-913f-b98b904b4e12.png b/public/newsletters/2702206/attachments/4be89b77-448f-4954-913f-b98b904b4e12.png new file mode 100644 index 0000000..aabe03e Binary files /dev/null and b/public/newsletters/2702206/attachments/4be89b77-448f-4954-913f-b98b904b4e12.png differ diff --git a/public/newsletters/2702206/attachments/e0439810-b100-4580-8906-6052359aa179.png b/public/newsletters/2702206/attachments/e0439810-b100-4580-8906-6052359aa179.png new file mode 100644 index 0000000..7f9fada Binary files /dev/null and b/public/newsletters/2702206/attachments/e0439810-b100-4580-8906-6052359aa179.png differ diff --git a/public/newsletters/2702206/attachments/e63d3f2d-d3bf-4ed2-b486-fb2854401849.png b/public/newsletters/2702206/attachments/e63d3f2d-d3bf-4ed2-b486-fb2854401849.png new file mode 100644 index 0000000..927b077 Binary files /dev/null and b/public/newsletters/2702206/attachments/e63d3f2d-d3bf-4ed2-b486-fb2854401849.png differ diff --git a/public/newsletters/2702206/draft-022026.md b/public/newsletters/2702206/draft-022026.md new file mode 100644 index 0000000..a71ce09 --- /dev/null +++ b/public/newsletters/2702206/draft-022026.md @@ -0,0 +1,55 @@ +# Février 2026 + +Cher.e.s lecteur.trice.s, + +Bienvenue dans cette nouvelle Newsletter de CDROMS ! + +Qui dit nouvelle année, dit nouveau thème pour la Coupe de France de Robotique. Nous passons du monde des concerts à celui de l'hiver. "Winter is coming", l'édition 2026, nous propose de transformer nos robots en petits écureuils affamés, prêts à tout pour récupérer les caisses de noisettes que les humains ont ramassées avant eux. + +### CDROMS et la CDFR 2026 + +Après concertation avec l'équipe, nous avons choisi les actions qui nous semblaient les plus réalisables, tout en nous ramenant suffisamment de points. Dans cette newsletter, nous décrirons uniquement les actions que nous avons choisi de réaliser, avec la table de jeu suivante, table officielle de la CDFR 2026 : + + ![Table de jeu - CDFR 2026](attachments/e63d3f2d-d3bf-4ed2-b486-fb2854401849.png " =493x275") + +Le robot principal partira de la zone 1, appelée le nid, pour aller vers la zone 8, où la première action a lieu : le curseur de température. À l'aide d'un bras actionné par un servo-moteur, le robot principal viendra déplacer un curseur le long de la table, où figure une échelle de température, et l'amener le plus proche des températures basses. + + ![Position finale du thermomètre (espérée)](attachments/4be89b77-448f-4954-913f-b98b904b4e12.png " =269x251") + +Après avoir déplacé le curseur, il passera par les zones 5 qui le séparent du nid, emportant avec lui les caisses de noisettes qui s'y trouvent, pour les ramener dans le nid, et s'y placer à son tour. La mission du robot principal est à présent terminée. + +Au tour de nos PAMIs de survivre à l'hiver, pendant les 15 dernières secondes du match : il leur faut atteindre des garde-mangers (zones 6), les occuper jusqu'à la fin du match et faire bouger un actionneur, visible depuis le public, même après la fin du match. + +Cependant, un PAMI sort du lot : le PAMI ninja. Il a le droit d'évoluer durant toute la durée du match, il est placé dans la zone 2 (en hauteur par rapport aux autres robots) et travaille en collaboration avec le ninja de l'équipe adverse. Le ninja a 2 missions : vider les frigos (zones 3), jusqu'alors remplis de caisses de noisettes, et remplir les frigos (zones 3) des caisses de noisettes vides situées en zone de chargement (zones 4). Les actions réalisées à cet endroit de la table donnent des points aux 2 équipes. + +Nous pouvons à présent détailler les spécificités de nos robots et de nos systèmes pour cette année : place au côté technique ! + +### Robot principal et PAMI Ninja + +Le robot principal et le PAMI Ninja gardent la même architecture que l'année dernière : une Raspberry Pi 4 et notre PCB plein de connecteurs pour y brancher tous les capteurs et actionneurs. Le robot principal accueille tout de même quelques modifications : les systèmes liés à la CDFR 2025 sont retirés pour y ajouter deux bras permettant de déplacer le curseur du thermomètre (un pour chaque côté) ainsi que des améliorations sur le système d'estimation de position. En plus de ces modifications fonctionnelles, le robot principal a reçu un relooking complet ! + + ![Le robot principal, avec un carénage en plexiglas et non en papier (c'est quand même plus stylé), aux couleurs de notre logo.](attachments/e0439810-b100-4580-8906-6052359aa179.png " =214x268") + +Concernant le PAMI Ninja, il était nécessaire de faire une petite adaptation pour que le capteur d'obstacle ne détecte pas les caisses de noisettes comme un obstacle et puisse les pousser. + +### Pas trop chaud, ni trop froid : le thermomètre + +Pour déplacer le curseur sur le thermomètre représenté le long de la table, nous avons choisi de déployer un bras qui viendra se placer à l'intérieur du curseur, tandis que le robot avancera jusqu'à la zone de température froide. Pour cela, un peu de dimensionnement est nécessaire : il faut étudier l'écart entre le robot principal et le bord de la table afin de déterminer la longueur du bras. + + ![Etude de l'écartement à la table](attachments/2a92d6eb-f05b-4344-b7ba-354325d62938.jpg " =375x211") + +Avec ces dimensions, qui respectent les contraintes de périmètre déployé, on peut construire notre bras et le système d'accroche sur l'étage principal du robot, qui lui permettra de se déployer au moment voulu. + +### PAMI Écureuils + +L'année dernière, en plus du gros PAMI Superstar (devenu cette année le PAMI Ninja), nos petits PAMI étaient basés sur Arduino avec un petit composant pour contrôler les moteurs du robot. Cette année, on repart de zéro avec pour objectif d'avoir des PAMIs plus petits, plus robustes et avec plus de capacités à réaliser des actions. + +Depuis le début de cette année, de nouveaux PCBs ont été désignés et un premier exemplaire a été soudé. Le PCB principal contient un microprocesseur STM32, le "cerveau" du PAMI, tandis que deux autres PCBs permettent de placer les capteurs d'obstacle et les boutons pour interagir avec le PAMI. Les premiers tests ont permis de montrer que les PCBs n'ont pas de grosses erreurs ! + + ![Le PCB principal de nos nouveaux petits PAMIs lors de la pose des composants.](attachments/3ca55032-5f23-4738-8d3e-e380cb03d3b9.png " =428x250")Désormais, il s'agit de tester les composants qui permettront de détecter un obstacle, faire avancer le PAMI, et créer les pièces mécaniques qui constitueront le PAMI. + +On vous parlera de tout ça lors de notre prochaine newsletter, qui mettra *(normalement)* moins de temps à sortir que celle-ci… + +Merci de nous avoir lu jusqu'à la fin ! + +Les CDROMS 📀 \ No newline at end of file diff --git a/public/newsletters/index.json b/public/newsletters/index.json new file mode 100644 index 0000000..6a0113a --- /dev/null +++ b/public/newsletters/index.json @@ -0,0 +1,7 @@ +{ + "2702206": { + "date": "2026-02-27", + "title": "Février 2026", + "markdown": "draft-022026.md" + } +} \ No newline at end of file diff --git a/public/restricted-assets/cdroms/members/cdd.png b/public/restricted-assets/cdroms/members/cdd.png new file mode 100644 index 0000000..0bf95ba Binary files /dev/null and b/public/restricted-assets/cdroms/members/cdd.png differ diff --git a/public/restricted-assets/cdroms/members/jk.png b/public/restricted-assets/cdroms/members/jk.png new file mode 100755 index 0000000..6fcbb02 Binary files /dev/null and b/public/restricted-assets/cdroms/members/jk.png differ diff --git a/public/restricted-assets/cdroms/members/md.png b/public/restricted-assets/cdroms/members/md.png new file mode 100644 index 0000000..3cb574b Binary files /dev/null and b/public/restricted-assets/cdroms/members/md.png differ diff --git a/public/restricted-assets/cdroms/members/ot.png b/public/restricted-assets/cdroms/members/ot.png new file mode 100644 index 0000000..45a1fae Binary files /dev/null and b/public/restricted-assets/cdroms/members/ot.png differ diff --git a/public/restricted-assets/cdroms/members/rw.png b/public/restricted-assets/cdroms/members/rw.png new file mode 100644 index 0000000..11da275 Binary files /dev/null and b/public/restricted-assets/cdroms/members/rw.png differ diff --git a/public/restricted-assets/cdroms/members/sk.png b/public/restricted-assets/cdroms/members/sk.png old mode 100755 new mode 100644 index 6fcbb02..5f0b422 Binary files a/public/restricted-assets/cdroms/members/sk.png and b/public/restricted-assets/cdroms/members/sk.png differ diff --git a/src/components/Member.tsx b/src/components/Member.tsx index 1e855e0..a727f17 100644 --- a/src/components/Member.tsx +++ b/src/components/Member.tsx @@ -23,7 +23,7 @@ const Member: React.FC = ({ {`${firstname}
-
+

{firstname}
{lastname}

{description}

diff --git a/src/pages/Home.tsx b/src/pages/Home.tsx index 36a3656..a6d9406 100644 --- a/src/pages/Home.tsx +++ b/src/pages/Home.tsx @@ -1,5 +1,4 @@ import * as React from "react"; -import LoremIpsum from "../components/LoremIpsum.tsx"; const Home: React.FC = () => { @@ -12,15 +11,23 @@ const Home: React.FC = () => { objectFit: "cover", objectPosition: "30% 40%", }} src="/assets/home.jpg" alt="image"/> - {/*TODO home.jpg*/}
- {/*TODO Qui nous sommes*/} -

Qui nous sommes

- - +

Qui sommes-nous ?

+ Après sept ans de Coupe + de France de Robotique Junior, dont quelques qualifications au + niveau national, trois anciens membres du Club de Robotique de Vanves, encore animés par la + flamme de la compétition, décident de se relancer dans l’aventure avec la Coupe de France + Senior. Née de l'union de membres motivés, CDROMS se présente pour la première fois à la + Coupe de France de Robotique 2025. +

+ Forts de notre expérience accumulée en Junior, nous avons au moins une certitude : la + maîtrise des actions de base et la robustesse technique de nos systèmes finissent toujours + par porter leurs fruits. Au sein de l’équipe, chacun participe à sa manière : avec ses + envies et ses compétences. Cela va de la conception de PCB à la programmation de robots, en + passant par l’usinage des systèmes et l’assemblage de robots.

Nos réseaux

@@ -32,7 +39,8 @@ const Home: React.FC = () => { href="https://github.com/CDROMS-Robotics" target="_blank" rel="noopener noreferrer"> - GitHub logo
+ GitHub logo
GitHub
@@ -50,7 +58,8 @@ const Home: React.FC = () => { href="https://www.youtube.com/@CDROMS-Robotics" target="_blank" rel="noopener noreferrer"> - YouTube logo
+ YouTube logo
YouTube
diff --git a/src/pages/LegalNotice.tsx b/src/pages/LegalNotice.tsx index 8982ca8..2977af0 100644 --- a/src/pages/LegalNotice.tsx +++ b/src/pages/LegalNotice.tsx @@ -4,7 +4,7 @@ const LegalNotice = () => {

Mentions légales

Éditeur du site

- Le site est édité par la SC Association, association loi 1901 déclarée sous le numéro RNA W923010069.Il + Le site est édité par SC Association, association loi 1901 déclarée sous le numéro RNA W923010069. Il partage du contenu lié à l’équipe CDROMS, qui participe à la Coupe de France de Robotique de Planète Sciences.

@@ -16,8 +16,8 @@ const LegalNotice = () => {

Propriété intellectuelle

- Tout le contenu (textes, images, logos, codes) est la propriété de l’association ou de ses auteurs et - reste protégé par la législation française et internationale.

+ Tout le contenu (textes, images, logos, codes) est la propriété de l’association et de ses auteurs et + reste protégé par la législation française.

Le code source du projet est distribué sous licence GPL.
Les newsletters et autres contenus textuels sont sous licence CC BY-NC-SA.

@@ -28,7 +28,7 @@ const LegalNotice = () => {


- Dernière mise à jour : 24/01/2025 + Dernière mise à jour : 26/02/2025

); diff --git a/src/pages/Newsletters.tsx b/src/pages/Newsletters.tsx index 746ca72..1cc82f2 100644 --- a/src/pages/Newsletters.tsx +++ b/src/pages/Newsletters.tsx @@ -5,7 +5,6 @@ import "./Newsletters.scss" import {remarkHighlight} from "../md-flavor.ts" import {useParams} from "react-router-dom"; import NewsletterLi from "../components/NewsletterLi.tsx"; -import LoremIpsum from "../components/LoremIpsum.tsx"; interface NewsletterData { date: string; @@ -36,10 +35,13 @@ const Newsletters: React.FC = () => { if (!id) { return <>
- {/* TODO Make intro */} - + Pour vivre cette aventure avec nos proches, nous avons, l’an passé, partagé l’avancement du projet à + travers des newsletters. Depuis 2026, nous avons décidé de les rendre publiques. Les newsletters + vulgarisent les différentes étapes de construction des robots : qu’il s’agisse d’un choix d’actions + à réaliser durant la Coupe, la conception de pièces mécaniques ou encore les tests de code des + robots, une de nos newsletters abordera (probablement) le sujet !
-
+

Les newsletters de cette année :

diff --git a/src/pages/Participations.tsx b/src/pages/Participations.tsx index 8669dcf..f057c29 100644 --- a/src/pages/Participations.tsx +++ b/src/pages/Participations.tsx @@ -2,25 +2,32 @@ import * as React from "react"; import Eurobot from "../components/Eurobot.tsx"; const Participations: React.FC = () => { - // TODO text return (
{ const members: People[] = useMemo(() => { - // TODO do text and images return [ { firstname: "Claire", lastname: "de Dinechin", - image: "/restricted-assets/cdroms/members/sk.png", - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor" - + "sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, conelit. Lorem ipsum" - + "dolor sit amet, conelit. Lorem ipsum dolor sit amet, conelit.et, conelit.", + image: "/restricted-assets/cdroms/members/cdd.png", + description: "Si vous l’appelez pour réaliser un système mécanique, soyez sûr.es de deux choses :" + + " ça marchera à merveille et elle aura dissimulé un dinosaure quelque part. Elle est " + + "aussi l’une des plumes derrière nos newsletters.", participation: [ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, @@ -29,10 +28,10 @@ const Team: React.FC = () => { }, { firstname: "Rémi", lastname: "Weidle", - image: "/restricted-assets/cdroms/members/sk.png", - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor" - + "sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, conelit. Lorem ipsum" - + "dolor sit amet, conelit. Lorem ipsum dolor sit amet, conelit.et, conelit.", + image: "/restricted-assets/cdroms/members/rw.png", + description: "Ce qu’il aime, c’est de la “belle électronique” : ses circuits sont aussi propres que " + + "ses schémas sont précis. Et ça ne sent pas encore le condensateur grillé, alors on ne" + + " peut rien dire !", participation: [ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.NONE, ParticipationType.NONE, @@ -41,10 +40,10 @@ const Team: React.FC = () => { }, { firstname: "Ousmane", lastname: "Thiongane", - image: "/restricted-assets/cdroms/members/sk.png", - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor" - + "sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, conelit. Lorem ipsum" - + "dolor sit amet, conelit. Lorem ipsum dolor sit amet, conelit.et, conelit.", + image: "/restricted-assets/cdroms/members/ot.png", + description: "Toujours partant pour donner un coup de main, il travaille surtout sur le code de nos " + + "petits PAMIs. Il est aussi l’artiste derrière notre logo et nos affiches. On raconte qu’il " + + "possède une résistance infaillible aux nuits blanches.", participation: [ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, @@ -53,10 +52,10 @@ const Team: React.FC = () => { }, { firstname: "Martin", lastname: "Desnos", - image: "/restricted-assets/cdroms/members/sk.png", - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor" - + "sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, conelit. Lorem ipsum" - + "dolor sit amet, conelit. Lorem ipsum dolor sit amet, conelit.et, conelit.", + image: "/restricted-assets/cdroms/members/md.png", + description: "Vous cherchez un PAMI pliable, des charnières pivotantes ou tout autre système " + + "surprenant ? C’est à lui qu’il faut faire appel ! Il a aussi réalisé la mécanique de " + + "notre gros PAMI (en version non-pliable).", participation: [ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.NONE, ParticipationType.NONE, @@ -66,9 +65,8 @@ const Team: React.FC = () => { { firstname: "Sébastien", lastname: "Kerbourc'h", image: "/restricted-assets/cdroms/members/sk.png", - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor" - + "sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, conelit. Lorem ipsum" - + "dolor sit amet, conelit. Lorem ipsum dolor sit amet, conelit.et, conelit.", + description: "Responsable du code du robot et PAMI principal, il transforme " + + "le chaos en stratégies qui font avancer nos machines.", participation: [ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.JUNIOR, ParticipationType.NONE, ParticipationType.NONE, @@ -77,10 +75,9 @@ const Team: React.FC = () => { }, { firstname: "Jan", lastname: "Kozakiewicz", - image: "/restricted-assets/cdroms/members/sk.png", - description: "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor" - + "sit amet, consectetur adipiscing elit. Lorem ipsum dolor sit amet, conelit. Lorem ipsum" - + "dolor sit amet, conelit. Lorem ipsum dolor sit amet, conelit.et, conelit.", + image: "/restricted-assets/cdroms/members/jk.png", + description: "Calme mais efficace, il contribue à la conception mécanique des robots depuis les " + + "Pays-Bas. Comme quoi, la distance n'est pas un défi pour imaginer des pièces en tout genre.", participation: [ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, ParticipationType.NONE, @@ -99,7 +96,7 @@ const Team: React.FC = () => { description={p.description} participation={p.participation} inverted={idx % 2 == 1}/> -
+
{idx < members.length - 1 &&
}
)