Obsah:

Localino sleduje Roomba IRobot, mapuje prostředí a umožňuje ovládání: 4 kroky
Localino sleduje Roomba IRobot, mapuje prostředí a umožňuje ovládání: 4 kroky

Video: Localino sleduje Roomba IRobot, mapuje prostředí a umožňuje ovládání: 4 kroky

Video: Localino sleduje Roomba IRobot, mapuje prostředí a umožňuje ovládání: 4 kroky
Video: Philosophy, Free Will, Human AI Clones | Daniel Dennett 2024, Červenec
Anonim
Image
Image

Chcete-li vytvořit most WiFi-UART, můžete se podívat na toto repo github:

Na začátek to má pěkný základ. Ujistěte se, že jste si dobře přečetli pokyny, protože Roomba VCC se během nabíjení zvyšuje až na 20 voltů! Pokud přidáte ESP8266 bez správného převodníku buck, který funguje dokonce až do 20 V a převede dolů na 3,3 V, poškodíte svůj ESP.

Ujistěte se také, že používáte posunovač úrovně (např. Pomocí děliče napětí) k posunu logických úrovní 5V UART z Roomby na 3,3V, které používá ESP.

Dalším důležitým detailem je, že převodník buck by měl mít 300mA, ale mnohem méně nebo mnohem více (v závislosti na samotném převodníku buck). Tam jsou některé, které mohou dělat mnohem více proudu, ale způsobit, že se Roomba zhroutí, protože během spouštění odebírají příliš mnoho proudu. Zjistili jsme, že Pololu 3.3V, 300mA regulátor napětí (D24V3F3) funguje perfektně. Alternativní verze, které mají 500mA / 600mA, způsobily zhroucení rozhraní Roomba UART. Roomba v zásadě reagovala na stisknutí tlačítka, ale ne na příkazy přes rozhraní UART. Jakmile se to stalo, museli jsme vyjmout baterii Roomba a restartovat Roombu s připojeným mostem WiFi-UART za studena. Dobře však fungoval pouze D24V3F3.

Kromě tohoto technického detailu musíte do kódu přidat další příkazy, které najdete ve specifikacích otevřeného rozhraní Roomba. Budete muset přidat všechny příkazy, na které chcete, aby vaše robota Roomba reagovala (například zpět, vpřed, rychlost atd.).

příklady v arduino IDE:

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

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

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

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

pokud píšete lua, vypadá to trochu jinak, příklad pro LEVOU zatáčku by vypadal takto:

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

tmr. zpoždění (100);

tisk ('\ 00'); -Rychlost = 200 = 0x00C8 -> 0 a 200

tmr. zpoždění (100);

tisk ('\ 200'); - Rychlost

tmr. zpoždění (100);

tisk ('\ 254'); - Rádius = 500 = 0x01F4 = 0x01 0xF4 = 1 244

tmr. zpoždění (100);

tisk ('\ 12'); -- Otáčet se

konec

Ujistěte se, že jste u svého robota Roomba opravili popis otevřeného rozhraní. K dispozici jsou nejméně dvě specifikace otevřeného rozhraní.

pro řadu Roomba 5xx:

pro řadu Roomba 6xx:

Jakmile vytvoříte most WiFi-UART a vyzkoušíte příkazy, udělali jste velký krok dále. Toto video ukazuje, že aplikace a přístup fungují. Byli jsme trochu líní, ve webovém rozhraní chybí všechny ostatní ovládací příkazy, jako vpřed, vzad, rychlost, vpravo, vlevo atd., Ale příkazy můžete zadávat prostřednictvím http. Každopádně je to jen ukázka toho, že dálkové ovládání Roomby funguje na jednoduchém hardwaru a softwaru pomocí ESP8266.

Nyní, když můžete Roombu ovládat na dálku z PC aplikace, chybí už jen vnitřní lokalizace. Potřebujeme to k uzavření zpětnovazební smyčky, protože naším cílem bylo nasměrovat robota do určitého směru. Pojďme to udělat.

Krok 3: Nastavte svůj vnitřní lokalizační systém

K uzavření smyčky zpětné vazby používáme vnitřní lokalizační systém. K tomu používáme Localino. Systém Localino se skládá z „kotev“a „štítků“. Kotvy jsou umístěny na pevných místech uvnitř místnosti a vyhledávají polohu pohyblivého štítku (který je umístěn na robotě Roomba). Zpracování polohy se provádí v počítačové aplikaci. To je velká výhoda, protože Roombu můžete ovládat také ze stejného počítače! Na webových stránkách Localino je k dispozici bezplatný zdrojový kód, je napsán v pythonu a k dispozici je také stream v reálném čase, který nabízí souřadnice XYZ značky. Datový tok je k dispozici prostřednictvím sítě UDP, ale můžete také přidat MQTT nebo jiné fantazie, které se vám líbí. Pokud znáte Python, existuje spousta knihoven, které vám pomohou.

V tomto videu je ukázána lokalizace robota Roomba. Proto máme v místnosti na pevných místech 4 kotvy, které umožňují 3D polohování Roomby. Obecně bychom požadovali pouze 3 kotvy, protože Roomba se pravděpodobně nebude pohybovat v ose Z, proto by 2D stačilo. Protože jsou však kotvy umístěny ve výšce hlavních zástrček střídavého proudu (což je přibližně 30 cm nad zemí), způsobilo by 2D nastavení malé chyby v odhadu polohy. Rozhodli jsme se tedy mít 4 kotvy a lokalizovat ve 3D.

Nyní, když máme pozici Roomby, je naším dalším krokem ovládání Roomby ze stejné aplikace. Cílem je použít základní pravdu a odhadnout perfektní čisticí cestu pro robota. Pomocí Localino můžeme uzavřít zpětnovazební smyčku a ovládat robota z PC aplikace.

Poznámky k nastavení

Umístěte kotvy Localino uvnitř místnosti do různých poloh x, y a tři z nich do stejné polohy z. Umístěte jednu ze čtyř kotev do jiné výšky z na místnost. Zajistěte dobré pokrytí tagem Localino, který se bude pohybovat s robotem Roomba.

Všechny kotvy mají jedinečné ID ukotvení, které je zobrazeno na čárovém kódu Localino a lze je načíst pomocí nástroje „localino configuration“.

Poznamenejte si pozice v X, Y, Z a ID kotvy. To je vyžadováno pro procesorový software Localino a musí být upraveno v souboru „localino.ini“ve složce „LocalinoProcessor“

Kotvy by měly směřovat nahoru nebo dolů v Z (když je oblast XY pokryta), ale ne ve směru kryté oblasti. Kotvy by také neměly být kryty kovem nebo jiným materiálem narušujícím bezdrátový signál. Pokud to není možné, měla by také existovat určitá vzduchová mezera mezi jakýmkoli materiálem a kotvou.

… Další.

Krok 4: Přizpůsobte software Pythonu

zůstaňte naladěni. další přijít.

Doporučuje: