Contrôle à distance des robots Raspberry Pi avec une manette Xbox 360 (partie 6)

Contrôle à distance des robots Raspberry Pi avec une manette Xbox 360 (partie 6)

Dans cette partie, nous voulons contrôler le robot à distance avec un contrôleur Xbox 360. Comparé à la télécommande infrarouge, le contrôleur a l’avantage de disposer de deux joysticks, idéaux pour le contrôle. De plus, avec le deuxième joystick, nous pouvons par exemple faire pivoter une caméra et les boutons peuvent également se voir attribuer des fonctions.

Même si nous avons déjà implémenté un contrôleur, je pense que ce type est beaucoup plus cool. Par conséquent, cette vidéo traite de la configuration de la télécommande du contrôleur Xbox 360 sans fil.

Pièces matérielles requises

Ce didacticiel n’a pas besoin de grand chose, en particulier du contrôleur et de l’adaptateur:

Si vous utilisez un Raspberry Pi Zero, vous pouvez avoir des problèmes d’alimentation. Néanmoins, un petit Concentrateur USB est nécessaire, car le seul port USB du modèle Zero est probablement utilisé pour l’adaptateur WiFi.

Préparation et installation des contrôleurs Xbox 360

Avant de connecter le contrôleur au Raspberry Pi et de définir les fonctions, les pilotes requis doivent être installés. Dans le tutoriel «Contrôlez votre Raspberry Pi à l’aide d’un contrôleur Xbox 360 sans fil», l’installation et quelques tests pour déterminer si le contrôleur a été reconnu sont expliqués en détail. Vous pouvez ignorer les étapes de l’exemple et l’utiliser comme souris. La seule chose importante est que votre manette Xbox doit être reconnue et prête avant de continuer.

Étant donné que le câble de l’adaptateur est assez long, je ne retirerais même pas le caoutchouc fourni ou n’enroulerais pas le câble si nécessaire. Le placement n’a pas d’importance, car pas de signaux infrarouges visuels mais des signaux radio sont envoyés et reçus. Dans la vidéo, j’ai accroché l’adaptateur sur l’avant des «yeux» à ultrasons, ce qui n’est peut-être pas le meilleur choix si la détection automatique d’obstacles doit être conservée ?

 

Charger le module et développer le code

Pour reconnaître les signaux, nous utilisons le même bibliothèque qui a été utilisé dans le didacticiel précédent. Pour ce faire, nous chargeons d’abord ce fichier dans notre dossier robot:

cd robot/
wget https://raw.githubusercontent.com/FRC4564/Xbox/2dcc49eb198e57e4dd0af9a15e53fef85c411ea1/xbox.py

Nous incluons cette bibliothèque (et la bibliothèque mathématique) dans notre fichier principal. Pour ce faire, nous les éditons et ajoutons les deux import commandes au code au début.

sudo nano robot.py

 

Ensuite, vous devez développer le code à la fin. Pour cela, nous créons deux fonctions dont vous pouvez trouver l’explication ci-dessous.

Enregistrez et quittez avec CTRL + O et CTRL + X.

le xboxControl La fonction est utilisée pour gérer les frappes / mouvements du joystick depuis le contrôleur. Ici, nous pouvons appeler certaines fonctions si une touche a été enfoncée. Dans notre cas, appuyer sur le bouton A est censé arrêter le robot (même si le joystick est déplacé). Si le bouton n’est pas enfoncé, nous voulons contrôler le robot à l’aide du joystick gauche.

Le mouvement réel a lieu dans le moveByAxis fonction. Si le joystick est au milieu (x = y = 0), le robot doit s’arrêter, sinon il doit se déplacer dans la direction spécifiée. Puisque le code est assez auto-descriptif, je ne vais pas y entrer ici. Si vous avez une question spécifique, n’hésitez pas à la poster en commentaire.

Par souci d’exhaustivité, il faut dire que déplacer le joystick vers l’arrière droit ou l’arrière gauche n’a pas de mouvement associé, puisque je n’en avais pas besoin. Si vous souhaitez intégrer la fonctionnalité, vous devez regarder l’angle analogue aux requêtes précédentes: Il est compris entre 180 et 270 si le stick est en bas à gauche et entre 270 et 360 en bas à droite.

Test de code

Enfin, bien sûr, nous voulons également laisser le robot conduire. Assurez-vous que le contrôleur Xbox 360 est allumé et reconnu (les boutons enfoncés doivent apparaître):

sudo xboxdrv --detach-kernel-driver

Si l’entrée est reconnue, annulez avec CTRL + C.

Maintenant, vous ouvrez la console Python (sudo python) et copiez-y le code suivant:

Si tout fonctionne, vous pouvez contrôler le robot à distance avec le joystick gauche. Dans la vidéo suivante, vous pouvez voir comment je parcours mon robot Raspberry Pi d’avant en arrière à l’aide du contrôleur Xbox 360.

YouTube video

Si vous ne voulez qu’un court virage, le manche ne peut être tourné que brièvement dans cette direction. Comme il n’est parfois pas si facile de contrôler le robot avec précision, j’ai conçu le bouton A comme un frein.

De plus, le bon contrôleur peut maintenant, par exemple, faire tourner un servomoteur ou un moteur pas à pas sur lequel une caméra en direct est fixée.

Nous sommes désormais à la console next-gen Xbox Series X, et vous savez à quel point il est difficile d’obtenir la précieuse console en raison de la pénurie de semie-conducteurs dans le monde. Nous vous conseillons de consulter l’article stock Xbox Series X afin d’obtenir d’avantages de chance de mettre la main dessus !