Projets:B.R.A.V.O

From wikilab
Jump to: navigation, search

Description du projet

Prototype.jpg

L'objectif du projet B.R.A.V.O (Bras Robotisé Auxiliaire de Vie Opensource) est de prototyper un bras robotisé open-source adapté pour une personne en fauteuil roulant. Les études de ce projet comportent de la mécanique, l'électronique, la programmation et la documentation. Le projet est porté par Nicolas POUSSET, bénévole à l'association My Human Kit.

Liens utiles

Analyse de l'existant

Depuis 2010 il existe un excellent dispositif de bras robotisé haut de gamme appelé le [JACO]. Il constitue une solution précise, puissante pour les personnes ne pouvant disposer de leurs membres supérieurs.

Le JACO est commercialisé aux environs de 25 000 €. Très peu de personnes en sont donc équipées.

L'idée est de faire exister des alternatives beaucoup moins performantes, mais aussi accessibles aux familles, et dans les pays où il n'y a aucune chance de remboursement de ce type d'aide technique.

A noter qu'en tant que tel, le bras robot est un robot classique utilisé tant dans l'industrie que dans le monde pédagogique. Il existe des bras robots sans brevet, imprimables en 3D, dans de nombreuses tailles...

L'idée est donc de créer un bras robot modeste mais servant de développement à l'échelle 1/2 ou 1/3 de la taille et de la puissance-cible, avec comme chef de projet une personne concernée. Ce bras sera fixé sur un fauteuil roulant électrique et totalement contrôlé par la personnes concernée.

Cahier des charges

Aspects techniques

  • Faire un état d’art de cette technologie.
  • Réaliser une étude statique/dynamique afin de caractériser le bras robot et de déterminer le choix des composants électroniques.
  • Modéliser le système sur un logiciel 3D (Catia, 3DExperience et etc.).
  • Prototyper et expérimenter le système.

Aspects collaboratifs

  • Travail avec une personne en situation de handicap considérée comme le porteur de projet.
  • Collaboration avec le fablab spécialisé en France dans le prototypage d’aides techniques au handicap, le Humanlab de My Human Kit.
  • Diffusion en open-source des résultats de recherche.

Equipe

Le projet est réalisé en collaboration entre My Human Kit et le PMT de l'université de Rennes 1.

  • Porteur de projet : Nicolas POUSSET (@nicop35)
  • Responsable du projet : Hugues AUBIN (@hugobiwan)
  • Équipes techniques :
    • Mécanique : Maxime LAMETRIE et Matthéo MARCHAND
    • Électronique : Ménélik EPINAT et Gaëtan PARISOT

