🔷 INFORMATIONS GÉNÉRALES
Champ Détail
Nom du script script_303cvmn_303.py
Version 1.0.0
Date de création 09/03/2026
Auteur / Demandeur IA Généré (Gemini)
Objectif principal Simulation interactive d’un bras robotique industriel articulé utilisant l’algorithme FABRIK pour l’IK (Cinématique Inverse) et intégrant des calculs de stabilité physique.
🎯 DESCRIPTION FONCTIONNELLE
📌 Que fait ce script ?
Le script simule un bras robotique à segments multiples qui suit le curseur de la souris en temps réel. Il gère les contraintes angulaires des joints (épaule, coude, poignet), calcule le centre de gravité de l’ensemble et évalue le couple exercé sur la base. Une charge lourde peut être activée pour tester la stabilité du robot.
📌 Problème résolu
Il permet de visualiser l’impact d’une charge utile sur la mécanique d’un robot : calcul du moment de force (torque) et vérification du basculement (stabilité du CoG) tout en maintenant une trajectoire fluide via une résolution cinématique complexe.
⚙️ SPÉCIFICATIONS TECHNIQUES
🐍 Environnement
Élément Valeur
Version Python 3.x
OS cible Tous (Windows / Linux / MacOS)
Mode d’exécution Interface Graphique (GUI)
📦 Dépendances / Librairies
Standard : math
Externes : * pygame (Rendu graphique et événements)
numpy (Calculs mathématiques et vecteurs)
📥 ENTRÉES (INPUTS)
# Nom Type Obligatoire Description Exemple
1 mouse_pos Vector2 ✅ Oui Position du curseur pour la cible (x, y)
2 MouseButtonDown Event ❌ Non Clic gauche pour activer/désactiver la charge Event(LeftClick)
📤 SORTIES (OUTPUTS)
# Nom Type Description Exemple
1 cog Vector2 Position du centre de gravité (610.5, 550.2)
2 torque float Couple calculé à la base en N.m 1250.0
3 is_stable bool État de l’équilibre au sol True/False
🧱 STRUCTURE DU SCRIPT
script_303cvmn_303.py
├── 📌 IMPORTS (pygame, numpy, math)
├── 📌 CLASSES
├── Joint : Stocke position et limites angulaires.
├── HeavyRobotChain : Cœur algorithmique (IK + Physique).
└── Simulation : Boucle principale et rendu.
└── 📌 MAIN : Point d’entrée lançant la simulation.
🔧 Détail des fonctions principales
Fonction Paramètres Retour Rôle
solve(target) target: Vector2 bool Algorithme FABRIK pour positionner les joints.
constrain_angle() idx, prev, next None Applique les limites articulaires (min/max).
calculate_physics() Aucun tuple Calcule CoG, Torque et Stabilité.
run() Aucun None Gère la boucle de rendu et les entrées.
🔄 LOGIQUE / ALGORITHME
Saisie : Capture de la position cible (souris).
Lissage : Utilisation d’un Lerp pour simuler l’inertie du bras (vitesse réduite si chargé).
Résolution IK : L’algorithme FABRIK itère (aller-retour) pour aligner les segments vers la cible.
Contraintes : Application des limites angulaires industrielles à chaque étape du solver.
Physique : * Calcul du poids total et du levier horizontal.
Comparaison du couple (Torque=F×d) au seuil critique (4500N.m).
Rendu : Affichage du robot en blanc (OK) ou rouge (Alerte/Surcharge).
✅ CONTRAINTES & RÈGLES MÉTIER
Règle 1 : La base est fixe au point (600, 700).
Règle 2 : Chaque segment a une masse fixe de 5.0 kg.
Règle 3 : La charge utile (40.0 kg) modifie instantanément l’inertie du système.
Règle 4 : Si le CoG sort de la base_width (150px), le robot est considéré comme instable.
🧪 TESTS ATTENDUS
# Cas de test Entrée Résultat attendu Statut
1 Cas nominal Souris à (300, 300) Le bras suit fluidement ⬜ À tester
2 Surcharge Charge active + bras tendu Alerte « SURCHARGE » et CoG rouge ⬜ À tester
3 Portée max Souris hors limite Le bras reste tendu vers la cible ⬜ À tester
📝 EXEMPLE D’UTILISATION
▶️ Lancement en ligne de commande
Bash
python script_303cvmn_303.py
📋 Contrôles
Mouvement souris : Pilote l’effecteur du robot.
Clic gauche : Attrape ou relâche un bloc de 40 kg (simule un transport de charge).



Avis
Il n’y a pas encore d’avis.