2

.Leg : l’Holomarcheur

Comment gérer dans une équipe lorsque certaines personnes veulent faire un robot marcheur et d’autres un robot holonome ? Chez .Leg on a trouvé la solution en créant un robot holomarcheur.

Le principe est exactement le même qu’un robot holonome, sauf que vous remplacez chaque roues par 4 pattes munie de petites roues leurs permettant de glisser en transversal. Pour l’asservissement, les moteurs qui entrainent les pattes sont équipées de codeurs et on réutilise le gyro XG1300L qui a fait ses preuve l’année dernière pour l’orientation.

Une petite vidéo des premiers mouvements du robot, ça va être fun !!

 

5

LS7366 : Compter les pas des codeurs

LS7366

Dans le robot 2011 nous avions décidé d’utiliser des LS8074N pour s’interfacer entre les codeurs et la carte d’asservissement. J’avais d’ailleurs fait un article léger l’année dernière sur ce composant que vous pouvez retrouver ici.

L’utilisation de composant nous a finalement posé bien des problèmes l’année dernière. La problèmatique rencontrée était de réussir à détecter les changements d’états sur la patte compteur du composant. En effet celle-ci suit la vitesse de changement d’état imposée par la CLK qui ne peut pas être supérieure à 30µs. Malheureusement ces changements d’états trop rapides (>33kHz)  étaient indétectable par la carte d’asservissement.  Rappelons quand meme que la fréquence max des impulsion des codeurs de notre robot ne dépasse pas les 5 kHz (1 tour  de roue de codeur par seconde soit 4096 pas par seconde).

L’objectif de cette année était donc de trouver un nouveau composant permettant de compter les pas de nos codeurs et s’interfacant avec notre carte d’asservissement de 2012. Nous nous sommes naturellment tournés vers un autre composant de chez LSI/CSI, le LS7366.

Les avantages de ce composant sur le LS7084N sont nombreux:

  • C’est un compteur, c’est à dire qu’il possède des registres internes permettant de stocker un nombre de pas entre deux interrogations jusqu’a 32 bits en positif ou négatif (soit plus de 2 milliards).
  • Il est inerrogeable à travers un protocol SPI et ne nécessite donc pas de port d’interruption ni d’entrées tout ou rien à vérifier régulièrement.
  • De nombreux modes de fonctionnement pour paramétrables (compteur modulo N, utilisation de l’index du codeur,…)
Il conserve les avantages déjà présents dans le LS7084N de 2011:
  • Détection du sens
  • Décodage en quadrature x1, x2 et x4
  • Filtrage du signal…
Voici ci-dessous un exemple de notre carte de codeurs qui met 2 LS7366 (1 par codeur) commandé par le même SPI.

 

1

Asservissement.net (part. 2)

Nous avons déjà vu la base de notre asservissement en .net

Voici maintenant la suite : comment intégrer ce PID dans le cadre de notre Robot, avec un asservissement en distance et en rotation.

Notre code de PID utilise des delegates pour passer les différentes valeurs et renvoyer celles de sortie. Il y a donc 6 fonctions à définir (3 par PID).

Les deux premières concernent la récupération des valeurs réelle obtenue en lisant les codeurs. Dans notre cas, nous utilisons des composants nommés LS7366 qui, de manière autonome, récupère les pas renvoyés par les codeurs. Il suffit ensuite de les interroger par SPI pour connaitre l’état des codeurs. Ce composant s’occupe de filtrer les pas dus à la vibration du robot et prend en compte correctement le sens de rotation des moteurs. Nous ferons sans doute un article à son sujet (car il le mérite).
Pour en revenir à nos deux fonctions, elles renvoient pour l’avance la moyenne du codeur droit et gauche pour l’avance et la différence entre les deux pour la rotation.

… Lire la suite

2

Asservissement.net

Comme l’a dit précédemment PAC, cette année, pour le robot métallique, tout passe par du .net. Ou plus précisément en microframework.

Tout passer en .net, ça passe également par une migration de l’asservissement en .net. A première vue, cela peut paraître dangereux, le microFramework n’étant pas un OS temps réel, cependant notre expérience positive de l’an dernier sur la partie IA, capteurs et actionneurs nous a pousser à tenter l’asservissement.

Voici déjà en introduction une petite vidéo de ce que nous avons déjà réussi à obtenir (il reste à régler les PID mais c’est un bon début).

Je passe tous les concepts classique sur les PID de robot que l’on trouve très bien présentés sur d’autres site comme le club elekRCVA ou ce très complet ppt également de RCVA. Mon objectif est de faire un asservissement en polaire donc avec un PID pour l’angle et un pour l’avance.

Pour point de départ, nous sommes partit de ce code trouvé sur codeprojet.net : http://www.codeproject.com/Articles/49548/Industrial-NET-PID-Controllers

C’était un bon point de départ avec tout de même quelques défauts (boucle infinie, tests bizares autour du terme I…)

Dans les bons points, on note l’utilisation de delegate (pointeurs sur fonction) pour passer les valeurs d’entrée et de sortie, ainsi on peut utiliser une même classe pour plusieurs PID (dans notre cas, un polaire et un en distance).

… Lire la suite

0

Les paramètres du PID

052211_2228_Lesparamtre1.png

Tests en cours les paramètres du PID. Les graphiques ci-dessous présentent les différentes réponses des deux moteurs soumis à une même commande. La commande est un trapèze dont le maximum si situe à 3072 qui correspond à notre vitesse max désirée.

Les courbes rouges et bleues présentent la vitesse du moteur (qui oscille autour de la commande de 3072). Les courbes vertes et bleues clairs présentent les commandes en Voltage correspondantes à chacun des moteurs.

Les titres des graphiques correspondent aux paramètres de l’asservissement : P I D (dans cet ordre)

Par dichotomie, on essaye de trouver les meilleurs paramètres. Etonnamment, l’introduction du D dans les derniers graphiques semble entrainer un fort dépassement de la commande.

… Lire la suite

Pages ... 1 2