Matériel nécessaire

  • Logiciels:
    • 3DExperience
    • Arduino Software
  • Électronique:
    • Une carte openCM 9.04 de chez Robotis, compatible arduino
    • 7 Servomoteurs Dynamixel AX-12+
    • Une cinquantaine de vis M2x6 / une cinquantaine de vis M2x8
    • Câble Micro-usb (Type téléphone android).
    • Alimentation 12V entre 2 et 5A.
    • Une planche de prototypage (bradboard)
    • Une résistance de 100 K ohms et une résistance de 47 K ohms.
    • Un module de communication bluetooth (HC-05 ou HC-06 par exemple) en vue du pilotage du prototype par Nicolas Pousset via un smartphone sous android (par exemple avec l'application Arduino Bluetooth controller).
  • Machines:
    • Imprimante 3D
    • Découpeuse jet d'eau
    • Plieuse tôle manuelle

Partie Mécanique

Dimensionnement mécanique

Le dimensionnement du bras robot a été réalisé à partir des caractéristiques des servomoteurs Dynamixel AX-12.

Dynamixel ax12.jpg

Caractéristiques Techniques du servomoteur

  • Poids : 53.5 gr
  • Dimension : 32*50*40 mm
  • Résolution : 0.29°
  • Ration du réducteur : 254:1
  • Couple statique : 1.5 N.m à 12.0 V et 1.5 A
  • Vitesse en charge à vide : 59 tr/min à 12 V
  • Feedback : position, température, voltage et etc.
  • Température : -5 à +70°C
  • Angle opérationnel : 0 à 300°
  • Matériau : plastique

Calcul du couple moteur

La conception de notre prototype de bras robot s'est alors articulé autour des servomoteurs. Un rapide calcul de couple a été réalisé afin d’optimiser les dimensions de nos pièces et confirmé la faisabilité d’un prototype avec ce type de servomoteurs.

Calcul du couple statique nécessaire:

C_mot2 = (M2.M3*Masse_moteur+M2.M4*Masse_moteur+M2.M5*Masse_moteur+M2.M6*Masse_moteur+M2.M_plaque*Masse_plaque*2+M2.U2*Masse_u2+M2.U3*Masse_u3+M2.U4*Masse_u4)*g = 0,6432 N/m.

Modélisation 3D

Dans la partie modélisation 3D, les étudiants ont utilisé le logiciel 3DExpérience pour concevoir le bras robot. Développée par Dassault Systèmes, 3DExperience est une plate-forme en ligne (cloud) où elle met à disposition des logiciels de conception 3D, de gestion de projet et de simulation.

3dexperience.jpg

Prototypage

Pour la fabrication, les différentes pièces du prototype de bras robot 6 axes ont été conçues avec des tôles métalliques. Les étudiants disposaient dans leur école des machines industrielles. Certaines tôles seront par la suite pliées. Lors de la fabrication des pièces, des défauts de réalisation ont été générés par la machine plieuse (difficulté d’assembler les tôles avec les moteurs) et par la découpe jet d’eau (trous de perçage mal réalisés). Ce qui a engendré un temps supplémentaire pour la rectification de ces défauts. Le délai pour obtenir les pièce a été d'une semaine.

Partie Électronique

Montages électroniques

ATTENTION - suite à pas mal de problèmes au mois de janvier 2019 avec la carte ARBOTIX M et grâce à Christian Fromentin, nous avons redéveloppé tout le code sur la carte électronique CM09. Nous conseillons aux personnes qui voudraient s'inspirer ou refaire le démonstrateur de BRAVO 0.1 tel que décrit mécaniquement ci-dessus de travailler avec cette carte OPEN CM9.04 de chez ROBOTIS qui a été beaucoup plus facile à utiliser ! - voir plus bas

Carte Arbotix M [Obsolète]

  • Principe de base (attention, il y a un petit peu de technique).

Il s'agit de relier une chaîne d'actuateurs dynamixels (ici AX12 pour les tests, mais le principe sera le même pour des modèles plus gros de la gamme dynamixels) montés dans un dispositif de bras robot à une carte de contrôle Arbotix M programmable avec l'IDE arduino.

Cette carte peut être programmée avec un ordinateur via câble ftdi, puis alimentée par une tension de 12V et un ampérage suffisant pour le nombre de moteurs.

Une fois la carte alimentée, chaque moteur dynamixel émet et reçoit à une vitesse de 1Mb/s un train d'informations paramétrable et permettant de connaître et de choisir, pour tous ou chaque moteur ciblé : vitesse, angle cible, couple, allumage de led témoin, rotation angulaire ou continue, voltage consommé, angles tolérés mécaniquement, etc...

Une librairie arduino ax12.h (voir bas de page), permet à la carte Arbotix M de lire et écrire dans la chaîne d'actuateurs (= servos intelligents) les instructions nécessaires. On peut câbler sur la carte Arbotix M tout capteur (bouton, joystick...) pour piloter le robot.

Le montage électronique est donc terminal de contrôle -> Arbotix M -> robot.

  • Interface Homme Machine via téléphone mobile et bluetooth

Le montage pourra être complété par un module de communication bluetooth compatible avec arduino (par exemple HC-06) en branchant ce module sur les broches disponibles sur la carte arbotix M, en ajoutant deux résistances (50 et 100 ohms) pour faire un pont diviseur de tension entre la broche tx de l'arbotix M et la broche rx du module pour arriver à 3.3V. Aucune modification additionnelle n'est nécessaire pour la broche tx du module bluetooth qui se branche sur la rx de l'Arbotix M. A ce stade, si le prototype fonctionne, il sera possible de contrôler le robot via tout smartphone sous android jumelé avec le module bluetooth et envoyant des caractères à la carte Arbotix via le module bluetooth. Nicolas Pousset utilise couramment le joystick de son fauteuil électrique jumelé avec son téléphone pour naviguer sur internet ou utiliser des applications diverses. L'idée est qu'il puisse s'appuyer sur cette interface pour manipuler une télécommande virtuelle sous la forme d'une application pilotant la carte arbotix via bluetooth.

  • Cavalier d'alimentation de la carte Arbotix M

L'alimentation de la carte Arbotix M, du robot, et du module bluetooth se fait directement par le positionnement d'un cavalier de tension sur la position Vin (courant d'entrée). Une fois le dispositif branché, les ordres et les informations sont transmis par la carte Arbotix au terminal de contrôle et vice-versa au protocole serial.

  • Précautions particulières

La documentation de Trossen Robotics, revendeur de la carte Arbotix M est mal traduite en anglais. Il faut faire très attention à la tension d'alimentation de la carte Arbotix M : la régulation de tension ne concerne que l'alimentation des broches fournissant 5V en sortie (typiquement sur les triplets de broches D0 D1 D2 etc.). Il est écrit que l'on peut alimenter la carte jusqu'à 30 V, or la documentation de Nootrix spécifie que l'alimentation fournie au bornier bleu et visant les moturs dynamixels est directement envoyée sur ceux-ci ! Il ne faut donc alimenter la carte qu'avec une tension comprise entre 11 et 12 V sous peine de griller les moteurs ! Autre précision, les moteurs sont puissants et donc peuvent demander jusqu'à un ampère. Il est prudent de se rapprocher autant que possible de l'alimentation propriétaire fournie par Robotis pour les moteurs dynamixels (Alimentation SMPS) soit 12 V 5 A ! Un moteur, à lui seul, vaut plus cher que la carte Arbotix M alors attention !

Carte OpenCM9.04  : recommandé !

//DOC IN PROGRESS - 31/01/2019

Opencm904.jpg


La carte Open CM 9.04 fonctionne sur le même principe que la carte ARBOTIX M, sauf que nous n'avons pas eu de problèmes de communication avec les moteurs dynamixels en l'utilisant.

Elle est [très bien documentée ici] et propose également des librairies de contrôle logiciel des moteurs dynamixels. Le principe est simple : nous avons d'abord pris le contrôle de tous les moteurs du bras pour les déplacer dans des directions simples (gauche-droite-avant-arriere + gauche-droit-haut-bas) et nous avons différencié la gestion de la pince (gripper) afin de pouvoir la retravailler finement ensuite (par exemple maitrise de la force de la pince).

Egalement nous avons pris en compte le fait que Nicolas Pousset et de nombreux usagers du lab utilisent couramment leur téléphone mobile via le joystick de leur fauteuil roulant électrique. Autant repartir du téléphone au lieu d'inventer la roue! Comme il existe des applications gratuites capables de communiquer avec des cartes programmables arduino en envoyant des nombres ou des caractères via le port serie, l'idée est d'utiliser une de ces applications pour permettre rapidement des tests de pilotage du robot via le combo joystick fauteuil/application mobile.

Le principe envisagé dans la première version de test (0.1) est simplement de développer un contrôle de tous les degrés de liberté du robot par l'envoi de caractères simples, de tester avec un clavier d'ordinateur et un câble, puis d'affecter à une télécommande virtuelle sur téléphone l'envoi de ces touches pour enlever le fil à la patte du robot. A ce stade le robot devrait répondre au joystick de fauteuil pilotant le curseur sur l'application du téléphone envoyant les caractères au module bluetooth les relayant à l'openCM09 pilotant le robot. Vous nous suivez ? :-)

Nota : étape réalisée avec succès en février 2019.

  • Ce qu'il faut savoir :

- la carte open CM9 se code en langage arduino, mais ne permet pas d'initialiser une communication serie via la librairie softserial. Par contre elle offre deux autres ports series numérotés 2 et 3 et accessibles via la syntaxe Serial2.Begin(9600) ou Serial3.Begin(9600), le Serial.USB()correspondant à la connexion par un cable usb standard (Câble USB micro, type téléphone android). IMPORTANT : la documentation précise que le Serial2 correspond physiquement aux broches numérotées A4 (TX2 de l'open CM09.04) et A5 (RX2 sur la carte :-)

- un simple module bluetooth HC05 à moins de 10 € permet de relayer une communication serie venant d'un smartphone. Le montage est documenté partout et nécessite l'ajout de deux résistances (par exemple 47 et 100 Kohms) pour relayer le TX de la carte Open CM9.04 vers le RX du module Bluetooth avec un voltage de 3.3V (on diminue la tension fournie de 5V à 3.3V).

(ICI A COMPLETER PHOTO DE MONTAGE + SCHEMA FRITZING LIAISON ENTRE LES CARTES)

Programmation

  • Arduino

La carte OPEN CM9.04 (que nous utilisons) se programme à l'aide d'une librairie et de l'Environnement de Développement Intégré Arduino, via un câble USB micro (type téléphone android) indispensable pour facilement brancher la carte sur un ordinateur via USB.

Voir les liens en bas de page pour télécharger librairie et documentation des fonctions.

  • Protocole Dynamixel

Les moteurs dynamixels émettent et recoivent en permanence des valeurs contenues dans un tableau contenant des octets. Il est possible d'utiliser les fonctions de la librairie arduino, mais aussi d'écrire et de lire directement ces valeurs pour contrôler tout paramètre en live. Ceci est notamment possible va un terminal serie et un câble USB2Dynamixel ou via un contrôlleur propriétaire CM5, CM510, CM700 de chez Robotis en mode esclave (mode "Manage", liaison par défaut à 57600 en serial 8N1) avec un câble USB-> RS485 -> Jack. En tapant "HELP" un index des commandes apparait en mode console. Un terminal serie est fourni par le fabricant coréen des dynamixels (Robotis) et s'appelle "Roboterminal".

  • C, C++, ROS, Matlab, Python...

Le protocole dynamixel est très bien documenté et le choix des langages, terminaux, programmes permettant de piloter ces moteurs est large ainsi que la communauté des utilisateurs, essentiellement regroupée en Europe sur les forums des sites Trossen Robotics et Robosavvy.

Exemples

By @hugobiwan - 29/11/2018

CADUQUE : scripts de test sur la carte ARBOTIX M avec 6 moteurs numérotés de 1 à 6 à partir de la base du bras robot.

Script de déplacement aléatoire du bras robot + pince ¨+ retour à position de sécurité [1]

Script de déplacement d'un bras robot par joystick + pince avec bouton [2]

FONCTIONNEL - 14/02/2019 - by @hugobiwan

Script arduino de contrôle d'un bras robot relié à une carte électronique OPEN CM 9.04 constitué de 7 moteurs dynamixels numérotés de la manière suivante du bas vers le haut.

ID DYNAMIXEL : fonction

  • ID 1 : base tourelle gauche-droite
  • ID 2 | ID 21 : base tourelle avant-arriere (supporte une grande partie du poids du bras) donc moteur doublé
  • ID 3 : moteur permettant d'étendre et de replier le bras robot vers avant-arriere
  • ID 4 : rotation gauche-droite de la pince du robot
  • ID 5 : rotation haut-bas de la pince du robot
  • ID 6 : pince du robot (gripper)


Id moteurs bravo.jpg

Ce script permet le contrôle d'un bras robot utilisant un contrôleur open CM9.04 via une communication serial à 9600 bauds. Cette communication se fait via un module Bluetooth HC 05 avec des commandes envoyées par une application mobile gratuite appelée [Arduino Bluetooth controller].

Coût

