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

Vitesse et jacobienne d’un bras robot

Après cette leçon: Je peux dire comment les vitesses des articulations se transforment en vitesse de la main.

Leçon de 70 min2 commandesLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Quelle vitesse la main prend-elle ?

La jacobienne est un tableau de quatre nombres qui relie les vitesses des articulations à la vitesse de la main. Elle répond à une question simple : si je tourne chaque articulation à telle vitesse, à quelle vitesse la main bouge-t-elle ?

Ce calcul sert à limiter la vitesse d’un bras simulé, et à repérer les poses où il se bloque.

À la fin de cette leçon

Remarque

Je peux dire comment les vitesses des articulations se transforment en vitesse de la main.

Mots clés

MotCe que ça veut direExemple
Vitesse articulairela vitesse de rotation d’une articulation10 degrés par seconde
Jacobiennele tableau qui convertit les vitesses articulaires en vitesse de la main
Différence finieune pente estimée en bougeant un peu une variable
Pasle petit changement d’angle utilisé pour l’estimerh = 0.01
Singularitéune pose où la main ne peut plus aller dans toutes les directions

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

Une pente estimée en bougeant un angle

On veut savoir de combien la main bouge quand t1 augmente d’un degré. On ne connaît pas la formule, mais on sait calculer la main.

On la calcule à t1, puis à t1 plus un petit pas h. On divise l’écart de position par h. C’est une différence finie, une pente en centimètres par degré.

Exemple travaillé : une pose en équerre

Angle bougéVariation de xVariation de y
t1, de 0,01 degré-0,3491 cm par degré0,5236 cm par degré
t2, de 0,01 degré-0,3491 cm par degré0 cm par degré

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

La pente de x selon t1

Commande
docker exec jupyter python3 -c "import numpy as np; f=lambda t: 30*np.cos(np.radians(t))+20*np.cos(np.radians(t+90)); h=0.01; print(round(float((f(h)-f(0))/h), 4))"

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 première colonne en Python

Code: python
import math

L1 = 30
L2 = 20

def position_main(t1, t2):
    a1 = math.radians(t1)
    a2 = math.radians(t1 + t2)
    return [L1 * math.cos(a1) + L2 * math.cos(a2), L1 * math.sin(a1) + L2 * math.sin(a2)]

h = 0.01
base = position_main(0, 90)
apres = position_main(h, 90)
dx = (apres[0] - base[0]) / h
dy = (apres[1] - base[1]) / h
print("dx/dt1 :", round(dx, 4))
print("dy/dt1 :", round(dy, 4))
# Estimez ensuite la colonne de t2.

La jacobienne regroupe quatre pentes

La jacobienne range les quatre pentes dans un tableau : une colonne par articulation, une ligne pour x et une pour y.

Pour avoir la vitesse de la main, on multiplie : vx = J11 × w1 + J12 × w2, puis vy = J21 × w1 + J22 × w2. Ici w1 et w2 sont les vitesses articulaires en degrés par seconde.

Exemple travaillé : la vitesse de la main

w1w2vxvy
100-3,495,24
010-3,490
10-1005,24

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

La vitesse pour w1 = 10 et w2 = 0

Commande
docker exec jupyter python3 -c "import numpy as np; print(np.round(np.array([[-0.349, -0.349], [0.5236, 0]]) @ np.array([10, 0]), 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.

Une erreur fréquente

Attention

Beaucoup croient que plus le pas h est petit, meilleure est l’estimation. C’est faux : trop petit, les arrondis de l’ordinateur dominent. Avec h égal à 1, on trouve -0,3536 ; avec 0,01, -0,3491 ; avec 1e-12, -0,3446.

Au bras tendu, la main perd une direction

Bras tendu, les deux colonnes de la jacobienne pointent dans la même direction, celle de la perpendiculaire au bras. La main ne peut plus avancer le long du bras, quelle que soit la vitesse des moteurs.

C’est une singularité. Le déterminant de la jacobienne, un nombre calculé avec ses quatre cases, est alors presque nul.

À 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.