Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer une librairie de robotique avec arduino

Sujet résolu
Anonyme
    10 février 2013 à 16:14:20

    Bonjour bonjou, depuis peu je m'interesse à la robotique et dans le but de créer une IA assez perfectionnée avec le BOE BOT de chez parallax, je voudrais créer une bibliothèque pour simplifier la vie seulement voilà, je me débrouille assez bien en C mais le cpp je suis pas très fort, j'ai donc choppé une trame de code que j'ai essayé de comprendre sur ce site <lien>http://www.robot-maker.com/index.php?/tutorials/article/30-creer-une-bibliotheque-arduino/</lien> seulement pour ma librairie il me faut inclure la librairie Servo.h, et je ne sais pas comment l'inclure en disant qu'elle est dans le repertoire arduino.

    Robot.h

    <code type=c>

    #ifndef Morse_h
        #define Morse_h
           
        #include "WProgram.h"
        #include <Servo.h> 
        class Robot
        {
          public:
            Robot(Servo servoD,Servo servoG,int pinD, int pinG);
            void tourneGauche();
            void tourneDroite();
              void avance();
        void recule();
          private:
            Servo _servoD;
        Servo _servoG;
        int _pinD;
        int _pinG;
        };
           
        #endif

    </code>

    Robot.cpp

    <code type=c++>

    /*
     Robot.cpp librairie robotique, possedant les fonctionnalités : avancer, reculer tourner à droite tourné à gauche
     Robot.cpp Robotic librairie, with fonctions moving forward, moving backward turn left and turn right.
    */
     
    #include "WProgram.h"
    #include "Robot.h"
     
    Robot::Robot(Servo servoD, Servo servoG, int pinD,int pinG)
    {
          ServoD.attach(pinD);
        ServoG.attach(pinG);
        _servoD=servoD;
        _servoG=servoG;
        _pinD=pinD;
        _pinG=pinG;   
    }
     
    void Robot::tourneGauche()
    {
      servoD.writeMicroseconds(1300);
      servoG.writeMicroseconds(1300);
    }
     
    void Robot::tourneDroite()
    {
      servoD.writeMicroseconds(1700);
      servoG.writeMicroseconds(1700);
    }
    void Robot::avance()
    {
      servoD.writeMicroseconds(1300);
      servoG.writeMicroseconds(1700);
    }
    void Robot::recule()
    {
      servoD.writeMicroseconds(1700);
      servoG.writeMicroseconds(1300);
    }

    </code>

    -
    Edité par Anonyme 10 février 2013 à 16:23:17

    • Partager sur Facebook
    • Partager sur Twitter
      10 février 2013 à 16:26:00

      Quel est le message d'erreur du compilateur ?
      • Partager sur Facebook
      • Partager sur Twitter

      Retrouvez moi sur mon blog et ma chaine Youtube !

      Anonyme
        10 février 2013 à 16:30:33

        Voilà ce qui sort (je sais pas pourquoi pour mon premier msg les balises ont pasa fonctionné

        In file included from sketch_feb10a.cpp:1:0:
        /usr/share/arduino/libraries/Robot/Robot.h:9:21: error: expected ‘)’ before ‘servoD’
        /usr/share/arduino/libraries/Robot/Robot.h:15:9: error: ‘Servo’ does not name a type
        /usr/share/arduino/libraries/Robot/Robot.h:16:2: error: ‘Servo’ does not name a type

        • Partager sur Facebook
        • Partager sur Twitter
          10 février 2013 à 16:41:57

          Voila une réponse à ta question, et quelques autres astuces dont tu auras besoin par la suite surement...

          En résumé : l'IDE est pourri et t'empeche de faire des includes dans tes propres classes, donc il faut faire un include de servo dans le sketch principal 

          • Partager sur Facebook
          • Partager sur Twitter

          Retrouvez moi sur mon blog et ma chaine Youtube !

          Anonyme
            10 février 2013 à 17:05:19

            OK merci beaucoup ça fonctionne (du coup je vais peut être me plonger dans l'appentissage du cpp un de ces quattres)
            • Partager sur Facebook
            • Partager sur Twitter
              10 février 2013 à 17:26:16

              je te le conseille vivement si tu veux faire de belles classes et un beau code bien ordonnée...

              (Mais l'erreur que tu as soulevé au départ n'est pas la faute du cpp, juste la faute de l'IDE arduino qui est loin d'etre parfait...)

              Si tu as toutes les réponses que tu as besoin, n'oublie pas de mettre le sujet en résolu :)

              • Partager sur Facebook
              • Partager sur Twitter

              Retrouvez moi sur mon blog et ma chaine Youtube !

                10 février 2013 à 21:00:25

                D'ailleurs, si tu réussis à faire une bibliothèque IA robotique performante et qui marche, n'hésite pas à nous la partager, j'ai hâte de voir ça perso =)

                Et je confirme que l'IDE Arduino est vraiment mer.. heu... médiocre :D

                • Partager sur Facebook
                • Partager sur Twitter
                  10 février 2013 à 22:58:54

                  S'il y en a que ca intéresse de bosser sur un autre IDE, j'ai aider à la création d'un wizard pour QtCreator... pour Linux uniquement cependant...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Retrouvez moi sur mon blog et ma chaine Youtube !

                    10 février 2013 à 23:20:20

                    Hum, pourquoi pas, tu peux créer un poste à ce sujet ?

                    -
                    Edité par Adricolo 10 février 2013 à 23:23:01

                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 février 2013 à 12:13:47

                      Concernant les autre IDE disponibles je conseille vivement ATMEL studio un IDE avec compilateur assembleur AVR, C, C++ pour les microcontroleurs Atmel bases sur coeur AVR ou ARM7. Le tout se basant sur Visual studio.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 février 2013 à 13:18:24

                        (Visual Studio c'est pas cool pour les dev' Unix ^^)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Retrouvez moi sur mon blog et ma chaine Youtube !

                          11 février 2013 à 13:34:45

                          Dans ce cas la meilleure solution que j'ai a te proposer c'est de te munir de ton editeur de texte preferer et ensuite tu lances AVRGCC. Il te reste plus qu'a DL le .hex dans la flash.

                          -
                          Edité par Sam-U-Hell 11 février 2013 à 13:35:17

                          • Partager sur Facebook
                          • Partager sur Twitter
                            11 février 2013 à 14:09:56

                            nan, moi j'ai Qt ^^ (et donc tout les avantages d'un IDE correct) :)
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Retrouvez moi sur mon blog et ma chaine Youtube !

                            Anonyme
                              13 février 2013 à 18:14:25

                              Bonjour IA serait un grand mot, j'ai juste fait une foction tourner à gauche tourner à droite, aller en avant, aller en arrière et une qui detecte les obtacles avec 2 dels infrarouges et 2 recepteurs, et qui renvoie un code selon la direction dans laquelle il faut tourner,à terme je cherche des idées pour mon robot (parallax boe bot arduino), si vous êtes interessés par la biliothèque faites le moi savoir, si vous avez des idées faite moi en part (c'est pas très français tout ça )
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                13 février 2013 à 18:14:54

                                -
                                Edité par Anonyme 13 février 2013 à 18:15:39

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  13 février 2013 à 20:26:28

                                  Peut-être utilisé un capteur ultrason pour plus de précision ?

                                  Ensuite, j'imagine un style de robot du genre compagnons. Un mélande de Furby (oui oui je sais ...) et de robot aspirateur

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    13 février 2013 à 20:47:12

                                    L'utra son c'est sympa pour faire de la distance, mais pour faire de la précision (dans le sens ou on serait capable de détecter un objet de manière précise) c'est pas terrible (émission pas assez directive du tout)
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Retrouvez moi sur mon blog et ma chaine Youtube !

                                    Anonyme
                                      13 février 2013 à 21:28:08

                                      Au passage je rajoute qu'un développeur avais créer un module pour utiliser Codeblocks avec Arduino. J'ai jamais essayé mais ça a pas l'air mal.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        13 février 2013 à 22:17:16

                                        Eskimon a écrit:

                                        L'utra son c'est sympa pour faire de la distance, mais pour faire de la précision (dans le sens ou on serait capable de détecter un objet de manière précise) c'est pas terrible (émission pas assez directive du tout)


                                        C'était plus pour éviter les bruits existant dans l'infrarouge (chaleur, lumière soleil etc). Le top du top serait une caméra infrarouge + caméra 3D (un peu comme la Kinect), mais cela obligerait l'utilisation d'un µPC (Raspberry Pi) car l'Arduino n'est pas capable de gérer l'image. En plus des heures et des heures de code pour la détection des objets :D 

                                        Ensuite je ne sais pas l'utilisation et les performances que tu attends de ton robot ( ou du moins de l'IA). Cela n'a pas vraiment de limite.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          14 février 2013 à 13:29:03

                                          Après si tu as les moyens tu peux te faire plaisir avec des systèmes laser genre LIDAR... (je vous laisse googler ;) )mais le coût n'est pas le même ^^
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Retrouvez moi sur mon blog et ma chaine Youtube !

                                          Anonyme
                                            14 février 2013 à 18:29:58

                                            J'ai pas trop d'argent donc pour le moment je vais me tenir à une IA de base qui se souvient de où il est allé pour ne pas rester coincer
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              19 février 2013 à 10:32:21

                                              Eskimon a écrit:

                                              je te le conseille vivement si tu veux faire de belles classes et un beau code bien ordonnée...


                                              Tu veux dire que le C, c'est le bazard ? Pas du tout d'accord avec toi. Le C a tout les outils pour faire du code aussi propre que le C++ (ou autre POO).
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                19 février 2013 à 14:25:51

                                                Ah non non, il fallait lire dans le sens "Je te conseille vivement de lire le tuto et comprendre/utiliser la POO pour faire un code bien ordonnée, plutot que codé en C++ (vrsion arduino) sans comprendre les concepts/principes et faire un code bien dégueu"...

                                                Je sais bien qu'en C on peut faire du code propre :)

                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Retrouvez moi sur mon blog et ma chaine Youtube !

                                                  19 février 2013 à 14:46:46

                                                  Eskimon a écrit:

                                                  Ah non non, il fallait lire dans le sens "Je te conseille vivement de lire le tuto et comprendre/utiliser la POO pour faire un code bien ordonnée, plutot que codé en C++ (vrsion arduino) sans comprendre les concepts/principes et faire un code bien dégueu"...

                                                  Je sais bien qu'en C on peut faire du code propre :)


                                                  +1 IDE de l'Arduino c'est vraiment pas ça ... entre un code amputé et une compilation hasardeuse ...
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Créer une librairie de robotique avec arduino

                                                  × 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