Club robotique de Sophia-Antipolis

Accueil > Essais produits > Robots et kits > Aisoy > Un voyage avec Aisoy > Le JetPack

Le JetPack

mardi 22 avril 2014, par Eric P.

Il est composée de deux cartes, reliées entre elles par des headers… soudés :-( Décidément, ils font un peu tout bizarrement chez Aisoy :-/ Ces deux cartes sont respectivement :

  • une carte de développement Freescale FRDM-KL25Z
  • une carte d’I/O

Ces deux cartes communiquent via des interfaces USB, très certainement en virtual serial port

 La carte Freescale

JPEG - 559.6 ko

Elle est architecturée autour d’un Cortex M0, et peut se programmer à l’aide de l’environnement mBed (ce qui explique la procédure de mise à jour du firmware décrite sur le site Aisoy.

Elle présente par ailleurs des capacités originales :

  • un slider tactile (à droite sur la photo) et qui semble être exploité par les 3 capteurs de toucher de l’Aisoy
  • une LED RGB
  • un accéléromètre
  • des connecteurs d’extension au format Arduino

La reprogrammation utilise le mécanisme OpenSDA, qui simule un mass storage. Reliée à un ordinateur via USB, la carte est vue comme un disque USB sur lequel il suffit de copier le binaire.

L’interfaçage de cette carte avec ROS est fournie dans le stack aisoy_sensorimotor. Le module freedom_driver.py définit une classe nommée Arduino, sans doute inspirée par le stack ros_arduino_bridge, qui gère le dialogue via la liaison série over USB, tout en proposant des méthodes reproduisant les digitalRead et consorts chères aux Arduinistes. La partie ROS de ce stack founit un node correspondant qui expose les différents services utiles aux interactions avec le robot :

  1. rospy.Service('/aisoy/setColor', SetColor, self.SetColorHandler)
  2. rospy.Service('/aisoy/moveServo', MoveServo, self.MoveServoHandler)
  3. rospy.Service('/aisoy/moveServoRelative', MoveServoRelative, self.MoveServoRelativeHandler)
  4. rospy.Service('/aisoy/mouthDraw', MouthDraw, self.MouthDrawHandler)
  5. rospy.Service('/aisoy/mouthPrint', MouthPrint, self.MouthPrintHandler)
  6. rospy.Service('/aisoy/performance', Perform, self.PerformanceHandler)
  7. rospy.Service('/aisoy/isAlive', IsAlive, self.IsAliveHandler)
  8. rospy.Service('/aisoy/halt', Halt, self.HaltHandler)
  9. rospy.Service('/aisoy/reboot', Reboot, self.RebootHandler)

L’exploration des sources de ce stack permet de découvrir que le dialogue entre la RasPi et la Freescale (aka freedom) est basé sur des messages ASCII, composés d’une commande sur un caractère suivie de ses paramètres séparés par des blancs et terminée par un CR. La définition des commandes est stockée dans le parameter server de ROS, sous l’id commands du namespace freedom. On peut les récupérer via :

Du coup on peut s’amuser en direct avec les commandes :

$ echo "r 1 0 1" > /dev/ttyACM0

déplace le servo 1 (rotation de la tête) en position 0 en 1 seconde.

Comment on connaît les paramètres ? En continuant d’étudier le module freedom_driver.py, et plus précisément la ligne ack = self.execute_ack... de la méthode Arduino.moveServo().

  1. def moveServo(self, servo, position, t):
  2.     try:
  3.         ''' Usage: servo_write(id, pos)
  4.        Position is given in radians and converted to degrees before sending
  5.        '''
  6.         ack = self.execute_ack('%s %d %f %d' %(self.commands['SERVO'],servo+1, position, t*1000))
  7.         time.sleep(t)
  8.         return ack
  9.     except Exception as e:
  10.         print e.message, e.args

 La carte I/O

JPEG - 551.2 ko

Il s’agit d’une carte maison développée par Aisoy, dans laquelle on trouve des choses intéressantes :

  • un PCA9685 de NXP, générateur PWM 16 canaux 12 bits PWM contrôlé en I2C. C’est fait pour du pilotage de LEDS RGB à l’origine, mais ici ça sert ici à piloter les servos [1]
  • un ampli audio LM871 de TI
  • un ADS7830 de TI, ADC 8 canaux avec interface I2C

[1d’ailleurs nos amis d’AB Electronics viennent tout juste de sortir une carte d’extension pour la RasPi, ayant pour fonction de... piloter 16 servos :)

Vos commentaires

  • Le 28 juillet 2015 à 11:35, par pascal En réponse à : Le JetPack

    Bonjour,
    je compte effectivement utiliser le RPi 2 que j’ai , l’OS 4.3 Airos (parce que je n’es pas encore les compétences pour développer mon propre OS) et la carte Servo Pi en attente de réception....
    L’idée est de réussir à piger le fonctionnent de l’aisoy(airOS4.3) et de débuter en robotique "social" type JIBO https://www.jibo.com/ , qui me passionne plus que les robots autonome et limité dans leur interaction avec l’Humain.
    Il me semble "avec mon niveau de connaissance actuel" que ce genre d’OS et matériel est un début plutôt stable-fiable", à moins que je me trompe ?

    • Le 28 juillet 2015 à 22:22, par Eric P. En réponse à : Le JetPack

      Je te rassure, je n’ai pas développé d’OS ;) Ce que j’ai évoqué (nROS) est une architecture de communication entre des process Linux tout ce qu’il y a de plus standard.
      Je comprends ton intérêt pour les robots sociaux, étant moi-même curieux à titre professionnel quant à leurs possibilités. Airos est dans l’absolu une option intéressante, mais mon constat est que le ticket d’entrée en efforts est un peu cher, car d’une part il faut apprivoiser leur environnement, et d’autre part il faut assimiler ROS. Or si tu remplaces leur carte d’interface par autre chose, cela veut dire que tu vas en plus devoir faire les modifications qui vont bien à leur architecture pour fonctionner avec cette nouvelle base matérielle.
      C’est ce raisonnement, ajouté au temps que j’ai passé à explorer ROS sur la RasPi et à lutter contre les bugs de la version d’Airos en ma possession (sans parler des perfs un peu pourries) qui m’a fait considérer repartir from scratch sur quelque chose de plus maitrisé. C’est peut-être prétentieux de ma part, mais je pense que c’est jouable. Juste une question de temps libre en quantité suffisante :/
      Cordialement
      Eric

    Répondre à ce message

  • Le 19 juillet 2015 à 13:51, par pascal En réponse à : Le JetPack

    bonjour,
    Pensez qu’il puisse être possible d’utiliser sur le raspberry la carte Servo pi D’AB electronics
    à la place de la carte Aisoy Jet Pack ?
    Naturellement il n’y aura pas toute les options apportées par la carte Aisoy Jet Pack, mais au moins
    il pourrait être possible de piloter des servo ?
    d’avance Merci Pascal.

    • Le 19 juillet 2015 à 14:04, par Eric P. En réponse à : Le JetPack

      Bien entendu, et cela faisait partie des mods que j’envisageais.
      D’autant plus que les capteurs avancés (toucher, accéléro,...) sont gérés par la carte Freescale. Si Aisoy avait eu la bonne idée de ne pas souder les headers en liaison avec leur carte IO, le test serait facile à faire. Ceci étant la carte Freescale est assez facile (j’espère que c’est toujours vrai) à trouver et est peu chère.
      Si j’avais du temps, c’est une manip que j’aimerais bien tenter, mais pour l’instant c’est mal parti :/ Si jamais tu fais des essais, tiens-nous au courant.
      Cordialement
      Eric

    • Le 22 juillet 2015 à 11:26, par pascal En réponse à : Le JetPack

      Salut,
      J’ai contacté la Ste Aisoy, mais il est impossible d’acquérir auprès d’eux la carte aisoy_jet_pack, donc je viens de laissé tomber le plan A, par contre je garde la volonté de construire mon robot "social" avec l’OS airos V4-V5"avenir", du coup ça fait super plaisir de lire ta réponse, j’ai dans mon panier la carte Servo Pi.
      sait tu s’il me faut aussi une carte qui contiens le ADS 7830(je comprend pas trop encore a quoi il sert) ?
      Lorsque de charge l’OS airos 4.3, j’ai des erreurs ic2, le systeme cherche une communication qu’il ne peut pas établir. et un bout d’un moment le raspberry s’éteint.
      Mai si je fait un ’arret defil’ au clavier, j’ai largement le temps d’entrer par la page web d’aisoy1 de modifier la langue... mais il me demande d’enregistrer le aisoy1 avec mail et et S/N de celui-ci, évidement je n’en ai pas !
      et je me demande si ça pas être un nouvel obstacle dans le projet ?

    • Le 22 juillet 2015 à 14:49, par Eric P. En réponse à : Le JetPack

      Cela ne me surprend pas car avec la succession effrénée de versions, il s’agit d’une édition périmée et qui ne doit plus être fabriquée.
      Très sincèrement, après avoir pas mal trituré l’objet, et en avoir constaté les performances assez décevantes, je pense qu’il est préférable de dumper les entrailles et de travailler avec une RasPi équipée de cartes d’extensions (celles de chez ABElec ou autres). Ce sera nettement plus ouvert et maîtrisable.
      De plus leur choix de ROS est certes intellectuellement séduisant mais pas adaptée à une cible comme la RasPi : ça rame que ça n’en peut plus. ROS est très intéressant dans l’absolu mais dans un contexte de recherche où on souhaite pouvoir substituer un sous-ensemble par un autre sans impacter le reste du système. Dans le cas d’Aisoy la configuration est figée par nature. Alors pourquoi s’embêter ?
      D’autant plus qu’il y a beaucoup plus léger et efficace pour faire de l’archi distribuée, modulaire et multi-langages : D-Bus par exemple. Je l’ai pas mal exploré, et ai même basé un projet professionnel dessus (cf http://cstbox.cstb.fr). J’ai aussi commencé à développer nROS (nano-ROS) un substitut light de ROS basé sur D-Bus.
      Au vu des expérimentations faites, ma stratégie future est de ne réutilser que la mécanique et l’électronique de base (display, LED RGB,...) et de refaire tout le reste à base de choses mieux maitrisées.

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document