Skocz do zawartości

Robot i nawigacja


Pomocna odpowiedź

Napisano

Zakładam ten temat tutaj, chociaż w zasadzie ma wiele wspólnego z czujnikami. Jednak nie chce ograniczać jego tematyki.

Zastanawiam się nad systemami nawigacji (nie tam żadne GPSy), które umożliwiały by robotowi ustalenie jego położenia (powiedzmy - w mieszkaniu) i np na podstawie zaprogramowanej mapy lub jakiś algorytmów - znalezienie drogi do innego pomieszczenia.

Myślałem nad kilkoma rozwiązaniami. Pozwolę je sobie rozwinąć:

1. Ultradźwięki / Radiowa

W każdym pomieszczeniu w odpowiednim miejscu zamontowany jest nadajnik ultradźwięków, robot poprzez powolne obracanie odbiornikiem (serwo/silnik krokowy) ustala źródło sygnału. Podjeżdża blisko nadajnika

nadajnik może nadawać np nazwę pomieszczenia - dzięki czemu robot ustali szybko gdzie jest 
Robot podjeżdża do nadajnika, bo w ten sposób najłatwiej zaprogramować mu drogi między rożnymi pokojami - poruszał by się od nadajnika w pomieszczeniu 1 - przez zaprogramowana drogę (typu 10sek prosto, skręt w lewo 2sek - prawo 10sek

Pomocniczym narzędziem byłby elektroniczny kompas

2. Kompas

Kompas zamocowany odpowiednio w robocie tak aby enkoder mógł badać pozycję strzałki - sprawdzać gdzie jest północ.

Robot przy użyciu obu sposobów i zaprogramowanej w jego pamięci odpowiedniej mapy - mógłby dowolnie poruszać się po mieszkaniu. Teoretycznie.

3. Czujnik koloru

Dobrą metodą na rozpoznanie w jakim pomieszczeniu znajduje się robot może być jakiś czujnik RGB na jego spodzie zaraz kolo diody superjasnej (robot robi cień, więc czujnik koloru może nie zadziałać poprawnie - podłoże wymaga więc oświetlenia).

Gorzej jak w kilku pomieszczeniach podłoże jest podobne.

Na razie koniec - niestety nie mam chwilowo czasu pisać dalej

Macie jakieś własne pomysły - rozwiązania co do nawigacji robota w mieszkaniu/świecie/pomieszczeniu?

Wybaczcie za rysunki w paint'cie ale blender wymaga nieco czasu - dopiero z nim ćwiczę.

  • Lubię! 1

Ja użyłbym jako beacona zestawu dioda ir z prockiem wysyłajacym dane, o ile się obrócić i ile jechać do następnej 'stacji przekaźnikowej', niestety jest to strasznie niedkładne (robo złapie sygnał już z pewnej odegłości).

  • Lubię! 1
Ja użyłbym jako beacona zestawu dioda ir z prockiem wysyłajacym dane, o ile się obrócić i ile jechać do następnej 'stacji przekaźnikowej', niestety jest to strasznie niedkładne (robo złapie sygnał już z pewnej odegłości).

Można by zastosować dwie diody IR - jedna o dużym zasięgu kierującą do celu, drugą a mniejszym mówiącą "Jesteś w pozycji X".

Jednak bardziej interesowałaby mnie opcja ultradźwięków, na zasadzie Sonaru.

Na dniach przeprowadzę testy i dam znać co i jak 😉

Jeżeli ktoś ma również jakieś pomysły co do nawigacji po domu - śmiało pisać tutaj, co dwie głowy... 👹

Aby określić pozycję w pomieszczeniu potrzeba przynajmniej 3 nadajników w różnych miejscach o ile pamięć mnie nie myli i wyobraźnia nie płata figli.

No z ultradźwiękami myślę, że możesz mieć kłopot żeby precyzyjnie ustalić kierunek z którego są nadawane. Zwłaszcza, że będą odbicia od ścian i przedmiotów. Dużo lepsze by była podczerwień tak, jak pisałeś. Roomba tak szuka swojej stacji dokującej: ma odbiornik IR, a na stacji jest nadajnik. Generalnie jeśli chcesz precyzyjnie zlokalizować robota w pomieszczeniu to potrzebujesz laser - ceny zaczynają się bodaj już od 5000zł 😃

Możesz też pogooglać informacji o systemie stargazer.

Ustalenie źródła ultradźwięków wymagałoby przeskanowania wszystkiego wokół (360* bez ruchu robota) i analizę - skąd najmocniejszy sygnał - kilka kroków i ponownie.

No właśnie, tutaj niestety wygrywa podczerwień.

Dobrą metodą na rozpoznanie w jakim pomieszczeniu znajduje się robot może być jakiś czujnik RGB na jego spodzie zaraz kolo diody superjasnej (robot robi cień, więc czujnik koloru może nie zadziałać poprawnie - podłoże wymaga więc oświetlenia).

Niestety robot - aby łatwiej ustalić swoją pozycję - musiałby być napędzany jakimiś silnikami krokowymi i liczyć kroki.

Jednak pomyślcie jakie możliwości daje zamontowanie kilku czujników: koloru, IR, odpowiedniego kompasu...

Liczenie kroków nic Ci nie da. Nie jest to 100% dokładne, a błąd bez korekcji z zewnątrz (z innych czujników) będzie rósł w nieskończoność

A samo rozpoznawanie pomieszczenia to wydaje mi się, że jest najmniejszy problem, którym możesz się zająć jak już będziesz potrafił określić gdzie konkretnie robot się znajduje w obrębie jakiegoś pokoju.

Aha, jeszcze jedna uwaga. Wydaje mi się, że programowanie robota tak jak to opisałeś w pierwszym poście (jedź 10s prosto, skręć...), mija się z celem. nie wykorzystuje w ogóle potencjału jaki daje wiedza o pozycji robota. Jeśli już będziesz w stanie ją określić, to robot powinien mieć możliwość poruszania się pomiędzy dwoma dowolnie wybranymi punktami. W sumie zrobienie takiego systemu to byłby chyba niezły temat na inżynierkę 🙂

  • 6 miesiące później...

Wracam do tematu, ciągle poszukuje metody umożliwiającej samo-nawigowanie robota wewnątrz pomieszczeń.

Testowałem już ultradźwięki (nie na robocie, ale na dwóch układach: nadajnik i odbiornik), raczej nie nadają się do tego. Mogą jedynie stanowić wstępną metodę odnalezienia bazy - jednak przez odbicia nie są dokładne.

Beacon na diodach IR nie jest głupim pomysłem, jednak jest pewien problem:

Co ma zrobić robot jak nie ma w zasięgu "wzroku" żadnego nadajnika? Wtedy nawet nie ma pojęcia gdzie jest.

Inna metoda, to jak ktoś już wspomniał, 3-4 nadajników radiowych na odpowiedniej częstotliwości odpowiednio rozmieszczonych. Każdy nadajnik, nadawałby czas wysłania sygnału (jednak wymagałoby to synchronizacji co do mikrosekundy; Transmitter) lub odpowiadałby na zapytanie od robota, odpowiednim sygnałem (Transceiver).

Poprzed odpowiednie porównanie czasów dotarcia sygnału do robota z wszystkich 4 punktów, uzyskalibyśmy dokładną pozycje robota. Jednak wymagałoby to dość szybkiego procesora, o ile dobrze myślę.

Liczę, że więcej osób przyłączy się chociaż do teoretycznej dyskusji.

W którymś nr. Pc Format-u był opis pewnego robota. Kiedy rozładowywały mu się baterie to automatycznie podjeżdżał do "stacji" gdzie je ładował. Sposób w jaki ją odnajdywał był następujący:

Stacja leżąca na podłodze świeciła "laserkiem" na sufit, a robot odszukiwał na suficie ten "znak".

Tzn. stwierdzał to na podstawie kamerki?

Można by zaprogramować robotowi mapy obiektowe.

Coś w formie drzewa zależności, mniej-więcej tak:

POMIESZCZNIE A ma wyjscia:

- do POMIESZCZENIA B

*natomiast B ma wyjscia do A i do D

- do POMIESZCZENIA C

*ktore ma wyjscia do A.

Jednak jest to jedynie drobna pomoc, ciągle trzeba zastosować metodę, która umożliwi ustalenie dokładnej pozycji i w jakim pomieszczeniu znajduje się robot.

Ta metoda dotyczy jednak nawigowania po jednym pomieszczeniu chyba, ewentualnie zwiększasz liczbę stacji i rodzai znaków, co jednak jest do zrobienia. Też ostatnio o czymś takim myślałem, i możeby się sprawdziło wgrane do pamięci mapy mieszkania, dać zestaw enkoderó określających przemieszczenie, czyli np. dwa zwykłe do kół doczepione, ewentualnie dla korekcji błędów i poślizgów jeszcze jakieś, w jakiś sposób wykrywac progi między drzwiami, zeby kalibrować położenie i powinien jeździc, bez stacji zewnętrznych.

Tak, ale zauważ, że kładąc robota raz 2 metry od łóżka, a raz 20cm od łóżka robot nie wie gdzie jest i takie wgrane mapy mu nic nie pomogą. Wtedy jeździłby już zaprogramowaną drogą.

Chociaż gdyby dać mu jakiegoś SHARPa i algorytm porownania rzeczywistosci do zaprogramowanej mapy...

Oczywiście, jak po imprezie wyniosą Cię gdzie indziej niż się kładłeś, to masz tak samo, robot lepszy nie będzie 🙂 Myslałem o współpracy takiego robota z bluetoothem w telefonie, żeby można go było "zawołać". Oczywiście taki robot też ma ograniczenia, trzeba by, żeby miał jakąś listę miejsc startowych, przez komórkę podawałbyś mu w którym zaczyna. Ogolnie chyba do zrobienia.

Tak, ale człowiek ma wbudowany algorytm mapowania i sieci neuronowe 😋

Staram się skupić tutaj na amatorskiej robotyce i uniknąć stosowania kamerki.

Hmm, wracając do pomysłu o 3-4 nadajnikach radiowych i pomiarze odległości miedzy robotem, a nimi.

Przy pomieszczeniu 10x10 metrów, sygnał radiowy od odbiornika do uC dotrze pewnie w tak krótkim czasie, że ciężko będzie to sprawdzić w jakiej odległości jest robot od nadajników.

Pewnie wymagałoby to użycia uC taktowanego >100-200MHz...

Ciągle zastanawiam się nad kolejną metodą nawigacji, ale ta na beacon'ach IR wygląda najprościej i najlepiej...

Hmm, a może beacon ir wysyłający non-stop jakiś znak, choćby w rc5, na robocie obudowany termokurczką odbiornik typu tsop/sfh, na obrotowej wieżyczce (albo niech cały robot się kręci). Najpierw robot kręci się i ustawia do pierwszego beaconu, zatrzymuje się, i teraz zaczyna się kręcić do uzyskania sygnału z drugiego beaconu i zapamiętuje kąt, o który się obrócił. Można dodać jeszcze kilka beaconów (oczywiście każdy wysyła inny nzak/komendę), dla zwiększenia dokładności. Jak nie rozumiesz, to za jakąś godzinkę ci to rozrysuję, ale na razie wychodzę z domu.

  • Lubię! 1

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...