Etude des cas L1 & L2 :
Le code :
import numpy as np
import [Link] as plt
def averageAccuracy(l1, l2):
dTheta = 0.006
y_List = []
x_List = []
error = []
for L1 in l1:
for L2 in l2:
errorSum = 0
for theta1 in [Link](0, 2 * [Link], 18):
for theta2 in [Link](0, 2 * [Link], 18):
dx = - (L1 * [Link](theta1) - L2 * [Link](theta1 + theta2)) * dTheta - (L2 * [Link](theta1 +
theta2)) * dTheta
dy = (L1 * [Link](theta1) + L2 * [Link](theta1 + theta2)) * dTheta + (L2 * [Link](theta1 +
theta2)) * dTheta
errorSum += [Link]([Link](dx) + [Link](dy))
deltaTotal = errorSum / (18 * 18)
[Link](deltaTotal)
x_List.append(L1)
y_List.append(L2)
x = [Link](x_List).reshape(len(l1), len(l2))
y = [Link](y_List).reshape(len(l1), len(l2))
error = [Link](error).reshape(len(l1), len(l2))
[Link](figsize=(10, 8))
[Link]("Précision moyenne en fonction des dimensions du Robot", fontsize=16)
[Link]("Le bras L1", fontsize=14)
[Link]("Le bras L2", fontsize=14)
# Créer des contours pour les zones de précision de 0.1 à partir de 1.6
levels = [Link](1 , [Link]() + 0.1, 0.1)
contour = [Link](x, y, error, levels=levels, colors='r', linewidths=2)
# Étiquette pour les lignes de contour
[Link](contour, inline=1, fontsize=12, fmt='%1.1f')
# Afficher la dispersion
scatter = [Link](x_List, y_List, c=error, cmap='turbo')
colorbar = [Link](scatter)
colorbar.set_label('Précision moyenne en millimètre', labelpad=1, y=0.5, rotation=90)
[Link]()
return error
l1 = [Link](100, 200, 75)
l2 = [Link](100, 200, 75)
averageAccuracy(l1, l2)
Ce code évalue la précision moyenne d'un robot SCARA en fonction des dimensions de ses bras (L1 et
L2). Il utilise des boucles pour parcourir différentes combinaisons de dimensions, calcule la précision
pour chaque combinaison en simulant des déplacements angulaires, et visualise les résultats sous forme
de contours et de dispersion. Cette évaluation fournit des informations cruciales sur la relation entre les
dimensions du robot et sa précision, aidant ainsi à choisir les dimensions optimales pour le robot SCARA
en fonction des exigences de précision du projet.
Paramètres et Initialisation :
dTheta est la variation angulaire utilisée dans les calculs.
y_List, x_List, et error sont des listes qui stockeront respectivement les valeurs de L2, L1, et la précision
moyenne.
Le fonctionnement detaille du code :
Importation des bibliothèques: Le code utilise les bibliothèques NumPy et Matplotlib pour effectuer des
calculs numériques et créer des graphiques.
Définition de la fonction averageAccuracy: La fonction prend deux paramètres, l1 et l2, représentant les
dimensions du bras du robot, et évalue la précision moyenne du robot en fonction de ces dimensions.
Initialisation des listes: Le code initialise des listes vides (x_List, y_List, error) pour stocker les résultats
des calculs.
Boucles pour évaluer la précision: Le code utilise des boucles pour parcourir différentes valeurs de L1 et
L2 et calculer la précision moyenne du robot en fonction de ces dimensions.
for theta1 in [Link](0, 2 * [Link], 18):
for theta2 in [Link](0, 2 * [Link], 18):
dx = - (L1 * [Link](theta1) - L2 * [Link](theta1 + theta2)) * dTheta - (L2 * [Link](theta1 +
theta2)) * dTheta
dy = (L1 * [Link](theta1) + L2 * [Link](theta1 + theta2)) * dTheta + (L2 * [Link](theta1 +
theta2)) * dTheta
errorSum += [Link]([Link](dx) + [Link](dy))
Calcul de l'erreur moyenne: Le code utilise une double boucle pour évaluer l'erreur moyenne en
utilisant des formules mathématiques spécifiques liées aux coordonnées du robot.
Calcul de la précision moyenne: Le code calcule la précision moyenne en divisant la somme des erreurs
par le nombre total de points évalués.
Stockage des résultats dans des listes: Les résultats des calculs sont stockés dans des listes pour une
utilisation ultérieure.
*********************
[Link](figsize=(10, 8))
[Link]("Précision moyenne en fonction des dimensions du Robot", fontsize=16)
[Link]("Le bras L1", fontsize=14)
[Link]("Le bras L2", fontsize=14)
levels = [Link](1 , [Link]() + 0.1, 0.1)
contour = [Link](x, y, error, levels=levels, colors='r', linewidths=2)
[Link](contour, inline=1, fontsize=12, fmt='%1.1f')
scatter = [Link](x_List, y_List, c=error, cmap='turbo')
colorbar = [Link](scatter)
colorbar.set_label('Précision moyenne en millimètre', labelpad=1, y=0.5, rotation=90)
[Link]()
********************
Cette fonction permet d'évaluer la précision moyenne du robot en fonction de différentes dimensions de
bras et affiche ces résultats graphiquement.
Resultat: