Skip to content

FIPATECH/CDFR26_PAMI

Repository files navigation

PAMI - Robot Mobile Différentiel ESP32-S3

License: GPL v3 Target: ESP32-S3 Framework: ESP-IDF

PAMI Robot

Firmware et PCB open source pour robot mobile différentiel basé sur ESP32-S3. Conçu pour la Coupe de France de Robotique (PAMI — Petit actionneur mobile independant).

Aperçu

PAMI en compétition

  • Firmware : ESP-IDF, FreeRTOS, contrôle différentiel, odométrie, navigation par waypoints
  • Interface : API REST + WebSocket, GUI Python, éditeur de waypoints visuel
  • PCB : KiCad 9, ESP32-S3-DevKitC, DRV8833, ICM-20948, VL53L0X, TCS34725, SSD1306

Structure du projet

PAMI/
├── main/                    # Firmware ESP-IDF (code source principal)
│   ├── app_main.c
│   ├── robot_config.h       # Configuration centralisée (GPIO, PID, WiFi)
│   ├── motion/              # Contrôle mouvement (cmd_vel, waypoints)
│   ├── localization/        # Odométrie + fusion IMU
│   ├── drivers/             # Moteurs, encodeurs, capteurs
│   ├── sensors/             # IMU, ToF
│   ├── net/                 # WiFi AP, HTTP server
│   ├── ws/                  # WebSocket (logs, télémétrie)
│   ├── mission/             # Séquences de waypoints
│   ├── config/              # Configuration persistante (NVS)
│   └── ota/                 # Mise à jour Over-The-Air
├── components/              # Composants ESP-IDF
│   └── icm20948/            # Driver ICM-20948 (IMU 9 axes)
├── hardware/
│   └── PCB_Pami_V2/         # PCB KiCad 9 (auto-suffisant)
│       ├── PCB_Pami.kicad_pcb
│       ├── PCB_Pami.kicad_sch
│       ├── footprints/      # Empreintes non-standard incluses
│       └── symbols/         # Symboles non-standard inclus
├── tools/                   # Outils Python
│   ├── robot_gui.py         # GUI de contrôle et mission planner
│   ├── robot_client.py      # Client REST/WebSocket
│   ├── waypoint_editor.py   # Éditeur de trajectoires
│   └── requirements.txt
├── docs/                    # Documentation
│   ├── GUIDE_ROBOT.md       # Guide complet de mise en route
│   ├── CLIENT_PYTHON_README.md
│   └── table.png            # Carte de la table de jeu
├── .devcontainer/           # Dev container ESP-IDF (Docker)
├── CMakeLists.txt           # Projet ESP-IDF
└── sdkconfig.defaults       # Configuration flash/mémoire

CAO Mécanique

La conception mécanique 3D est disponible sur OnShape : OnShape

Démarrage rapide

Firmware

# Prérequis : ESP-IDF v5.x installé (ou utiliser le devcontainer)
idf.py build
idf.py -p /dev/ttyUSB0 flash monitor

Configuration dans main/robot_config.h :

#define WIFI_SSID         "Robot-ESP32"
#define WIFI_PASS         "robot123"
#define WHEEL_DIAMETER_CM  6.43
#define WHEEL_BASE_CM      13.34

Outils Python

cd tools
pip install -r requirements.txt
python robot_gui.py          # GUI complet
python waypoint_editor.py    # Éditeur de missions

Documentation complète : docs/GUIDE_ROBOT.md

PCB KiCad

Le dossier hardware/PCB_Pami_V2/ est auto-suffisant : toutes les empreintes et symboles non-standard sont inclus. Ouvrir directement PCB_Pami.kicad_pro dans KiCad 9.

Hardware

PCB PAMI

Composants principaux

Composant Rôle
ESP32-S3-DevKitC Microcontrôleur principal (dual-core, WiFi)
DRV8833 Driver moteurs DC (2 canaux)
ICM-20948 IMU 9 axes (gyro + accéléro + magnéto)
VL53L0X Capteur distance ToF (détection obstacles)
TCS34725 Capteur couleur (détection ligne/zone)
SSD1306 Afficheur OLED 128x64
MP1584EN Convertisseur DC-DC 5V → 3.3V
SG90 Servomoteur (mécanisme de jeu)

Broches ESP32-S3

Signal GPIO
MOTOR_LEFT_IN1 2
MOTOR_LEFT_IN2 1
MOTOR_RIGHT_IN3 9
MOTOR_RIGHT_IN4 8
ENCODER_LEFT_A/B 11/10
ENCODER_RIGHT_A/B 13/12
I2C SDA/SCL 7/6

API REST

Base URL : http://192.168.4.1/api/v1

Endpoint Méthode Description
/cmd_vel POST Commande vitesse {v, w, timeout_ms}
/motion/stop POST Arrêt immédiat
/pose GET Pose courante {x, y, theta}
/pose/reset POST Réinitialise la pose
/imu/calibrate POST Calibration gyroscope
/ota/update POST Mise à jour firmware OTA
/ws/telemetry WS Télémétrie temps réel (stub, non implémenté)
/ws/logs WS Logs temps réel (stub, non implémenté)

Dev Container

Un environnement de développement Docker est disponible dans .devcontainer/ avec ESP-IDF pré-installé. Compatible VS Code (extension Dev Containers).

Licence

Ce projet est distribué sous licence GNU GPL v3 — les modifications et améliorations doivent rester open source.
Voir LICENSE pour les détails.

About

Open source firmware and PCB for a differential mobile robot (PAMI) based on ESP32-S3 — Coupe de France de Robotique

Resources

License

Stars

Watchers

Forks

Contributors

Languages