Spisu treści:

Localino śledzi robota Roomba IRobot, mapuje środowisko i umożliwia sterowanie.: 4 kroki
Localino śledzi robota Roomba IRobot, mapuje środowisko i umożliwia sterowanie.: 4 kroki

Wideo: Localino śledzi robota Roomba IRobot, mapuje środowisko i umożliwia sterowanie.: 4 kroki

Wideo: Localino śledzi robota Roomba IRobot, mapuje środowisko i umożliwia sterowanie.: 4 kroki
Wideo: Как я убирал ОЧАГИ КОРРОЗИИ на кузове ЛОКАЛЬНО, без ПЕРЕКРАСА за 5 минут. 2024, Listopad
Anonim
Image
Image

Aby zbudować most WiFi-UART, możesz sprawdzić to repozytorium github:

Na początek ma niezłą podstawę. Upewnij się, że dobrze przeczytałeś wytyczne, ponieważ Roomba VCC podczas ładowania wzrasta do 20 V! Jeśli dodasz ESP8266 bez odpowiedniego konwertera buck, który działa nawet do 20V i konwertuje w dół do 3,3V, uszkodzisz ESP.

Upewnij się również, że używasz przełącznika poziomów (np. za pomocą dzielnika napięcia), aby przesunąć poziomy logiczne 5 V UART z Roomby na 3,3 V, które są używane przez ESP.

Innym ważnym szczegółem jest to, że konwerter buck powinien mieć 300mA, ale niewiele mniej lub dużo więcej (w zależności od samego konwertera buck). Są takie, które mogą pobierać znacznie więcej prądu, ale powodują awarię Roomby, ponieważ pobierają zbyt dużo prądu podczas rozruchu. Dowiedzieliśmy się, że regulator napięcia Step-Down firmy Pololu 3.3V, 300mA (D24V3F3) działa idealnie. Alternatywne wersje, które mają 500mA / 600mA, powodowały awarię interfejsu Roomba UART. Zasadniczo Roomba reagował na naciśnięcie przycisku, ale nie na polecenia za pośrednictwem interfejsu UART. Gdy to się stało, musieliśmy wyjąć baterię Roomby i zrestartować Roombę na zimno z podłączonym mostkiem WiFi-UART. Jednak tylko D24V3F3 działał dobrze.

Oprócz tych szczegółów technicznych musisz dodać do kodu dodatkowe polecenia, które znajdziesz w specyfikacji otwartego interfejsu Roomba. Będziesz musiał dodać wszystkie polecenia, na które chcesz, aby twój Roomba reagował (na przykład do tyłu, do przodu, prędkość itp.).

przykłady w 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}; druk.seryjny(c); }

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

jeśli napiszesz w lua to wygląda to trochę inaczej, przykład dla skrętu W LEWO wyglądałby tak:

if(_GET.pin == "LEFT")następnie drukuj ('\137'); --VOR

opóźnienie(100);

drukuj ('\00'); -- Prędkość = 200 = 0x00C8 -> 0 i 200

opóźnienie(100);

drukuj ('\200'); -- Prędkość

opóźnienie(100);

drukuj ('\254'); -- Promień = 500 = 0x01F4 = 0x01 0xF4 = 1 244

opóźnienie(100);

drukuj ('\12'); -- Zakręt

kończyć się

Upewnij się, że musisz poprawić opis otwartego interfejsu robota Roomba. Dostępne są co najmniej dwie specyfikacje otwartego interfejsu.

dla robotów Roomba serii 5xx:

dla serii Roomba 6xx:

Po zbudowaniu mostu WiFi-UART i przetestowaniu poleceń zrobiłeś duży krok dalej. Ten film pokazuje, że aplikacja i podejście działają. Byliśmy trochę leniwi, w interfejsie internetowym brakuje wszystkich innych poleceń sterujących, takich jak przód, tył, prędkość, prawo, lewo i tak dalej, ale możesz wydawać polecenia przez http. W każdym razie to tylko demonstracja, że pilot Roomby współpracuje z łatwym sprzętem i oprogramowaniem za pomocą ESP8266.

