Simple Robot autonome w / Galileo Gen 2 (3 / 6 étapes)

Etape 3: Robot logiciel

Je choisis de mettre en œuvre l’esquisse du robot dans un fichier unique, ce qui rend un peu long, mais tout ce que met en un place. Plutôt que de marcher dans la SW par ligne, je vais juste commenter de comment il est organisé, et ce que chaque section se concentre sur.

L’esquisse démarre avec l’en-tête standard commentaire et bibliothèque de fichiers include. J’ai n’a documenté l’utilisation de broches de bouclier dans le commentaire de l’en-tête afin de me garder tout droit sur SW utilisation des broches. J’ai également défini une structure de données qui est utilisée par la fonction PID, avec la pensée que cela permettrait de rendre plus facile d’ajouter une deuxième cascade vitesse PID plus tard.

Viennent ensuite que les instructions #define pour les constantes et couramment utilisé les valeurs qui peuvent être facilement changées. Par exemple, une fois que vous déterminez ce que le P optimal, j’ai et les valeurs de D sont pour votre robot, ils peuvent être en permanence recodés ici. Viennent ensuite les définitions variables, que j’ai essayé de regrouper de façon logique - vous pouvez être le juge de la façon dont je l’ai fait.

La section suivante contient les fonctions qui sont utilisées plus tard dans le sketch. La première fonction implémente le PID d’équilibrage. Il s’agit de la SW j’ai fortement exploité du tutorial de Brett Beauregard. La fonction PID comprend une section pour enregistrer les informations de PID sur carte SD si l’enregistrement de données sont activées. Pendant l’accord les valeurs PID, je l’ai trouvé pédagogique et ludique, à voir le comportement individuel du terme PID. Cette enregistre les données dans un fichier au format CSV, que j’ai ensuite importé dans Excel et généré des graphiques pour la visualisation. Ce tous évidemment fonctionne uniquement si vous avez une carte SD card dans le jury de Galileo.

Elle est suivie de quelques fonctions de commande du moteur qui mappent les informations de commande de moteur aux commandes de direction, de vitesse et de frein pour le flasque arrière

Suivant est une fonction pour récupérer les données de position du module MPU-6050. J’ai volé ceci avec fierté de code de référence de Jeff Rowberg. J’utilise une méthode régulière-intervalle-données-pull pour transfert de données, plutôt qu’en utilisant les interruptions comme Jeff l’a fait, comme j’ai eu quelques difficultés à obtenir les interruptions au travail. L’intervalle de temps est implémenté dans la boucle principale du programme, et j’ai trouvé cela un 3ms intervalle ne permettait pas d’assurer il n’y a aucun débordement de données.

Nous passons ensuite à un ensemble de fonctions pour gérer la communication Bluetooth. Celles-ci commencent par quelques fonctions d’envoyer les commandes plus complexes - ceux-ci ont éclaté dans des fonctions principalement pour la lisibilité du code. Puis vient l’analyseur de commande Bluetooth primaire, qui met en œuvre le protocole de communication de réception avec l’application Android. Cette fonction s’accumule personnages du port série Bluetooth jusqu'à ce que le caractère de fin de commandement est détecté, et ensuite il décode la commande. Comme prévu, le décodage finit par être juste une grande instruction case.

La fonction définitive est la machine d’État contrôle robot de niveau élevé. J’ai mis en œuvre à l’instar d’une fini-État-machine (FSM) - probablement exagéré, mais j’ai imaginé cette expansion lorsque des fonctionnalités sont ajoutées au robot.

Ensuite est la fonction de paramétrage requise par toutes les esquisses d’Arduino. Les commentaires dans le code devraient rendre cette section assez explicite. Il y a une section qui tente d’initialiser le fichier SD pour enregistrement de données et devrait l’erreur si une carte SD n’est pas présente, mais je n’avais pas passer beaucoup de temps cette validation.

Enfin, il y a la boucle principale de croquis. La première section implémente une minuterie pour la récupération de données de la MPU-6050. Si les données sont récupérées, il y a quelques calculs pour détecter si le robot est en position vertical, ou perdre l’équilibre.

Ensuite le port série est relié au module Bluetooth est activé pour un caractère reçu, et si on attend, la fonction Bluetooth est appelée.

Il est suivi par le PID et la minuterie de commande du moteur. L’instruction « if » fait en sorte que le contrôle PID/moteur n’arrive que lorsque le robot cherche activement à l’équilibre. C’est où les données de MPU_6050 sont introduites dans le PID et la sortie de PID est passée sur la commande du moteur. C’est également où le pilotage est mis en œuvre, en ajoutant l’entrée de direction Bluetooth dérivé d’un moteur et enlève pas de l’autre. Parce que nous faisons des mathématiques supplémentaires sur la sortie de PID, nous avons à nouveau contrainte que limite de la PID Max/Min pour conserver au sein des valeurs PWM moteurs.

Enfin la machine d’État contrôle robot est appelée, et une minuterie est utilisée pour implémenter la fonction battement de coeur de robot. J’ai commencé avec un coeur séparé battu Bluetooth commande et commande de tension de batterie, mais alors eux fusionnées en une seule fonction, avec la tension envoyée comme une indication du rythme cardiaque.

Et c’est - un peu de longue haleine, mais rien de trop complexe.

Articles Liés

Comment tirer timelapse-vidéo avec l’Intel Galileo Gen 2

Comment tirer timelapse-vidéo avec l’Intel Galileo Gen 2

Dans ce qui suit, nous vous montrerons comment tirer un timelapse-vidéo avec l'Intel Galileo Gen 2 ou d'une Commission similaire.Nous allons utiliser une prise jack 2,5 mm pour connecter la carte à un reflex numérique Canon et ensuite contrôler l'obt
Maquette simple robotique

Maquette simple robotique

Ce Instructable vous montre comment construire une maquette simple et peu coûteux pour des expériences de robotique. C'est un compagnon pour pas cher, simple robotique pour le Non-programmeur. Ici, nous apprendrons comment construire un robot Babuino
Tutoriel Linux pour Intel® Galileo Gen 2

Tutoriel Linux pour Intel® Galileo Gen 2

On pourrait croire à tort que l' Intel® Galileo Gen 2 comme seulement une version avancée, plus puissante de l'Arduino Uno qui arrive à être superposés sur un système Linux.Il n'y a en fait plus à lui de qui et j'espère que ce tutoriel montrera la vu
Faire un Robot autonome avec Arduino UNO

Faire un Robot autonome avec Arduino UNO

Équilibrage automatique Robot est très intéressant. Beaucoup d'amis autour de nous essayaient de faire un, mais ils ont rencontré beaucoup de défis, notamment le manque de programmes, les circuits électroniques appropriés et les structures de facile-
JAAR bricolage - Robot autonome juste un autre

JAAR bricolage - Robot autonome juste un autre

Concept de JAAR ne fait pas à peu près un Rover.. .blindly que je vous dis d'et rigoler... son plus que juste faire un Robot..., j'ai intégré la plus grande partie de mon apprentissage depuis les 6 derniers mois à ce projet... sérieusement parlant, j
Capteur de lumière de Galileo Gen 2 Intel avec Starter Kit de semences Studio

Capteur de lumière de Galileo Gen 2 Intel avec Starter Kit de semences Studio

Ici je vais vous montrer comment créer un simple projet de Gen2 Galileo Intel avec un capteur de lumière et un écran LCD.Essentiellement lorsque la lumière est l'affichage est censé afficher « Il est Light » et « Faire des trucs ». La partie « Faire
Se ronger les Obstacles Robot autonome « Sanglier » (sanglier)

Se ronger les Obstacles Robot autonome « Sanglier » (sanglier)

concept généralNotre première idée était de créer un robot sur chenilles capable de monter les escaliers et bien d'autres obstacles, pour atteindre une bonne vitesse (autour de 10 ou 15 km/h) alors que le tournage et la transmission de données. Il se
Simple Robot Claw

Simple Robot Claw

ce projet est une griffe simple robot qui pourrait être ajoutée à de nombreux projets de robotique. Il est destiné à montrer une géométrie de base et de donner aux gens une longueur d'avance sur la construction d'une griffe pour répondre aux besoins
Plus simple Robot suiveur de rayonnement synchrotron

Plus simple Robot suiveur de rayonnement synchrotron

Bonjour à tous,Si vous êtes intéressé à faire un simple robot qui suit la lumière, ou devrais-je dire qui marche vers une source lumineuse, alors vous êtes au bon endroit...Vous pouvez voir le robot dans les deux vidéos youtube dans les pièces jointe
LDRs + Arduino = un simple robot qui peut détecter la lumière !

LDRs + Arduino = un simple robot qui peut détecter la lumière !

An LDR est une résistance dépendant de la lumière et a de nombreuses utilisations, par exemple, un photocel qui peut allumer les lumières de votre maison quand sa faire sombre à l'extérieur.Une façon intéressante pour comprendre comment cela fonction
Robot autonome pompier

Robot autonome pompier

C'est un robot autonome de détecter et éteindre le feu. Il utilise le détecteur de flamme pour détection et arduino board pour le traitement. Extincteur avec valve électronique (actionneur) sert à éteindre l'incendie détecté.Le robot tourne tout en r
Faire un Simple Robot humanoïde bipède (Servo Walking Robot)

Faire un Simple Robot humanoïde bipède (Servo Walking Robot)

Bipèdes sont vraiment cool parce qu'ils sont de loin le plus reconnaissable genre de robot. Les entreprises ont passé des décennies et des millions pour faire ces choses. J'ai eu envie de faire un robot bipède pour un certain temps maintenant, mais l
Kit de démarrage Grove avec Intel Galileo Gen 2: Mise en route

Kit de démarrage Grove avec Intel Galileo Gen 2: Mise en route

Quand j'ai commencé avec ITO j'étais tout confus au sujet des animaux de l'électronique,résistances et circuits, puis j'ai eu du Seeed Studio Grove Starter Kit plus. Avec cela, il faut juste brancher les modules de capteur au lieu de la gestion des T
LES DÉBUTANTS SUPER SIMPLE ROBOT II (ARDUINO UNO VER.)

LES DÉBUTANTS SUPER SIMPLE ROBOT II (ARDUINO UNO VER.)

Ce ' ible repose sur mon assez populaire SUPER SIMPLE débutants ROBOT ' ible. Après beaucoup, beaucoup de demandes de fournir une version mise à jour de Arduino, c'est ici !J'ai créé ce Instructable et son prédécesseur, pour le wannabe de robot n00by