Skocz do zawartości

[Micromouse] Razor - worklog


Pomocna odpowiedź

Dość dawno nie pisałem o postępach, więc czas to nadrobić. Robot potrafi już jeździć po labiryncie z pamięci, myślę, że z mapowaniem również by sobie poradził, jednak na razie nie mam jak zrobić labiryntu. Kalibracji względem ścian również jeszcze nie ma, ale na razie mam cały "główny" algorytm do przerobienia, ponieważ robot nie jeździ płynnie tylko zatrzymuje się na każdym segmencie. Filmik:

Zdjęcia:

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To nie może tak działać. Po pierwsze regulator nie działa przy tak dużej częstotliwości wywoływania. Po drugie, nie dajesz mu działać, bo wstrzymujesz cały program. Zainteresuj się SysTickiem, dzięki niemu rozwiążesz wszystko szybki i poprawnie.

Link do komentarza
Share on other sites

Przez ostatni miesiąc znów nic nie pisałem, ale prace powolutku idą do przodu.

➡️ Dodałem kalibrację względem ścian. Przed przejazdem robot sprawdza odczyty czujników i odpowiednio dobiera granicę ścian. Niestety to rozwiązanie jest podatne na słońce, gdy promienie padały na robota, głupiał.

➡️ Regulator PD i profilery wykonują się co 1ms za pomocą SysTicka.

➡️ Robot porusza się dość płynnie po labiryncie, dużo mu brakuje do konstrukcji innych, ale na razie nie jest źle 😋

➡️ Dodałem wyświetlacz, labiryntu jeszcze na nim nie rysuje, bo na razie jeździ "na pamięć", i w sumie to nie jest na razie potrzebne. Jak będę dodawał mapowanie to dodam również wyświetlanie na LCD, żeby można było sprawdzić, czy dobrze zapamiętał trasę.

Chyba tyle nowości, teraz plany rozbudowy:

➡️ Osłonięcie fototranzystorów termokurczką (teraz jest taśma izolacyjna na diodach)

➡️ Mapowanie

➡️ Wyświetlanie labiryntu na LCD

➡️ Trochę lepsze ogarnięcie sterowania robota

I jeszcze filmik:

Link do komentarza
Share on other sites

Szkoła to zło 😕

Od czasu ostatniego posta robota praktycznie nie ruszyłem. Zastanawiałem się jednak nad sterowaniem robota, i stwierdzam, że za bardzo nie wiem jak to zrobić 😋 . Nie wiem, jak mam kalibrować enkodery od czujników odległości, co raczej trzeba robić, bo we wzorze na obwód koła jest Π, więc zawsze będzie gdzieś zaokrąglenie, na dodatek robot może wpaść w poślizg, i jednocześnie na odwrót, bo też może się coś czujnikom stać, a jak w przyszłości dodam żyroskop, to już będzie kosmos, bo z jednej strony jak robot się obróci i koła będą się ślizgały, to on to zmierzy, ale po pewnym czasie on też nalicza błąd, bo dryf. Do tego dochodzi jeszcze sytuacja, gdy nagle ściana labiryntu zaatakuje mojego robota (lub robot jej nie zauważy) i trzeba się będzie jeszcze cofać. Niestety google po zapytaniach typu "algorytmy micromouse", "micromouse sterowanie" wyświetla linki do stron o wyszukiwaniu najkrótszej ścieżki, które dla mnie jest najprostszą czynnością pośród całego ogarnięcia robota w labiryncie 😕 . Bardzo bym prosił, żeby ktoś pomógł mi ogarnąć te rzeczy, wytłumaczenie w poście, linki do jakichś artykułów o sterowaniu, jakieś książki o sterowaniu itp.

Ponadto postanowiłem jeszcze przerobić trochę schemat (i tym samym płytkę), bo aktualny jest nie tyle zły, co niewygodny. Dodam pomiar napięcia baterii, bo już kilka razy musiałem odratowywać akumulator programem do Li-Fe na ładowarce, jakieś wyjście na bluetooth, może jakiś bootloader przez usb czy bluetooth, zmienić podłączenie enkoderów do uC, bo podpiąłem pod normalne piny, zamiast do pinów timera, który ma tryb obsługi enkoderów, przesunę trochę silniki do tył, zrobię miejsce na trzeci punkt podparcia, może zmodyfikuję czujniki, żeby były bardziej odporne na zakłócenia i więcej niebieskich diodek pod spód 😋 .

Link do komentarza
Share on other sites

Szkoła to zło 😕

Od czasu ostatniego posta robota praktycznie nie ruszyłem. Zastanawiałem się jednak nad sterowaniem robota, i stwierdzam, że za bardzo nie wiem jak to zrobić 😋 . Nie wiem, jak mam kalibrować enkodery od czujników odległości

Sprowadz wszystko do znanych Ci odleglosci. Oblicz ile impulsow jest na 1mm, i zrob konwersje pomiarow z czujnikow by charakterystyka pomiar/odleglosc byla linia prosta

, co raczej trzeba robić, bo we wzorze na obwód koła jest Π, więc zawsze będzie gdzieś zaokrąglenie,

Poczytaj o liczbach ze stałym przecinkiem. W skrócie: liczba 8 bitowa pozwala Ci dojechac do 255, liczba 16 bitowa pozwala Ci dojechac do 65535. A wyobraz sobie ze pierwsze 8 bitów z liczby 16 bitowej to czesc calkowita, a nastepne 8 bitow to czesc ulamkowa. W ten sposob masz precyzje co do 1/256, czyli maksymalny zakres liczby 16 bitowej do 255,996

na dodatek robot może wpaść w poślizg, i jednocześnie na odwrót, bo też może się coś czujnikom stać, a jak w przyszłości dodam żyroskop, to już będzie kosmos, bo z jednej strony jak robot się obróci i koła będą się ślizgały, to on to zmierzy, ale po pewnym czasie on też nalicza błąd, bo dryf.

Jak to mawia pewien mój znajomy: "przejdziesz ten most dopiero jak do niego dojdziesz", czyli narazie sie tym nie przejmuj i zajmij sie podstawami.

Do tego dochodzi jeszcze sytuacja, gdy nagle ściana labiryntu zaatakuje mojego robota (lub robot jej nie zauważy) i trzeba się będzie jeszcze cofać.

póki co wykonuj w labiryncie ruchy co każdą komórkę (odległości przecież wyznaczysz z liczby impulsów enkodera)

Niestety google po zapytaniach typu "algorytmy micromouse", "micromouse sterowanie" wyświetla linki do stron o wyszukiwaniu najkrótszej ścieżki, które dla mnie jest najprostszą czynnością pośród całego ogarnięcia robota w labiryncie 😕 . Bardzo bym prosił, żeby ktoś pomógł mi ogarnąć te rzeczy, wytłumaczenie w poście, linki do jakichś artykułów o sterowaniu, jakieś książki o sterowaniu itp.

Najpierw naucz się robić mapę labiryntu - w skrócie musisz używać macierzy 16x16 komórek - 256 elementowej, gdzie każda komórka przechowuje informacje o obecnych ścianach.

Ponadto postanowiłem jeszcze przerobić trochę schemat (i tym samym płytkę), bo aktualny jest nie tyle zły, co niewygodny. Dodam pomiar napięcia baterii, bo już kilka razy musiałem odratowywać akumulator programem do Li-Fe na ładowarce, jakieś wyjście na bluetooth, może jakiś bootloader przez usb czy bluetooth, zmienić podłączenie enkoderów do uC, bo podpiąłem pod normalne piny, zamiast do pinów timera, który ma tryb obsługi enkoderów, przesunę trochę silniki do tył, zrobię miejsce na trzeci punkt podparcia, może zmodyfikuję czujniki, żeby były bardziej odporne na zakłócenia i więcej niebieskich diodek pod spód 😋 .

Skoro masz działającego robota, najpierw na nim powalcz i wyciśnij z niego tyle ile się da. Jak już zobaczysz że więcej programem nie zdziałasz, bo sprzet Cię hamuje, to wez się za przeprojektowywanie

Link do komentarza
Share on other sites

Tak jak napisał mog123, przelicz impulsy enkoderów i wartości ADC z czujników odległóści na wartości rzeczywiste w mm. Po wykonanym ruchu, np. przejechaniu kilku pól do przodu aż do napotkania ściany, zatrzymujesz się w środku komórki. Wtedy porównujesz dystans jaki dzieli mysz od ściany z przodu z dystansem jaki pokazują dalmierze. Orientację kalibruje się w trochę inny sposób. Gdy robot jedzie do przodu to cały czas w pętli sprawdzasz odległości od ścian po bokach. Gdy nie jesteś na środku pola to odpowiednio zmieniasz sterowanie. Gdy za blisko prawej strony to zaczynasz minimalnie skręcać w lewo. Gdy za blisko lewej to zaczynasz minimalnie skręcać w prawo. Najlepiej, żeby skręt był tym mocniejszy im większa odległość dzieli Cię od środka pola.

Kalibracja nie tyle jest konieczna z uwagi na zaokrąglenia, bo te można łatwo zmniejszyć przez użycie większych zmiennych, ale z uwagi na niedokładne poruszanie się robota, nierówne koła, poślizgi, itp.

Jeśli aktualna płytka robota jest niewygodna to jak najbardziej można ją przeprojektować. Ważne, żeby nie dodawać zbyt dużo "bajerów" do płytki, które będą wymagały tylko więcej czasu poświęconego na ich oprogramowanie. Co do planowanych modyfikacji proponuję jeszcze dodać buzzer. Bardzo przydaje się przy debugowaniu programu. W moim przypadku bardziej niż Bluetooth.

Link do komentarza
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.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.