script_300cvmn_300.py

49,00 

Simulation interactive d’un bras robotique à 3 segments utilisant l’algorithme cinématique inverse FABRIK.

UGS : script_300cvmn_300.py Catégorie : Étiquette :

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_300cvmn_300.py

Version 1.0.0

Date de création 09/03/2026

Auteur / Demandeur IA Généré (Basé sur le code fourni)

Objectif principal Simulation interactive d’un bras robotique à 3 segments utilisant l’algorithme cinématique inverse FABRIK.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script crée une interface graphique avec Pygame affichant un bras articulé qui suit dynamiquement le curseur de la souris. Il calcule en temps réel la position des segments et les angles relatifs (servomoteurs) nécessaires pour atteindre la cible, tout en gérant les limites de portée du bras.

📌 Problème résolu

Il résout le problème de la Cinématique Inverse (IK) : déterminer les angles de chaque articulation pour que l’effecteur terminal (le bout du bras) atteigne une coordonnée (x,y) spécifique dans un espace 2D.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.x

OS cible Windows / Linux / MacOS

Mode d’exécution Interface Graphique (GUI)

📦 Dépendances / Librairies

Standard : math

Externes : pygame, numpy

📥 ENTRÉES (INPUTS)

# Nom Type Obligatoire Description Exemple

1 mouse_pos tuple(int, int) ✅ Oui Coordonnées X, Y du curseur de la souris (400, 300)

2 SEGMENT_LENGTHS list[int] ✅ Oui Longueurs respectives des segments [120, 100, 80]

📤 SORTIES (OUTPUTS)

# Nom Type Description Exemple

1 self.angles list[float] Liste des angles relatifs par joint en degrés [45.0, -10.2, 15.5]

2 Affichage Visuel Rendu graphique du bras et des données UI Fenêtre Pygame

🧱 STRUCTURE DU SCRIPT

script_300cvmn_300.py

📌 IMPORTS : pygame, numpy, math.

📌 CONFIGURATION : Définition des dimensions, longueurs des segments et limites d’angles.

📌 CLASSE RobotArm :

__init__() : Initialisation de la position et des joints.

solve() : Logique de cinématique inverse (FABRIK).

calculate_servo_angles() : Conversion des positions spatiales en angles de rotation.

draw() : Moteur de rendu graphique.

📌 MAIN : Boucle de jeu Pygame (gestion des événements, mise à jour, affichage).

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

solve(target_pos) target_pos (np.array) None Applique l’algorithme FABRIK pour ajuster les points des segments.

calculate_servo_angles() Aucun None Calcule les angles relatifs entre segments pour simuler des servomoteurs.

draw(screen, font) Surface, Font None Dessine le bras, les joints et affiche les angles M0, M1, M2.

🔄 LOGIQUE / ALGORITHME

Vérification de portée : Si la cible est trop loin, le bras s’étend au maximum en ligne droite.

Algorithme FABRIK (15 itérations) :

Backward : On place le dernier point sur la cible, puis on réajuste les points précédents vers l’origine.

Forward : On replace le premier point à l’origine, puis on réajuste les points suivants vers la cible.

Calcul d’angles : Calcul de l’angle entre les vecteurs de chaque segment via atan2 pour obtenir les rotations relatives.

🚨 GESTION DES ERREURS

Cas d’erreur Type d’exception Comportement attendu

Cible hors de portée Logique interne Le bras pointe vers la cible sans se détacher de sa base (extension max).

Dépendance manquante ModuleNotFoundError Le script s’arrête en demandant l’installation de pygame ou numpy.

✅ CONTRAINTES & RÈGLES MÉTIER

Règle 1 : L’origine du bras est fixe (base du robot).

Règle 2 : Les segments ont une longueur rigide et prédéfinie.

Règle 3 : Feedback visuel (Changement de couleur des joints si l’angle relatif dépasse 120°).

🧪 TESTS ATTENDUS

# Cas de test Entrée Résultat attendu Statut

1 Cas nominal Souris au centre Le bras suit fluidement le curseur. ⬜ À tester

2 Hors de portée Souris à (0,0) Le bras reste tendu vers le coin supérieur gauche. ⬜ À tester

3 Mouvement rapide Déplacement brusque L’IK se stabilise instantanément (60 FPS). ⬜ À tester

📝 EXEMPLE D’UTILISATION

▶️ Lancement

Bash

# Installation des dépendances

pip install pygame numpy

# Lancement du script

python script_300cvmn_300.py

📋 Sortie visuelle attendue

Une fenêtre noire (800×600).

Un bras robotique gris avec des joints circulaires.

Des étiquettes type M0: 45° attachées à chaque joint.

Un effecteur terminal jaune sur la pointe.

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “script_300cvmn_300.py”

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *