top of page

Projet 2015-2016

Ce projet à pour but de créer une interface visuelle qui rend compte du mouvement du robot avec les contraintes physiques (gravité, colisions). Ceci est réalisé grâce au moteur physique Bullet.

 

Encadrant du projet : Lionel Reveret

Équipe : Ilyes Kacher / Thomas Sajot

Prérequis : programmation C++

Table des matières

Table des matières
Gestion de projet

     Nous avons commencé ce projet en se répartissant les différentes tâches, à savoir l'analyse du robot, la compréhension du travail précédemment effectué, la simulation physique et le rendu. Il a ainsi été possible de travailler en parallèle tout en aidant l'autre si besoin (beaucoup de peer-programming). Nous avons donc souvent travailler côte-à-côte, deux fois par semaine pendant des sessions de deux à trois heures, et le reste du temps seul en communiquant par mail. Une session sur deux, nous rencontrions notre encadrant pour lui demander conseil, nous donner des cours sur la physique dans Bullet ou des conseils en général. Un historique de nos avancés est mis à jour à chaque session, qui liste les tâches accomplies, en cours et les problèmes rencontrés, en parallèle avec l'application Trello. Cette méthode de travail est très efficace et nous évite de perdre du temps. La décomposition des tâches en sous-tâches donnent une meilleure vision du projet et nous permet de fixer des objectifs atteignables rapidement.

 

     Tâches réalisées : 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

     Procédure d'installation: 

Visual Studio est requis pour toutes ces installations, une version gratuite est disponible : Visual Studio Express

Tous les documents nécéssaire sont dans l'archive du rendu. Pour l'obtenir merci de contacter Lionel Reveret.

Installation sous windows. 

 

Installation Simulateur_Physique:

  1. Il faut commencer par installer Bullet physics engine :Télécharger l’archive

  2. Extraire l’archive

  3. Dans le répertoire bullet3-2.83.7/examples remplacer les répertoires ExampleBrowser, DynamicControlDemo par ceux fourni dans l’archive Simulateur_Physique et ajouter le répertoire Humanoid de l’archive

  4. Installer CMake : https://cmake.org/install/

  5. Dans le répertoire bullet3-2.83.7/build3 lancer le script vs2010.bat

  6. Lancer la solution bullet3-2.83.7/build3/vs2010/0_BulletSolution.sln

  7. Une fois dans le projet chargé dans l’explorateur de solution

    1. Clic droit sur App_ExampleBrowser

    2. Definir comme projet de démarrage

    3. App_ExampleBrowser -> examples

    4. Clic doit Ajouter -> Nouveau Filtre (avec comme nom Humanoid)

    5. Sur Humanoid Clic droit Ajouter -> Element existant

    6. Chercher les fichiers Humanoid.h et Humanoid.cpp dans le répertoire bullet3-2.83.7/examples/Humanoid

  8. Compiler en mode release

  9. Lancer la solution (Menu Deboguer->Executer sans débogage

  10. Une fenêtre graphique ce lance

    1. L’exemple de l’araignée est dans API -> Motor Demo

    2. La simulation physique du robot est dans  API ->Humanoid Demo

Le simulateur est opérationnel !!

 

ConsoleBioloid

  1. Dans le répertoire ConsoleBioloid/TestBioloid lancer le projet TestBioloid (fichier de type VC++ Project).

  2. Compiler et lancer

 

ViewerBoiloid

  1. Dans le répertoire ViewerBioloid/TestViewer lancer le projet TestViewer (fichier de type VC++ Project).

  2. Compiler et lancer

 

    Utilisation de ConsoleBioloid & ViewerBioloid     

Ces deux projets sont inter-dépendent il faut lancer l'exécution de ces deux projets pour utiliser le simulateur cinématique. ConsoleBioloid permet d'envoyer des commandes de déplacement (cf help dans cette console) et ViewerBioloid permet de voir le déplacement associé sur un modèle 3D du robot. Pour tester le fonctionnement de ces deux projets il faut les lancer et utiliser la commande test dans la console, le modèle du robot sera animé dans la vue associée.

 

Bon courage pour l'installation. Suivez-bien les instructions, internet peut-être utile pour vous débloquer. 

Introduction

Un robot autonome, à l'apparence humaine, capable de s'adapter à son environnement pour atteindre son objectif est considéré comme un Robot Humanoïde. Cette spécificité différencie l'Androïde des autres types de robots. Au cours des dernières années, beaucoup de progrès ont été réalisés dans le développement des robots Humanoïdes mais bien des choses restent à faire. Bien que les Humanoïdes actuels ne sont pas suffisamment intelligents ou autonomes, ils font tout de même partie des accomplissements importants de l'humanité. Ces dernières années, les fabricants font différents types de plates-formes humanoïdes qui sont plus accessibles au grand public.

      À l'heure actuelle, les systèmes humanoïdes les plus avancés sont conçus avec la reconnaissance vocale, visuelle et gestuelle. Les systèmes de déplacement dynamique avancée rendent les robots capables de marcher, courir, monter les escaliers et même d'éviter des obstacles. Afin de mieux comprendre le fonctionnement du robot, il est primordial de simuler les impacts de leurs mouvements. C'est une sécurité pour le robot, car la simulation donne une idée générale sur le comportement du robot sans avoir à le tester dans la réalité. L'objectif de ce projet est de concevoir une simulation physique simple du robot humanoïd Bioloid.

Travail à l'origine

Le point de départ de ce projet était de reprendre un projet précédent et de le compléter avec une simulation physique du déplacement du robot. Le projet initial contenait le contrôleur cinématique on pouvait ainsi réaliser des tests de déplacement en 3D avant de les faire passer sur le robot. Cependant ces tests cinématiques ne sont pas suffisant car ils ne prennent pas en compte la gravité, rendant impossible le test de chute du robot.

Description du robot Bioloid

     Le kit Robotique BIOLOID est un produit de Robotics, un fabricant coréen, utilisant des servo-contrôleurs précis qui fournissent des informations sur le courant, la tension, la position et de détection de température. Il dispose d'une carte contrôleur bien documentée et un protocole de commande d'asservissement. Le robot a 18 degrés de libertés qui sont contrôlés par des actionneurs haute puissance AX-12. La figure 1 montre la répartition des servo-moteurs dans le robot, et la Figure 2 représente les axes de rotations.   

     La simulation physique se base sur des mesures du robot. La première étape du projet passe donc par le prélèvement des informations sur le poids et la forme des pièces les plus importantes du robot. On néglige l'influence du poids des vis, des cables, et des pièces de petites tailles.

     - Servo-moteurs : 55 g 

     - Piece en plastic 1 : 7g 

     - Piece en plastic 2 : 15g

 

 

Figure 2 : axes de roations des servo-moteurs

Figure 1 : répartition des servo-moteurs

Du point de vue software, on a appris à utiliser le kit logiciel fournis avec le robot. Le fichier remise à état d'usine est utile pour remettre le software du robot dans une configuration stable (voir les liens utiles). Un fichier checkmotor a été crée pour vérifier le bon fonctionnement du moteur. ATTENTION: tenir le robot lors du teste pour éviter une chute.

Modélisation du corps sous Bullet

     Avant de faire la modélisation du robot, nous avons pris en mains Bullet en manipulant leurs exemples déjà existant. En particulier, nous nous sommes donné comme objectif de faire avancer une araignée (Example/MotorDemo/ dans la bibliothèque Bullet). Ce travail nous a familiarisé avec la notion d'articulation (joints) et de pivot (hinge), mais aussi de la manière dont bougent les membres les uns par rapport aux autres.

En s'inspirant du mouvement des araignées (les vrais, bien vivantes) et en l'adaptant à un corps sphérique, nous obtenons le déplacement de la Figure 3.   CF code :  App_ExampleBrowser/DynamicControlDemo/MotorDemo.cpp @ setmotortargets()

 

 

Figure 3 : vidéo déplacement d'une araignée

Corps fixé dans le repère monde

Corps Libre

     En se basant sur l'exemple de l'araignée de Bullet et un modèle d'humanoïde, le RagDoll, nous avons construis un modèle 3D du robot Bioloid. Cependant, la difficulté principale a été de choisir quels types de contraintes doivent être utilisés. Dans Bullet Physics, il existe trois contraintes qui gèrent les axes de rotations : Hinge / Point2Point / ConeTwist.

  • Hinge ne possède qu'un degrés de liberté, c'est un axe de rotation, il peut être "motoriser" ce qui signifie dans le jargon de Bullet que l'on peut engendrer un mouvement selon cette axe entre deux objets liés par cette contrainte.

  • Point2Point est la contrainte entre un point et un plan, il a ces trois axes de rotation libre (lacet, tangage et roulis). Cette contrainte ne peut pas être motorisé dans Bullet. Elle est passive, ce qui de facto l'exclu de nos choix, car pour faire bouger le robot, il nous faut lui donner un mouvement.

  • ConeTwist est identique à Point2Point mais qui est motorisée. Pour les axes de roations au niveau des coudes ou des genoux, des Hinge sont utilisés. Le dilemme se pose au niveau des épaules, des hanches et des chevilles, là où les axes de rotations se complètent pour autoriser des mouvements plus complexe. On s'est posé la question de regrouper ces axes en une seule liaison, pour êtres plus fidèle au modèle humain (qui est l'objectif du robot).

