Skocz do zawartości
Dregorio

Robot ze sztuczną inteligencją(odnajdywanie drogi w prostym labiryncie)

Pomocna odpowiedź

Hej. W zabawie z robotami jestem troszkę ponad podstawy(zrobiony linefolower, mini sumo). Chciałbym teraz się wypuścić na głębsze wody, mianowicie zastanawiam się nad dodaniem sztucznej inteligencji. Chciałbym zbudować prosty labirynt i by robot nauczył się odnajdywać drogę. Programować w C umiem na poziomi średnio-zaawansowany(masa zadań ze spoja + jakieś aplikacje do rozpoznawania obiektów itd.). Zastanawiam się, jak się pisze takie programy. Nigdy nie miałem styczności z tym. Może zna ktoś jakąś literaturę, albo poradniki, niekoniecznie po polsku(mam słownik angielskiego w domu 😋) bym mógł choć zobaczyć z czym się to je. Jestem z tych co muszą zobaczyć(nauka na przykładach) by się nauczyć, sama teoria nie zawsze mi pomoże. Liczę na waszą pomoc. I postarajcie się odpowiadać w miarę zgodnie z tematem.

Udostępnij ten post


Link to post
Share on other sites

Dregorio, to o czym mówisz, to robot typu micromouse. Jest pełno publikacji na ich temat, proponuję obejrzeć różne rozwiązania na początek i może będziesz miał już jako taki zamysł jak to zrobić.

Jeśłi oczywiście pasuje Ci taki typ labiryntu (kąty proste, długości scian to n-krotność konkretnej długości - nazwijmy ją x).

Ja osobiście zrobiłbym robota opartego o silniki pololu 30:1 z przedłużonym wałem i enkoderami, żeby mógł "zmapować" labirynt przesuwając się o x i jeżdżąc kątami prostymi - przy podzieleniu labiryntu na matrycę, gdzie pojedyncza komórka ma x na x, robot przesuwa się od komórki do komórki (chociażby stosując algorytm trzymania się lewej krawędzi, ale jest wiele innych), skanując w każdej swoje otoczenie czujnikami (np analogowe sharpy o małym zasięgu) i patrząc które kierunki są ograniczone ścianami - zapisuje ten dane w matrycy a potem możesz już napisać program, który w oparciu o matrycę wytyczy najoptymalniejszą ścieżkę przejazdu.

Udostępnij ten post


Link to post
Share on other sites

Nieeee, Z tego co czytałem w internetach micromause to robot poruszający się dzięki algorytmom np. najprostszym jesli można w lewo skręć w lewo. Nie widziałem tam żadnego czynnika uczenia się.

No i jak sam dodałeś micromause ma sztywno wyznaczone granice labiryntu, a co jeśłi "labiryntem" jest mieszkanie?

Udostępnij ten post


Link to post
Share on other sites
Nieeee, Z tego co czytałem w internetach micromause to robot poruszający się dzięki algorytmom np. najprostszym jesli można w lewo skręć w lewo. Nie widziałem tam żadnego czynnika uczenia się.

Nadrób zaległości 🙂https://www.forbot.pl/forum/topics20/algorytmy-micromouse-metody-przeszukiwania-labiryntu-vt2246.htm

Udostępnij ten post


Link to post
Share on other sites

"Chciałbym zbudować prosty labirynt i by robot nauczył się odnajdywać drogę"

Dostałeś dobrą odpowiedź na zadane pytanie: w labiryntach znanych z zawodów roboty micromouse poruszają się wg prostych algorytmów mapowania dobrze zdefiniowanego środowiska w swoich strukturach danych, a następnie samodzielnie znajdują w nim najkrótszą/najszybszą drogę przy pomocy także dobrze znanych metod. To nie ma nic wspólnego ze sztuczną inteligencją. Tylko bardzo, bardzo początkujący próbują skręcać w jedną stronę i rzeczywiście zdarza się, że wspaniałomyślni organizatorzy niektórych konkursów budują labirynt, który daje się rozwiązać tą metodą. To jest przedszkole zabawy w poszukiwanie drogi. Ty jednak kontestujesz odpowiedź i dorzucasz kolejny stopień trudności: mieszkanie. Nawet jeśli coś zaczniemy o tym pisać (a sam temat jest o niebo bardziej skomplikowany niż prostokątny labirynt) być może dowiemy się, że owo mieszkanie jest zaludnione przez szybko poruszające się koty, dzieci a w ogóle to jest na ISS i nie ma tam grawitacji więc napęd kołowy odpada... Co chcesz konkretnie wiedzieć?

Udostępnij ten post


Link to post
Share on other sites

Treker w nocy przed wysłaniem tego posta czytałem ten artykuł właśnie i nic o sztucznej inteligencji nie znalazłem, ale w sumie czytałem go szybko i pobieżnie. Zrobię to jeszcze raz i upewnie się, że nie ma tam nic(dla mnie) o SI, tylko same algorytmy. Dla mnie to tylko "skrypty", a SI kojarzy mi się z czymś innym, wybaczcie jeśli się mylę. Myślałem, że prze np. poruszanie się, zmapuje sobie dom robocik by na przyszłość szybciej drogę znajdować.

marek1707 No ale o tym co piszecie to na dobrą sprawę ma mój minisumo. Tylko zamiast "jak napotkasz przeszkodę, skręć", mój ma "zwiększ obroty na silnikach", albo "trzymaj się areny". I tak masz rację, kiedy napisałem prosty, nie miałem na myśli labiryntu z wymiarami znanymi z góry bo równie dobrze mogę do niego skrypt napisać bez SI, by to przejść. Dlatego później napisałem o mieszkaniu. Chodzi mi o to, że chyba nie do końca łapię samą koncepcję(jak wygląda u robota) ta nauka, bo wszystko co znalazłem w internecie to algorytmy, a czytałem, że SI samo potrafi algorytmy tworzyć, np. neural networks potrafią znaleźć rozwiązanie na które ludzie nie mogą nic poradzić. Jeśli się mylę, to proszę o wyprowadzenie mnie z błędu.

Udostępnij ten post


Link to post
Share on other sites

Tak, masz absolutną rację. Znakomita większość - jeśli nie wszystkie - roboty amatorskie i pewnie 99% robotów "profesjonalnie" pracujących na liniach produkcyjnych nie ma nic wspólnego z SI. To zwykłe algorytmy. Nasze myszy niczego nie uczą się w wyższym sensie. Ani nie mają wiedzy "a priori" o np. budowniczych labiryntu i ich preferencjach (tutaj zróbmy zakręt w prawo, będzie trudniej a tu na skos bo tak lubię) ani też nie wyciągają żadnych wniosków. Po wyłączeniu i włączeniu zasilania są za każdym razem takie same. Gdyby nie wyzwania związane z samą konstrukcją (mechanika napędów, poślizgi, niepewne działanie czujników itp) temat byłby zupełnie nieciekawy a na pewno dużo mniej niż np. walki sumo. Co jakiś czas trzeba podjąć decyzję np. dotyczącą wyboru drogi gdy jeszcze nie znasz całego labiryntu i tu można by pokusić się o jakąś np. logikę rozmytą (ostatnio były 3 w prawo więc..), ale nie sądzę by w rzeczywistości było to czymś więcej niż generatorem pseudolosowym.

Powiem Ci tak: zrobienie robota który będzie w miarę dobrze radził sobie choćby z dobrym zmapowaniem nieznanego terenu jest już wystarczająco (czytaj: piekielnie) trudne. Problemy masz ze wszystkim: z ogromną ilością danych, z mocą obliczeniową, z rozmytymi i/lub błędnymi danymi z czujników, z ich reprezentacją w pamięci, z odwzorowaniem położenia własnego, z różnymi rodzajami przeszkód (słupy, rury, wąskie drzwi, szafy, krzesła, ściany, progi) itd itp. W rezultacie dostajesz zbiór (mapę) być może milionów punktów w których masz jakoś określone prawdopodobieństwo występowania fizycznej przeszkody. Teraz próbujesz określić drogę do jakiegoś celu. Masz inne algorytmy do taktyki (ominięcie jednej konkretnej przeszkody) i związane z tym zagadnienia geometrii samego robota, jego sposobu poruszania się, przyśpieszeń, promieni skrętu, wyznaczania bezpiecznych odległości bez zygzaków i zapętlania drogi lub wpadania w martwe punkty itd, oraz inne dla długofalowej strategii (najpierw wychodzimy z pokoju by dostać się na korytarz a potem do kuchni). Już same te dwie rzeczy (czyli SLAM) to tysiące opracowań naukowych z tego większość trudno dostępna. Każdy poprawia coś odrobinę w algorytmie kolegi, ale w sumie nie ma tu jakichś fajerwerków: czujniki laserowe za tysiące dolarów, żmudne obliczenia i moce conajmniej dobrych PCtów. Do tego dochodzą warunki rzeczywiste: wymijanie ludzi, dbanie o własne zasilanie, jakaś komunikacja i wreszcie robienie czegoś pożytecznego oprócz samej jazdy dla jazdy. A Ty piszesz, że to wszystko pikuś, bo chcesz zrobić coś na jeszcze wyższej warstwie abstrakcji. Dobra, powodzenia. A zanim zaczniesz, zrób proszę coś, co w miarę bezpiecznie, puszczone w nieznanym mieszkaniu zmapuje je sobie w trybie ślepego wykrywania a następnie opracuje i przejedzie drogę z jednego pokoju do drugiego. Do tego nie trzeba żadnej SI a mam wrażenie, że zgłosisz się z wynikami za kilka lat. OK, niech to będzie coś prostszego. Ostatnio na zawodach w Łodzi była konkurencja "Ratujemy Misia". Sterylne środowisko, znany i prosty cel. Spróbuj zaprojektować robota, który prawidłowo zmapuje i znajdzie drogę do biednego zwierzaka jedynie na podstawie odczytów własnych czujników ścian. Chętnie to zobaczę i uścisnę Ci rękę, bo - wierz mi - będzie to wyczyn na skalę naszej krajowej, amatorskiej robotyki.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Powiem tylko jako ciekawostkę, że problem mapowania za jakiś czas może być nieco łatwiejszy od opanowania niż się to wydaje. Aktualnie Intel i Google rozwijają ciekawe projekty urządzeń mobilnych z wbudowanymi skanerami 3D (coś jak Kinect Microsoftu). Obie firmy będą udostępniały API do pisania własnych aplikacji "zorientowanych" w przestrzeni. Nie wiem jak Intel, ale wersję google-a można już nawet testować.

Intel RealSense - http://www.intel.com/content/www/us/en/architecture-and-technology/realsense-shortrange.html

Google Tango - https://www.google.com/atap/project-tango/

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...