Teraz, gdy możesz zdalnie sterować robotem Roomba z aplikacji komputerowej, brakuje tylko lokalizacji wewnątrz. Potrzebujemy tego, aby zamknąć pętlę sprzężenia zwrotnego, ponieważ naszym celem było nakierowanie robota w określonym kierunku. Zróbmy to.

Krok 3: Skonfiguruj system lokalizacji wewnętrznej

Aby zamknąć pętlę sprzężenia zwrotnego, korzystamy z wewnętrznego systemu lokalizacji. Używamy do tego Localino. System Localino składa się z „kotwicy” i „znaczników”. Kotwy są umieszczone w stałych miejscach w pomieszczeniu i określają położenie ruchomego znacznika (umieszczonego na robocie Roomba). Przetwarzanie lokalizacji odbywa się w aplikacji PC. To wielka zaleta, ponieważ możesz sterować Roombą z tego samego komputera! Na stronie Localino dostępny jest darmowy kod źródłowy, napisany w Pythonie, a także dostępny jest strumień w czasie rzeczywistym, który oferuje współrzędne XYZ znacznika. Strumień danych jest dostępny przez sieć UDP, ale możesz również dodać MQTT lub inne wymyślne rzeczy, które lubisz. Jeśli znasz Pythona, znajdziesz mnóstwo bibliotek, które ci pomogą.

W tym filmie pokazano lokalizację Roomby. Dlatego mamy 4 kotwy ustawione w pomieszczeniu w stałych miejscach, które umożliwiają pozycjonowanie robota Roomba w 3D. Generalnie potrzebowalibyśmy tylko 3 kotew, ponieważ Roomba prawdopodobnie nie będzie się poruszać w osi Z, więc 2D wystarczy. Ale ponieważ kotwy znajdują się na wysokości głównych wtyczek AC (czyli około 30 cm nad ziemią), konfiguracja 2D spowodowałaby niewielkie błędy szacowania pozycji. Zdecydowaliśmy się więc na 4 kotwice i lokalizację w 3D.

Teraz, gdy mamy pozycję Roomby, następnym krokiem jest sterowanie Roombą z tej samej aplikacji. Chodzi o to, aby wykorzystać prawdę i oszacować idealną ścieżkę czyszczenia dla robota. Za pomocą Localino możemy zamknąć pętlę sprzężenia zwrotnego i sterować robotem z aplikacji PC.

Uwagi dotyczące konfiguracji

Umieść kotwice Localino w pomieszczeniu w różnych pozycjach x, y, a trzy z nich w tej samej pozycji z. Umieść jedną z czterech kotew na różnej wysokości z na pomieszczenie. Upewnij się, że znacznik Localino, który będzie poruszał się wraz z robotem Roomba, ma dobry zasięg.

Wszystkie kotwice mają unikalny identyfikator kotwicy, który jest wyświetlany na kodzie kreskowym Localino i można go odczytać za pomocą narzędzia „konfiguracja localino”.

Zanotuj pozycje w X, Y, Z i identyfikatory kotwic. Jest to wymagane dla oprogramowania Localino Processor Software i należy je dostosować w pliku „localino.ini” w folderze „LocalinoProcessor”

Kotwy powinny być skierowane w górę lub w dół w Z (gdy obszar XY jest zakryty), ale nie w kierunku zakrytego obszaru. Kotwy nie powinny być również pokryte metalem ani żadnym innym materiałem zakłócającym sygnał bezprzewodowy. Jeśli nie jest to możliwe, powinna również istnieć pewna szczelina powietrzna między dowolnym materiałem a kotwą.

…więcej w przyszłości.

Krok 4: Dostosuj oprogramowanie Pythona

czekać na dalsze informacje. więcej w przyszłości.

Zalecana: