Table des matières:

Robot de recherche et d'élimination à distance contrôlé par Leap Motion : 5 étapes
Robot de recherche et d'élimination à distance contrôlé par Leap Motion : 5 étapes

Vidéo: Robot de recherche et d'élimination à distance contrôlé par Leap Motion : 5 étapes

Vidéo: Robot de recherche et d'élimination à distance contrôlé par Leap Motion : 5 étapes
Vidéo: Ne JAMAIS partir SANS SA COPINE 🫢 #humour #blague #drole #couplegoals #internationalcouple #shorts 2024, Novembre
Anonim
Image
Image

Dans le cadre de ma participation au Leap Motion #3D Jam, j'étais ravi de créer ce robot de recherche/sauvetage sans fil à commande gestuelle basé sur le Raspberry Pi. Ce projet démontre et fournit un exemple minimaliste de la façon dont les gestes de la main 3D sans fil peuvent être utilisés pour contrôler et interagir avec des objets physiques.

Étant donné que ce projet utilise le framework IoT WebIOPi populaire sur le Raspberry Pi, il peut être très facilement étendu pour contrôler et interfacer généralement tout capteur/matériel/électronique pouvant être interfacé avec le Raspberry Pi.

Certains scénarios possibles que j'envisage d'autres créateurs peuvent utiliser ce projet comme cadre de base sur lequel s'appuyer:

1. Robot de déminage à distance (utilisant peut-être un bras OWI, etc.)

2. Opération chirurgicale à distance par un médecin

3. Expositions d'art interactives contrôlées par les gestes ou contenu éducatif

4. D'autres possibilités/intégrations infinies (je suis limité par mon imagination:))

Étape 1: Aperçu

Comprendre le framework WebIOPi
Comprendre le framework WebIOPi

Ce projet permet à un utilisateur de contrôler de manière interactive un robot à l'aide de gestes de la main 3D via un Leap Motion connecté à un PC.

Le Raspberry Pi à bord du Robot dispose également d'une webcam USB qui retransmet la vidéo en direct à l'utilisateur qui peut être vue sur un navigateur Web. La bibliothèque JavaScript LeapMotion intégrée à cette page Web traite les gestes de la main et renvoie des signaux de contrôle au robot, qui se déplace ensuite en conséquence.

Le Raspberry Pi sur le Robot est configuré comme un Hotspot (mode AP) à l'aide du dongle WiFi USB qui lui est connecté. Cela permet à nos PC/appareils de se connecter directement au Raspberry Pi et de le contrôler via une page Web. Le Raspberry Pi peut également être configuré pour fonctionner en mode client, dans lequel il se connecte sans fil au point d'accès du routeur WiFi auquel le PC/les appareils sont déjà connectés.

Ce projet est basé sur WebIOPi (https://webiopi.trouch.com/) qui est un framework IoT populaire pour Raspberry Pi. En utilisant le kit Weaved IoT fourni (ou via la redirection de port sur le routeur), ce robot peut être contrôlé à distance et/ou recevoir des données de n'importe quelle partie du monde.

Les composants suivants ont été utilisés pour la construction du projet:

  1. Raspberry Pi B (100% compatible avec Raspberry Pi B+)
  2. Webcam USB Logitech (dérisoire 1,3 mégapixel)
  3. Circuit intégré de commande de moteur L293D et bouclier de dérivation
  4. Clé USB WiFi pour Raspberry Pi
  5. Banque d'alimentation USB pour Raspberry Pi
  6. Batterie externe 4V/1,5A pour l'entraînement des moteurs du robot

Étape 2: Création du projet

Installation de WebIOPi, écriture de code personnalisé et configuration de la webcam:

Les instructions d'installation de WebIoPi, les bases du framework et de nombreux exemples sont disponibles sur la page du projet ici:

Afin que les fonctions LeapMotion intégrées à la page Web déclenchent des actions GPIO sur le Raspberry Pi, nous avons utilisé des macros, dont les détails se trouvent ici:

J'ai également écrit quelques notes de démarrage sur le processus ci-dessus qui peuvent être trouvées en pièce jointe.

Installation et configuration de la webcam

Nous utilisons MJPG-Streamer afin de diffuser le flux vidéo du Raspberry Pi vers le navigateur via la webcam USB connectée sur le Pi. Veuillez suivre les instructions de configuration et de construction indiquées ici https://blog.miguelgrinberg.com/post/how-to-build-… pour que MJPG-Streamer fonctionne sur le Raspberry Pi.

Configuration du Raspberry Pi en tant que point d'accès/point d'accès

Afin de configurer le Raspberry Pi en tant que Hostpot, veuillez suivre les instructions fournies ici: https://elinux.org/RPI-Wireless-Hotspot. J'ai configuré l'adresse IP statique du Raspberry Pi comme 192.168.42.1, ce que nous saisirions dans le navigateur une fois que le Pi démarre en mode AP.

WebIOPi, MJPG-Streamer et le service de point d'accès WiFi ont été configurés pour s'exécuter automatiquement au démarrage, ce qui nous permet d'ouvrir directement un navigateur Web et de nous connecter au Robot après son démarrage. Le fichier rc.local disponible dans le référentiel est utilisé pour exécuter la webcam au démarrage.

Étape 3: Instructions de montage/câblage

4 GPIO du Raspberry Pi, à savoir GPIO 9, 11, 23 et 24, sont connectés au circuit intégré de pilote de moteur L293D qui pilote les moteurs en conséquence après avoir reçu des requêtes de macro de la page Web desservie par le framework Webiopi. Le dongle USB WiFi et la webcam USB Logitech sont connectés aux 2 ports USB disponibles sur le Raspberry Pi. Une banque d'alimentation 5V 4000 Mah fournit l'alimentation principale au Pi. Une batterie au plomb 4V 1.5A est utilisée pour entraîner les moteurs.

Remarque: Étant donné que le courant de sortie maximal de la banque d'alimentation que j'ai utilisée était un maigre 1000 Mah, j'ai dû utiliser la batterie au plomb externe pour entraîner les moteurs. Si vous avez une banque d'alimentation qui donne >= 2000Mah, vous pouvez directement piloter les moteurs à partir du rail 5V sur le Pi (je ne le recommanderais pas pour les moteurs gourmands en énergie)

Les 3 sous-sections clés du projet LeapMotion Javascript API, WebIOPi et MJPG-Streamer et leur fonctionnement/configuration de base sont brièvement décrits ci-dessous.

Étape 4: Comprendre le framework WebIOPi

L'interface qui s'affiche sur le navigateur est écrite en HTML (Filename:index.html) et Javascript tandis que le backend qui pilote les GPIO est écrit en Python (Filename: script.py). Des notes détaillées sur la création d'une WebApp personnalisée basée sur le framework WebIOPi sont jointes en tant que notes dans le référentiel Bitbucket.

Les macros personnalisées définies dans le script Python peuvent être déclenchées à partir du fichier HTML.

Ex: webiopi().callMacro("go_forward"); Il s'agit d'un appel personnalisé à une macro go_forward définie dans le script Python qui gère le processus de pilotage des deux moteurs vers l'avant.

La hiérarchie des répertoires où les fichiers sont stockés sur le Pi est indiquée dans l'image jointe.

Le dossier Robot contient ces sous-dossiers:

  • html: contenant index.html
  • python: contenant script.py
  • mjpg-streamer-r63: contenant les fichiers de construction et l'exécutable pour exécuter la webcam

MJPG-Streamer: Le flux vidéo en direct de la webcam USB fonctionne par défaut sur le port 8080 du Pi. Afin de visualiser manuellement le flux, accédez à RASPBERRYPI_IP:8080 sur le navigateur après avoir allumé la webcam.

Code LeapMotion:

Des extraits de code des exemples fournis dans le SDK LeapMotion ont été intégrés dans le fichier index.html. Le fichier leap.js de LeapMotion doit être ajouté dans le dossier html du répertoire du projet sur le Raspberry Pi.

Le paramètre palmPosition envoyé par le LeapMotion est utilisé pour déterminer quelle macro déclencher sur le Raspberry Pi.

Étape 5: Exécuter le projet

Allumez simplement le Raspberry Pi et attendez environ une minute. Vous verrez apparaître un nouveau hotpsot RaspberryPi. Connectez-vous à ce point d'accès et ouvrez cette adresse IP statique dans le navigateur: 192.168.42.1:8000. 8000 est le port par défaut de WebIOPi.

Le Raspberry Pi peut également être configuré pour se connecter au réseau WiFi local en tant que client au lieu de s'afficher en tant que point d'accès. Vous devrez ensuite déterminer l'adresse IP dynamique attribuée au Raspberry Pi par le routeur, puis l'afficher dans le navigateur pour jouer avec le Bot.

Vous pouvez laisser un commentaire si vous avez besoin d'aide ou si vous avez des questions sur le projet. Bon saut !

Les codes sources entiers ont été joints. Vous pouvez laisser un commentaire si vous avez besoin d'aide pour une partie quelconque de la construction du projet. Bon saut !

Conseillé: