Skocz do zawartości
Zaloguj się, aby obserwować  
devonport

Zaawansowany program sterujący robotem mobilnym

Pomocna odpowiedź

Ukończyłem pierwszy etap prac nad potężnym programem mapującym.

Program ma za zadanie doprowadzić robota do celu(czerwone pole ). Znane są tylko punkt startowy i pozycja końcowa natomiast rozmieszczenie przeszkód na mapie nie jest wiadome.

Robot używa trzech sensorów ultradzwiękowych, które mają za zadanie określić czy sąsiednie pole jest wolne bądz zajęte, oraz silników z enkoderami.

W zasadzie wydaje się po krótkich testach, że algorytm sprawuje się bezbłednie problem to właśnie pomiar przebytej drogi, poślizgi i czasem zawodzi sensoryka(echo,itp.)

Robot jeszcze nie mapuje do tyłu ale potrafi wycofać się ze ślepych zaułków.

Labiryntod.c

Udostępnij ten post


Link to post
Share on other sites

Około 1:09 robot ma do wyboru dwa kierunki, na jakiej zasadzie go wybiera?

Planujesz zrobić wyszukiwanie optymalnej trasy?

Opisz trochę szerzej algorytm :]

Udostępnij ten post


Link to post
Share on other sites

Fajnie to wyszło.

Jak byś mógł, opisz o co będzie rozszerzony algorytm, np wykrywanie "zajętości" pola oddalonego o 2, lub coś takiego.

I robotowi byłoby prościej, gdyby te przeszkody były kwadratowe i ni z papieru.

Udostępnij ten post


Link to post
Share on other sites

Program oblicza współrzędne sąsiednich wolnych pól i te które są najbliższe względem celu mają pierwszeństwo.

Pierwszy wybór jest w 0.17 sek. prosto/prawo a to z 1.09 sek. lewo/prawo pola mają taki sam priorytet lecz ustawiłem tak algorytm żeby preferował lewo niż prawo

kwestja ustawienia znaków

if wartość lewo >= wart. prawo to instrukcja1 lub if wartość lewo < wart. prawo to instrukcja1.

Nie planuję szukania najkrótszej drogi.

Tak Mihau lepsze były by przeszkody 2,5l pękate kartony po sokach lub sześciany ok. 20X20X20 cm ale te też dają radę.

Przedewszystkim rozbudować chodzenie do tyłu np. gdy cel jest z tyły robota to w tej chwili robot jest bezradny.

Labiryntod.c

Udostępnij ten post


Link to post
Share on other sites

Wow, widze że nieźle sie napracowałeś nad kodem.

Mam nadzieje że będziesz kontynuował prace nad tym robotem, bo skoro już dałeś source :O

Udostępnij ten post


Link to post
Share on other sites

A co do przebytej drogi to może jakieś cny zliczające ilość obrotów kola.

Udostępnij ten post


Link to post
Share on other sites

Te silniki mają wbudowane enkodery z tego co się orientuję.

Udostępnij ten post


Link to post
Share on other sites

Ja niestety nie będę już pracował nad tym programem. Chciałem jeszcze trochę posiedzieć

coś udoskonalić ale muszę wrócić do realu i tam popracować.

Ujawnienie zródeł może tylko pomóc w ewentualnym rozwijaniu tego typu programów, każdy może porównać, poprawić dodać coś od siebie itp. chyba u nas nie ma żadnych zawodów z labiryntami to i po co to utajniać.

NXT ma silniki z encoderami.

A tu plik z przykladem:

przyklad1.doc

Udostępnij ten post


Link to post
Share on other sites

Jeśli jeszcze kogoś coś w tym stylu interesuje tu jest kod i sprawko tego co kiedyś zrobiłem na uczelni.

Założenia podobne.

NXT musi być zparowany przez BT z kompem bo na kompie są wykonywane obliczenia.

W sprawku jest sporo pierdół wieć wybaczcie, ale tak trzeba było to napisać 🙂

Kod jest w NXC i C#

LegoNXT.pdf

NXT_MazeSolver.rar

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!

Anonim
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.

Zaloguj się, aby obserwować  

×
×
  • Utwórz nowe...