RB2 places en cours d’exécution. (2 / 5 étapes)

Etape 2: La boucle de contrôle

La partie pilotage fournit les faits pour nos calculs. La prochaine étape est l’estimation d’où le robot doit être dans un premier temps de la partie contrôlée du script.

Tout d’abord nous devrons choisir un intervalle pour la boucle de contrôle, y compris les mesures de capteur. Plus l’intervalle, le mieux c’est : création d’une rétroaction rapide sur nos estimations par les données des encodeurs. L’intervalle devrait de préférence être environ 0,01 seconde.

Le Dagu Arduino comme pilote mini de RB2 permet un intervalle de rétroaction pour les capteurs de 0.01 sec. Mais il y a quelques choses à considérer. Au premier il y existe plusieurs sources de retard (par exemple la durée d’exécution de la boucle de contrôle lui-même). Deuxièmement pour prendre en compte est la résolution de l’encodeur. En d’autres termes : le temps minimum nécessaire pour générer au moins 1 tick à partir de vitesse (c'est-à-dire la vitesse de décrochage). Pour RB2 0,1 sec est utilisé comme intervalle. Une fréquence de rétroaction plus basse de 10 fois a-t-il ses implications sur la boucle de régulation : elle limite le degré de l’écoute des erreurs et des ajustements. Une trajectoire de 2 mètres aura un bon 6 secondes pour terminer (0,31 m/s). Dans cette période, il y aura seulement inférieure à 60 minutes pour lire les données de l’actionneur et mettre en oeuvre les ajustements calculés.

Pour le bon réglage (je vais venir à celle lors de la description de la boucle de régulation), on devrait au moins avoir quelques centaines des boucles d’évaluation. Vous pouvez regarder l’effet dans la vidéo au début du blog : les corrections sur l’orientation sont parfois un peu brusques. Ayant une fréquence plus élevée de rétroaction permettra de lisse-fr les corrections plus. (Une autre cause est la résolution du codeur : l’erreur minimale qui peut être lu est 1 tick. Donc ce que vous voyez sur la vidéo, est le meilleur que je pouvais sortir de la situation.)

Il est essentiel que les évaluations sont font à une fréquence constante. Les variations dans les intervalles sont désastreuses pour la boucle de contrôle ! Voilà où j’ai été confronté à un autre obstacle. J’ai commencé à utiliser la fonction time.time() de Python, mais découvert, il a créé certains pics bizarres. Même si c’est juste un script en cours d’exécution avec seulement l’intervalle de boucle lui-même. Donc, je suis passé à la fonction time.clock() qui est liée au temps processeur lui-même et exécuté le script sur un Windows, Unix et un système Linux. Halas sans meilleur résultat. Même essayé de filetage. Timer() pour générer une boucle de calendrier dans un thread séparé. Cela fonctionnait très bien, mais fait le script beaucoup trop compliqué (pour moi). Comme vous pouvez le lire dans le script, j’ai fini avec la minuterie à un maximum de forme et sauter les boucles de contrôle lorsque la minuterie est supérieure à la limite. Un peu rugueux et il a ses conséquences sur la précision, mais il fonctionne mieux que d’avoir trop d’écarts dans les circuits de contrôle. Probablement on pourrait produire un meilleur timing/gestion des événements en C/C++, mais pour moi qui me prendrait trop de temps pour découvrir à la lumière de ce que devrait faire le script.

Donc à chaque 0,1 sec les encodeurs sont lues, les différences (erreurs) sur nos estimations sont calculées et une nouvelle estimation est faite. Dans le script la vitesse désirée du bot est calculée et définie comme cible. Des cibles sont plus souvent dénommés « Seuils ». Dans le script, une consigne est la vitesse désirée, multipliée par le temps d’intervalle, donnant à la quantité de tiques à faire dans l’intervalle. En fait, ce n’est pas correct. La vitesse est la vitesse à la fin de l’intervalle. Si l'on veut travailler plus précis, il faut utiliser l’équation: Vt = Vo + a.t ou du moins la vitesse moyenne: (Vt – Vo) / t pour calculer le montant exact des tiques qui devrait être fait dans l’intervalle. (V est synonyme de vitesse en m/s, un = l’accélération et t = le temps d’intervalle).

Prenant en compte toutes les limitations, que j’ai déjà décrit, je l’ai gardé simple. Comme le montre la vidéo, on peut atteindre des résultats raisonnables en tout cas. Ayant une valeur de consigne établie, le bot se déroulera à une certaine vitesse et au début d’un intervalle de nouveau, la valeur de consigne peut être évaluée sur les données de l’encodeur. C’est là où commence la partie contrôlée.

Articles Liés

Grand écran de 8 * 8 couleur LED Funduino (colorduino) en cours d’exécution « plasma »

Grand écran de 8 * 8 couleur LED Funduino (colorduino) en cours d’exécution « plasma »

Un temps de retour, j'ai acheté une planche funduino et le pug de couleur LED 8 * 8 correspondant au module. Lorsque j'ai d'abord mis sous tension il il est pré-chargé avec une démo qui traversait un affichage simple, c'était vraiment cool, j'ai pens
En cours d’exécution plus sûres, sur des routes rurales

En cours d’exécution plus sûres, sur des routes rurales

Course rurale ajoute de nouveaux dangers, tels que le manque de ressources immédiates et dangers pour l'environnement, que de nombreux coureurs de niveau novice et adepte découvrent la dure. Ce guide est conçu pour aider les nouveaux coureurs à bien
Vélo en cours d’exécution indicateurs

Vélo en cours d’exécution indicateurs

ceux qui roulent dans la nuit de ce vélo en cours d'exécution indicateur contribue à prévenir les accidents, il brille brillant et n'importe qui peut facilement détecter le cycle.Étape 1: Matériel requis1. 9V Batteries - 22. led - 6 (préférez Orange/
Arduino IDE en cours d’exécution sur ChipKIT DP32

Arduino IDE en cours d’exécution sur ChipKIT DP32

Cette instructable fournit des processus étape par étape sur la façon d'exécuter des programmes arduino utilisant chipKIT DP32Étape 1: Matériel nécessaire : Matériel :ChipKIT DP32 (http://www.microchipdirect.com/ProductSearch.aspx?keywords=TDGL019)Câ
En cours d’exécution un à travers un champ de zéros

En cours d’exécution un à travers un champ de zéros

Dans les années 70, je travaillais pour Northern Telecom (Nortel Networks). J'ai assisté à un cours d'électronique numérique et une partie du cours traite de LED et tongs.Une des tâches que nous devions effectuer l'appelait exécutant un à travers un
Bonne forme pour montée & descente en cours d’exécution

Bonne forme pour montée & descente en cours d’exécution

apprendre à perfectionner votre formulaire en cours d'exécution sur les collines. Pour aider les participants à se préparer pour leurs activités sportives, volodalen.com propose également une gamme d'outils de formation en ligne et les plans de remis
En cours d’exécution à travers l’Amérique une seule frappe à la fois : création d’un Blog de course virtuel - Mile 1500 !

En cours d’exécution à travers l’Amérique une seule frappe à la fois : création d’un Blog de course virtuel - Mile 1500 !

La plupart du temps lorsque vous exécutez vous commencent et se terminent au même point.  Mais que se passerait-il si vous avez exécuté que vous pourriez et puis a commencé le lendemain de ce même point ?  Combien de temps cela prendrait-il vous rend
Comment construire un bassin d’eau en cours d’exécution pour le développement de plusieurs photos analogiques

Comment construire un bassin d’eau en cours d’exécution pour le développement de plusieurs photos analogiques

la construction d'une salle sombre pour développer vos photos est facile. Acheter les matériaux nécessaires et couvrir vos fenêtres. Après avoir développé les photos, vous devriez les mettre dans une bassine d'eau en cours d'exécution. Vous pouvez ac
En utilisant une tablette Wacom dans Ableton Live en cours d’exécution sur OSX

En utilisant une tablette Wacom dans Ableton Live en cours d’exécution sur OSX

Lorsque votre brillant nouveau Wacom pen se comporte erratiques sous Ableton Live en cours d'exécution sur OSX, il y a quelque chose que vous pouvez à ce sujet ! Le comportement typique est celui de boutons et de curseurs va tous à un extrême, le sec
Obtenir un noyau d’étincelle en cours d’exécution sans utiliser app Spark

Obtenir un noyau d’étincelle en cours d’exécution sans utiliser app Spark

L' Étincelle Core est un outil puissant--un CPU 32-bit, beaucoup de rangement sur puce et hors-die pour code et résultats, exigences de faible puissance et intégré dans la puce WiFi et antenne. Nombre d'appels Arduino et même de nombreuses bibliothèq
En cours d’exécution 3 moniteurs en installant la deuxième carte PCI Express

En cours d’exécution 3 moniteurs en installant la deuxième carte PCI Express

j'ai envie de courir 3 écrans sur mon PC, mais il avait seulement un slot pour carte vidéo unique. Cela signifiait que je pouvais courir seulement 1 carte vidéo et une seule carte vidéo habituellement prend uniquement en charge 2 moniteurs. Certaines
En cours d’exécution un filet maillant à recueillir des échantillons de poissons

En cours d’exécution un filet maillant à recueillir des échantillons de poissons

un filet maillant est une méthode d'échantillonnage utilisée par le MRN, le poisson et le Service de la faune. Cette technique permet à ces organisations de recueillir un grand nombre de poissons fins de recherche ou écloserie. Ce tutoriel va donner
FAT16 en cours d’exécution sur le Ti Launchpad

FAT16 en cours d’exécution sur le Ti Launchpad

Cette vidéo présente le code en action pour la lecture d'une carte SDvous aurez besoin de ce qui suit :N'importe quel morceau MSP430 avec USI et 4k ou plus flashune carte SDun capcitor (rien de plus que 10uf)Code Composer Studio 5 (grace facilite les
Bases de fusible avr : en cours d’exécution un avr avec une horloge externe

Bases de fusible avr : en cours d’exécution un avr avec une horloge externe

fusibles sont parmi les sujets plus difficiles que j'ai rencontré tout en découvrant la programmation de microcontrôleurs. Même après la recherche et la lecture intensivement, je ne pouvais pas parviennent encore à effacer mes concepts à leur sujet.