script_302cvmn_302.py

49,00 

Simuler et visualiser le mouvement d’un bras articulé via l’algorithme de cinématique inverse FABRIK.

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

🔷 INFORMATIONS GÉNÉRALES

Champ Détail

Nom du script script_302cvmn_302.py

Version 1.0.0

Date de création 09/03/2026

Auteur / Demandeur IA Générée (Gemini)

Objectif principal Simuler et visualiser le mouvement d’un bras articulé via l’algorithme de cinématique inverse FABRIK.

🎯 DESCRIPTION FONCTIONNELLE

📌 Que fait ce script ?

Ce script implémente un solveur de cinématique inverse utilisant l’algorithme FABRIK (Forward And Backward Reaching Inverse Kinematics). Il calcule la position des articulations d’un bras robotisé pour que son extrémité atteigne une cible en mouvement circulaire, le tout visualisé par une animation en temps réel.

📌 Problème résolu

Il résout le problème de la Cinématique Inverse (IK) : déterminer les angles ou positions des segments intermédiaires d’une chaîne cinématique pour atteindre des coordonnées spécifiques (x,y) de manière efficace et sans calculs trigonométriques complexes et coûteux.

⚙️ SPÉCIFICATIONS TECHNIQUES

🐍 Environnement

Élément Valeur

Version Python 3.x

OS cible Tous (Windows / Linux / MacOS)

Mode d’exécution Interface Graphique (Matplotlib Animation)

📦 Dépendances / Librairies

Librairies standard (built-in) : Aucune.

Librairies externes :

numpy : Calculs matriciels et vectoriels.

matplotlib : Génération du graphique et de l’animation.

📥 ENTRÉES (INPUTS)

# Nom Type Obligatoire Description Exemple

1 joint_lengths list ✅ Oui Longueurs des segments du bras. [2.0, 1.5, 1.0]

2 origin tuple ❌ Non Point d’ancrage du bras (x, y). (0, 0)

3 target array ✅ Oui Coordonnées de la cible à atteindre. [2.5, 1.2]

📤 SORTIES (OUTPUTS)

# Nom Type Description Exemple

1 self.joints ndarray Coordonnées (x, y) de chaque articulation. [[0,0], [2,0], …]

2 ani FuncAnimation Objet d’animation visuelle affiché à l’écran. Fenêtre interactive

🧱 STRUCTURE DU SCRIPT

script_302cvmn_302.py

├── 📌 IMPORTS (numpy, matplotlib)

├── 📌 CLASSE FABRIKSolver (Logique métier)

│ ├── __init__() → Initialisation du bras

│ └── solve() → Algorithme IK (Forward/Backward)

├── 📌 SIMULATION & VISUALISATION

│ ├── update() → Mise à jour de la cible et du bras par frame

│ └── MAIN → Initialisation FuncAnimation et plt.show()

🔧 Détail des fonctions principales

Fonction Paramètres Retour Rôle

solve(target) target: list/array None Met à jour les positions self.joints pour atteindre la cible.

update(frame) frame: int tuple Calcule la nouvelle position de la cible et rafraîchit le graphique.

🔄 LOGIQUE / ALGORITHME

Vérification de portée : Si la cible est plus loin que la somme des segments, le bras s’étend en ligne droite vers elle.

Itération FABRIK (si à portée) :

ÉTAPE 1 (Backward) : On place l’effecteur final sur la cible, puis on réaligne chaque segment vers l’origine.

ÉTAPE 2 (Forward) : On replace la base à l’origine, puis on réaligne chaque segment vers la cible.

Condition d’arrêt : L’algorithme s’arrête si l’extrémité est assez proche de la cible (tolerance) ou si le nombre max_iter est atteint.

🚨 GESTION DES ERREURS

Division par zéro : Le script ne gère pas explicitement le cas où deux articulations sont exactement au même endroit (vecteur nul lors de la normalisation de la direction).

Convergence : Limité à 10 itérations par frame pour garantir la performance au détriment d’une précision absolue.

✅ CONTRAINTES & RÈGLES MÉTIER

Règle 1 : La longueur des segments est fixe (corps rigides).

Règle 2 : Le point d’origine est fixe (sauf si réinitialisé).

Règle 3 : Le mouvement est restreint au plan 2D.

🧪 TESTS ATTENDUS

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

1 Cible hors de portée target = [10, 10] Bras tendu au maximum vers la cible ⬜ À tester

2 Cible sur l’origine target = [0, 0] Bras replié sur lui-même ⬜ À tester

3 Segments de longueur nulle lengths = [0] Risque d’erreur de calcul ⬜ À tester

📝 EXEMPLE D’UTILISATION

▶️ Lancement direct

Bash

python script_302cvmn_302.py

(Une fenêtre Matplotlib s’ouvrira montrant un bras articulé vert suivant un point rouge circulant autour de lui.)

Avis

Il n’y a pas encore d’avis.

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

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