cours syndex
TRANSCRIPT
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
SyndexSyndex V5V5
M Kadri
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Plan
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
IntroductionLes travaux meneacutes sur l optimisation des systegravemes
distribueacutes temps reacuteel embarqueacutes comprenaient principalement
1 La modeacutelisation de ces systegravemes agrave laide de la theacuteoriedes graphes
2 Loptimisation dimpleacutementations agrave laide - Dalgorithmes dordonnancement temps reacuteel dans le
cas monoprocesseur
- Dheuristiques de distribution et dordonnancementtemps reacuteel dans le cas multiprocesseur
3 Les techniques de geacuteneacuteration automatique de code pour processeur
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Introduction
Ces travaux de recherche ont conduit dune part agraveune meacutethodologie appeleacutee AAA pour
Adeacutequation Algorithme-Architecture et dautre part agrave un logiciel de CAO niveau systegraveme pourlimpleacutementation optimiseacutes de systegravemes distribueacutestemps reacuteel embarqueacutes appeleacute SynDEx
Ils eacutevoluent pour permettre la conception
conjointe avec partitionnement logicielmateacuterielautomatique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
M M eacuteeacute thodologie thodologie AAA AAA
bull Systegraveme reacuteactifs temps reacuteel embarqueacuteesbull Algorithme
bull Architecturebull Adeacutequation
bull Impleacutementation
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Systegravemes reacuteactifs temps reacuteel embarqueacutee
Les systegravemes informatiques eacutetant numeacuteriques les signauxdrsquoES sont discreacutetises aussi bien dans lespace des valeursque dans le temps La preacutecision de la commande deacutepend
de la reacutesolution de cette discreacutetisation
Une analyse matheacutematique utilisant la theacuteorie de la
commande permet de deacuteterminer dune part une bornesupeacuterieure sur le deacutelai qui seacutecoule entre deux eacutechantillons(cadence) et dautre part une borne supeacuterieure sur la dureacutee
du calcul (latence) entre une deacutetection de variation deacutetatde lenvironnement (stimulus) et la variation induite de lacommande (reacuteaction) Cest en ce sens quon parle de
systegravemes reacuteactifs
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Plan
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
IntroductionLes travaux meneacutes sur l optimisation des systegravemes
distribueacutes temps reacuteel embarqueacutes comprenaient principalement
1 La modeacutelisation de ces systegravemes agrave laide de la theacuteoriedes graphes
2 Loptimisation dimpleacutementations agrave laide - Dalgorithmes dordonnancement temps reacuteel dans le
cas monoprocesseur
- Dheuristiques de distribution et dordonnancementtemps reacuteel dans le cas multiprocesseur
3 Les techniques de geacuteneacuteration automatique de code pour processeur
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Introduction
Ces travaux de recherche ont conduit dune part agraveune meacutethodologie appeleacutee AAA pour
Adeacutequation Algorithme-Architecture et dautre part agrave un logiciel de CAO niveau systegraveme pourlimpleacutementation optimiseacutes de systegravemes distribueacutestemps reacuteel embarqueacutes appeleacute SynDEx
Ils eacutevoluent pour permettre la conception
conjointe avec partitionnement logicielmateacuterielautomatique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
M M eacuteeacute thodologie thodologie AAA AAA
bull Systegraveme reacuteactifs temps reacuteel embarqueacuteesbull Algorithme
bull Architecturebull Adeacutequation
bull Impleacutementation
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Systegravemes reacuteactifs temps reacuteel embarqueacutee
Les systegravemes informatiques eacutetant numeacuteriques les signauxdrsquoES sont discreacutetises aussi bien dans lespace des valeursque dans le temps La preacutecision de la commande deacutepend
de la reacutesolution de cette discreacutetisation
Une analyse matheacutematique utilisant la theacuteorie de la
commande permet de deacuteterminer dune part une bornesupeacuterieure sur le deacutelai qui seacutecoule entre deux eacutechantillons(cadence) et dautre part une borne supeacuterieure sur la dureacutee
du calcul (latence) entre une deacutetection de variation deacutetatde lenvironnement (stimulus) et la variation induite de lacommande (reacuteaction) Cest en ce sens quon parle de
systegravemes reacuteactifs
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
IntroductionLes travaux meneacutes sur l optimisation des systegravemes
distribueacutes temps reacuteel embarqueacutes comprenaient principalement
1 La modeacutelisation de ces systegravemes agrave laide de la theacuteoriedes graphes
2 Loptimisation dimpleacutementations agrave laide - Dalgorithmes dordonnancement temps reacuteel dans le
cas monoprocesseur
- Dheuristiques de distribution et dordonnancementtemps reacuteel dans le cas multiprocesseur
3 Les techniques de geacuteneacuteration automatique de code pour processeur
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Introduction
Ces travaux de recherche ont conduit dune part agraveune meacutethodologie appeleacutee AAA pour
Adeacutequation Algorithme-Architecture et dautre part agrave un logiciel de CAO niveau systegraveme pourlimpleacutementation optimiseacutes de systegravemes distribueacutestemps reacuteel embarqueacutes appeleacute SynDEx
Ils eacutevoluent pour permettre la conception
conjointe avec partitionnement logicielmateacuterielautomatique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
M M eacuteeacute thodologie thodologie AAA AAA
bull Systegraveme reacuteactifs temps reacuteel embarqueacuteesbull Algorithme
bull Architecturebull Adeacutequation
bull Impleacutementation
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Systegravemes reacuteactifs temps reacuteel embarqueacutee
Les systegravemes informatiques eacutetant numeacuteriques les signauxdrsquoES sont discreacutetises aussi bien dans lespace des valeursque dans le temps La preacutecision de la commande deacutepend
de la reacutesolution de cette discreacutetisation
Une analyse matheacutematique utilisant la theacuteorie de la
commande permet de deacuteterminer dune part une bornesupeacuterieure sur le deacutelai qui seacutecoule entre deux eacutechantillons(cadence) et dautre part une borne supeacuterieure sur la dureacutee
du calcul (latence) entre une deacutetection de variation deacutetatde lenvironnement (stimulus) et la variation induite de lacommande (reacuteaction) Cest en ce sens quon parle de
systegravemes reacuteactifs
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Introduction
Ces travaux de recherche ont conduit dune part agraveune meacutethodologie appeleacutee AAA pour
Adeacutequation Algorithme-Architecture et dautre part agrave un logiciel de CAO niveau systegraveme pourlimpleacutementation optimiseacutes de systegravemes distribueacutestemps reacuteel embarqueacutes appeleacute SynDEx
Ils eacutevoluent pour permettre la conception
conjointe avec partitionnement logicielmateacuterielautomatique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
M M eacuteeacute thodologie thodologie AAA AAA
bull Systegraveme reacuteactifs temps reacuteel embarqueacuteesbull Algorithme
bull Architecturebull Adeacutequation
bull Impleacutementation
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Systegravemes reacuteactifs temps reacuteel embarqueacutee
Les systegravemes informatiques eacutetant numeacuteriques les signauxdrsquoES sont discreacutetises aussi bien dans lespace des valeursque dans le temps La preacutecision de la commande deacutepend
de la reacutesolution de cette discreacutetisation
Une analyse matheacutematique utilisant la theacuteorie de la
commande permet de deacuteterminer dune part une bornesupeacuterieure sur le deacutelai qui seacutecoule entre deux eacutechantillons(cadence) et dautre part une borne supeacuterieure sur la dureacutee
du calcul (latence) entre une deacutetection de variation deacutetatde lenvironnement (stimulus) et la variation induite de lacommande (reacuteaction) Cest en ce sens quon parle de
systegravemes reacuteactifs
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
M M eacuteeacute thodologie thodologie AAA AAA
bull Systegraveme reacuteactifs temps reacuteel embarqueacuteesbull Algorithme
bull Architecturebull Adeacutequation
bull Impleacutementation
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Systegravemes reacuteactifs temps reacuteel embarqueacutee
Les systegravemes informatiques eacutetant numeacuteriques les signauxdrsquoES sont discreacutetises aussi bien dans lespace des valeursque dans le temps La preacutecision de la commande deacutepend
de la reacutesolution de cette discreacutetisation
Une analyse matheacutematique utilisant la theacuteorie de la
commande permet de deacuteterminer dune part une bornesupeacuterieure sur le deacutelai qui seacutecoule entre deux eacutechantillons(cadence) et dautre part une borne supeacuterieure sur la dureacutee
du calcul (latence) entre une deacutetection de variation deacutetatde lenvironnement (stimulus) et la variation induite de lacommande (reacuteaction) Cest en ce sens quon parle de
systegravemes reacuteactifs
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
M M eacuteeacute thodologie thodologie AAA AAA
bull Systegraveme reacuteactifs temps reacuteel embarqueacuteesbull Algorithme
bull Architecturebull Adeacutequation
bull Impleacutementation
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Systegravemes reacuteactifs temps reacuteel embarqueacutee
Les systegravemes informatiques eacutetant numeacuteriques les signauxdrsquoES sont discreacutetises aussi bien dans lespace des valeursque dans le temps La preacutecision de la commande deacutepend
de la reacutesolution de cette discreacutetisation
Une analyse matheacutematique utilisant la theacuteorie de la
commande permet de deacuteterminer dune part une bornesupeacuterieure sur le deacutelai qui seacutecoule entre deux eacutechantillons(cadence) et dautre part une borne supeacuterieure sur la dureacutee
du calcul (latence) entre une deacutetection de variation deacutetatde lenvironnement (stimulus) et la variation induite de lacommande (reacuteaction) Cest en ce sens quon parle de
systegravemes reacuteactifs
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Systegravemes reacuteactifs temps reacuteel embarqueacutee
Les systegravemes informatiques eacutetant numeacuteriques les signauxdrsquoES sont discreacutetises aussi bien dans lespace des valeursque dans le temps La preacutecision de la commande deacutepend
de la reacutesolution de cette discreacutetisation
Une analyse matheacutematique utilisant la theacuteorie de la
commande permet de deacuteterminer dune part une bornesupeacuterieure sur le deacutelai qui seacutecoule entre deux eacutechantillons(cadence) et dautre part une borne supeacuterieure sur la dureacutee
du calcul (latence) entre une deacutetection de variation deacutetatde lenvironnement (stimulus) et la variation induite de lacommande (reacuteaction) Cest en ce sens quon parle de
systegravemes reacuteactifs
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 879
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutethodologie AA
Le but de la meacutethodologie AAA est de trouver lameilleure mise en correspondance entre unalgorithme speacutecifiant les fonctions de
lapplication agrave effectuer et une architecturemulti-composants tout en satisfaisant les
contraintes dembarquabiliteacute et de temps reacuteel dusystegraveme
Il est donc neacutecessaire de preacuteciser le sens que londonnera par la suite aux notions dalgorithmedarchitecture dadeacutequation et dimpleacutementation
Al i h
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Algorithme
Un algorithme est connu comme eacutetant une
seacutequence finie dopeacuterations (reacutealisables
en un temps fini et avec un support
mateacuteriel fini) Dans cette meacutethode cette
notion est eacutetendue pour prendre encompte dune part laspect infiniment
reacutepeacutetitif des applications reacuteactives et
dautre part laspect parallegravele neacutecessaire
a leur impleacutementation distribueacutee
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Op1
Op2
Op3 Op5
Op4
Op6
Capteur
Actionneur
Nœuds Opeacuteration
Arcs Transfert de donneacutees
Modegravele drsquoalgorithme
A hi
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Architecture
Larchitecture correspond auxcaracteacuteristiques structurelles du
calculateur exhibant un paralleacutelismedisponible en geacuteneacuteral moindre que leparalleacutelisme potentiel de lalgorithmePar abus de langage le termearchitecture sera ici souvent utilise dans
son sens geacuteneacuterique pour signifier agrave lafois le calculateur lui-mecircme ainsi queses caracteacuteristiques structurelles
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV5
Meacutedia
Pr3
Pr1 Pr2
Pr123 Processeur
Meacutedia Moyen de communication
Arcs Transfert de donneacutees Modegravele drsquoarchitecture
Adeacute ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ladeacutequation consiste a mettre en correspondance de
maniegravere efficace lalgorithme et larchitecture pour reacutealiserune impleacutementation optimiseacutee
Adeacutequation
Instruction 1Instruction 2
hellip
hellip
Instruction N
Algorithme
Processeur Seacutequenceur
Architecture MonoprocesseurMeacutedia
Proc 1Seacuteq 1
Proc 2
Seacuteq 2Proc M
Seacuteq M
Architecture Multiprocesseurs
Inst 1
Inst 2
hellip
Inst N
Algorithme
Inst 1
Inst 2
hellip
Inst N
Inst 1
Inst 2
hellip
Inst N
hellip
hellip
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pour permettre une exploitation plus efficace du paralleacutelisme
disponible de larchitecture il faut eacutetendre lordre totaldexeacutecution des instructions du programme seacutequentielmonoprocesseur a un ordre partiel extrait par une analyse de
deacutependances de donneacutees entre instructions exhibant le paralleacutelisme potentiel de lalgorithme et permettant unedistribution et un ordonnancement
bull la distribution consiste agrave effectuer une Partition du graphe delrsquoalgorithme initial en autant drsquoeacuteleacutements de partition qursquoil y adrsquoopeacuterateur dans le graphe de lrsquoarchitecture
bull Lordonnancement consiste pour chaque eacuteleacutement de partition a lineacuteariser (rendre total) lordre partielcorrespondant au sous-graphe associe Cette phase estneacutecessaire car lopeacuterateur auquel on affecte un sous-graphe du
graphe de lalgorithme initial est geacutereacute par une seacutequenceurdrsquoinstruction
I leacute t ti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Impleacutementation
Limpleacutementation consiste a mettre en oeuvre
lalgorithme sur larchitecture cest- a-dire aallouer les ressources mateacuterielles de larchitectureaux opeacuterations de lalgorithme puis a compilercharger puis lancer lexeacutecution du programmecorrespondant sur le calculateur
Pl
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation Installation
bull Exigences mateacuteriellesbull Exigences logicielles
bull Installation de syndex V5bull Arborescence des reacutepertoires
Exigences mateacuteriels
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 1979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences mateacuteriels
bull Un PC avec un processeur de la famille Intel(80386 au minimum) ou un AMD
bull Une Carte de bus CAN (celle qui est installeacuteecrsquoest NuDACQ PCI-7841 baseacutee sur un chipPhilips SJA1000)
Ces deux speacutecifications sont suffisants pour ledeacuteveloppement drsquoune application RTAI
bull Pour les robots acquis il faut rajouter les cartes decontrocircle baseacutees sur le microcontrocircleur MPC555
Exigences logicielle
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Exigences logiciellebull Un environnement sous Linux (quelle que soit la
distribution)bull Un module RTAI (Real-Time Applications
implementations)bull GNU gcc (outil de compilation)bull GNU binutils (outil pour assembler et eacutediter les liens
bull Le Logiciel Syndex V5bull Les macros de syndex pour
- carte de controcircle Robosoft- microcontrocircleur MPC555 de Motorola- PC sous LinuxRTAI
- Bus CAN
Installation de Syndex V
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Installation de Syndex V
bull Creacuteation du reacutepertoire de destinationbull Copier le fichier avec la commande
cp syndex-xxx-linuxtgz rep_desbull Se mettre sous le reacutepertoire de destination puisdeacutecompresser le fichier avec la commande
tar zxvf syndex-xxx-linuxtgzCeci creacuteera sous le reacute pertoire de destination un sou
reacutepertoire de syndex contenant tout les fichiersDans le fichier syndexbat il faut mettre agrave jour lechemin du reacutepertoire de syndex
Arborescences des Reacutepertoire
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Arborescences des Reacutepertoire
Apregraves lrsquoinstallation il est impeacuteratif drsquoorganiser lesreacutepertoires pour que lors de lrsquoeacutedition des liens le
fichier makefiles deacutepend de cette organisationLrsquoorganisation qui existe actuellement est comme
suit bull Apps applications deacuteveloppeacutees sous syndexbull Macros macros deacuteveloppeacutes pour syndex V5bull Rtai module rtai ou un lien symbolique qui point vers le reacutepertoire drsquoinstallation
Pla
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Pla
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation du logicielUtilisation du logicielSyndexSyndex V5V5
bull Utilisation de lrsquointerface
bull Algorithme
bull Architecture
bull Caracteacuteristiques
bull Contraintes
bull Adeacutequation
bull Geacuteneacuteration du code exeacutecutif
SynDE
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
SynDESynDEx est un logiciel graphique qui impleacutemente lameacutethodologie AAA et qui offre plusieurs fonctionnaliteacutes
bull Speacutecification drsquoun algorithme drsquoapplication saisi sousforme drsquoun graphe
bull Speacutecification drsquoun graphe drsquoarchitecture multi-composant
bull Heuristique pour la distribution et lrsquoordonnancement delrsquoalgorithme drsquoapplication sur lrsquoarchitecture avecoptimisation du temps de reacuteponse
bull Geacuteneacuteration des exeacutecutifs distribueacutes temps reacuteel
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2779
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Utilisation de lrsquointerface
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2879
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Utilisation de l interface
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 2979
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
Lrsquoalgorithme est speacutecifieacute comme un graphe orienteacute ougravebull chaque sommet est une opeacuteration qui calcule les sorties
des entreacutees agrave chaque opeacuteration doit correspondre uneseacutequence drsquoinstructions compileacutee seacutepareacutement
bull Chaque arc est une deacutependance de donneacutees entre deux
opeacuterations (ou plus dans le cas de diffusion) c-a-d lasortie drsquoune opeacuteration est lrsquoentreacutee de lrsquoautre opeacuteration(ou de plusieurs autres opeacuterations) une entreacutee peut ecirctreconnecteacutee seulement agrave une sortie de mecircme type dedonneacutees
gor t m
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3079
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
gor t mon distingue 4 types de sommets
Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3179
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithmbull Le sommet function possegravede au moins une entreacutee et
une sortie crsquoest une opeacuteration agrave libre effet qui calculeses sorties uniquement agrave partir de ses entreacutees (c-a-d niagrave partir des variables globales ni agrave partir des
preacuteceacutedentes valeurs de ces entreacutees)bull Le sommet extio permet lrsquoacquisitionlrsquoeacutecriture des
entreacuteessorties on distingue trois cas
1 Capteur sans entreacutee agrave chaque reacuteaction sa sortierepreacutesente la valeur lue du capteur
2 Actionneur sans sortie agrave chaque reacuteaction ilenvoi son entreacutee agrave lrsquoactionneur
3 Linux_IO ces des meacutemoires partageacutees qui
permettent le transfert de donneacutees entre syndexet un langage eacutevolueacute
E i S egrave R b i eacute d P d i Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3279
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Algorithm
bull Le sommet memory possegravede uniquement uneentreacutee et une sortie crsquoest une opeacuteration agrave effetunique qui met la sortie degraves la premiegravere reacuteaction
agrave une valeur initiale calculeacutee auparavant et puisla sortie de la prochaine reacuteaction nrsquoest que
lrsquoentreacutee de la preacuteceacutedente reacuteactionbull Le sommet constant ne possegravede aucune entreacutee
il calcule sa sortie une seule fois avant la premiegravere reacuteaction puis la sortie demeure la mecircme pour chaque reacuteaction
E i S tegrave R b ti eacute d P d ti Algorithm
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3379
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
AlgorithmPour lrsquoalgorithme chaque sommet est caracteacuteriseacute par
bull Son type geacuteneacuterique (function extio memory constant)bull Un nom unique (tout les sommets doivent avoir des
noms diffeacuterents)bull Son type identifiant sa seacutequence drsquoinstructionsassocieacute
bull Sa liste drsquoarguments ougrave chaque argument est speacutecifieacute par bull Le nombre drsquoentreacuteesortiebull Le type de donneacuteesbull Le nom (tout les arguments doivent avoir des noms
diffeacuterents)
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3479
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitectureLrsquoarchitecture est speacutecifieacutee comme un graphe non orienteacute
ougrave bullChaque sommet est une ressource seacutequentielle il y adeux types de sommets
bull processeur crsquoest une ressource de calcul enmesure drsquoexeacutecuter seacutequentiellement les opeacuterationsdrsquoun algorithme il pourrait ecirctre un processeur ou
un circuit inteacutegreacute speacutecialiseacutebull meacutedia crsquoest une ressource de communicationen mesure drsquoexeacutecuter seacutequentiellement un transfertde donneacutees entre les meacutemoires des processeurs quilui sont connecteacutes
bull chaque arc est une connexion bidirectionnelle entreun processeur et un meacutedia
Equipe Systegraveme Robotiseacute de Production Architecture
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3579
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
ArchitecturePour lrsquoarchitecture chaque sommet est caracteacuteriseacute par
bull Un nom uniquebullSon type (processeur or meacutedia)bull Son type identifiant caracteacuteristiques mateacuterielles
bull Sa liste de connecteurs ougrave chaque connecteur est speacutecifieacute par bull son type identifiant le type de meacutedia agrave qui il peut ecirctreconnecteacute
bullUn nom
Equipe Systegraveme Robotiseacute de ProductionCaracteacuter st que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3679
Equipe Systegraveme Robotiseacute de Production
S y nd
e xV
5
Caracteacuter st que Nous distinguons deux cateacutegories de caracteacuteristiques lrsquoune relative
aux opeacuterations et lrsquoune agrave la communication 1 Comment speacutecifier les caracteacuteristiques des opeacuterations sous le menu AdequationAlOp_ArOp on obtient une boite
de dialogue avec
une liste de toutles types de
processeurs et
pour chaque processeur uneliste de tout les
types drsquoopeacuterationsqui peut lesexeacutecuter avec ladureacutee drsquoexeacutecutioncorrespondante
Equipe Systegraveme Robotiseacute de ProductionCaracteacuteristique
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3779
q p y
S y nd
e xV
5
q2 Comment speacutecifier les caracteacuteristiques de communication
sous le menu AdequationAlIO_ArIO on obtient une boitede dialogue avec une liste de tout les types de meacutedia et
pour chaque meacutedia une liste de tout les types de donneacutees
qui peut transfeacuterer avec la dureacutee de transfertcorrespondante
Equipe Systegraveme Robotiseacute de Production Contraintes
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3879
S y nd
e xV
5
Pour contraindre une opeacuteration agrave srsquoexeacutecuter sur un processeur donneacutee
1Seacutelectionner le(s) opeacuteration(s) agrave contraindre2 Seacutelectionner la commande AlgorithmSetConstraint3 Seacutelectionner le processeur qui doit exeacutecute les opeacuterationsseacutelectionneacutees
Pour enlever les contraintes seacutelectionner lrsquoopeacuteration puis exeacutecuterla commande AlgorithmDeleteConstraint
Pour voir sur quel processeur une opeacuteration est y contrainteseacutelectionner lrsquoopeacuteration puis exeacutecuter la commandeAlgorithmShowConstraint le processeur correspondant y sera
seacutelectionneacutePour voir toute les opeacuterations qui sont contraintes sur un processeurseacutelectionner le processeur puis exeacutecuter la commande
ArchitectureShowConstrained du menu les opeacuterationscorrespondantes y seront seacutelectionneacutees
Equipe Systegraveme Robotiseacute de Production A eacutequat o
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 3979
S y nd
e xV
5
q
Pour construire le planificateur des opeacuterations dugraphe drsquoalgorithme sur les processeurs du graphedrsquoarchitecture qui effectue automatiquement le routage
des deacutependances de donneacutees inter-processeurs et lacreacuteation et la planification des opeacuterations decommunication sur le meacutedia du graphe drsquoarchitectureon utilise la commande AdequationDoIt
Cette commande creacutee un heuristique qui cherche agraveminimiser le chemin critique du graphe drsquoalgorithme
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4079
S y nd
e xV
5Le code exeacutecutif est la partie qui gegravere les ressources
mateacuterielles pour les allouer aux besoins de lrsquoalgorithmedrsquoapplication Les ressources agrave allouer sont
1 Les espaces meacutemoires des processeurs2 Le temps des seacutequences drsquoinstructions3 Le temps des meacutedia de communication
Gracircce agrave la meacutethodologie AAA et le logiciel Syndexlrsquoutilisateur est exempte drsquoeacutecrire du code pour geacuterer ces
ressources Donc par simple exeacutecution de la commandeAdequationGenExec un code distribueacute pour chaque processeur est automatiquement geacuteneacutereacute Ce code est en
fait un exeacutecutif geacuteneacutereacute sur mesure pour lrsquoalgorithme etlrsquoarchitecture
Equipe Systegraveme Robotiseacute de ProductionGeacuteneacuteration du code exeacutecuti
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4179
S y nd
e xV5
Pour chaque processeur de lrsquoarchitecture un fichier
source macro-exeacutecutif m4 avec le mecircme nom estgeacuteneacutereacute plus un macro-makefile ayant le mecircme nom quecelui de lrsquoapplication Chacun de ces fichiers doit ecirctre
transcrit par le macro-processeur GNU M4 (assembleurC) Cette transcription deacutepend de plusieurs fichiers
1 Fichier syndexm4x qui deacutefini les macrosgeacuteneacuteriques de syndex2 Fichier processorTypem4x qui deacutefini les macros
de bas niveau du processeur3 Fichier applicationNamem4x qui deacutefini les macros
speacutecifiques agrave lrsquoapplication
4 Fichier mediaTypem4x qui deacutefini les macros decommunication de bas niveau du type de media
Equipe Systegraveme Robotiseacute de ProductionCreacuteat on rsquoapp cat on
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4279
S y nd
e xV5 Arborescence des reacutepertoires Rep_travail
Applicationmacros
~rtai
Eacutevolution de lrsquoapplication
Phase 1
Edition des macros(C ou Assembleur)
+GNUmakefile
Phase 2
Edition du graphe
(Algorithme amp
Architecteure)
Phase 3
Compilation amp Exeacutecution
Equipe Systegraveme Robotiseacute de ProductionSeacutequence de compilation de Synde
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4379
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4479
S y nd
e xV5
bull Introduction
bull Meacutethodologie AAA
bull Installation
bull Utilisation du logiciel Syndex
bull Macros
bull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4579
S y nd
e xV5
Macros Macros
bull Deacutefinition
bull Types de macros
bull Carte Robosoft MPC555
bull Macros Geacuteneacuterique MPC555
bull Macros speacutecifique Robosoftbull Macros de Communication
bull Macros drsquoapplicationbull Structure du fichier Macro
Equipe Systegraveme Robotiseacute de Production Deacutefinition
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4679
S y nd
e xV5
Un macro-processeur est un programme qui consommeen entreacutee une chaicircne de caractegraveres (texte source) la
traite seacutequentiellement en substituant chaque sous-chaicircne qursquoil reconnaicirct (Appel de macro) par unechaicircne correspondante de substitution ( Deacutefinition de
macro) qursquoil traite agrave nouveau jusqursquoagrave ce qursquoil nrsquo y ait plus de substitution possible et qui produit en sortie lachaicircne de caractegraveres traiteacutee
Equipe Systegraveme Robotiseacute de Productionypes e macrosL diffeacute t di ti t d d
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4779
S y nd
e xV5
Les diffeacuterents macros se distinguent en deux grandes
classes bull Macros geacuteneacuteriques
en geacuteneacuteral ceux sont des macros non destineacutes agraveecirctre utiliser directement par lrsquointerface syndexmais plutocirct utiliseacutees pour la programmation
drsquoautres macros (macros MPC555)bull Macros utilisateurs
macros utiliseacutes directement par syndex ils sontspeacutecifiques agrave lrsquoapplication (macros decommunication macros speacutecifiques robosoft
macros speacutecifiques agrave lrsquoapplication)
Equipe Systegraveme Robotiseacute de ProductionCarte Robosoft MPC555La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehicule
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4879
S y nd
e xV5
(1) Connecteur du chip MPC555(2) Alimentation continue(3) Interface BDM (Basic Debug Interface)(4) Entreacute Analogique (Joystickhellip)(5) EntreacuteSortie logiques(6) Ligne seacuterie Synchrone (Codeur absolu)(7) Ligne seacuterie Asynchrone (Port 0)
(8) Ligne seacuterie Asynchrone (Port 1)(9) Connecteur du bus CAN (Port 0)(10) Connecteur du bus CAN (Port 1)(11) Axe 1(13) Axe 2(14) Axe 3(15) Axe 4
La carte Robosoft MPC555 est conccedilue pour la commande de robot de veacutehiculeeacutelectrique ou toute autre machine Elle permet de commander un axe gracircce agrave
lrsquoajout drsquoune carte fille le controcircle srsquoeacutetend jusqursquoagrave 4 axesCette carte est baseacutee sur le microcontrocircleur MPC555 32-bit de MotorolaElle peut opeacuterer agrave une freacutequence
de 40 MHz Divers signauxlogique et analogique peuventecirctre utiliser pour lrsquoacquisition deet la commande de mateacuteriel Les
sorties disponibles peuvent ecirctreanalogique ou PWMOn y trouve
Equipe Systegraveme Robotiseacute de ProductionArchitecture du MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 4979
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionaract r st ques u
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5079
S y nd
e xV5
Equipe Systegraveme Robotiseacute de Productionacros n r quesbull GPIO (General-Purpose InputOutput)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5179
S y nd
e xV5
GPIO (General Purpose InputOutput)ce macro utilise le module USIU qui lui fourni 64 pins pour desentreacuteessorties numeacuteriques ordinaires (IO de la carte Robosoft lirelrsquoeacutetat de la pince envoi de commande agrave la pince lire les alarmes)
bull QADC (Queued Analog to Digital Converter)en utilisant le module QADC ce macro permet la conversion drsquounsignal analogique en entreacutee en un signal numeacuterique multi-niveaux(lire les donneacutees du capteur drsquoeacuteffort du joystick)
bull MIOS (Modular InputOutput System)Le module MIOS fourni 16 pins drsquoES numeacuteriques Sur la carte deRobosoft tous les pins sont en sortie Les 16 pins sont reacutepartiscomme suit
utilisateurs reacuteserveacutes
les pins de 0 agrave 11 sont reacuteserveacutes car ils sont preacutevus agrave ecirctre utiliseacutes pour unmateacuteriel particulier Mais si ce mateacuteriel nrsquoest pas utiliseacute lrsquoutilisateur peut lesutiliser librement
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5279
S y nd
e xV5
bull PWM (Pulse width Modulation)utilise le module MIOS (pins de 4-7 pour la direction des moteurset de 8-11 pour la validation) pour la commande des actionneursnumeacuteriques en PWM
bull TPU (Time Processor Units)les macros lieacutes agrave ce module permettent la lecture des encodeurs
increacutementauxbull QSPI (Queued Serial Peripheral Interface)
ce module fait partie du module QSMCM et les macros lieacutes servent
agrave son initialisation pour une communication avec du mateacuterielsexternes via le bus seacuterie synchrone
Equipe Systegraveme Robotiseacute de ProductionMacros Geacuteneacuter ques MPC55
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5379
S y nd
e x
V5 bull Serial port support (Polling implementation)
le MPC555 comprend dans le module QSMCM une interface decommunication seacuterie SCI qui permet la communication avec dumateacuteriels externes via un bus seacuterie asynchrone Plusieurs macros
sont lieacutes agrave cette interface pour initialiser et eacutetablir la communicationbull Serial port support (interrupt handling implementation)
pour la mecircme interface SCI du module QSMCM pour cette
meacutethode drsquoimpleacutementation les macros lieacutes initialisent et eacutetablissentla communication en mode par interruption ce qui permet dedeacutetecter lrsquoarriveacutee des donneacutees sur le port seacuterie au lieu de le scruter
en permanence
tous ces macros on les retrouvent dans le fichier 555m4x
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tles macros suivants sont deacutedieacutes agrave la carte de Robosoft MPC555
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5479
S y nd
e x
V5
bull Initialisation de la carte Robosoftmain_ini_() macro ne doit pas ecirctre utiliser par les programmateursdu fait qursquoelle sert qursquoagrave initialiser la carte robosoft Macro interne agrave
syndex dont lrsquoappel est automatique lors de geacuteneacuteration drsquoexeacutecutifMPC555
bull DAC (Digital to Analog Converter)
macro permet lrsquoutilisation du convertisseur de carte robosoft via lemodule MIOs en utilisant les pins de 0 agrave 2
bull LED (on-bord LED interface)
macro permet la gestion de la LED de la carte robosoft connecteacuteeau module QSPI (pin PCS1)
bull SPI absolute encoder
macro permet lrsquoutilisation lrsquointerface du codeur absolu de la carterobosoft connecteacute au module QSPI
Equipe Systegraveme Robotiseacute de ProductionMacros Speacutec ques Ro oso tbull Motor amplifier direction
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5579
S y nd
e x
V5
Motor amplifier directionmacro qui permet de geacuterer la direction des moteurs
bull Motor power amplifier validationles moteurs embarqueacutes sur les robots sont eacutequipeacutes de freins
eacutelectriquement commandable Ce macro permet drsquoenvoyer unsignal drsquoinhibition pour deacutebloquer les freins
bull Watch dog
pour des raisons de seacutecuriteacute un meacutecanisme mateacuteriel que robosofta ajouteacute sur la carte Ce watch-dog vise agrave stopper lrsquoactiviteacute dumoteur en cas ougrave le programme plante Le watch est impleacutementeacute
comme un time-out mateacuteriel Srsquoil nrsquoest pas rafraicircchi peacuteriodiquement il transmet un signal de sortie ce qui enlegraveve lavalidation de lrsquoamplificateur de puissance donc lrsquoarrecirct dumouvement
ces macros se trouvent dans le fichier RSBm4x
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5679
S y nd
e x
V5
Macros de Communicationchaque meacutedia de communication (bus CAN ) est une ressourceseacutequentielle ougrave les transferts de donneacutees entre processeurs doiventsuivre un certain ordre Donc ce macro de communication sert agravedeacutefinir cet ordre et agrave identifier le protocole de communication lecodagedeacutecodage de lrsquoinformation et la synchronisation
on trouve ces macros dans le fichier CANm4x
Macros drsquoapplicationce genre de macros sont speacutecifique au mateacuteriel en question et aussiagrave lrsquoapplication en particulier Ce sont des macros utilisateurs
on trouve ces macros dans le fichier Application_namem4x
Equipe Systegraveme Robotiseacute de Production
section include (pour inclure drsquoautres fichiers macro agrave utiliseStructure du fichier macr
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5779
S y nd
e x
V5
section define (pour tous les macros utilisateurs)MGC lsquoINITrsquo (MGC Macro Generation Context variable)
divert (declaration) (deacutebut du macro)
(deacuteclaration des variables des meacutemoires et des csts
divert (o)
MGC lsquolooprsquocode en assembleur code en C
dnl (commentaires)
MGC lsquoENDrsquo dnl (fin de la macros)divert lsquo lsquo dnl
macros MPC555meacutemoire MPC555
constante MPC555
macros RTAImeacutemoire RTAI
constante RTAI
Equipe Systegraveme Robotiseacute de Production Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5879
S y nd
e x
V5
bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 5979
S y nd
e x
V5
LinuxIO LinuxIO une interface une interface
CC++ avecCC++ avec SynDExSynDEx
bull Principe de basebull Utilisation de linuxIO_ par syndex
bull Utilisation de linuxIO_ par un programmeCC++
Equipe Systegraveme Robotiseacute de ProductionPrincipe de baseSyndex fourni une interface graphique pour la conception
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6079
S y nd
e x
V5
Syndex fourni une interface graphique pour la conception
drsquoapplications Par contre des fois nous avons besoin drsquoautresfonctionnaliteacutes non disponibles donc il faut les creacuteer Cependantgeacuteneacuterer des macros pour syndex srsquoavegravere difficile pour certains du
fait qursquoil faut avoir une bonne connaissance de la programmation bas niveau Dans ce cas lrsquoutilisation de linux_IO trouve sa placedans un contexte particulier interfacer des applications CC++utilisateurs avec des applications embarqueacutees temps reacuteeldeacuteveloppeacutees sous syndex
Par rapport agrave ce contexte de programmation lrsquoorganisation du
deacuteveloppement des applications est structureacutee en deux parties 1 Application haut niveau
2 Application bas niveau
Equipe Systegraveme Robotiseacute de ProductionPrincipe de base
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6179
S y nd
e x
V5
En reacutesumeacute lrsquoapplicationutilisateur contient une
partie haut niveau enCC++ et une partie basniveau sous syndex avecun eacutechange de donneacuteesentre les deux partie en
utilisant la couche RTAIde linux
Equipe Systegraveme Robotiseacute de Production pp cat on aut n veauOn entend application haut
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6279
S y nd
e x
V5
niveau tout programmecomme la planification detrajectoires strateacutegies de
navigation etc hellipLrsquoeacutechange de donneacutees sefait par le biais desmeacutemoires partageacutees quifont parti du noyau RTAI
et de lrsquoespace utilisateursde Linux
Toute ressource preacutesente sur la carte Robosoft peutecirctre partageacutee sans aune restriction
Equipe Systegraveme Robotiseacute de Production pp cat on as n veauUne application bas niveau
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6379
S y nd
e x
V5
Une application bas niveau
est un programme conccedilusous syndex comme lacommande des moteurs la
lecture des capteurs etc hellipLes ressources mateacuteriellessont controcircler par plusieurs
cartes MPC555 Ces cartessrsquoeacutechangent des donneacuteesvia le bus CAN Donc ES
est prise en charge par lasource logicielle deacutedieacutee quisrsquoexeacutecute dans les cartes MPC555 puis la couche RTAI
est utiliseacute pour la mise agrave jour de meacutemoires partageacutees pour lrsquoespace utilisateurs linux drsquoeacutechange de donneacutees
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6479
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de ProductionUtilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6579
S y nd
e x
V5
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6679
S y nd
e x
V5
Degraves que la conception de lrsquoapplication sous syndex esttermineacutee et apregraves compilation (AdequationDo it +GenExec) un fichier drsquoentecircte sous le nom de linioh est
automatiquement geacuteneacutereacute Ce fichier contient lesinformations neacutecessaires pour acceacuteder aux entreacutees enlecture et aux sorties en eacutecriture des opeacuterations linuxIO_
inseacutereacutees dans le graphe drsquoalgorithme Le contenu de cefichier est organiseacute en plusieurs parties une pour chaqueopeacuteration linux_IO preacutesente dans le graphe
Equipe Systegraveme Robotiseacute de Production
5
Utilisation de linux_IO par syndex linioh auto-generated C users API frontend
C i h b f 2001 i i i b f f
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6779
S y nd
e x
V5 Copyright Robosoft 2001 Pierre Pomiers ltpierrerobosoftfrgt
LINUX IO shared memory data segments
define SEG0_BASE 0x10000typedef struct
int js_spd_o0
int js_str_o0
int enc_R_o0int enc_L_o0
double odo_X_o0
double odo_Y_o0
double odo_T_o0int spd_R_o0
int spd_L_o0
int time
unsigned char sem shm_seg0_def
Nom du segment de meacutemoire partageacutee pour notre opeacuteration linuxIO_
7 signaux drsquoentreacutees Ces valeurs sonten lecture et sont peacuteriodiquementrafraicircchies par RTAI
2 signaux de sorties Ces valeurs sonten eacutecriture et sont peacuteriodiquementrafraicircchies par RTAI
Equipe Systegraveme Robotiseacute de Production
5
Crsquoest une eacutetape tregraves facile il suffit drsquoinclure le fichier drsquoentecirctelinio h dans le code du fichier en CC++ comme suit
Utilisation de linuxIO_ par un programme CC+
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6879
S y nd
e x
V5 linioh dans le code du fichier en CC++ comme suit
include linioh
include ltrtai_shmhgt
static shm_seg0_def seg0
shm_seg0_def robot
seg0 = rtai_malloc (SEG0_BASE sizeof (shm_seg0_def))
if (seg0-gtsem = 0) bcopy (seg0 amprobot sizeof (shm_seg0_def))helliphelliphellip
helliphelliphellip bcopy (amprobot seg0 sizeof (shm_seg0_def))helliphelliphelliphelliphelliphellip
rtai_free (SEG0_BASE seg0)
fichier drsquoentecircte de la meacutemoire partageacutee fourni dans la couche RTAI de linux
Initialisation du segment SEG0_BASE Allocation de lameacutemoire pointeacutee
par seg0
Lecture des donneacutees provenant du bas
niveau
Mise agrave jours du segment de meacutemoire partageacutee
Libeacuterer le segment de meacutemoire alloueacute
Equipe Systegraveme Robotiseacute de Production
5
Plan
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 6979
S y nd e x
V5
bull Introductionbull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7079
S y nd e x
V5
Exemple dapplication Exemple dapplication Robuter Robuter--ULM ULM
Equipe Systegraveme Robotiseacute de Production
V5
Description Robuter-ULMbull Base mobile (2-RM 2-RF)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7179
S y nd e x
V
bull Bras ultra-leacuteger 6 axesbull Ceinture 24 capteurs US
bull Capteur drsquoefforts 6 axes
bull Cameacutera CCD monochromeavec carte drsquoacquisition
bull PC embarqueacute MMX 233
bull OS linux redhat 61 avecRTAI V-13
bull 3 bouton drsquoarrecirct drsquourgence
bull 4 batteries 48 VDC 4 X12V 60 Ah
bull Entreacutee Joystick
bull Liaison Ethernet sans fil
Le manipulateur mobile Robuter-ULM comprend
Equipe Systegraveme Robotiseacute de Production
V5
Base Mobilebull dimension
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7279
S y nd e x
V
1025 mm de longueur 680 mm de largueur et 44 cm de hauteurbull Poids environ 150 kg avec les batteriesbull charge jusqursquoagrave 120 kg
bull vitesse de 5cms agrave 125 msbull Moteurs 2 X 300 W DC 48 VDCbull orientation par diffeacuterence de vitesse
bull Preacutecision Position par encodeurs optiquesbull Deux roues motrices diffeacuterentielles et de deux roues follesbull Drsquoune ceinture de 24 capteurs Ultrasons
bull Une carte MPC555 de Robosoft pour le controcircle des deuxmoteurs DC des 2 rouesbull Un systegraveme drsquoodomeacutetrie qui donne la position relative du robot
par rapport agrave son repegravere
Equipe Systegraveme Robotiseacute de Production
V5
bull dimension Faute de documentation
Bras U tra- eacuteger
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7379
S y nd e x
V Faute de documentation
bull Poids moins de 20 kgbull charge 2 kgbull Moteurs 6 moteurs DC
bull gripper pince eacutelectrique 2 doigtsbull Reacutepeacutetabiliteacute +- 1mmbull 3 carte MPC555 de Robosoft lrsquoune pour le capteur drsquoeffort et les
deux autres pour les 6 moteurs + moteur de la pincebull Position encodeur increacutemental
1 2 3 4 5 6Axisrange
plusmn90deg 0-90deg plusmn80deg plusmn100deg plusmn90deg plusmn110deg
vitesse 180degs 180degs 180degs 180degs 180degs 180degs
Equipe Systegraveme Robotiseacute de Production
V5
rc tecture ar ware
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7479
S y nd e x
V
Equipe Systegraveme Robotiseacute de Production
V5
Pro eacutemat quePlusieurs applications peuvent ecirctre impleacutementeacutees sur le robot
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7579
S y nd e x
V
Cependant il faut faire la diffeacuterence entre les applications quidemande lrsquoutilisation de syndex et les applications qui neneacutecessite qursquoune programmation en CC++ Agrave titre drsquoexemple
bull Localisationbull Commande en position
bull Commande en forcebull Navigation
bull Geacuteneacuteration de trajectoire
bull Vision
Equipe Systegraveme Robotiseacute de Production
V5 bull Pince eacutelectrique (TOR)
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7679
S y nd e x
Vq ( )
bull Pince possegravede des ES Logiques
Notre application consiste agrave
bull Recevoir lrsquoeacutetat de la pince (fermeacutee ouverte )
bull Envoyer une commande vers la pince
Capture
drsquoinformation
Open
Close
CommandeMeacutemoire
Partageacutee
Actionneur
Pince Prise de deacutecision Pince
Equipe Systegraveme Robotiseacute de Production
V5
Sc eacutema eacute ectr que
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7779
S y nd e x
Equipe Systegraveme Robotiseacute de Production
V5
Conclusion
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7879
S y nd e x bull Introduction
bull Meacutethodologie AAA
bull Installationbull Utilisation du logiciel Syndex
bull Macrosbull LinuxIO un interface CC++ avec SynDEx
bull Exemple drsquoapplication Robuter-ULM
Equipe Systegraveme Robotiseacute de Production
V5
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions
8172019 Cours Syndex
httpslidepdfcomreaderfullcours-syndex 7979
S y nd e x
Questions