Version de développement au 12/12/2018 :

  • 7 dynamixels AX12+ (40 € pièce)
  • 1 carte électronique OPEN CM 9.04 de chez ROBOTIS (environ 10 €)
  • Frame en aluminium ou en plexyglas découpée (à l'eau via le fablab de Rennes, le Labfab pour l'alu, à la découpe laser pour le plexy, au Humanlab). Environ 20 €

Soit environ 300 € de matériel de développement.

Fichiers ressources

Journal de bord

Date: 07/02/2019

Sur l'openlab deux personnes ont pu tour à tour prendre le contrôle du bras robot depuis leur téléphone mobile en utilisant l'application Arduino Bluetooth Controller avec leur joystick de fauteuil roulant. Jonathan M. et Nicolas P.

Date: 14/02/2019

L'équipe des étudiants de Rennes 1 a transmis son important travail et notamment les fichiers de découpe, d'impression 3D, et des éléments de calcul mécanique. Ils ont également partagé leur travail complet y compris le poster de soutenance !

Hugues a modélisé et imprimé [une pièce en 3D] pour ajouter un moteur supplémentaire dans la tourelle en position 2 (rotation gauche-droite).

Bracket-m2.JPG

Il a remonté la mécanique de la tourelle renforcée et développé un script arduino permettant de piloter le bras renforcé. Ce code fonctionne et permet un pilotage du bras robot depuis l'application gratuite arduino Bluetooth Controller.

Nicolas Pousset a commencé à développer une application pour android à l'aide de l'outil gratuit MIT [APP inventor]. Il s'inspire de son expérience en modélisme pour créer un projet qui permettra de gérer la vitesse de déplacement du bras en fonction de la position de deux joystick virtuels. Un Joystick permettra de manipuler deux axes pour approcher (tourelle + moteur 3), l'autre pour manipuler la position de la pince (moteurs 4 et 5). Un bouton permettra de gérer la pince.

Date: 21/02/2019

Interview de Nicolas Pousset par une équipe de tournage de la fondation Free. Définition de conventions pour l'envoi et la réception d'information via le module bluetooth entre l'application mobile de pilotage et le module open CM9. On s'oriente vers la transmission d'une chaîne de caractères de type "500-240-630-400-0|" dans laquelle on aurait 4 valeurs d'indication des angles des moteurs (id1-id2-id4-id5) et un booléen (0 ou 1) pour indiquer la position ouverte ou fermée de la pince, puis un caractère de fin ("|"). Les positions des moteurs 21 et 3 sont déduites de la position du moteur 2.

Echange avec Yves Le Chevalier qui connait MIT APP inventor sur la manière d'intégrer des curseurs glissants et des joysticks virtuels dans l'application. Avec le module bluetooth que nous avons il semble nécessaire d'ajouter un pont diviseur de tension depuis la broche tx de l'eopem CM9 pour passer ce signal d'émission de 5 à 3V. L'idée est de remonter en permanence la position réelle du robot à l'application. Et d'utiliser le mode "terminal" de l'application gratuite arduino bluetooth controller pour tester cet envoi.

On note également l'effort déraisonnable demandé au moteur 1 et la nécessité de redessiner une plaque avec un trou permettant de répartir le poids du bras sur une tourelle, comme originellement prévu par les étudiants de Rennes 1.

Bibliographie

  • Pôle mécanique et de technologie (PMT) - UFR SPM - Université de Rennes 1 : Site web
  • Boutique électronique - Trossen Robotics : Site web
  • Documentation du module OPEN CM9.04 de chez ROBOTIS: Site web
  • Comment brancher un module HC 05 bluetooth sur une carte arduino Site web
  • Tutoriels ArbotiX-M Robocontroller : Site web
  • Tutoriel - Programmez vos premiers montages avec Arduino : Site web
  • Introduction to Dynamixel Motor Control Using the ArbotiX M Robocontroller [3]
  • Arbotix Manual and documentation [4]
  • Arbotix library [5]
  • Contrôle de vitesse des AX12 avec la librairie ax12h [6]
  • Documentation de Nootrix [7]