Vous êtes sur la page 1sur 6

Etude des cas L1 & L2 :

Le code :

import numpy as np

import matplotlib.pyplot 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 np.linspace(0, 2 * np.pi, 18):

for theta2 in np.linspace(0, 2 * np.pi, 18):

dx = - (L1 * np.sin(theta1) - L2 * np.sin(theta1 + theta2)) * dTheta - (L2 * np.sin(theta1 +


theta2)) * dTheta

dy = (L1 * np.cos(theta1) + L2 * np.cos(theta1 + theta2)) * dTheta + (L2 * np.cos(theta1 +


theta2)) * dTheta

errorSum += np.sqrt(np.square(dx) + np.square(dy))

deltaTotal = errorSum / (18 * 18)

error.append(deltaTotal)

x_List.append(L1)

y_List.append(L2)

x = np.array(x_List).reshape(len(l1), len(l2))

y = np.array(y_List).reshape(len(l1), len(l2))
error = np.array(error).reshape(len(l1), len(l2))

plt.figure(figsize=(10, 8))

plt.title("Précision moyenne en fonction des dimensions du Robot", fontsize=16)

plt.xlabel("Le bras L1", fontsize=14)

plt.ylabel("Le bras L2", fontsize=14)

# Créer des contours pour les zones de précision de 0.1 à partir de 1.6

levels = np.arange(1 , error.max() + 0.1, 0.1)

contour = plt.contour(x, y, error, levels=levels, colors='r', linewidths=2)

# Étiquette pour les lignes de contour

plt.clabel(contour, inline=1, fontsize=12, fmt='%1.1f')

# Afficher la dispersion

scatter = plt.scatter(x_List, y_List, c=error, cmap='turbo')

colorbar = plt.colorbar(scatter)

colorbar.set_label('Précision moyenne en millimètre', labelpad=1, y=0.5, rotation=90)

plt.show()

return error

l1 = np.linspace(100, 200, 75)

l2 = np.linspace(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 np.linspace(0, 2 * np.pi, 18):

for theta2 in np.linspace(0, 2 * np.pi, 18):

dx = - (L1 * np.sin(theta1) - L2 * np.sin(theta1 + theta2)) * dTheta - (L2 * np.sin(theta1 +


theta2)) * dTheta

dy = (L1 * np.cos(theta1) + L2 * np.cos(theta1 + theta2)) * dTheta + (L2 * np.cos(theta1 +


theta2)) * dTheta

errorSum += np.sqrt(np.square(dx) + np.square(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.
*********************

plt.figure(figsize=(10, 8))

plt.title("Précision moyenne en fonction des dimensions du Robot", fontsize=16)

plt.xlabel("Le bras L1", fontsize=14)

plt.ylabel("Le bras L2", fontsize=14)

levels = np.arange(1 , error.max() + 0.1, 0.1)

contour = plt.contour(x, y, error, levels=levels, colors='r', linewidths=2)

plt.clabel(contour, inline=1, fontsize=12, fmt='%1.1f')

scatter = plt.scatter(x_List, y_List, c=error, cmap='turbo')

colorbar = plt.colorbar(scatter)

colorbar.set_label('Précision moyenne en millimètre', labelpad=1, y=0.5, rotation=90)

plt.show()

********************

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:

Vous aimerez peut-être aussi