Table des matières:

Localino suit le Roomba IRobot, cartographie l'environnement et permet le contrôle : 4 étapes
Localino suit le Roomba IRobot, cartographie l'environnement et permet le contrôle : 4 étapes

Vidéo: Localino suit le Roomba IRobot, cartographie l'environnement et permet le contrôle : 4 étapes

Vidéo: Localino suit le Roomba IRobot, cartographie l'environnement et permet le contrôle : 4 étapes
Vidéo: Roomba Scares Baby 2024, Novembre
Anonim
Image
Image

Afin de construire le pont WiFi-UART, vous pouvez consulter ce référentiel github:

Il a une bonne base pour commencer. Assurez-vous de bien lire la directive, car le Roomba VCC pendant la charge augmente jusqu'à 20 Volts ! Si vous ajoutez un ESP8266 sans convertisseur buck approprié qui fonctionne même jusqu'à 20V et down-convertit à 3,3V, vous endommagerez votre ESP.

Assurez-vous également d'utiliser un décaleur de niveau (par exemple en utilisant un diviseur de tension) pour décaler les niveaux logiques 5V UART du Roomba à 3,3V, qui sont utilisés par l'ESP.

Un autre détail important est que le convertisseur abaisseur doit avoir 300mA, mais beaucoup moins ou beaucoup plus (selon le convertisseur abaisseur lui-même). Il y en a qui peuvent faire beaucoup plus de courant, mais font planter le Roomba car ils consomment trop de courant au démarrage. Nous avons découvert que le régulateur de tension abaisseur Pololu 3.3V, 300mA (D24V3F3) fonctionne parfaitement. Les versions alternatives qui ont 500mA / 600mA ont causé le crash de l'interface Roomba UART. Fondamentalement, le Roomba réagissait à la pression d'un bouton, mais pas aux commandes via l'interface UART. Une fois que cela s'est produit, nous avons dû retirer la batterie du Roomba et redémarrer à froid le Roomba avec le pont WiFi-UART connecté. Cependant, seul le D24V3F3 fonctionnait bien.

Mis à part ce détail technique, vous devez ajouter des commandes supplémentaires au code, que vous pouvez trouver dans les spécifications de l'interface ouverte Roomba. Vous devrez ajouter toutes les commandes auxquelles vous souhaitez que votre roomba réagisse (par exemple, reculer, avancer, vitesse, etc.).

exemples dans l'IDE Arduino:

void goForward() { car c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print(c); }

void goBackward() { char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print(c); }

void spinLeft() { char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print(c); }

void spinRight() { char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print(c); }

si vous écrivez en lua, cela semble un peu différent, un exemple de virage à GAUCHE ressemblerait à ceci:

if(_GET.pin == "LEFT") then print ('\137'); --VOR

tmr.delay(100);

imprimer ('\00'); -- Vitesse = 200 = 0x00C8 -> 0 et 200

tmr.delay(100);

imprimer ('\200'); -- Rapidité

tmr.delay(100);

imprimer ('\254'); -- Rayon = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.delay(100);

print ('\12'); -- Tourner

finir

Assurez-vous que vous devez corriger la description de l'interface ouverte pour votre Roomba. Il existe au moins deux spécifications d'interface ouverte disponibles.

pour la série Roomba 5xx:

pour la série Roomba 6xx:

Une fois que vous avez construit votre pont WiFi-UART et testé les commandes, vous avez fait un grand pas en avant. Cette vidéo montre que l'application et l'approche fonctionnent. Nous étions un peu paresseux, il manque toutes les autres commandes de contrôle à l'interface Web, comme avancer, reculer, vitesse, droite, gauche, etc., mais vous pouvez émettre les commandes via http. Quoi qu'il en soit, ce n'est qu'une démonstration que la télécommande du Roomba fonctionne avec un matériel et un logiciel simples utilisant un ESP8266.

Maintenant que vous pouvez contrôler votre Roomba à distance depuis une application PC, il ne manque plus que la localisation en intérieur. Nous en avons besoin pour fermer la boucle de rétroaction, car notre objectif était de diriger le robot dans une certaine direction. Faisons cela.

Étape 3: Configurez votre système de localisation intérieur

Pour fermer la boucle de rétroaction, nous utilisons un système de localisation intérieur. Nous utilisons Localino pour cela. Le système Localino se compose d'"ancres" et de "tags". Les ancrages sont positionnés à des endroits fixes à l'intérieur de la pièce et localisent la position de la balise mobile (qui est placée sur le Roomba). Le traitement de la localisation est effectué dans une application PC. C'est un grand avantage, car vous pouvez également contrôler le Roomba depuis le même PC ! Il existe un code source gratuit disponible sur le site Web de Localino, il est écrit en python et il existe également un flux en temps réel disponible qui offre les coordonnées XYZ de la balise. Le flux de données est disponible via le réseau UDP, mais vous pouvez également ajouter MQTT ou tout autre élément de fantaisie que vous aimez. Si vous connaissez Python, il existe des tas de bibliothèques qui vous aident.

Dans cette vidéo, la localisation du Roomba est démontrée. Par conséquent, nous avons installé 4 ancrages dans la pièce à des emplacements fixes, qui permettent le positionnement 3D du Roomba. En général, nous n'aurions besoin que de 3 ancres, car le Roomba ne bougera probablement pas dans l'axe Z, donc la 2D serait suffisante. Mais parce que les ancres sont situées à la hauteur des prises principales CA (qui est à environ 30 cm au-dessus du sol), une configuration 2D entraînerait peu d'erreurs d'estimation de position. Nous avons donc décidé d'avoir 4 ancres et de localiser en 3D.

Maintenant que nous avons la position du Roomba, notre prochaine étape consiste à contrôler le Roomba à partir de la même application. L'idée est d'utiliser la vérité terrain et d'estimer un chemin de nettoyage parfait pour le robot. Avec l'utilisation du Localino, nous pouvons fermer la boucle de rétroaction et contrôler le robot depuis l'application PC.

Remarques sur la configuration

Positionnez les ancres Localino à l'intérieur de la pièce à différentes positions x, y et trois d'entre elles à la même position z. Positionnez un ancrage sur quatre à une hauteur z différente par pièce. Assurez-vous qu'il y a une bonne couverture de la balise Localino, qui se déplacera avec le Roomba.

Toutes les ancres ont un identifiant d'ancre unique, qui est affiché sur le code-barres du Localino et peut être lu avec l'outil de « configuration localino ».

Notez les positions en X, Y, Z et les identifiants d'ancrage. Ceci est requis pour le logiciel du processeur Localino et doit être adapté dans le fichier « localino.ini » dans le dossier « LocalinoProcessor »

Les ancrages doivent pointer vers le haut ou vers le bas en Z (lorsque la zone XY est couverte), mais pas en direction de la zone couverte. Les ancres ne doivent pas non plus être recouvertes de métal ou de tout autre matériau perturbant le signal sans fil. Si cela n'est pas possible, il doit également y avoir un certain espace d'air entre tout matériau et l'ancrage.

…plus à venir.

Étape 4: Adaptez le logiciel Python

restez à l'écoute. plus à venir.

Conseillé: