Systèmes d’exploitation et programmation de systèmes -GPA435- Cours #10: Filtre programmable gawk(1) – Partie 2 Enseignant: Jean-Philippe Roberge Jean-Philippe Roberge - Juillet 2014
Planification du cours #10 Revue de l’évaluation informelle Petite révision du cours #9: Principe de fonctionnement de NAWK Exécution des programmables NAWK Structure d’un programme NAWK Cours #10: Activités de traitement Patrons (revue des possibilités et des expressions régulières) Actions Fonctions prédéfinies Fonctions utilisateurs Exercices Semaine prochaine: visite du laboratoire de commande et de robotique de l’ÉTS (CoRo) Jean-Philippe Roberge - Juillet 2014
Revue de l’évaluation informelle
Résultat du sondage (1) n=24 Jean-Philippe Roberge - Juillet 2014
Résultats du sondage (2) Quelques-uns des commentaires reçus : “Il serait bien d’avoir plus d’exercices à faire à la maison avec correction en classe” “Plus d’exercices nous permettrait de mieux assimiler la matière” “L’organisation du laboratoire laisse à désirer, surtout au début du trimestre” “Plus d’exemple de ton expérience vis-à-vis Linux à l’agence spatiale canadienne” “Les cours sont intéressants, vive les crash d’ordinateur à distance!” “Il serait bien d’avoir un exemple cool par semaine, par exemple, les virus et commandes que tu nous as montrés au début du cours, c’était bien!” “Bonne synchronisation entre la matière du cours et les laboratoires. Par contre, il serait bien de faire une modification au niveau du laboratoire #1” “Mettre-à-jour les versions de Linux du laboratoire qui date de plusieurs années” Jean-Philippe Roberge - Juillet 2014
Résultats du sondage (3) Quelques-uns des commentaires reçus (suite) : “Il serait bien d’avoir de gros programmes ou des gros exemples au lieu de plusieurs petits” “Plus d’exercices qui préparent aux examens” “Je trouve que le cours est bien présenté, avec de la motivation” Jean-Philippe Roberge - Juillet 2014
Filtres programmables nawk (1) Rappel: Il s’agit d’un programme UNIX capable d’interpréter un programme utilisateur. Le programme doit être écrit en utilisant les instructions légales et selon le format de nawk(1). Le concept de programmation est appelé « piloté par données » (data-driven). nawk(1) est efficace, notamment dans le cadre de: Validation des concepts de programmation Automatisation des tâches de gestion Évaluation rapide des algorithmes etc. Jean-Philippe Roberge - Juillet 2014
Invocation de nawk (1) Le synopsis de nawk(1): nawk [-F c] [-f prog | 'prog' ] [-v var=valeur…] [fich1 fich2 …] Chaque ligne d’entrée est séparée en champs $0, $1, $2, $3, etc. Ces champs n’ont rien à voir avec les $1, $2, ... de Bourne shell. On peut spécifier un programme nawk(1) dans un fichier par l ’option -f ou l’écrire directement entre apostrophes.
Filtres programmables nawk (1) Son principe de fonctionnement: GPA435 Systèmes d'exploitation et programmation de système
Programmation nawk (1) Nous avions vu un premier exemple où le programme nawk(1) est spécifié directement entre apostrophes: GPA435 Systèmes d'exploitation et programmation de système
Programmation nawk (2) Nous avions vu qu’il était aussi possible de spécifier le programme nawk(1) dans un fichier: L’option -f est obligatoire. Il est recommandé d’utiliser un fichier source surtout lorsqu’il comporte beaucoup de lignes. L’utilisation d’un fichier source facilite la compréhension surtout pour les novices.
Programmation nawk (3) Utilisation de nawk(1) dans un fichier de commande:
Structure d’un programme (1) La structure d ’un programme nawk(1) est une séquence de « patron - action »: Le programme est toujours entouré de ' ' s’il est spécifié dans la ligne de commande. Il doit exister au moins un caractère blanc (Espace ou Tab) entre le patron et son action. Les patrons sont évalués dans l’ordre spécifié.
Structure d’un programme (2) Les déclarations « patron - action » peuvent ne pas contenir de patron OU d’action. Une déclaration sans patron l’action correspondante est toujours exécutée peu importe la ligne d’entrée. Une déclaration sans action la ligne d’entrée est affichée à la sortie standard (équivalent à print $0) si elle satisfait le critère spécifié par le patron. On peut considérer un patron comme un filtre d’où l’appellation « filtre programmable »
Structure d’un programme (3) Un exemple qui démontre cela: Une déclaration sans patron (sans filtre) Une déclaration sans action (activation de l’action par défaut qui est le print $0)
Structure d’un programme (4) La première accolade est toujours placée sur la même ligne que le patron. On peut utiliser le point-virgule (;) pour séparer les instructions d’une même ligne. Ces deux styles d’écriture sont équivalents.
Activité de traitement (1) Voici les activités réalisées par nawk(1) lors de l’exécution d’un programme utilisateur. On remarque qu’il y a un ensemble d’opérations effectuées par nawk(1) qui facilitent grandement la programmation.
Pour chaque ligne d’entrée (d’un fichier ou de l’entrée standard), nawk(1) effectue l ’appariement entre les champs de la ligne et chacun des patrons du programme. Donc, ce n’est pas un simple case - esac !!
COURS #10
-Retour sur les expressions régulières (entre autres, parenthèses…) -Fin des exercices du dernier cours… Les étapes nécessaires pour écrire un programme nawk(1): Comprendre le principe de traitement de nawk(1) section 9 à 9.3 Identifier les patrons légaux de nawk(1) section 9.4 Identifier les actions légales de nawk(1) section 9.5 Faire les exercices de ce chapitre!
Notions d’expressions régulières (1) Introduction aux expressions régulières, les méta-caractères: GPA435 Systèmes d'exploitation et programmation de système
Notions d’expressions régulières (2) Document de référence sur les expressions régulières (à lire!): https://cours.etsmtl.ca/gpa435/exercices/regex.pdf GPA435 Systèmes d'exploitation et programmation de système
Essentiel des traitements (1) Rappel du dernier cours: La provenance des données d’entrée: Fichiers spécifiés à la ligne de commande Via un tuyau ou la redirection Lecture des données est réalisée automatiquement par nawk(1). Séparation des lignes d’entrée en champs est réalisée par nawk(1): FS caractères de séparateur de champ NF nombre de champs obtenus GPA435 Systèmes d'exploitation et programmation de système
Essentiel des traitements (2) Chaque ligne d’entrée est comparée à la séquence « patron - action »: S’il y a correspondance entre la ligne d’entrée et un patron, l’action correspondante est exécutée. Le paradigme est piloté par données « data-driven ». La ligne d’entrée est comparée à tous les énoncées « patron - action » du programme utilisateur.
Patrons (1) BEGIN END expr Six types de patron: L’action associée est toujours exécutée avant le traitement des lignes d’entrée END L’action associée est toujours exécutée à la fin des traitements des lignes d’entrée expr Une expression arithémtique et/ou relationnelle La valeur non nulle ( 0) du résultat de l’évaluation de expr provoque l’exécution de l’action associée
Patrons (2) /regex/ expr_comp Six types de patron (suite): Une expression générique. La correspondance entre regex et la ligne d’entrée provoque l’exécution de l’action associée. Le symbole ~ représente l’opérateur d’appariement $0 ~ /^[0-9].*$/ expr_comp Expression composée. Le patron est composé de plus d’un expr (/regex/) reliés par des opérateurs logiques ! Négation, || OU-logique (à part dans les parenthèses), && ET-logique ~ est équivalent à = pour une expression ordinaire
Patrons (3) expr_interv Ce patron signifie: Six types de patron (suite): expr_interv Expression exprimant un intervalle L’action associée est exécutée pour toutes les lignes à l’intérieur de l ’intervalle $1 > 5 && $1 < 100 Ce patron signifie: Les lignes d’entrée dont le champ 1 est plus grand que 5 et plus petit que 100. L’action associée à ce patron sera exécutée pour les lignes d’entrée satisfaisant cette contrainte.
Action (1) Les actions de nawk(1) sont composées de: Instructions légales (voir section 9-5) Fonctions pré-définies (voir section 9-5) Fonctions utilisateurs: function nomFunc (liste-parametres) { déclarations } Liste-parametres sont des variables passées à la fonction. Elles sont locales à la fonction. Les variables utilisées dans une fonction sont automatiquement des variables globales. Une fonction peut retourner un résultat par l’instruction return resultat
Action (2) Quelques fonctions prédéfinies:
Action (3) Quelques fonctions prédéfinies (suite):
Programmation nawk(1) Comment écrire un programme nawk(1) ? Déterminer le but du programme Comprendre le format des données à traiter Établir l’algorithme de traitement Quelles sont les variables et constantes à initialiser dans le programme ? Les initialiser dans l’action du patron BEGIN Quelles sont les tâches à effectuer à la fin du programme ? Les réaliser dans l’action du patron END
Programmation nawk(1) 1) Scinder l’algorithme en une séquence de « patron - action » 2) Chaque énoncée « patron - action » doit réaliser une patrie de l’algorithme 3) N’oubliez pas, les lignes d’entrée sont comparées à toutes les énoncées « patron - action » 4) Établir les patrons à utiliser: Doit-on utiliser des expressions arithmétiques? Doit-on utiliser des expressions régulières? Doit-on utiliser des expressions composées ? Doit-on utiliser des expressions d’intervalle ?
Programmation nawk(1) Écrire les actions associées: Vérifier s’il existe une fonction pré-définie pour accomplir la tâche Vérifier s’il est nécessaire de créer une fonction utilisateur pour simplifier la programmation Tester le programme nawk(1): Utiliser un petit nombre de données pour tester le programme Tester le programme partie par partie Tester le programme en intégrant séquentiellement toutes les parties ensembles
Exemples (1) Fréquence des mots dans un texte… Dans le domaine de l’analyse textuelle, la fréquence des mots est un outil très utilisée dans l’authentification des documents. Les gens ont tendance à utiliser souvent les mêmes mots. Nous allons créer un petit programme capable de donner la fréquence d’apparition des mots dans un texte Mots majuscules = Mots minuscules
Exemples (2) Ordinogramme Nous utiliserons une expression générique et la fonction gsub() pour accomplir cette tâche Un tableau associatif est un tableau dans lequel l’indice des éléments est une chaîne de caractères. Ex: tab["nom"] = "Tony" https://www.youtube.com/watch?v=5qXvj56dmmw Nous utiliserons l’instruction print pour réaliser l’affichage
Exemples (3) Isolation des mots par gsub() revient à éliminer les caractères de ponctuation: gsub(/[.,:;!?(){}]/, "") Premier paramètre: les caractères entre crochets. Donc, reliés par un OU-logique implicite Deuxième paramètre: vide. Donc, substitution par le vide = élimination Substitution globale du premier paramètre par le deuxième paramètre de la fonction Note: Chaque mot d’une ligne est automatiquement placé dans un champ par nawk(1)
cat texte.txt | tr 'a-z' 'A-Z' > lignes.tmp Exemples (4) Confondre les mots majuscules et les mots minuscules: cat texte.txt | tr 'a-z' 'A-Z' > lignes.tmp Cette conversion est réalisée en dehors du programme nawk(1). On utilise la commande UNIX tr(1) pour effectuer la conversion minuscule - majuscule via un tuyau. Le texte majuscule est placé dans le fichier temporaire lignes.tmp
Exemples (5) Compter les mots revient à stocker les mots dans un tableau associatif. Les indices du tableau sont les mots eux-mêmes et la valeur d’un élément du tableau est le nombre d’apparitions d’un mot: for (i=1; i<=NF; i++) compte[$i]++ NF est le nombre de champs de la ligne d’entrée. Dans notre contexte, NF est le nombre de mots de la ligne d’entrée $i représente le contenu du ie champ. Dans notre contexte, il s ’agit du ie mot de la ligne. Compte est le tableau associatif. Chaque élément de ce tableau est un mot distinct.
Exemples (6) A-t-on besoin d’initialiser les variables ou constantes pour ce programme ? Non. Donc pas de patron BEGIN ni son action associée. A-t-on besoin d’effectuer des tâches à la fin du programme ? Oui. Il faut afficher le nombre d’apparitions des mots et le nombre total des mots rencontrés. Cette tâche sera réalisée dans l’action associée au patron END.
#!/bin/sh # comptemot # Programme utilisant nawk(1) pour compter le nombre d'apparitions # des mots dans un texte # D'abord convertir le texte en majuscule et le mettre dans un # fichier temproraire "lignes.tmp" cat texte.txt | tr 'a-z' 'A-Z' > lignes.tmp nawk ' # A la fin du programme afficher le resultat en ordre decroissant # numerique END { for (mot in compte) { print compte[mot], mot | "sort -rn" total += compte[mot] } print "Nombre total des mots: " total { gsub(/[.,:;!?(){}]/,"") # elimine la ponctuation for (i=1; i<=NF; i++) # placer les mots trouves dans un compte[$i]++ # tableau associatif ' lignes.tmp
Exemples (7) Résultat: centi 10> comptemot | more 14 JE Je me tutoie Je me tutoie depuis deja longtemps Je me serre, je me sors Je me berce, je me borde et je m'endors Fatigue de moi je reve de toi Je te majuscule Je te point d'exclame Je te vouvoie Mais lorsque je nous trait d'union Ca me reveille Or je me minuscule Je me rendors Point James Corcoran centi 10> comptemot | more 14 JE 9 ME 3 TE 2 TUTOIE 2 POINT 2 DE 1 VOUVOIE 1 TRAIT 1 TOI 1 SORS 1 SERRE 1 REVEILLE 1 REVE : : : 1 BERCE Nombre total des mots: 60
Exemples (8) Principe de fonctionnement: Le tableau associatif utilise les mots du texte comme indice. Chaque mot distinct est un élément du tableau associatif. Le contenu du tableau associatif est le nombre d ’apparitions des mots dans le texte.
Exemples (9) Extraire les informations d’un en-tête de courriel. L’en-tête est placé au préalable dans un fichier temporaire. Le programme doit extraire: L’adresse de la source La date et l’heure de réception Le sujet du courriel La longueur du corps du courriel
Exemples (10) Ces informations sont à extraire par notre programme. From wong@exa.gpa.etsmtl.ca Fri Mar 17 15:51 EST 2000 X-UIDL: f8d17591aadd380945dc16c5f506b9f7 Received: from gpa.etsmtl.ca (tony [142.137.41.54]) by exa.gpa.etsmtl.ca (8.9.1a/8.9.1) with ESMTP id PAA04884 for <wong@gpa.etsmtl.ca>; Fri, 17 Mar 2000 15:51:43 -0500 (EST) Message-ID: <38D29C38.DD2271C9@gpa.etsmtl.ca> Date: Fri, 17 Mar 2000 15:57:28 -0500 From: Tony Wong <wong@gpa.etsmtl.ca> : : : MIME-Version: 1.0 To: Tony Wong <wong@exa.gpa.etsmtl.ca> Subject: TEST 1 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=iso-8859-1 Content-Length: 366 Status: U Ces informations sont à extraire par notre programme. Attention! Le programme nécessite l’en-tête pré-enregistré dans un fichier. Les Date:, From:, subject: et Content-Length: sont situés dans le premier champ ($1)
Ordinogramme Ces étapes sont réalisées auto-matiquement par nawk(1).
Exemples (11) Détecter les mots clés des données recherchées. Utiliser un patron par mot clé: $1 == "Date:" { actions… } $1 == "From:" { actions… } $1 == "Subject:" { actions… } $1 == "Content-Length:" { actions… }
Exemples (12) Extraire les informations correspondantes. Il faut localiser les données à extraire Utiliser la fonction substr() pour extraire les données Puisque les 4 informations seront extraites de la même façon, nous créerons une fonction utilisateur nommée extraitinfo()
Exemples (13) La fonction utilisateur extraitinfo(): function extraitinfo(ligne, motcle) { return substr(ligne, length(motcle) + 2) } ligne contient la ligne d’entrée motcle contient le mot clé Date:, From:, Subject:, Content-Length: Extraire la sous-chaîne de ligne à partir de la position length(motcle) + 2 On veut passer par dessous les caractères Espace après le mot clé.
Exemples (14) A-t-on besoin d’initialiser les variables ou constantes pour ce programme ? Oui. Les mots clés seront placés dans des variables globales. (Patron BEGIN) A-t-on besoin d’effectuer des tâches à la fin du programme ? Oui. Afficher les données extraites à la sortie standard. (Patron END)
#!/bin/sh FICHIER_ENTETE=entete.tmp cat "$FICHIER_ENTETE" | nawk ' BEGIN { DE = "From:"; DATE = "Date:" SUJET = "Subject:"; LONGUEUR = "Content-Length:" } END { print "Source-> ", De print "Date de reception-> ", Date print "Sujet du courriel-> ", Sujet print "Longueur du corps-> ", Longueur $1 == DE { De = extraitinfo($0, DE) } $1 == DATE { Date = extraitinfo($0, DATE) } $1 == SUJET { Sujet = extraitinfo($0, SUJET) } $1 == LONGUEUR { Longueur = extraitinfo($0, LONGUEUR) } function extraitinfo(ligne, motcle) { return substr(ligne, length(motcle) + 2) ' Fonction utilisateur nawk(1). Toujours définir à l’intérieur des apostrophes d ’un programme nawk(1).
Exemples (15) Résultat: From wong@exa.gpa.etsmtl.ca Fri Mar 17 15:51 EST 2000 X-UIDL: f8d17591aadd380945dc16c5f506b9f7 Received: from gpa.etsmtl.ca (tony [142.137.41.54]) : : : Date: Fri, 17 Mar 2000 15:57:28 -0500 From: Tony Wong <wong@gpa.etsmtl.ca> To: Tony Wong <wong@exa.gpa.etsmtl.ca> Subject: TEST 1 Content-Length: 366 Status: U centi 53> enteteinfo Source-> Tony Wong <wong@gpa.etsmtl.ca> Date de reception-> Fri, 17 Mar 2000 15:57:28 -0500 Sujet du courriel-> TEST 1 Longueur du corps-> 366
Exemples (16) Nous pouvons modifier le programme pour faciliter le traitement. Créer une fonction Bourne shell qui accepte en paramètre le mot clé. Cette fonction retournera les données extraites via la sortie standard. Dans le programme Bourne shell, nous afficherons les données obtenues.
Fonction Bourne shell Programme nawk(1) #!/bin/sh # enteteinfo2 FICHIER_ENTETE=entete.tmp extrait () { # # $1 contient le nom du fichier entete nawk -v MOTCLE="$1" ' END { print Info } $1 == MOTCLE { Info = substr($0, length(MOTCLE) + 2) } ' "$FICHIER_ENTETE" } DATE=`extrait "Date:" | tr ':' '/'` DE=`extrait "From:"` SUJET=`extrait "Subject:"` LONGUEUR=`extrait "Content-Length:"` Passage de paramètre du Bourne shell vers le programme nawk(1) Fonction Bourne shell Programme nawk(1) Les mots clés sont passés à la fonction Bourne shell extrait(). À son tour, elle passe le mot clé reçu au programme nawk(1) via l’option -v
Résultats obtenus La suite et fin du programme ... echo "La date de reception> $DATE" echo "La source est> $DE" echo "Le sujet du courriel> $SUJET" echo "La longueur du corps> $LONGUEUR » La suite et fin du programme ... Résultats obtenus centi 35> enteteinfo2 La date de reception> Fri, 17 Mar 2000 15/57/28 -0500 La source est> Tony Wong <wong@gpa.etsmtl.ca> Le sujet du courriel> TEST 1 La longueur du corps> 366
Exemples (16) Exercices
-Préliminaires à la visite du laboratoire CoRo- Introduction à ROS : Robotic Operating System
Introduction à ROS (1) Petit historique de Willow Garage: ROS pour “Robotic Operating System” – conçu par Willow Garage Petit historique de Willow Garage: Compagnie créée en 2006, par Scott Hassan, qui est un ancien employé de Google. La compagnie est située à Menlo Park, en Californie. 2009: La compagnie conçoit son premier robot de taille humaine qui peut ouvrir des portes et détecter des prises électriques pour pouvoir s’y brancher. 2010: création d’une plateforme pour le développement d’applications robotiques, i.e. ROS Juin 2010: Distribution de leur robot PR2 (très connu) à diverses universités / institutions de recherche pour augmenter la synergie de création d’applications Septembre 2010: Lancement du PR2 sur le marché : environ 400000$, ou 280000$ si l’institution peut démontrer son engagement passé et futur envers l’open source !
Introduction à ROS (2) Qu’est-ce que ROS? ROS est en fait un framework, c’est-à-dire une collection de composants logiciels. Ceux-ci visent à fournir les fonctionnalités typiques d’un système d’exploitation et ce, pour le développement d’applications robotiques. Abstraction du matériel “Hardware Abstraction” Gestion de package(s) Gestion de la communication inter-processus (par messages) ROS fonctionne sur Linux et est complètement open-source ! Permet la standardisation et la conformité du développement dans le domaine de la robotique. L’efficacité des opérations s’en trouve augmentée.
Introduction à ROS (3) Exemple de compagnies qui font des produits utilisant ROS: ABB PR1, PR2 de Willow Garage Adept Raven II Surgical Robotic Research Platform Motoman Universal Robots Shadow Robot Hand Robotiq STAIR I and II (Standford) Robot Baxter de Rethink Robotics SummitXL de Robotnik BeagleBoard (KU Leuven) Nao de l’université de Fribourg Husky A200 de ClearPath Robotics UBR1 de Unbounded Robotics CORIAS (COntinuous Range And Intensity Acquisition System) – Agence spatiale Canadienne CoRo Une liste beaucoup plus exhaustive se trouve ici: http://wiki.ros.org/Robots
Introduction à ROS (4) Principe de fonctionnement
Introduction à ROS (5) Exemple:
Activités du laboratoire (1) Domaines des activités de recherche menées au laboratoire: Robotique de précision (notamment par la calibration) Robotique parallèle Mécatronique et les systèmes haptiques La commande Professeurs, professionnels et étudiants: Prof: Ilian Bonev, Pascal Bigras, Vincent Duchaine, Guy Gauthier Professionnels de recherche: Yannick Noiseux, Jean-Philippe Roberge Au total, entre 20 et 30 étudiants au doctorat, étudiants à la maîtrise, chercheurs post-doctoraux et étudiants au projet de fin d’études.
Activités du laboratoire (2) Mes activités de recherche au lab: Mécatronique et les systèmes haptiques Participation au développement d’un capteur tactile Développement d’un logiciel et des librairies pour interagir avec le capteur Développement d’un banc de tests robotiques (Universal Robot + Capteur tactile + Capteurs multiaxes) Commande Automatisation de l’extraction des paramètres cinématiques et dynamiques des robots dans CATIA (IREQ)
Activités du laboratoire (3) Une tendance qui se dessine en robotique… Les robots collaboratifs ! Note: Fonctionnent sur ROS ! À consulter: http://blog.robotiq.com/bid/69803/Integrated-Tactile-Sensors-for-Robotic-Gripper-from-ETS http://blog.robotiq.com/bid/70500/Robotiq-2-Finger-Adaptive-Gripper-Now-Packaged-for-Baxter-Research
Development of a Tactile Sensor for Robotic Applications Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Development of a Tactile Sensor for Robotic Applications Presenters: Jean-Philippe Roberge Axay Rana Reza Motamedi Development of a Tactile Sensor for Robotic Applications November 14th 2013
Presentation Overview Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Presentation Overview Introduction Tactile sensors: what is it all about? Research / Industry / End user’s interests for artificial tactile sensing Development of the sensor Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface Design Future work, demonstration and discussions Questions Development of a Tactile Sensor for Robotic Applications November 14th 2013
Q- Tactile sensors: what is that all about? Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Q- Tactile sensors: what is that all about? A- It’s a device that attempts to replicate the sense of touch, by partially emulating the skin Located in the dermis Register skin deformation and are involved in finger position control Located right below the skin surface in the epidermis Have the highest spatial resolution of all mechanoreceptors In the shallow dermis Able to detect relative movements of objects on the skin Placed in the deep dermis Most sensitive to high-frequency vibrations around 250 Hz www.wiki.bethanycrane.com Development of a Tactile Sensor for Robotic Applications November 14th 2013
Industry’s interests: Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Research interests: -Human-robot interaction -Robot hand and robot skin design -Localization and detection of textures -Force control, detection of slippage, improving object gripping -Haptics -More and more… Industry’s interests: -Alternate way to measure force / pressure -Surface characterization -Rough 3D reconstruction of objects End-User’s interests: -Better control while handling objects -Opens way to partially restore the sense of touch Development of a Tactile Sensor for Robotic Applications November 14th 2013
Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Physical concepts Principle: Change in capacitance by change in distance between plates of capacitor. Development of a Tactile Sensor for Robotic Applications November 14th 2013
Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Mechanical Design Development of innovative microstructured based dielectric material for enhancement of capacitive based tactile sensor (US patent) Capable of sensing 10-4 Newton of minimal force Development of a Tactile Sensor for Robotic Applications November 14th 2013
Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions System’s Diagram Development of a Tactile Sensor for Robotic Applications November 14th 2013
Communication Protocols Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Communication Protocols Communication between sensors is achieved by using a RS-485 protocol CRC16 (Cycle Redundancy Check – 16 bit) is implemented for static and high sensitivity data Communication with client is also achieved by a RS-485 link, but converted to USB General overview: CRC16, bottleneck Development of a Tactile Sensor for Robotic Applications November 14th 2013
Software Design A software has been provided to : Introduction Overview of the physical concepts Electrical / mechanical / software design Current communication protocols between sensors Integration on Kinova’s products User Interface design and demonstration Future work / Questions Software Design A software has been provided to : Visualize and/or log all the metrics Act as a starting point for researchers Be able to change a sensor’s internal ID Other basic functionalities The visualization modes: Static force Dynamic Data (Force variation over time) High Sensitivity Data All sensors Development of a Tactile Sensor for Robotic Applications November 14th 2013
Références [1] Présentations PowerPoint du cours GPA435, Tony Wong. [2] Notes de cours, GPA435 [3] Levasseur, Yan, Wiki GPA435: http://bash.leyan.org/Accueil , consulté en avril 2014. [4] Tanenbaum, A.S., Systèmes d’exploitation. Pearson Education France, 2008. [5] Stallings, W., Operating Systems : Internals and Design Principals. Upper Saddle River, NJ : Prentice Hall, 1998. [6] Références citées dans le premier chapitre des notes de cours. Jean-Philippe Roberge - Avril 2014