Page Personnelle de Vincent Kerhoas
Vincent Kerhoas
Enseignant du Supérieur
Professeur Agrégé
Page Personnelle de Vincent Kerhoas

INITIATION A LA ROBOTIQUE

L’objectif est d’aborder, à l’aide d’une application de robotique mobile, les notions élémentaires de programmation.
C’est également l’occasion de présenter les différentes thématiques étudiées dans une école d’ingénieurs de type généraliste.


Présentation du Système

La communication entre le microcontrôleur et le servomoteur dynamixel se fait via une liaison de type RS232.
Le périphérique UART6 est alors utilisé côté microcontrôleur pour transmettre un message à destination du servomoteur.


Test du programme

Envoi d’un caractère avec un terminal série

PROJET SOURCE

Télécharger le fichier suivant, à extraire dans le répertoire Documents.


WORKSPACE_F411_DXL_STM32CUBEIDE


Dans un terminal, taper :

$ stm32cubeide

à l’ouverture, choisir : workspace : WORKSPACE_F411_DXL_STM32CUBEIDE

Compilation du projet : Project –> build All ( CTRL+B )

A l’issue de la compilation, s’il n’y a pas d’erreur de syntaxe, il se crée un exécutable .elf, compréhensible par le microcontrôleur

Debugging du projet : Debug panel :

appuyer ensuite sur le ‘bug button’ et choisir …Debug

L’exécutable (*.elf) devrait alors être chargé dans la cible.

Il faut ensuite lancer le programme (run) en appuyant sur F8.

Pour observer des données, il faut arrêtre le programme avec le debogueur.

Pour ajouter des points d’arrêt ( breakpoint ), double cliquer dans la marge. Les variables sont observables dans la fenêtre ‘variable’ ou ‘watch expression’ ( window -> show view -> Expressions ).

TERMINAL SERIE

Branchons l’adaptateur USB zigbee sur le PC.
Il se crée un fichier /dev/ttyUSB0

Dans un terminal :

Afin de tester le programme :

Envoi d’un caractère avec une IHM en python

Nous remplaçons ici le terminal série par un programme python afin d’avoir un interface plus conviviale.

sendOrder.py

Pour lancer le programme, dans un terminal :


Modification du Programme

On souhaite désormais pouvoir piloter le robot dans tous les sens ( avant, arrière, gauche, droite, stop ).

Modifier les programmes microcontroleur et python pour intégrer ces modifications.

REMARQUE : Chaque moteur a un identifiant ( 1 et 2 ).
si je veux modifier la vitesse de rotation du moteur 1, j’écris : dxl_setGoalVelocity(1, 140);
pour le moteur 2 : dxl_setGoalVelocity(2, 140);.

Ecriture du programme en mémoire Flash

Pour que notre programme s’exécute dans notre microcontrôleur à chaque mise sous tension, il faut l’écrire en mémoire flash.
L’exécutable est :
/nucleoF411_getting_started/Debug/nucleoF411_getting_started.elf

Il faut donc se placer avec le navigateur de fichiers dans le réperoire WORKSPACE_F411_DXL_STM32CUBEIDE/nucleoF411_getting_started/Debug, ouvrir un terminal dans ce répertoire, et taper :