Création d'un robot de compétition Roborace

Spécificités de Roborace


image

Roborace est une compétition dans laquelle les voitures robotiques s'affrontent sur un ring spécial. Vous pouvez faire une analogie entre Roborace et la Formule 1, à l'exception de deux points.
  • Tout d'abord, au lieu de voitures de course à grande échelle, des modèles de voitures plus petits et des conceptions originales avec des restrictions globales et de poids (LxP maximum = 25x50 cm et poids jusqu'à 3 kg) sont impliqués.
  • Deuxièmement, au lieu de pilotes, la voiture est contrôlée par un ordinateur de bord, qui analyse les lectures de divers capteurs et oriente la voiture sur la piste, sélectionne la vitesse de déplacement, empêche les collisions avec des obstacles et des rivaux. En fait, le «comportement» de la voiture sur la piste est déterminé par le programme de contrôle de l'ordinateur de bord.

Roborace se déroule sous la forme d'un championnat composé d'étapes, qui sont organisées dans différentes villes du Bélarus et à l'étranger. Les constructions d'entrée de gamme (par exemple, basées sur un constructeur de type LEGO) et les appareils robotiques complexes participent au championnat. Les règles de concurrence sont formulées de manière à couvrir le plus large éventail possible de caractéristiques et de capacités des structures robotiques.

Figure 1 - Piste pour les robots de course:

image

Considérez la piste illustrée à la figure 1, le long de laquelle le robot se déplacera. Les éléments obligatoires sont les lignes et les murs noirs. Sur cette base, vous pouvez construire une stratégie pour déplacer le robot le long de la piste: par exemple, équiper le robot de capteurs de ligne noire et utiliser les lignes de piste pour la navigation, ou installer des télémètres pour détecter les obstacles et se déplacer le long des murs.

Cet article présente l'un des robots que j'ai développé pour Roborace selon la deuxième stratégie (mouvement basé sur les relevés des télémètres).

Étapes de création d'un robot


La création d'un robot pour Roborace commence par le choix du châssis. Désormais, les magasins proposent une large sélection de plateformes sur chenilles et sur roues. Je recommande de se concentrer sur le design classique lorsque les roues arrière sont entraînées par un moteur électrique et les roues avant sont entraînées par un servo . La figure 2 montre un robot pour Roborace, construit selon un schéma similaire.

Figure 2 - Robot:

image

J'ai eu la chance d'acheter un modèle dans un club local de modélistes radio pour peu d'argent (les lecteurs peuvent essayer de faire de même dans leur région: ils ont généralement beaucoup de modèles obsolètes). Puisque le modèle acheté n'avait pas de moteur de traction, un moteur 12 volts acheté a été installé dessus. Vous pouvez également utiliser un jouet ordinaire: ils sont généralement assez tenaces et vous n'avez qu'à modifier la direction.

Comme dans mon cas, le servo était déjà installé, il n'y avait aucun problème avec lui.

La prochaine étape est le choix de la carte de contrôle. Il existe de nombreuses options. J'ai choisi Arduino comme l'option la plus simple. La même chose peut être recommandée au lecteur, surtout avec un manque d'expérience. Sur la base de mon expérience assez étendue, pour de tels robots, les microcontrôleurs 8 bits habituels suffisent. Par conséquent, si vous ne prévoyez pas d'utiliser une caméra pour suivre les mouvements du robot, ne le compliquez pas avec un processeur plus puissant.

Le servo variateur peut être directement connecté à l'Arduino - par exemple, via le blindage du capteur illustré à la figure 3. Il est également pratique de lui connecter des capteurs.

Figure 3 - Blindage du capteur v4:

image

Le moteur ne peut pas être connecté directement à l'Arduino. Vous devez utiliser un pilote de moteur spécial. Maintenant, il y en a beaucoup disponibles et il y a des instructions pour se connecter. J'ai utilisé le Motor Driver développé dans notre laboratoire (Fig.4).

Figure 4 - pilote de moteur:

image

dans les compétitions de robots, vous devez faire très attention aux batteries. J'utilise des batteries au lithium polymère. Ils ont fait leurs preuves. L'un des hacks que j'utilise dans mon robot concerne un convertisseur de tension. Le convertisseur natif Arduino n'est pas très bon, il est donc bon d'utiliser un régulateur abaisseur pour économiser la batterie . Bien sûr, vous pouvez utiliser un convertisseur linéaire classique.

La partie la plus importante du robot est les capteurs - ce qui lui fournit des informations sur le monde, sur les obstacles et sur d'autres robots. Dans la catégorie des prix moyens, nous pouvons choisir parmi des capteurs à ultrasons et infrarouges. Dans mon robot, j'utilise des capteurs infrarouges GP2Y0A02YK0F. Je n'aime pas les capteurs à ultrasons car un capteur peut être bruyant avec un autre. Par exemple, j'ai eu de telles situations: le capteur droit a envoyé un signal, et celui de gauche l'a reçu. Je travaille toujours sur le placement et la gestion appropriés des capteurs à ultrasons. L'espoir de leur lancement est constamment alimenté par leur prix.

Le modèle de robot présenté ici possède trois capteurs infrarouges. Les capteurs sont visibles sur la figure 2. Ils sont installés profondément dans le boîtier pour deux raisons:
  1. pour réduire la zone morte du capteur, qui dans ce modèle est de 20 cm;
  2. Le corps du robot protège les capteurs des dommages mécaniques lors des collisions avec d'autres robots.

Les capteurs latéraux sont installés à un angle de 45 degrés. Eh bien, si la conception du robot prévoit le réglage de l'angle de leur installation.

Le schéma général du robot peut être vu sur la figure 5.

Figure 5 - le schéma général du robot:

image

Programmation de robots


Étant donné que le robot utilise Arduino, la programmation est effectuée à l'aide de l'IDE Arduino. Le programme du robot est une boucle fermée, qui se compose des blocs suivants:
  1. Lectures des capteurs de filtrage;
  2. Calcul de l'angle et de la vitesse du robot;
  3. Transfert des signaux de commande aux mécanismes.

Dans cette structure, il n'y a pas de bloc pour recevoir des informations des capteurs. Étant donné que les capteurs renvoient un signal analogique, l'IDE Arduino a une fonction analogWrite (). Cette fonction fonctionne très bien si la vitesse de mesure n'est pas importante. Mais comme le robot a été conçu pour la compétition, il a été décidé d'interrompre le traitement des capteurs.

Toutes les cartes Arduino construites sur le microcontrôleur ATmega ont la capacité d'effectuer des mesures ADC en mode automatique. Vous devez configurer ce mode une fois, puis utiliser les valeurs obtenues. En conséquence, le contrôleur vérifie constamment les capteurs, sans perdre de temps CPU. Le filtrage des lectures des capteurs est effectué par un filtre médian à fenêtre de trois éléments.

Pour se déplacer le long de l'autoroute, l'algorithme suivant a été développé. Le robot compare les distances aux murs droit et gauche et, conformément à cela, fait tourner les roues dans la direction souhaitée. S'il n'y a pas d'obstacles devant le robot, la vitesse augmente, mais l'angle de rotation maximal possible des roues diminue également. Cela est nécessaire pour que le robot se déplace plus directement sur des sections droites. Lorsqu'un obstacle est détecté, l'angle de rotation des roues augmente et le robot ralentit.

Il y a bien sûr des problèmes non résolus. Par exemple, le robot ne connaît pas la courbure du virage, il ralentit donc avant chaque virage.

Vous pouvez afficher le code du projet sur GitHub .

Source: https://habr.com/ru/post/fr381775/


All Articles