Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Cinématique directe d’un bras à deux articulations

Après cette leçon: Je peux calculer où se trouve la main d’un bras à deux articulations.

Leçon de 60 min1 commandeLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Comment calculer où est la main du bras ?

La cinématique directe calcule la position de la main d’un bras à partir de ses angles d’articulation. C’est le calcul de base de toute simulation de bras de robot.

Une machine qui trie des colis doit savoir où se trouve sa pince avant de bouger. Ici, le bras est simulé et plat, avec deux segments.

À la fin de cette leçon

Remarque

Je peux calculer où se trouve la main d’un bras à deux articulations.

Mots clés

MotCe que ça veut direExemple
Articulationle point où un segment tourne par rapport au précédent
Segmentune barre rigide entre deux articulationsL1 = 30
Angle d’articulationde combien une articulation est tournée
Mainl’extrémité du dernier segment
Cinématique directetrouver la main à partir des angles
Portéela distance que la main peut atteindre depuis la base

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Chaque segment prolonge le précédent

Le bras a une base fixe en (0, 0). Le premier segment, de longueur L1, tourne de l’angle t1 depuis l’axe des x. Son bout est le coude.

Le second segment, de longueur L2, part du coude. Sa direction vaut t1 plus t2, car t2 se mesure depuis le premier segment. Son bout est la main.

Exemple travaillé : quatre poses du bras

t1t2CoudeMain
00(30 ; 0)(50 ; 0)
090(30 ; 0)(30 ; 20)
90-90(0 ; 30)(20 ; 30)
3060(25,98 ; 15)(25,98 ; 35)

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La main pour t1 = 90 et t2 = -90

Commande
docker exec jupyter python3 -c "import numpy as np; t1=np.radians(90); t2=np.radians(-90); print(round(float(30*np.cos(t1)+20*np.cos(t1+t2)), 2), round(float(30*np.sin(t1)+20*np.sin(t1+t2)), 2))"

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

La main s’obtient en additionnant deux déplacements

La position de la main est la somme de deux déplacements, un par segment. En x : L1 cos(t1) + L2 cos(t1 + t2). En y : L1 sin(t1) + L2 sin(t1 + t2).

On calcule d’abord le coude, puis on lui ajoute le second déplacement. Le code ci-dessous suit cet ordre.

Le coude puis la main en Python

Code: python
import math

L1 = 30
L2 = 20
t1 = 30
t2 = 60

a1 = math.radians(t1)
a2 = math.radians(t1 + t2)
coude_x = L1 * math.cos(a1)
coude_y = L1 * math.sin(a1)
main_x = coude_x + L2 * math.cos(a2)
main_y = coude_y + L2 * math.sin(a2)
print("coude :", round(coude_x, 2), round(coude_y, 2))
print("main :", round(main_x, 2), round(main_y, 2))
# Passez t2 à -60 puis relancez.

Une erreur fréquente

Attention

Beaucoup calculent le second segment avec t2 seul. Or t2 se mesure depuis le premier segment. La direction du second segment est t1 plus t2 : c’est cette somme qui entre dans le cosinus.

La portée limite les positions de la main

La main ne peut pas aller n’importe où. Bras tendu, elle est à L1 plus L2 de la base, soit 50 cm. Bras replié, elle est à la différence des longueurs, soit 10 cm.

Tous les points entre ces deux distances sont atteignables. Les autres ne le sont pas, ce qui compte pour la leçon suivante.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.