Cette agglomération des axes de rotation nous pose plus des soucis au niveau de l'épaule du robot. L'objet de cette simulation est d'afficher des objectifs donnés aux moteurs du robot. Regrouper ces axes nous oblige à ajouter des fonctions pour convertir ces (angles) objectifs dans la simulation physique. L'épaule simulée va donc suivre rigoureusement l'ordonnancement des axes de rotations au niveau de l'épaule du véritable robot.

 

Par contre, nous sommes obligés de faire ce travail supplémentaire pour les hanches et les chevilles dont le comportement et l'agencement physique dans le robot sont différents. Au niveau de la hanche, le groupe des trois axes (gérés par les moteurs 7/9/11 et 8/10/12 cf Figure 3) ont comme équivalent une liaison rotule, soit un ConeTwist libre sur tous ces axes dans Bullet. La cheville quant à elle (moteurs 15/17 et 16/18 cf Figure 3) est une liaison sphérique à doigt, soit un ConeTwist dont l'un des axes est fixe. 

 

Nottons que cette représentation simpliste du robot est réalisée avec un ensemble de 13 pavés (appelé rigid body), ordonnés en un arbre dont la racine est le buste. Il y a donc quatre branches qui définissent les deux bras et les deux jambes. Cet arbre est "implicite" car il est induit par la succession des liaisons mécaniques entre chaque rigid body. Cette représentation en arbre est utile pour réaliser le mouvement et est entièrement géré par Bullet.   

Simulations Physique

Simulations Physique

Prototype avec une cheville à une liaison Hinge

Buste du Robot Fixe

Buste du Robot libre

Buste du Robot libre avec compensation du balancement au niveau des pieds

Prototype avec une cheville à deux liaisons Hinge

Teste libre

Teste avec compensation au niveau du genoux (faible / peu visible) 

Tentatives de faire tenir le robot debout

Équibre avec bassin en arrière

Équilibre en se tenant droit

Implémentation d'un mouvement simple

     Le projet a commencé par l’étude d’un mouvement pour le robot : monter une marche. Le fichier PDF ci-joints présente la première étape de ce travail. Dans ce fichier nous trouvons une fonction qui les 3 angles nécessaire (hanche, genoux, cheville) pour monter un pied à la hauteur h et à la distance d du robot et le conserver parallèle avec le sol.

 

Rendu

L’archive Rendu_Fablab_Bioloid_2016_Kacher-Sajot contient l’intégralité de notre travail sur la partie programmation. Cette archive est disponible sur le site de l'ENSIWIKI ou au-près de Lionel Reveret.

 

Cette archive contient le Simulation_Physique contient les sources associés à l’exemple de l’araignée et de la simulation physique du robot. ConsoleBioloid contient le projet Visual Studio du contrôleur du projet initial. ViewerBioloid contient le projet Visual Studio de la vue du projet initial. La section Procédure d’installation décrit les procédure d’installation des éléments cité précédement. Le répertoire Fichier_Configuration_Robot contient les fichiers tsk de remise à l’état d’usine remise_etat_usine.tsk et de vérification du fonctionnement des moteurs motor.tsk. Ces fichiers sont à utiliser avec le logiciel fournit avec le robot RoboPlus (disponible dans le CD d’installation c.f. Support Technique Robotis dans les liens utiles).

 

Liens Utiles

Sur ce site il y a des informations sur le projet à réaliser et quelques liens pour commencer.

 

Lien du projet de contrôleur cinématique associé au projet

Ce projet a été passé sur Visual Studio à partir

 

Cours de physique pour l’informatique

 

Tutoriel pour contrôler le robot à partir d’un projet C++

Ce lien est très utile pour créé un nouveau controleur avec un module plus récent.

 

Support technique Robotis

Voir la section ROBOTIS ACADEMY -> Robotis Premium

Cette section contient toutes les informations basique sur le robot (installation du cd, utilisation des logiciels fournis, remise du robot à l’état usine …)

 

Fichier pdf d’analyse du robot

Il n’est pas très utile de le regarder sauf pour avoir une compréhesion plus poussée du robot

 

Site officiel de Bullet Physics Engine

Permet de télécharger la solution Bullet pour la simulation physique

 

Moments d’inertie

Bullet le fait pour nous, ça peut être utile en fonction des besoins pour la suite du projet.

bottom of page