3

On est homologué!!!

Il est minuit et on vient de s’homologuer à la dernière minute. Pas de stress durant la nuit. On part donc se reposer tranquillement en pensant aux matchs de demain.
Cf la photo de la file d’attente des robots qui partent s’homologuer.
20120517-095557.jpg

0

Premier test d’homologation

Première soirée à la coupe. Il reste encore une heure avant la fin des homologations pour ce soir. En ce moment, on finit de monter les derniers capots du gros robot et le premier test sur une table de jeu est concluant. Le robot Lego est dans les starting block pour partir s’homologuer. Cf la vidéo ci dessous d un test d’homologation du gros robot. Objectif simple enfin le taquet de bouteille de l autre côté de la table.

0

Le multi-tâche

Aujourd’hui, un mot sur la structure général de nos programmes pour robot (coté Asservissement et intelligence, pour le robot métalique).

En général, le principe d’un logiciel pour robot est construit sur la base d’une machine à état sur le modèle :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static void Main()

{
// Initialisation du système
Ecran.Init();
Capteur.Init();
// Etc.

while (true)
{
switch (etatActuel)
{
case etat.AttenteJack:
// traitement
break;
case etat.Demarrage:
// traitement
break;
// Etc.
}
}
}

Les limites de ce système est qu’il se bloque à chaque étape du traitement. De plus, on est là sur un fonctionnement très séquentiel alors que certains traitements peuvent être fait en parallèle (affichage sur un écran, récupération de l’état des capteurs, calcul des objectifs du robot…)

Notre approche est un peu différente : nous avons mis en place (déjà l’an dernier avec succès) un système multi-tâche. L’équipe Pobot a déjà fait un post à ce sujet, voilà notre approche en C#.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void Main()

{
// Initialisation du système
Ecran.Init();
Capteurs.Init();
// Etc.

while (true)
{
ComPort.Process();
Capteurs.Process();
Ecran.Process();
Objectif.Process();
// Etc.
}
}

Comme on peut le voir, chaque élément du robot (Capteur, communication, etc.) est appelé systématiquement à chaque boucle. Ainsi, chacun des traitements doit évaluer l’état du robot (capteurs, temps, position…) et entraîner ou non une nouvelle action. … Lire la suite

0

Rayonnance Technologies

rayonnanceCc

Cette année encore, Rayonnance Technologies nous sponsorise, il est donc légitime de dire quelques mots sur cette société.

Il s’agit d’un éditeur intégrateur réalisant des applications métiers sur plateformes mobiles, Windows mobile principalement mais également Android et iPhone, ainsi que les outils web de gestion de ces applications (Back Office).

Le travaille y est très varié, tant d’un point de vue technique avec différentes plateformes et technologies matérielles (GPRS/3G, GPS, codes-barres, bluetooth, RFID, paiements CB…) que du coté fonctionnel avec de nombreux métiers concernés (Transport, Maintenance, Commerciaux, Caisses mobiles, Gestion de magasin…) pour de gros clients (LVMH, Norauto, Nespresso, Camaïeu, France boisson, Clear Chanel…)

Coté programmation, il s’agit essentiellement de C#.net mais également des technos web/HTML5 et un peu de Java et d’Objective C

Rayonnance recrute (CDI où même stagiaires), si vous voulez travailler à Paris sur ce genre de problématique, avec une équipe sympatique dans un société encourageant ses salariés à faire des robots, n’hésitez pas à postuler : recrutement{at}rayonnance.fr

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.

 

Pages ... 1 2 3 4