Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Robotique] Petite Voiture de Course Autonome

Avec une Arduino, Raspberry Pi et une Pi Camera

    17 novembre 2017 à 14:27:16

    Bonjour,

    Pour une course de robots autonomes à Toulouse (Toulouse Robot Race), un ami et moi avons transformé une petite voiture télécommandée en voiture autonome, à l'aide d'une Arduino, d'un Raspberry Pi, d'une Pi Camera et d'un réseau de neurones fonctionnant en temps réel (60 FPS).

    En savoir plus sur le projet

    Généralités et avancement

    Avancement

    Nous avons une première version stable qui fonctionne en mode autonome et télécommandé. Nous avons également intégré une la partie télécomandée avec ROS.

    Présentation plus détaillée

    Nous sommes partis d'une petite voiture télécommandée et avons remplacé l'électronique existante par une Raspberry Pi et une Arduino. Afin de la rendre autonome, nous avons également ajouté une caméra et imprimé les pièces nécessaires en 3D.

    Pour le traitement d'image, nous avons exploré deux approches: une basée sur la couleur, une autre utilisant un petit réseau de neurones(suffisamment léger pour tourner à 60FPS). L'algorithme de contrôle a d'abord été testé dans un environnement de simulation créé avec Blender avant d'être déployé sur le robot.

    Le détail de notre approche est disponible dans cet article (en anglais): https://medium.com/@araffin/autonomous-racing-robot-with-an-arduino-a-raspberry-pi-and-a-pi-camera-3e72819e1e63

    EDIT: l'article est maintenant aussi disponible en français: http://enstar.ensta-paristech.fr/blog/public/racing_car/

    Le résultat en vidéo: https://www.youtube.com/watch?v=xhI71ZdSh6k

    Nous rendons également public les pièces 3D, le code source ainsi que les données utilisées pour l'apprentissage: https://github.com/sergionr2/RacingRobot

    Objectif

    En plus de fournir une base logicielle et matérielle, le but de ce projet est aussi de donner les clés aux personnes qui souhaiteraient rendre autonome une petite voiture (nous avons essayé de documenter un maximum notre méthode).

    Le projet et son originalité

    Différent projets de petite voiture autonome existent déjà. Cependant, il arrive régulièrement que ni le code, ni les modèles 3D soient publics. De plus, dans les projets utilisant de l'apprentissage (machine learning), la fréquence de contrôle est assez faible (10 Hz) et les calculs ne sont pas toujours faits sur la plateforme embarquée.

    Nous projet de petite voiture autonome est ainsi complètement ouvert (code source, modèles 3D, données d'apprentissage) et tous les calculs sont réalisées sur la plateforme embarquée en temps réel.

    N'hésitez pas à poser vos questions si vous souhaitez en savoir plus ;) Les remarques constructives sont aussi les bienvenues =)

    -
    Edité par atooo 2 mars 2018 à 10:37:35

    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2018 à 22:53:16

      je vais suivre l avancement mais d abord faut que je prenne 2-3 cours sur le machine learning
      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2018 à 14:21:59

        Dans votre vidéo la voiture suit une ligne blanche. Le fait d'utiliser le machine learning était imposé par la course ou vous avez fait le choix de l'utiliser ?

        -
        Edité par Splintz 20 février 2018 à 14:23:09

        • Partager sur Facebook
        • Partager sur Twitter
          2 mars 2018 à 10:42:39

          Splintz a écrit:

          Dans votre vidéo la voiture suit une ligne blanche. Le fait d'utiliser le machine learning était imposé par la course ou vous avez fait le choix de l'utiliser ?


          Comme détaillé dans l'article, nous avons déjà d'abord essayé une approche basée sur la couleur. Cependant, cette méthode n'était pas suffisamment robuste aux changements de luminosité.

          De plus, l'approche machine learning est plus générale, nous avons pas besoin d'une ligne pour que cela fonctionne.

          • Partager sur Facebook
          • Partager sur Twitter
            8 juin 2018 à 21:16:43

            Bonjour,

            Votre projet est très intéressant! Par contre je me pose juste une petite question (un peu bête peut-être), pourquoi passez-vous par la carte Arduino pour commander les moteurs? Il n'est pas possible de les commander avec la carte Raspberry?

            • Partager sur Facebook
            • Partager sur Twitter
              24 juin 2018 à 21:57:03

              @tayco

              >Il n'est pas possible de les commander avec la carte Raspberry?

              Il est tout à fait possible de commander les moteurs avec la Raspberry Pi. Cependant, par expérience, la Pi n'est pas la plus adaptée pour générer un signal PWM (la bibliothèque GPIO le fait de manière logicielle uniquement).

              Aussi, j'avais beaucoup plus d'expérience dans la commande d'actionneurs via l'Arduino et j'avais déjà travaillé sur la communication entre différentes cartes (arduino-arduino, arduino-raspberry pi, ...), ce qui fait qu'utiliser une Arduino pour tout ce qui est commande moteur m'a semblé plus naturel.

              Communication entre les deux cartes: https://github.com/araffin/arduino-robust-serial

              • Partager sur Facebook
              • Partager sur Twitter
                25 juin 2018 à 9:34:00

                Projet très intéressant ! Je vais tenter de réaliser mon propre véhicule en me basant sur votre algo ! J'attends avec impatience les futurs évolutions ! C'est sympa de voir qu'il y a encore des projets aussi intéressant que ça en open source, ça se fait rare de nos jours..
                • Partager sur Facebook
                • Partager sur Twitter
                  25 juin 2018 à 13:29:31

                  Golden Panda a écrit:

                  Projet très intéressant ! Je vais tenter de réaliser mon propre véhicule en me basant sur votre algo ! J'attends avec impatience les futurs évolutions ! C'est sympa de voir qu'il y a encore des projets aussi intéressant que ça en open source, ça se fait rare de nos jours..


                  Cool =)
                  On a récemment sorti une nouvelle version qui simplifie les choses (moins de fichiers, ajout de tests, planification de trajectoire, ...)

                  Les nouvelles données utilisées pour l'apprentissage ne sont pas encore en ligne mais ça ne devrait pas tarder ;)

                  Dans les améliorations en préparation:

                  - Ajout d'un filtre de Kalman pour stabiliser la prédiction

                  - Suivi de trajectoire à l'aide d'algo dédié (type Stanley steering control)

                  • Partager sur Facebook
                  • Partager sur Twitter
                    25 juin 2018 à 13:40:21

                    Pas mal du tout ! Tiens nous au courant quand tu auras mis en ligne ces nouveautés :)
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [Robotique] Petite Voiture de Course Autonome

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown