Spisu treści:

EyeRobot - robotyczna biała laska: 10 kroków (ze zdjęciami)
EyeRobot - robotyczna biała laska: 10 kroków (ze zdjęciami)

Wideo: EyeRobot - robotyczna biała laska: 10 kroków (ze zdjęciami)

Wideo: EyeRobot - robotyczna biała laska: 10 kroków (ze zdjęciami)
Wideo: DZIWNE PARADYGMY - 04 - Wiadomości i czat - UFO - Paranormalne 2024, Lipiec
Anonim
EyeRobot - robotyczna biała laska
EyeRobot - robotyczna biała laska

Streszczenie: Korzystając z iRobot Roomba Create, stworzyłem prototyp urządzenia o nazwie eyeRobot. Poprowadzi niewidomych i niedowidzących użytkowników przez zagracone i zaludnione środowiska, wykorzystując Roombę jako podstawę do połączenia prostoty tradycyjnej białej laski z instynktem widzącego psa. Użytkownik wskazuje swój pożądany ruch poprzez intuicyjne wciśnięcie i przekręcenie uchwytu. Robot zbiera te informacje i znajduje wyraźną ścieżkę w korytarzu lub w poprzek pomieszczenia, używając sonaru do kierowania użytkownika w odpowiednim kierunku wokół przeszkód statycznych i dynamicznych. Następnie użytkownik podąża za robotem, który prowadzi użytkownika w pożądanym kierunku dzięki zauważalnej sile odczuwanej w uchwycie. Ta robotyczna opcja wymaga niewielkiego treningu: pchaj, aby jechać, pociągnij, aby zatrzymać, skręć, aby skręcić. Dalmierze zapewniają dalekowzroczność podobną do widzącego oka psa i stanowią znaczną przewagę nad ciągłymi próbami i błędami, które charakteryzują użycie białej laski. Jednak eyeRobot nadal zapewnia znacznie tańszą alternatywę niż psy przewodniki, które kosztują ponad 12 000 USD i są przydatne tylko przez 5 lat, podczas gdy prototyp został zbudowany za grubo poniżej 400 USD. Jest to również stosunkowo prosta maszyna, wymagająca kilku niedrogich czujników, różnych potencjometrów, trochę sprzętu i oczywiście Roomby Create.

Krok 1: Demonstracja wideo

Demonstracja wideo
Demonstracja wideo

Wersja wysokiej jakości

Krok 2: Przegląd operacji

Przegląd operacji
Przegląd operacji

Kontrola użytkownika: Działanie eyeRobot zostało zaprojektowane tak, aby było jak najbardziej intuicyjne, aby znacznie ograniczyć lub wyeliminować szkolenie. Aby rozpocząć ruch, użytkownik musi po prostu zacząć iść do przodu, czujnik liniowy u podstawy drążka wykryje ten ruch i zacznie przesuwać robota do przodu. Za pomocą tego czujnika liniowego robot może następnie dopasować swoją prędkość do pożądanej prędkości użytkownika. eyeRobot będzie się poruszał tak szybko, jak użytkownik chce. Aby wskazać, że pożądany jest skręt, użytkownik musi po prostu przekręcić uchwyt, a jeśli skręt jest możliwy, robot odpowiednio zareaguje.

Nawigacja robota:Podczas podróży na otwartej przestrzeni eyeRobot będzie próbował utrzymać prostą ścieżkę, wykrywając każdą przeszkodę, która może przeszkadzać użytkownikowi i prowadząc użytkownika wokół tego obiektu iz powrotem na pierwotną ścieżkę. W praktyce użytkownik może naturalnie podążać za robotem bez świadomego namysłu. Aby poruszać się po korytarzu, użytkownik powinien spróbować wepchnąć robota w jedną ze ścian po obu stronach. użytkownika w korytarzu. Po dojściu do skrzyżowania użytkownik poczuje, że robot zaczyna się skręcać i poprzez przekręcenie uchwytu może wybrać, czy wyłączyć nowe odgałęzienie, czy kontynuować jazdę prostą. W ten sposób robot jest bardzo podobny do białej laski, użytkownik może wyczuć otoczenie robotem i wykorzystać te informacje do globalnej nawigacji.

Krok 3: Czujniki zasięgu

Czujniki zasięgu
Czujniki zasięgu

Ultradźwięki: eyeRobot posiada 4 dalmierze ultradźwiękowe (MaxSonar EZ1). Czujniki ultradźwiękowe są umieszczone w łuku z przodu robota, aby dostarczać informacji o obiektach z przodu i po bokach robota. Informują robota o zasięgu obiektu i pomagają mu znaleźć otwartą drogę wokół tego obiektu i z powrotem na jego pierwotną ścieżkę.

Dalmierze IR: eyeRobot posiada również dwa czujniki podczerwieni (GP2Y0A02YK). Dalmierze IR są ustawione pod kątem 90 stopni w prawo i w lewo, aby pomóc robotowi w podążaniu za ścianą. Mogą również ostrzegać robota o obiektach znajdujących się zbyt blisko jego boków, na które użytkownik może wejść.

Krok 4: Czujniki położenia laski

Czujniki położenia laski
Czujniki położenia laski

Czujnik liniowy: aby eyeRobot mógł dopasować swoją prędkość do prędkości użytkownika, eyeRobot wykrywa, czy użytkownik popycha lub opóźnia ruch do przodu. Osiąga się to poprzez przesuwanie podstawy laski po torze, ponieważ potencjometr wykrywa pozycję laski. eyeRobot wykorzystuje te dane wejściowe do regulowania prędkości robota. Pomysł, aby eyeRobot dopasowywał się do prędkości użytkownika za pomocą czujnika liniowego, został zainspirowany przez rodzinną kosiarkę do trawy. Podstawa laski jest połączona z klockiem prowadzącym poruszającym się po szynie. Do klocka prowadzącego dołączony jest potencjometr suwakowy, który odczytuje położenie klocka prowadzącego i raportuje je do procesora. Aby drążek mógł się obracać względem robota, przez drewniany klocek biegnie pręt, który tworzy obracające się łożysko. Łożysko to jest następnie mocowane do zawiasu, aby umożliwić dostosowanie drążka do wzrostu użytkownika.

Czujnik skrętu: Czujnik skrętu pozwala użytkownikowi obrócić uchwyt, aby obrócić robota. Na końcu jednego drewnianego trzonu przymocowany jest potencjometr, a gałka jest włożona i wklejona w górnej części rękojeści. Druty biegną w dół kołka i podają informację o skręcie do procesora.

Krok 5: Procesor

Edytor
Edytor

Procesor: Robot jest sterowany przez Zbasic ZX-24a umieszczony na płycie głównej Robodyssey Advanced II. Procesor został wybrany ze względu na szybkość, łatwość obsługi, przystępną cenę i 8 wejść analogowych. Jest połączony z dużą płytką prototypową, aby umożliwić szybkie i łatwe zmiany. Cała moc dla robota pochodzi z zasilacza na płycie głównej. Zbasic komunikuje się z Roombą przez port ładowni i ma pełną kontrolę nad czujnikami i silnikami Roomby.

Krok 6: Przegląd kodu

Przegląd kodu
Przegląd kodu

Unikanie przeszkód: do omijania przeszkód eyeRobot wykorzystuje metodę, w której obiekty w pobliżu robota wywierają wirtualną siłę na robota, odsuwając go od obiektu. Innymi słowy, przedmioty odpychają robota od siebie. W mojej implementacji wirtualna siła wywierana przez obiekt jest odwrotnie proporcjonalna do kwadratu odległości, więc siła pchnięcia wzrasta w miarę zbliżania się obiektu i tworzy nieliniową krzywą odpowiedzi:PushForce = ResponseMagnitudeConstant/Distance2Naciski pochodzące z każdego czujnika są sumowane; czujniki po lewej stronie pchają w prawo i na odwrót, aby uzyskać wektor ruchu robota. Prędkości kół są następnie zmieniane, więc robot obraca się w kierunku tego wektora. Aby upewnić się, że martwe przedmioty przed robotem nie wykazują „braku reakcji” (ponieważ siły po obu stronach równoważą się), przedmioty znajdujące się w martwym czole popychają robota w stronę bardziej otwartą. Gdy robot minie obiekt, używa koderów Roomby do skorygowania zmiany i powrotu do oryginalnego wektora.

Podążanie za ścianą:Zasadą podążania za ścianą jest zachowanie pożądanej odległości i równoległego kąta do ściany. Problemy pojawiają się, gdy robot jest obrócony względem ściany, ponieważ pojedynczy czujnik daje bezużyteczne odczyty zasięgu. Na odczyty zasięgu wpływa zarówno kąt nachylenia robota do ściany, jak i rzeczywista odległość od ściany. Aby określić kąt i tym samym wyeliminować tę zmienną, robot musi mieć dwa punkty odniesienia, które można porównać, aby uzyskać kąt robota. Ponieważ eyeRobot ma tylko jedną stronę zwróconą w stronę dalmierza na podczerwień, aby osiągnąć te dwa punkty, musi porównać odległość od dalmierza w czasie, gdy robot się porusza. Następnie określa swój kąt na podstawie różnicy między dwoma odczytami, gdy robot porusza się wzdłuż ściany. Następnie wykorzystuje te informacje do skorygowania nieprawidłowego pozycjonowania. Robot przechodzi w tryb podążania za ścianą, gdy przez pewien czas znajduje się obok ściany i wychodzi z niej, gdy na jego drodze znajduje się przeszkoda, która spycha go z kursu, lub jeśli użytkownik użyje uchwytu obrotowego, aby przenieść robota z dala od ściany.

Krok 7: Lista części

Lista części
Lista części

Wymagane części: 1x) Robot Roomba1x) Duży arkusz akrylu2x) Dalmierz Sharp GP2Y0A02YK IR4x) Dalmierze ultradźwiękowe Maxsonar EZ11x) Mikroprocesor ZX-24a1x) Płyta główna Robodyssey Advanced II1x) Potencjometr suwakowy1x) Potencjometr jednoobrotowy1x) Łożysko liniowe1x)) Płytka bez lutowania Zawiasy, kołki, śruby, nakrętki, wsporniki i druty

Krok 8: Motywacja i doskonalenie

Motywacja i doskonalenie
Motywacja i doskonalenie

Motywacja: Ten robot został zaprojektowany, aby wypełnić oczywistą lukę między zdolnym, ale drogim psem przewodnikiem a niedrogą, ale ograniczoną białą laską. Podczas opracowywania nadającego się do sprzedaży i bardziej wydajnego Robotic White Cane, Roomba Create była idealnym pojazdem do zaprojektowania szybkiego prototypu, aby sprawdzić, czy koncepcja działa. Ponadto nagrody zapewniłyby wsparcie ekonomiczne znacznego kosztu budowy bardziej wydajnego robota.

Ulepszenie: Ilość, której nauczyłem się, budując tego robota, była znaczna i tutaj postaram się przedstawić to, czego się nauczyłem, gdy przejdę do próby zbudowania robota drugiej generacji: 1) Unikanie przeszkód - wiele się nauczyłem o przeszkodach w czasie rzeczywistym unikanie. W procesie budowy tego robota przeszedłem przez dwa zupełnie różne kody omijania przeszkód, zaczynając od oryginalnej idei siły obiektowej, następnie przechodząc do zasady znajdowania i poszukiwania najbardziej otwartego wektora, a następnie wracając do idei siły obiektowej z kluczowa świadomość, że reakcja obiektu powinna być nieliniowa. W przyszłości naprawię swój błąd polegający na tym, że przed rozpoczęciem mojego projektu nie przeprowadzam żadnych badań online dotyczących wcześniej stosowanych metod, ponieważ teraz uczę się, że szybkie wyszukiwanie w Google przyniosłoby wiele świetnych artykułów na ten temat.2) Projekt kija czujniki - Rozpoczynając ten projekt myślałem, że jedyną opcją dla czujnika liniowego jest użycie garnka ślizgowego i jakiegoś łożyska liniowego. Teraz zdaję sobie sprawę, że o wiele prostszą opcją byłoby po prostu przymocowanie górnej części drążka do drążka, tak aby pchnięcie drążka do przodu również popchnęło drążek do przodu. Ponadto prosty uniwersalny przegub umożliwiłby przełożenie skrętu drążka na oś skrętu wielu nowoczesnych joysticków. Ta implementacja byłaby znacznie prostsza niż ta, której obecnie używam.3) Swobodnie obracające się koła - Chociaż w przypadku Roomby byłoby to niemożliwe, teraz wydaje się oczywiste, że robot ze swobodnymi kołami byłby idealny do tego zadania. Robot, który porusza się pasywnie, nie wymagałby silników i mniejszej baterii, a tym samym byłby lżejszy. Ponadto system ten nie wymaga czujnika liniowego do wykrywania pchania użytkownika, robot po prostu toczy się z prędkością użytkownika. Robot można było obracać, skręcając kołami jak samochód, a jeśli użytkownik musiałby zostać zatrzymany, można było dodać hamulce. W przypadku eyeRobot nowej generacji z pewnością zastosuję to zupełnie inne podejście.4) Dwa rozmieszczone czujniki do śledzenia ściany - Jak omówiono wcześniej, problemy pojawiły się podczas próby śledzenia ściany z tylko jednym czujnikiem zwróconym w bok, dlatego konieczne było przenoszenie robota między odczytami osiągnąć różne punkty odniesienia. Dwa czujniki znajdujące się w pewnej odległości znacznie uprościłyby podążanie za ścianą.5) Więcej czujników - Chociaż kosztowałoby to więcej pieniędzy, trudno było zakodować tego robota z tak małą liczbą okien na świat poza procesorem. Dzięki temu kod nawigacyjny byłby znacznie potężniejszy dzięki bardziej kompletnej tablicy sonarowej (ale oczywiście czujniki kosztują pieniądze, których wtedy nie miałem).

Krok 9: Wniosek

Wniosek
Wniosek

Wniosek: iRobot okazał się idealną platformą prototypową do eksperymentowania z koncepcją Robotic White Cane. Z wyników tego prototypu wynika, że robot tego typu jest rzeczywiście opłacalny. Mam nadzieję opracować robota drugiej generacji na podstawie lekcji, których nauczyłem się podczas korzystania z Roomba Create. W przyszłych wersjach eyeRobot wyobrażam sobie urządzenie zdolne nie tylko do prowadzenia osoby po korytarzu, ale raczej robota, który można umieścić w rękach niewidomych do użytku w życiu codziennym. Dzięki temu robotowi użytkownik po prostu wypowiada swój cel, a robot poprowadzi go tam bez świadomego wysiłku ze strony użytkownika. Ten robot byłby na tyle lekki i kompaktowy, że można go łatwo wnosić po schodach i schować w szafie. Ten robot byłby w stanie wykonywać globalną nawigację oprócz lokalnej, będąc w stanie prowadzić użytkownika od początku do celu bez wcześniejszej wiedzy lub doświadczenia użytkownika. Ta zdolność wykraczałaby daleko poza psa przewodnika, z GPS i bardziej zaawansowanymi czujnikami umożliwiającymi niewidomym swobodne poruszanie się po świecie, Nathaniel Barshay (wprowadzony przez Stephena Barshay) (specjalne podziękowania dla Jacka Hitta za robota Roomba Create)

Krok 10: Budowa i kod

Budowa i kod
Budowa i kod

Kilka nieistotnych słów na temat budowy: Pokład wykonany z kawałka akrylu wyciętego w okrąg z otworem z tyłu umożliwiającym dostęp do elektroniki, a następnie wkręcany w otwory montażowe obok ładowni. Płytka prototypowa jest wkręcana w otwór na śrubę w dolnej części wnęki. Zbasic jest montowany za pomocą wspornika L za pomocą tych samych śrub, co deck. Każdy sonar jest przykręcony do kawałka akrylu, który z kolei jest przymocowany do wspornika L przymocowanego do pokładu (wsporniki L są wygięte do tyłu o 10 stopni, aby zapewnić lepszy widok). Ścieżka czujnika liniowego jest przykręcona bezpośrednio do pokładu, a garnek przesuwny jest montowany za pomocą wsporników L obok niego. Bardziej techniczny opis budowy czujnika liniowego i drążka sterującego znajduje się w kroku 4.

Kod: Załączam pełną wersję kodu robota. W ciągu godziny próbowałem wyczyścić go z trzech lub czterech generacji kodu, które znajdowały się w pliku, teraz powinno być dość łatwe do naśladowania. Jeśli posiadasz ZBasic IDE powinno być łatwe do przeglądania, jeśli nie, użyj notatnika zaczynając od pliku main.bas i przechodząc przez inne pliki.bas.

Zalecana: