Cration dA'P'I' JAVA pour la programmation de systmes robotiss - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Cration dA'P'I' JAVA pour la programmation de systmes robotiss

Description:

Cr er une interface Java permettant de piloter des robots en s'affranchissant ... Mettre en place des travaux pratiques d'initiation la programmation en java ... – PowerPoint PPT presentation

Number of Views:47
Avg rating:3.0/5.0
Slides: 31
Provided by: ECon70
Category:

less

Transcript and Presenter's Notes

Title: Cration dA'P'I' JAVA pour la programmation de systmes robotiss


1
Création dA.P.I. JAVA pour la programmation de
systèmes robotisés
PIP 2004 à M.I.
  • DAVID BOREL
  • EMILE-HENRI BALLAND

2
Sommaire
  • Introduction
  • Utilisation du port série
  • Interface de la table traçante
  • Interface du Bras Robotisé
  • Conclusion

3
Introduction
  • Le projet
  • Créer une interface Java permettant de piloter
    des robots en saffranchissant des problèmes
    machines
  • Objectifs
  • Mettre en place des travaux pratiques
    dinitiation à la programmation en java
  • Plus visuels
  • Plus concrets
  • Les moyens
  • Les robots retenus sont
  • Une table traçante Hewlett-Packard 7475A
  • Un bras robotisé LynxMotion 5 axes

4
I. La communication via le port série
  • Les deux automates sont reliés au PC via un port
    série (liaison asynchrone) et un câble de type
    RS-232
  • Nécessité dy faire transiter les informations de
    déplacement sous la bonne forme (débits, bits de
    stop, bits de données, parité)
  • Problème la gestion du port série sous JAVA
    (package javax.comm) est prévue pour plateformes
    Windows, Solaris mais pas pour Linux
  • 2 solutions envisagées
  • Adapter le package javax.comm à la plateforme
    Linux
  • Utiliser un code C sous java pour communiquer
    avec le port Serie

5
I. La communication via le port série
  • Adaptation du package javax.comm à
    lenvironnement Linux
  • Utilisation dune API créée par Kevin Hester en
    1999 CommAPI
  • Distribuée sur le site www.geeksville.com/kevin
    h/linuxcomm.html
  • Ajouter le fichier comm.jar dans le CLASSPATH
  • Création de librairies dynamiques à partir de
    sources C appelée RXTX
  • Télécharger et compiler les sources RXTX
  • Placer les librairies dynamiques SerialPort.so et
    ParralelPort.so dans le répertoire
  • A partir de là on peut utiliser toutes les
    classes du package javax.comm

6
I. La communication via le port série
  • Exemple de classe utilisant javax.comm
  • import javax.comm.
  • public class ConnexionSerie
  • ()

7
I. La communication via le port série
  • Utilisation dun code C à laide de JNI (Java
    Native Interface)
  • Classe CommPortSerie.java
  • public class CommPortSerie
  • public CommPortSerie()
  • public native void send(String message)
  • static
  • System.loadLibrary("serie")
  • public void envoyerMessage(String message)
  • new CommPortSerie().send(message)

8
I. La communication via le port série
  • Utilisation dun code C à laide de JNI (Java
    Native Interface) Suite
  • Fichier CommPortSerie.h généré automatiquement
    par la commande javah jni CommPortSerie
  • Fichier CommPortSerie.c implantation du code de
    communication avec le port série.
  • include ltjni.hgt //librairie relative au JNI
  • include "CommPortSerie.h " //signatures issue de
    java
  • include lttermios.hgt //librairie relative au port
    série
  • ()

9
I. La communication via le port série
  • Utilisation dun code C à laide de JNI (Java
    Native Interface) Suite
  • Compilation du fichier C
  • gcc fpic shared I /usr/local/java/include I
    /usr/local/java/include/linux CommPortSerie.c o
    libserie.so
  • Ajouter libserie.so dans le path LD_LIBRARY_PATH
  • Export LD_LIBRARY_PATH /home/dborel/monrepertoir
    e

10
I. La communication via le port série
  • Et finalement
  • Grâce à ces deux méthodes nous sommes capables
    denvoyer un message via le port série avec JAVA.
    Le tout maintenant est denvoyer un message qui
    soit interprétable par le robot.
  • Table traçante langage HPGL (Hewlett Packard
    Graphic Language)
  • Langage utilisé pour piloter les anciennes tables
    traçantes
  • Evolution ensuite en HPGL-2 utilisant de
    nouvelles fonctions
  • Abandonné aujourdhui pour utiliser le langage
    JCL
  • Bras Robotisé commandé par un microcontrôleur
    programmable
  • Nécessité de créer notre propre langage pour
    communiquer avec le robot
  • Protocole simple permettant dactionner les
    servomoteurs

11
II. La table traçante
  • Hewlett Packard 7475A (alias le Stradivarius du
    plotter )

12
II. La table traçante
  • La table traçante
  • Communication via un port série standard (RS-232)
  • Caroussel de 6 feutres
  • Dessin sur feuilles A4
  • Le langage de programmation
  • HPGL (Hewlett Packard Graphic Language)
  • Principe commandes en langage ASCII séparées
    par des
  • Principales commandes
  • PU Pen Up
  • PD Pen Down
  • PA Plot Absolute
  • PR Plot Relative
  • CI CIrcle
  • Etc..

13
II. La table traçante
  • Exemple de programme HPGL
  • PA500,500PD500,1000
  • Trace une ligne reliant les points A(500,500) et
    B(500,1000).

14
II. La table traçante
  • Lobjectif
  • Envoyer au plotter un code HPGL correspondant aux
    formes graphiques de base
  • Ecrire une A.P.I JAVA faisant office dinterface
    entre le PC et le plotter afin de saffranchir de
    la programmation HPGL
  • Le protocole de communication
  • Communication via le port série avec pour
    paramètres
  • 9600 bauds
  • 8 bits de données
  • 1 bit de stop
  • Pas de bit de parité

15
II. La table traçante
  • API Java côté PC
  • Utilisation et amélioration du package n6k.formes
    afin de reprendre les formes graphiques de bases
    et de disposer dune fenêtre d aperçu avant
    impression .
  • Les classes disponibles de lAPI
  • ObjetGraphique
  • Point
  • Ligne
  • Cercle
  • Fenetre
  • ArcCercle
  • Texte
  • CommPortSerie
  • Par combinaison de ces formes de bases on peut
    tracer tout type de graphisme.

Classes ajoutées au package
16
II. La table traçante
  • API Java côté PC suite
  • La classe CommPortSerie.java gère la
    communication série ave la table traçante et
    traduit en langage HPGL les différents objets
    graphiques

17
II. La table traçante
  • API Java côté PC suite
  • Diagramme UML simplifié (fait sous Paint désolé)

18
II. La table traçante
  • Exemple de code pour contrôler la table
  • Problèmes de communication et de commande
    transparents pour lutilisateur
  • public class Test
  • public static void main(String args)
  • Ligne l1 new Ligne(320,0,320,480)
  • Ligne l2 new Ligne(0,240,640,240)
  • Cercle c1 new Cercle(320,240,38)
  • Texte t1 new Texte(10,10,"Page Test")
  • Point p1 new Point(400,400)
  • Point p2 new Point(380,380)
  • Point p3 new Point(380,420)
  • Point p4 new Point(420,420)
  • Point p5 new Point(420,380)
  • ArcCercle a new ArcCercle(320,240,20,0,90)

19
II. La table traçante
  • Attention DEMONSTRATION !!!
  • Démonstration avec le code précédent
  • Objets utilisables en TP par exemple pour créer
    des dessins plus complexes (carré, maison,
    spirales)

20
III. Le bras robotisé
  • LynxMotion 5 (alias Lynx )

21
III. Le bras robotisé
  • Le robot
  • Fabriqué par Lynxmotion (société américaine)
  • Commandé chez un revendeur basé à Paris
  • Articulé par 5 axes de rotation dirigés par des
    servomoteurs de type HS-422 ayant une course de
    180
  • Commandé par un microcontrôleur de type OOpic
  • Le microcontrôleur OOpic
  • 31 entrées/sorties, capacité 4096 instructions
    pour un débit de 2000 instructions/sec.
  • Programmable par différents langages Visual
    Basic, C ou Java légèrement modifiés
  • Programmé au préalable par notre programme
    dinterfaçage

22
III. Le bras robotisé
  • Lobjectif
  • Programmer le microcontrôleur de telle sorte
    quil attende la réception dinformation
    provenant du port série pour effectuer 3 types
    opérations
  • Activer/désactiver un servomoteur
  • Positionner un servomoteur
  • Ecrire une A.P.I JAVA faisant office dinterface
    entre le PC et le microcontrôleur
  • Traduction de données sources (booléen, angle) en
    données compatibles avec notre protocole de
    communication.

23
III. Le bras robotisé
  • Le protocole de communication
  • Lidée est de coder les informations utiles sur
    un minimum despace mémoire
  • On envoie donc les informations relatives au
    servomoteur et au déplacement sous forme de deux
    octets
  • 1 octet didentification et dactivation/désactiva
    tion
  • ? Un nombre de 13 à 17 pour choisir un moteur et
    un chiffre 0 ou 1 pour lactiver ou non
  • (codage de 130 à 171 pour ne pas confondre avec
    loctet de positionnement).
  • Ex 130 désactiver le servo n1 (identifié 13)
  • 151 activer le servo n3 (identifié 15)
  • 1 octet de positionnement
  • ? Un nombre de 0 à 127 correspondant à la valeur
    de la position du servomoteur
  • Ex 10010111 00011110
  • 151
    30
  • Activation du servomoteur n3
    et mise à la position 30

24
III. Le bras robotisé
  • Le codage du microcontrôleur
  • Téléchargements grâce à un programme fourni par
    le constructeur
  • Se charge de compiler et denvoyer au
    microcontrôleur le code assembleur correspondant
  • Fonctionnement de linterface au niveau
    microcontrôleur
  • Création et initialisation des servomoteurs
    connectés
  • Initialisation de la connexion série
  • Attente dun message provenant du PC
  • Si ce message est compris entre 130 et 171
    information dactivation
  • Sil est compris entre 0 et 126 information de
    positionnement
  • Rem Si une information de positionnement arrive
    alors quaucun servo na été activé, le robot ne
    va pas se déplacer.
  • Le programme ooPIC

25
III. Le bras robotisé
  • Le codage de linterface JAVA (côté PC)
  • Une classe générique ServoMoteur.java dont les
    servomoteurs spécifiques hériteront

ServoMoteur.java

-identifiant int -position int -isActivated
boolean -connectionSerie
positionner(int angle) tourner(int angle)
void getPosition() int isActivated() boolean
26
III. Le bras robotisé
  • Le codage de linterface JAVA (côté PC)
  • Une classe pour chaque servo, héritant de
    ServoMoteur.java, ayant une méthode spécifique
    didentification

ServoCoude.java
-identifiant int -position int -isActivated
boolean -serie CommPortSerie
activer() void desactiver() void
27
III. Le bras robotisé
  • Le codage de linterface JAVA (côté PC)
  • Diagramme UML simplifié (refait sous Paint
    redésolé)

28
III. Le bras robotisé
  • Exemple de code pour contrôler le robot
  • Problèmes de communication et de commande
    transparents pour lutilisateur
  • public class Test
  • public void main(String args)
  • //Création des objets
  • ServoSocle socle new ServoSocle()
  • ServoPince pince new ServoPince()
  • //Activation des servos
  • socle.activer()
  • pince.activer()
  • //Positionnement des servos
  • socle.positionner(30)
  • pince.ouvrir()
  • socle.desactiver()

29
III. Le bras robotisé
  • Attention DEMONSTRATION !!!
  • Il est possible de combiner une infinité de
    mouvement sans risque de congestionner le
    microcontrôleur.
  • A charge pour déventuels élèves dutiliser lAPI
    pour créer des mouvements plus élaborés.

30
Conclusion
  • Ce projet nous a donné lopportunité
    dappréhender des problèmes nouveaux
  • Utilisation du port série avec ses difficultés
    liées au système dexploitation
  • Programmation bas-niveau
  • Utilisation de méthodes natives
  • Utilisation dun microcontrôleur
  • Problèmes liés à sa programmation
  • Problèmes liés à son utilisation
  • Volonté dêtre concis dans le but de permettre
    des utilisations ultérieurs de nos classes
Write a Comment
User Comments (0)
About PowerShow.com