[PYTHON] J'ai créé mon propre robot de liaison parallèle (édition logicielle)

Production de robots en liaison parallèle (édition logicielle)

Un mémo pour créer un robot à liaison parallèle, également connu sous le nom de robot delta. Édition douce.

Dans l'édition mécanique, nous avons utilisé des services de CAO 3D et d'impression 3D pour créer le corps principal d'un robot à liaison parallèle composé de trois servomoteurs. Cette fois, j'écrirai sur le logiciel que j'ai créé pour contrôler le servomoteur de Python et le déplacer en tant que robot. fusion_rendering_3.png

Spécifications requises

Lors de la commande d'un robot, la procédure d'apprentissage du mouvement au robot, qui est généralement appelée "apprentissage", est exécutée, puis le robot est automatiquement exécuté comme appris. Il existe trois principaux types d'enseignement. Cette fois, j'ai décidé de mettre en œuvre tout cela.

Types d'enseignement La description
Enseignement en ligne À l'aide de la télécommande qui contrôle le robot, apprenez le mouvement tout en déplaçant réellement le robot.
Enseignement hors ligne Déplacez le robot sur le simulateur pour apprendre le mouvement.
Enseignement direct Touchez le robot à mains nues pour apprendre les mouvements directs.

Structure de classe

C'est un diagramme de classes d'un module écrit en Python. class_diagram.png

Le rôle de chaque classe.

nom de la classe rôle
PS4Controller Une classe qui utilise le module pygame pour acquérir diverses informations de fonctionnement du contrôleur PS4 DualShock4. Les informations sur le stick analogique sont utilisées pour indiquer le mouvement tridimensionnel du robot delta. Le bouton ○ △ □ × permet de changer le mode de visualisation de la zone de dessin du modèle de simulation du robot delta.
AX12Driver dynamixel_Une classe qui contrôle le servomoteur Dynamixel AX12 à l'aide du module sdk. En contrôlant le positionnement des trois moteurs de serveur qui composent le robot Delta, le robot Delta fonctionne vers le haut, le bas, la gauche et la droite.
DeltaModel Une classe qui fournit une logique de calcul pour la cinétique des robots delta et la cinétique inverse.
DeltaBase Une classe abstraite qui fournit les fonctions couramment requises pour contrôler les robots delta. En plus d'initialiser diverses classes, il fournit une fonction pour dessiner en permanence des graphiques 3D de formes de robots à l'aide de matplotlib.
DeltaTeaching Une classe abstraite qui fournit les fonctions couramment requises pour l'enseignement des robots Delta. Les informations de position du servomoteur pendant l'opération d'apprentissage sont enregistrées dans la mémoire et sorties dans un fichier à la fin du programme. Le format de sortie est JSON.
DeltaTeachingOffline Une classe pour l'enseignement hors ligne des robots Delta. À partir des informations de fonctionnement obtenues à partir du PS4Controller, la vitesse de déplacement dans chaque direction axiale est acquise et la position actuelle du robot est calculée. Convertissez les informations de position en informations d'angle du moteur à l'aide de la fonction de calcul de cinématique inverse de DeltaModel. Une fonction héritée de DeltaBase qui trace l'état du robot mis à jour sur un modèle virtuel sur un graphe 3D.
DeltaTeachingOnline Une classe pour l'enseignement en ligne des robots Delta. Le modèle virtuel est contrôlé à l'aide de la fonction héritée de la classe DeltaTeachingOffline, et l'instruction de contrôle de position du servomoteur est donnée au pilote AX12 afin que le modèle virtuel et la machine réelle soient dans le même état.
DeltaTeachingDirect Une classe pour l'enseignement direct des robots Delta. Acquiert les informations de position actuelle (angle) du servomoteur à partir de l'AX12Driver et les enregistre. Dans le même temps, la fonction héritée de DeltaBase reflète les mêmes informations dans le modèle virtuel sur le graphe 3D.
DeltaPlayerOffline Une classe qui exécute automatiquement les robots delta hors ligne. En entrant les données chronologiques des informations de position du servomoteur enregistrées au moment de divers enseignements, le mouvement appris est reproduit avec un modèle virtuel sur un graphique 3D.
DeltaPlayerOnline Une classe qui exécute automatiquement les robots Delta en ligne. Le modèle virtuel est contrôlé à l'aide de la fonction héritée de DeltaPlayerOffline, et l'instruction de contrôle de position du servomoteur est donnée au pilote AX12 afin que le modèle virtuel et la machine réelle soient dans le même état.

Code source

https://github.com/kizitorashiro/deltarobot

Site référencé

C'est le site auquel j'ai fait référence lors de sa mise en œuvre.

article URL
Cinématique inverse des robots delta https://tony-mooori.blogspot.com/2016/09/kinematics.html
Cinématique du robot Delta http://hypertriangle.com/~alex/delta-robot-tutorial/
Cinématique du robot Delta https://github.com/awesomebytes/delta_robot/blob/master/src/delta_kinematics.py
PS4 DualShock4 https://gist.github.com/claymcleod/028386b860b75e4f5472
Spécifications du servomoteur Dynamixel http://support.robotis.com/jp/product/dynamixel/ax_series/dxl_ax_actuator.htm
Pilote de servomoteur Dynamixel https://github.com/ROBOTIS-GIT/DynamixelSDK

Démo d'opération

demo1.png

Enseignement en ligne

Utilisez la manette PS4 comme télécommande pour déplacer le robot Delta. Le modèle virtuel sur le PC et la machine réelle fonctionnent en synchronisation. Le modèle virtuel peut être affiché avec un point de vue différent en passant en mode d'affichage. Vidéo d'enseignement en ligne

Enseignement hors ligne

En utilisant le contrôleur PS4 comme télécommande, vous pouvez contrôler le modèle virtuel du robot Delta et en même temps enregistrer les informations de position sous forme de données de série chronologique. Après cela, le robot rejoue automatiquement le même mouvement. Vidéo pédagogique hors ligne

Enseignement direct

Déplacez le robot en le touchant directement avec vos mains. Chaque fois que la position du robot change, ces informations sont enregistrées sous forme de données chronologiques. Après cela, le robot rejoue automatiquement le même mouvement. Vidéo d'enseignement direct

Recommended Posts

J'ai créé mon propre robot de liaison parallèle (édition logicielle)
J'ai fait mon propre robot à liaison parallèle (édition mécanique)
J'ai fait ma propre langue. (1)
J'ai fait ma propre langue (2)
J'ai fait ma propre AML
J'ai créé ma propre bibliothèque Python
J'ai créé mon propre générateur de site statique primitif
[Python] J'ai créé ma propre bibliothèque qui peut être importée dynamiquement
Python> J'ai créé un code de test pour mon propre fichier externe
J'ai créé mon propre plug-in de filtre pour l'analyse de texte d'Ansible
J'ai créé mon propre outil de recherche à l'aide de l'API Law [Smart Roppo]
Je n'ai ni les compétences ni la force, mais j'ai créé mon propre compilateur
Je crée mon propre cli aws
J'ai fait mon chien "Monaka Bot" avec Line Bot
[J'ai essayé d'utiliser Pythonista 3] Importation de mon propre module
J'ai créé mon propre middleware Django afin de pouvoir accéder aux informations de demande de n'importe où