Inhoudsopgave:

Localino volgt Roomba IRobot, brengt de omgeving in kaart en maakt controle mogelijk: 4 stappen
Localino volgt Roomba IRobot, brengt de omgeving in kaart en maakt controle mogelijk: 4 stappen

Video: Localino volgt Roomba IRobot, brengt de omgeving in kaart en maakt controle mogelijk: 4 stappen

Video: Localino volgt Roomba IRobot, brengt de omgeving in kaart en maakt controle mogelijk: 4 stappen
Video: Сравнительное тестирование GU10 Zigbee лампочек, Tuya Smart, Ewelink, iHost, Home Assistant 2024, Juli-
Anonim
Image
Image

Om de WiFi-UART-brug te bouwen, kun je deze github-repo bekijken:

Het heeft een mooie basis om mee te beginnen. Lees de richtlijn goed door, want de Roomba VCC loopt tijdens het opladen op tot wel 20 Volt! Als je een ESP8266 toevoegt zonder een goede buck-converter die zelfs tot 20V werkt en omlaag converteert naar 3,3V, beschadig je je ESP.

Zorg er ook voor dat u een niveauverschuiver gebruikt (bijv. met behulp van een spanningsdeler) om de 5V UART logische niveaus van de Roomba naar 3,3V te verschuiven, die door de ESP worden gebruikt.

Een ander belangrijk detail is dat de buck-converter 300mA moet hebben, maar niet veel minder of veel meer (afhankelijk van de buck-converter zelf). Er zijn er die veel meer stroom kunnen leveren, maar ervoor zorgen dat de Roomba crasht omdat ze te veel stroom trekken tijdens het opstarten. We kwamen erachter dat de Pololu 3.3V, 300mA Step-Down Voltage Regulator (D24V3F3) gewoon perfect werkt. De alternatieve versies die 500mA / 600mA hebben, zorgden ervoor dat de Roomba UART-interface crashte. Eigenlijk reageerde de Roomba op het indrukken van een knop, maar niet op commando's via de UART-interface. Toen dit eenmaal was gebeurd, moesten we de Roomba-batterij verwijderen en de Roomba opnieuw opstarten met de WiFi-UART-brug eraan bevestigd. Alleen de D24V3F3 werkte echter goed.

Afgezien van dat technische detail, moet je extra commando's aan de code toevoegen, die je kunt vinden in de Roomba open interface-specificaties. U moet alle commando's toevoegen waarop u wilt dat uw roomba reageert (bijvoorbeeld achteruit, vooruit, snelheid, enz.).

voorbeelden binnen de arduino IDE:

void goForward() { char 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}; Serieafdruk(c); }

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

als je in lua schrijft, ziet het er een beetje anders uit, een voorbeeld voor een bocht naar LINKS ziet er als volgt uit:

if(_GET.pin == "LEFT"), druk dan af ('\137'); --VOR

tmr.vertraging(100);

afdrukken ('\00'); -- Snelheid = 200 = 0x00C8 -> 0 en 200

tmr.vertraging(100);

afdrukken ('\200'); -- Snelheid

tmr.vertraging(100);

afdrukken ('\254'); -- Straal = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr.vertraging(100);

afdrukken ('\12'); -- Draai

einde

Zorg ervoor dat u de beschrijving van de open interface voor uw Roomba moet corrigeren. Er zijn ten minste twee open-interfacespecificaties beschikbaar.

voor Roomba 5xx-serie:

voor Roomba 6xx-serie:

Als je eenmaal je WiFi-UART-brug hebt gebouwd en de commando's hebt getest, ga je een grote stap verder. Deze video laat zien dat de toepassing en aanpak werkt. We waren een beetje lui, de webinterface mist alle andere bedieningscommando's, zoals vooruit, achteruit, snelheid, rechts, links enzovoort, maar je kunt de commando's geven via http. Hoe dan ook, het is slechts een demonstratie dat de afstandsbediening van de Roomba werkt met een eenvoudig stukje hardware en software met behulp van een ESP8266.

Nu u uw Roomba op afstand kunt bedienen vanaf een pc-toepassing, ontbreekt alleen de lokalisatie binnenshuis. We hebben dit nodig om de feedbacklus te sluiten, want ons doel was om de robot in een bepaalde richting te sturen. Laten we dit doen.

Stap 3: Stel uw indoor lokalisatiesysteem in

Om de feedbackloop te sluiten maken we gebruik van een indoor lokalisatiesysteem. Hiervoor gebruiken we Localino. Het Localino systeem bestaat uit "ankers" en "tags". De ankers worden op vaste locaties in de kamer geplaatst en bepalen de positie van de bewegende tag (die op de Roomba wordt geplaatst). De locatieverwerking gebeurt in een pc-applicatie. Dat is van groot voordeel, want je kunt de Roomba ook vanaf dezelfde pc bedienen! Er is gratis broncode beschikbaar op de Localino-website, deze is geschreven in python en er is ook een realtime stream beschikbaar die de XYZ-coördinaten van de tag biedt. De datastroom is beschikbaar via het UDP-netwerk, maar je kunt ook MQTT of andere mooie dingen toevoegen die je leuk vindt. Als je Python kent, zijn er enorm veel bibliotheken die je kunnen helpen.

In deze video wordt de lokalisatie van de Roomba gedemonstreerd. Daarom hebben we 4 ankers in de kamer opgesteld op vaste locaties, die 3D-positionering van de Roomba mogelijk maken. Over het algemeen zouden we slechts 3 ankers nodig hebben, omdat de Roomba waarschijnlijk niet in de Z-as zal bewegen, daarom zou 2D voldoende zijn. Maar omdat de ankers zich op de hoogte van de AC-hoofdsteker bevinden (wat ongeveer 30 cm boven de grond is), zou een 2D-opstelling weinig fouten bij het inschatten van de positie veroorzaken. Dus besloten we om 4 ankers te hebben en in 3D te lokaliseren.

Nu we de positie van de Roomba hebben, is onze volgende stap om de Roomba vanuit dezelfde applicatie te bedienen. Het idee is om de grondwaarheid te gebruiken en een perfect reinigingspad voor de robot in te schatten. Met het gebruik van de Localino kunnen we de feedbacklus sluiten en de robot besturen vanuit de pc-applicatie.

Opmerkingen bij installatie

Plaats de Localino-ankers in de kamer op verschillende x, y-posities en drie op dezelfde z-positie. Plaats één op de vier ankers op een verschillende hoogte z per ruimte. Zorg ervoor dat er een goede dekking is van de Localino-tag, die meebeweegt met de Roomba.

Alle ankers hebben een unieke anker-ID, die wordt weergegeven op de barcode van de Localino en kan worden uitgelezen met de tool "localino-configuratie".

Let op de posities in X, Y, Z en de anker-ID's. Dit is nodig voor de Localino Processor Software en moet aangepast worden in het “localino.ini” bestand in de map “LocalinoProcessor”

De ankers moeten naar boven of naar beneden wijzen in Z (wanneer XY-gebied bedekt is), maar niet in de richting van het bedekte gebied. De ankers mogen ook niet worden afgedekt door metaal of ander materiaal dat het signaal verstoort. Als dit niet mogelijk is, moet er ook een bepaalde luchtspleet zijn tussen het materiaal en het anker.

…meer volgt.

Stap 4: Pas de Python-software aan

blijf kijken. meer volgt.

Aanbevolen: