Skocz do zawartości

Strategia robota a program - dyskusja


Pomocna odpowiedź

Witam !

Wywolam dyskusję na forum takim oto tematem:

Jak sądzicie czy to jest optymalne rozwiązanie? ( robot dowlnej klasy sumo)

Robot klasy ...sumo powinien być programowo oparty na następującej strategii:

1) pętla główna programu to właściwie jedna funkcja, np. o nazwie szukaj, która szuka po prostu przeciwnika...szczegóły potem 🙂

2) funkcja sprawdzenia czy najechano na linię i ew. odskok powinna być zaimplementowana na przerwaniu sprzetowym np. TIMERA 1 ( ja wywołuję ją co 20-50 ms.)

3) funkcja ataku po znalezieniu przeciwnika (po prostu jazda na maxa w kierunku wroga)

ma byc także wywoływana w przerwaniu ...tym razem zewnetrznym, np. czujnik cyfrowy sharpa GP340 (40 cm). podpiety do portu INTERRUPT 0 .

Do tego standardowe oczekiwanie 5 sek. ...kontrola czujników itp.

Co sadzicie o takim algorytmie? .... sprawdzi się 🙂

Zaletą takiego rozwiązania jest zupełny brak funkcji delay... wait itp. (poza naturalnie czasami trwania obrotów... w funkcji szukaj, bo przecież kąt obrotu zależy od czasu ruchu silników)

pozdrawiam i proszę o Wasze opinie i uwagi ...Wojtek

Link to post
Share on other sites

Ja mam może i głupie pytanie z innej beki. Jak robot "atakuje", to jak go programujecie: ma jechać prosto nie zważając na nic, o ile ma przeciwnika przed sobą, czy po dotarciu do linii ma się jednak cofnąć? Pytam, bo oglądając filmiki zauważyłem, że część robotów po wypchnięciu przeciwnika zostaje w dohyo, a niektóre po wypchnięciu go dalej jadą za nim.

Link to post
Share on other sites

wlaściwie to nie ma już większego znaczenia...i tak robocik który wypchnął przeciwnika niezależnie od tego czy pozostał na dohyo czy wyjechał razem z nim...wygrywa...

natomiast przy sterowaniu PWM (z mocą silnika na 255...raczej cięzko jest utrzymać robocika w granicach dohyo....stąd właśnie ten niekontrolowany wyjazd ... 🙂

Link to post
Share on other sites

Uprościłeś to do granic możliwości 😉 Z grubsza jest dobrze, ale:

- nie ma konieczności umieszczania czujnika Sharpa na przerwaniu. Możesz do spokojnie sprawdzać stan czujników w pętli głównej programu (czasu jest mnóstwo).

- stosunkowo dobrym rozwiązaniem może być umieszczenie czujników linii na przerwaniach, w ten sposób unikasz zbędnego opóźnienie (przy rozwiązaniu z komparatorami) lub sprawdzanie wartości w przerwaniu od ADC,

- jazda ma maxa w kierunku wroga - oczywiście tak długo jak będziesz widział przeciwnika centralnym czujnikiem, ignorujesz wtedy resztę czujników.

- nie możesz sobie pozwolić na brak funkcji delay (częsty błąd), może to doprowadzić do sytuacji, że robot będzie zmieniał często kierunek obrotu silników, a wtedy już tylko krok do spalenia szczotek. Po każdej reakcji robota powinieneś dodać jakiś delay.

- 'kąt obrotu zależy od czasu ruchu silników' - no tu sprawa też nie jest taka prosta. Rozpędzony robot inaczej zareaguje na 200 ms obrót, niżeli ten który stoi w miejscu. Różnice niestety (z pkt. widzenia programisty) są spore.

I co najgorsze 😉 od teorii do praktyki jest daleka droga, z reguły robot zupełnie inaczej zachowuje się w walce niżeli w teorii mrugając diodkami. Dochodzą zakłócenia od silników, inne nieprzewidziane czynniki i często nie wygląda to tak kolorowo jak sobie założyliśmy.

Link to post
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

dz...uprościłem dla dyskusji wlaśnie....co do szczotek to niewątpliwie słuszna uwaga.... własnie dzisiaj spalilem jednego pololu (50 zł.) ...ale z drugiej strony chodził na testach już ze 2 miesiące...jakieś 10 godzin 🙂 ...

testuję sobie właśnie klona ARDUINO ... gotowca o nazwie RoMeo z niezłym mostkiem na pokładzie...

ogólnie algorytm wyżyłowany na maksa.... robocik też (6 silników HP Pololu 30:1).... całośc nieźle hula... ciekawe jak długo... 🙂

co do czujników sharpa...mam 4... jeden analog GP12 .. 2 GP340 na 40 cm.... i jeden centralny na 10 cm... analog jest także centralny...po rozpoznaniu robocik jedzie na 100-150 PWM...a gdy rozpozna ten 10cm.... to jazda na maxa z PWM 255... reszta... czujniki linii - analogi... próg ustawiony na 800-900 ...dla bieli (1024 czerń, to atmega jest 🙂....

W sumie robot jest na gotowo...testuję oprogramowanie...

boczne sharpy chodzą w petli... centralne na przerwaniu... linii na timerze... jak sądzicie ..jest optimum?

__________

Komentarz dodany przez: Nawyk

Kolega... zadyszki... dostał...? 😉

Link to post
Share on other sites

Szczotki możesz zawsze podmienić z mobotowych silników, które kosztują 6zł. Używaj przecinków zamiast tych wielkropków - przyjemniej będzie się to czytać.

To jest robot klasy minisumo? Ten czujnik analogowy to Sharp GP2D12?

Link to post
Share on other sites

To jest robot klasy minisumo? Ten czujnik analogowy to Sharp GP2D12?

WOW, dzięki za uwagi TIMONek 🙂

Co do robocika to jest to minisumo i jakoś z trudem udało się umieścić 6 pololu.

zasilanie - dwa ogniwa ABC 3,3V 2Ah (fi 26mm), więc sporo, chyba za dużo, zamówiłem 18 ale przysłali mi 26, bo tamtych akurat nie mieli. Ładowarka od li-poli sie wyrabia 🙂

Czujnik to sharp, taki jak piszesz (za bardzo chyba upraszczam ignorując dokładny opis podzespołów). Osiągi - coż z tymi pololu 255 PWM to bardzo ryzykowna sprawa, robocik ucieka mi poza dohyo już przy 120-150 więc muszę ograniczać mu PWM (stąd ta koncepcja czujnikow linii na przerwaniu, bo tradycyjnie w pętli już PWM 80 było problemem.

Co do delay czy wait to muszę niestety doprecyzować. Tam gdzie jest to absolutnie konieczne stosuję naturalnie delay (sciśle raczej staram się używać pętli for), zresztą w przykladach do obsługi samych czujników należy stosować opóźnienia czy dwukrotny odczyt jak w przyciskach np.) Sa to praktyki ogólnie znane.

Co do zakłóceń wszelkiej maści, to widzę że samo 100n nie pomaga niestety.Niedawno robiłem sobie wytrawiarkę z termostatem i pompką do akwarium. Całość na ATMEGA8 i jakie było moje zdziwienie jak po załączeniu powera LCD mi głupiał 🙂

Odsunięcie elektroniki od trafa pomogło w 95 na 100 przypadków załączenia.

Wracając do robocika to szukam pomysłów na szybką identyfikację przeciwnika w ruchu (ja w ruchu i przeciwnik w ruchu). Ma ktoś może jakieś wiarygodne pomiary czasów namierzania dla czujników sharpa? (pomijam wzorcowe noty katalogowe). Jak sądzicie, które czujniki sprawdziły się Wam najlepiej?

pozdrawiam Wojtek

Link to post
Share on other sites
Co miałeś na myśli?:

TIMONek napisał/a:

Dochodzą zakłócenia od silników ...

Zapewne to że silnik DC zwłaszcza przy przełączaniu jest generatorem zakłóceń i z punktu widzenia kompatybilności elektromagnetycznej ciekawym projektowym wyzwaniem. Można to opanować odpowiednim projektowaniem PCB, użyciem dodatkowych kondensatorów eliminujących sygnał wspólny oraz różnicowy oraz inne zabiegi.

Link to post
Share on other sites

Sharp GP2D12, może nie być najlepszym czujnikiem dla Twojego zastosowania. O ile dobrze pamiętam ma on czasu pomiaru w przybliżeniu równy 40ms. Zakładam, że Twój robot jeździ z prędkością co najmniej 1m/s. Jak łatwo policzyć w czasie jednego pomiaru przejedzie kilka centymetrów (robot przeciwnika zapewne także). Możesz sobie zrobić prosty eksperyment. Napisz program, który będzie obracał robota w okół własnej osi tak długo jak czujnik nie zobaczy przeciwnika. Zobaczysz, że robot może mieć poważne problemy z jego zauważeniem. A nawet jeśli go zauważy to nie koniecznie w niego trafi zarówno ze względu na opóźnienie pomiaru jak i pewną bezwładność silników.

Link to post
Share on other sites
Zapewne to że silnik DC zwłaszcza przy przełączaniu jest generatorem zakłóceń i z punktu widzenia kompatybilności elektromagnetycznej ciekawym projektowym wyzwaniem. Można to opanować odpowiednim projektowaniem PCB, użyciem dodatkowych kondensatorów eliminujących sygnał wspólny oraz różnicowy oraz inne zabiegi.

Wprawdzie pytałem TIMONek, ale skoro już za niego odpowiadasz a TIMONek nie dementuje, to z chęcią zapytam, o jakieś konkrety w tej sprawie. Takiej wiedzy nigdy za wiele 🙂

Link to post
Share on other sites

Zgadza się Timon. Ten SHARP to nie najlepsze rozwiązanie 🙂. Wstawiłem obecnie całkiem fajny czujnik E18-D80NK z firmy TROBOT, jest stosunkowo duży ale ma wbudowanego leda i na tej podstawie wiem kiedy znalazł intruza 🙂 Jest o niebo lepszy i ma potencjometr wieloobrotowy z regulacją odległości. Polecam to rozwiązanie.

Co do testów to doceniam Twoje doświadczenie w budowie robotów, to wszystko co tu opisujesz jest kopalnią wiedzy dla mnie, bo dotąd zajmowałem się tylko programowaniem, praktycznie w każdym języku (od FORTRAN-a, ALGOLA60 poprzez Clippera, Basica, Pascala, C, C++, powłoki UNIX,Linux po PHP i Flasha).

Przesiadka na dowolny język staje się coraz prostrza.

Obecnie zaintersowała mnie platforma ARDUINO, jest na prawdę super i zdobywa w Polsce coraz większą popularność. (info dla sceptyków - nie jest to CORTEX niestety), ale ARDUINO jest po prostu bardzo proste, sam interface wręcz banalnie prosty,a osoby znające chociaż troszke język C lub C++ po prostu polubią programowanie w tym środowisku już po kilku chwilach. Polecam lekturę w necie 🙂

Zacięcie modelarskie kiedyś było, ale to za czasów kiedy zdalne sterowanie pracowało w zakresie 27 MHz 🙂. Mam 50 lat na karku i spore zacięcie do nowych technologii. Ze swojej strony służę pomocą wszystkim zainteresowanym.

Pomysł budowy robocika wiąże się z tematem mojej pracy. Robię właśnie kolejną już podyplomówkę na UTP w Bydgoszczy w ramach unijnych projektów. Mam już promotora i praktycznie przygotowanego robota do zawodów, które na UTP są organizowane od kilku lat, pod nazwą "Wojna robotów".

Potrzebuję fachowej konsultacji i wymiany doświadczeń w temacie minisumo w szczególności, stąd właśnie temat tego postu.

Podaję mój email: wk@warcaby.lh.pl dla wszystkich chętnych, by ożywić tą dyskusję także na priv 🙂

Link to post
Share on other sites

Tzn. dla mnie taktyka/strategia w MiniSumo to trochę za wielkie słowo, tu raczej mamy do czynienia ze zwykła brutalnością klasy znajdź i z dyńki mu.

Sam z początku rozważałem kwestie taktyczne, ale w tym konkretnym przypadku ze względu na specyfikę i regulamin samych zawodów, próby tworzenia jakiś bardziej inteligentnych algorytmów taktycznych nie przyniosą większych skutków.

Po pierwsze sam rozmiar areny zmagań wyklucza jakąkolwiek taktykę, jedynie przy samym starcie można by próbować wykonać szybki zwrot w lewo lub prawo, aby spróbować zniknąć przeciwnikowi z pola widzenia i zmusić go do rozglądania się dając sobie jednocześnie czas i możliwość zajechania go z boku, ale tu też jest dużo losowości w takim działaniu.

Po drugie szybkość samego starcia daje nam niewiele czasu, na próby analizowania tego co się w okół nas dzieje. Pomijając 5 sek na regulaminowy start, raczej nie ma wiele czasu na skanowanie i analizowanie danych, Ten czas można by najwyżej spróbować spożytkować na rekalibrację czujników, jeżeli start jest regulaminowy i roboty stoją od siebie w znanej odległości.

Można by próbować pasywnych technik kamuflażu, czyli spróbować stać się trudno widzialnym dla czujników przeciwnika, ale moje eksperymenty z SHARPem na razie uświadomiły mi że trzeba by zbudować bardzo płaska piramidę, a to oznacz że pod taką kopułą trzeba by zmieścić mechanikę dosłownie z MikroSumo, która byłaby jednocześnie na tyle mocna, aby ruszyć robota klasy MiniSumo. Można stosować co prawda dosyć popularne rozkładane rampy, ale to też nie do końca jest zawsze skuteczne. Choć takie roboty mają znaczną przewagę nad innymi.

Link to post
Share on other sites

Aby taktyka miała znaczenie walki musiałyby się rozgrywać na ringu do zwykłego sumo, wtedy poszukiwanie przeciwnika ma znaczenie. Lub też ringi musiałyby być metalowe, ale moim zdaniem neodymy szkodzą konkurencji zamiast jej pomagać.

Link to post
Share on other sites

Czyli można w skrócie powiedzieć że wszystko co się dało sensownie i bez przegięć klasy magnesy i podciśnienie wymyślić i zrobić w robotach MiniSumo już zrobiono. Obecnie konstrukcje z takiego mojego poglądu idą po prostu w kierunku brutalnej siły, tzn. mocniejsze silniki i napęd na wszystkie możliwe koła/osie, no i rozkładane rampy.

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.

×
×
  • 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.