Autonomous Mobile Robots with Pharo Smalltalk. Presentation given at the JM2L (Journées Méditérrannéennes des logiciels libres). 27 nov 2010.
First introduce mobile robotics and robotic software architectures. Then presents Pharo using robotic examples.
4. Robots?
1. Machine, automate à l'aspect humain, capable de se
mouvoir et d'agir. => androïde, humanoïde […]
2. Mécanisme automatique à commande électronique
pouvant se substituer à l'homme pour effectuer certaines
opérations, et capable d'en modifier de lui-même le cycle en
appréhendant son environnement (=>automatique,
cybernetique) […]
Le petit Robert
NouryBouraqadi–JM2L2010
4
5. Robots?
1. Machine, automate à l'aspect humain, capable de se
mouvoir et d'agir. => androïde, humanoïde […]
2. Mécanisme automatique à commande électronique
pouvant se substituer à l'homme pour effectuer certaines
opérations, et capable d'en modifier de lui-même le cycle en
appréhendant son environnement (=>automatique,
cybernetique) […]
Le petit Robert
NouryBouraqadi–JM2L2010
5
16. NouryBouraqadi–JM2L2010
16
• Sense
– Lire les capteurs
– Extraire des informations utiles
• Plan
– Prendre des décisions
• Act
– Exécuter des actions simples
– Ex: Avancer, reculer, tourner, …
Logiciel de contrôle d'un robot
40. NouryBouraqadi–JM2L2010
40
Interface avec l'OS = 4 fichiers
– Machine virtuelle
– Image mémoire : lecture / écriture
– Source des bibliothèques de base : lecture seule
– Sources des changements :
• lecture / sauvegarde automatique
• Quasi-impossible de perdre les sources !
• Versionning sans effort !
41. Langage Simple
• Peu de concepts / règles
– 6 Mots réservés
– 13 caractères spéciaux
– 5 concepts centraux
– 4 expressions de base
– 1 mode de gestion de la mémoire
NouryBouraqadi–JM2L2010
41
42. Langage Simple
• Peu de concepts / règles
– 6 Mots réservés
– 13caractères spéciaux
– 5 concepts centraux
– 4 expressions de base
– 1 mode de gestion de la mémoire
NouryBouraqadi–JM2L2010
42
43. Langage Simple
• Peu de concepts / règles
– 6 Mots réservés
– 13 caractères spéciaux
– 5 concepts centraux
– 4 expressions de base
– 1 mode de gestion de la mémoire
NouryBouraqadi–JM2L2010
43
44. Langage Simple
• Peu de concepts / règles
– 6 Mots réservés
– 13 caractères spéciaux
– 5 concepts centraux
– 4 expressions de base
– 1 mode de gestion de la mémoire
NouryBouraqadi–JM2L2010
44
45. Langage Simple
• Peu de concepts / règles
– 6 Mots réservés
– 13 caractères spéciaux
– 5 concepts centraux
– 4 expressions de base
– 1 mode de gestion de la mémoire
NouryBouraqadi–JM2L2010
45
46. Langage Simple
• Peu de concepts / règles
– 6 Mots réservés
– 13 caractères spéciaux
– 5 concepts centraux
– 4 expressions de base
– 1 mode de gestion de la mémoire
NouryBouraqadi–JM2L2010
46
Ramasse
Miettes
53. Langage Uniforme
• Pas d'exception aux règles
– Tout est objet
• nombres, tableaux, classes, compilateur, IDE, …
– Toute méthode retourne une valeur
– Toute action == envoi de message
• création d'objets, définition de classes, if, while, …
– Toutes les classes et les méthodes sont publics
– Tous les champs sont privés
– Tout objet est instance d'une classe
NouryBouraqadi–JM2L2010
53
54. Langage Uniforme
• Pas d'exception aux règles
– Tout est objet
• nombres, tableaux, classes, compilateur, IDE, …
– Toute méthode retourne une valeur
– Toute action == envoi de message
• création d'objets, définition de classes, if, while, …
– Toutes les classes et les méthodes sont publics
– Tous les champs sont privés
– Tout objet est instance d'une classe
NouryBouraqadi–JM2L2010
54
55. Itérations & Blocs de code
• Répéter un nombre de fois
• Répéter tant que
NouryBouraqadi–JM2L2010
55
56. Langage Uniforme
• Pas d'exception aux règles
– Tout est objet
• nombres, tableaux, classes, compilateur, IDE, …
– Toute méthode retourne une valeur
– Toute action == envoi de message
• création d'objets, définition de classes, if, while, …
– Toutes les classes et les méthodes sont publics
– Tous les champs sont privés
– Tout objet est instance d'une classe
NouryBouraqadi–JM2L2010
56
57. Langage Uniforme
• Pas d'exception aux règles
– Tout est objet
• nombres, tableaux, classes, compilateur, IDE, …
– Toute méthode retourne une valeur
– Toute action == envoi de message
• création d'objets, définition de classes, if, while, …
– Toutes les classes et les méthodes sont publics
– Tous les champs sont privés
– Tout objet est instance d'une classe
NouryBouraqadi–JM2L2010
57
59. Langage Uniforme
• Pas d'exception aux règles
– Tout est objet
• nombres, tableaux, classes, compilateur, IDE, …
– Toute méthode retourne une valeur
– Toute action == envoi de message
• création d'objets, définition de classes, if, while, …
– Toutes les classes et les méthodes sont publics
– Tous les champs sont privés
– Tout objet est instance d'une classe
NouryBouraqadi–JM2L2010
59
60. Langage Uniforme
• Pas d'exception aux règles
– Tout est objet
• nombres, tableaux, classes, compilateur, IDE, …
– Toute méthode retourne une valeur
– Toute action == envoi de message
• création d'objets, définition de classes, if, while, …
– Toutes les classes et les méthodes sont publics
– Tous les champs sont privés
– Tout objet est instance d'une classe
NouryBouraqadi–JM2L2010
60
Variables
accessibles par
un seul objet
61. Langage Uniforme
• Pas d'exception aux règles
– Tout est objet
• nombres, tableaux, classes, compilateur, IDE, …
– Toute méthode retourne une valeur
– Toute action == envoi de message
• création d'objets, définition de classes, if, while, …
– Toutes les classes et les méthodes sont publics
– Tous les champs sont privés
– Tout objet est instance d'une classe
NouryBouraqadi–JM2L2010
61
63. Les procesus sont des objets
Multi-tâche préemptif
– Chaque tâche a une priorité modifiable
– Exécution de la tâche prête la plus prioritaire
NouryBouraqadi–JM2L2010
63
Création
Terminée
64. Les procesus sont des objets
Multi-tâche préemptif
– Chaque tâche a une priorité modifiable
– Exécution de la tâche prête la plus prioritaire
NouryBouraqadi–JM2L2010
64
Création
Terminée