Inhoudsopgave:
Video: Localino volgt Roomba IRobot, brengt de omgeving in kaart en maakt controle mogelijk: 4 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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:
Persoon die wagen volgt: 8 stappen
Persoonsvolgwagen: Robots krijgen elke dag meer en meer aandacht in veel industrieën. Vanaf vandaag nemen robots de meeste triviale taken over waar eens menselijke aandacht nodig was. Laten we beginnen met een simpele: een bot die je volgt als je gaat. De
Project 4 - Breng een elektronische kaart in kaart: 9 stappen
Project 4 - Breng een elektronische kaart in kaart: dit project is gericht op het Raptor New Bright F-150 RC-speelgoed dat ik in Goodwill vond. In dit project zal ik kijken naar wat er in het speelgoed gebeurt en laten zien hoe ik elk onderdeel van het speelgoed heb gedemonteerd. Er moet ook worden opgemerkt dat dit speelgoed verkeerd
MyPetBot (een bot die u volgt): 10 stappen (met afbeeldingen)
MyPetBot (A Bot That Follows You): Ai is een van de mooiste toepassingen van wiskunde. Het is in feite een reeks matrices-bewerkingen die zijn geoptimaliseerd om overeen te komen met het resultaat waarnaar u op zoek bent. Gelukkig zijn er talloze open source-tools waarmee we er gebruik van kunnen maken. Ik heb oorspronkelijk
Lotus LED-lamp (duurzaamheid natuurlijke omgeving): 4 stappen
Lotus LED Lamp (Duurzaamheid Natuurlijke Omgeving): Samenvatting: Een lamp met een vorm die lijkt op de bekende Lotusbloem. Het idee achter de lamp is dat deze in verschillende configuraties kan worden gebruikt, afhankelijk van de voorkeuren van de eindgebruikers, omdat deze het gloeiende licht krijgt wanneer de (Lotus flo
Hoe maak je een lijn die de robot volgt met Rpi 3: 8 stappen
Hoe maak je een lijnvolgende robot met Rpi 3: In deze tutorial leer je hoe je een lijnvolgende robotbuggy bouwt zodat hij gemakkelijk over een baan kan suizen