Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Robot klasy LineFollower - Lajt

treker 01 Maj 2014 14:45 14964 53
  • Robot klasy LineFollower - Lajt

    Witam wszystkich, od kilku lat zajmuję się budową turniejowych robotów mobilnych. Nie każdy wie, że w Polsce średnio 10-12 razy w roku rozgrywane są zawody robotów w wielu kategoriach.

    Moją "specjalizacją" są roboty typu LineFollower, czyli konstrukcje mające za zadanie najszybsze przejechanie specjalnej trasy. Składa się ona z czarnej linii (o szerokości 15 lub 20mm) na białym tle. Dodatkowo w moim robocie nie zastosowałem napędu tunelowego, który mógłby dociskać robota do podłoża. Dzięki temu robot jest zgodny z wymaganiami konkurencji LineFollower Standard.

    Ogólnie o robocie
    Robot startujący w takich wyścigach, aby był szybki i zwinny musi być lekki. Dlatego konstrukcja jest stosunkowo mała. Brak również obudowy, która jedynie przeszkadzałaby w startach. Napęd dla robota stanowią silniki firmy Pololu 10:1 HP z obustronnym wałem. Całość "mechaniki" opiera się o płytkę PCB oraz połączenie z włókna węglowego między płytką czujników oraz robotem. Koła wytoczone zostały na zamówienie, a następnie pokryto je poliuretanem.

    Elektronika
    Konstrukcja oprócz swojego głównego zadania miała być również dla mnie "szkołą" programowania STMów. Dlatego sercem układu jest STM32F103RBT6, do którego podłączyłem 8 czujników (KTIR), mostek TB6612 oraz enkodery AS5040.

    Schemat elektroniki:

    Robot klasy LineFollower - Lajt


    Płytka została wykonana w Satlandzie:
    Robot klasy LineFollower - Lajt Robot klasy LineFollower - Lajt


    Oprogramowanie
    Program napisany został oczywiście w języku C. Jego główne zadanie to komunikacja z kontrolerem widocznym na zdjęciu poniżej oraz podążanie robota za linią. To ostatnie realizowane jest za pomocą 3 regulatorów: PD oraz 2x PID.





    Wyniki
    Robot okazał się świetnym sprzętem do nauki programowania STMów. W chwili obecnej na zawodach startuję z nowszą wersją robota, w której wyeliminowałem drobne błędy jakie wkradły się do opisywanego prototypu. Dodatkowo zmienił się również układ czujników oraz ich umiejscowienie w robocie.

    Z najnowszym robotem udało mi się wygrać wszystkie 5 ostatnich zawodów organizowanych w Polsce oraz 2 miejsce na największych zawodach organizowanych w Europie w konkurencje LineFollower z przeszkodami.

    Przykładowy przejazd robota:


    Na filmiku widoczna jest prędkość 1,4 m/s, jednak podczas całego dnia zawodów możliwe jest osiągnięcie prędkości ponad 2m/s.

    Robot klasy LineFollower - Lajt Robot klasy LineFollower - Lajt Robot klasy LineFollower - Lajt


    Fajne!
  • #2 01 Maj 2014 15:18
    pier
    Poziom 23  

    Powiedz jakie są koszty takiego robota?
    Na zdjęciach widać niby jakąś antenę, Masz z robotem jakąś komunikację bezprzewodową?

  • #3 01 Maj 2014 15:25
    treker
    Poziom 25  

    Koszty ciężko ocenić w chwili obecnej - zależy, co liczymy. Czy tylko elementy, czy prototypy i materiały. Jest masa rzeczy, które były niezbędne do osiągnięcia poziomu, który pozwala na wygrywanie. Najogólniej będzie powiedzieć, że na takiego robota należy przeznaczyć 600-1500zł, a przy zsumowaniu wszystkiego od pustej kartki po działającą konstrukcję i tak się nie zmieścimy ;)

    Oczywiście, jeśli ktoś chce zacząć zabawę z robotami, to zmieści się <200zł.

    Faktycznie, na zdjęciach widać antenkę od modułu Bluetooth. Jednak był on tam jedynie na czas debugowania i wstępnych testów. Podczas jazdy nie jest konieczne połączenie z robotem.

  • #4 01 Maj 2014 16:46
    Hoptymista
    Poziom 13  

    "Lajt"? Na Forbocie jest Fuzzy :D

    Tu Mechano :P

  • #5 01 Maj 2014 16:49
    treker
    Poziom 25  

    Fuzzy to nowsza wersja tego robota. Lajt był prototypem i tego tutaj opisałem. Różnice może dla osób postronnych są małe z mojego punktu widzenia były ważne i znaczące.

  • #6 01 Maj 2014 18:27
    sylwek tedi
    Poziom 13  

    Jeśli utrzymujesz się z budowy takich robotów i przy tym masz szybki dostęp do podzespołów, to naprawdę gratuluję.

    Teraz do rzeczy:
    Oglądałem ten film i mam krótkie pytanie: Czy ten robot na koniec prezentacji miał celowo wylecieć z trasy, czy po prostu miałeś farta że go akurat złapałeś w takim momencie? Czemu nie dałeś mu funkcji "parking" ?

  • #7 01 Maj 2014 18:39
    treker
    Poziom 25  

    Nie utrzymuję się z budowy takich robotów, nikt chyba tego nie robi. Można powiedzieć, że jestem w komfortowej sytuacji, mam drogie hobby oraz firmy, które chcą mnie w tym wspierać. Prywatnie traktuję to jako coś równoległego ze studiami - gdzieś praktyki trzeba nauczyć się samemu. Osób takich jak ja jest całkiem sporo, każdy buduje jednak roboty na różnym poziomie.

    Co do pytania.
    Robot bez ingerencji jeździłby w koło, ponieważ nie wiedziałby kiedy robi drugie okrążenie. Trasa na każdych zawodach wygląda kompletnie inaczej. W powyższym przypadku nastąpiło "ręczne" zatrzymanie ponieważ nad trasą znajdowały się silne halogeny, które zakłócały zatrzymywanie robota w normalny sposób - pilotem RC5.

  • #8 01 Maj 2014 18:45
    sylwek tedi
    Poziom 13  

    Ok. Ale jak byś go nie złapał, to prawdopodobnie wyleciał by z trasy. (tak to wyglądało na filmie)
    Po prostu zgubił by się.
    Co do parkowania to masz prostą sprawę. Jest linia startu. Dorzuć algorytm który będzie ją wykrywał, a robot sam się zatrzyma w odpowiednim momencie. (przecież trasę analizujesz z odpowiednim wyprzedzeniem prawda ?)

  • #9 01 Maj 2014 18:52
    treker
    Poziom 25  

    Nie, nie wyleciałby. Pokonałby zakręt jak wszystkie inne. Złapałem go po prostu za taśmę łączącą tył z czujnikami, czego nie widać na filmiku. Dlatego możesz mieć takie wrażenie. Nawet gdyby wypadł, to konstrukcja zawsze stara się wrócić na trasę.

    Problem jest taki, że trasy nie mają fizycznie zaznaczonej linii startu. Co masz na myśli w kwestii analizowania trasy z wyprzedzeniem? Każda reakcja robota obliczona jest podczas jazdy, nie mam na to żadnego wpływu. Przynajmniej w najprostszym trybie jazdy, gdzie nie buduję mapy trasy.

  • #10 01 Maj 2014 19:12
    sylwek tedi
    Poziom 13  

    No i tu jestem rozczarowany. A gdyby np. realizator takiego konkursu 2 miesiące przed turniejem ogłosił informację z której wynika ze na trasie będą znajdować się miniaturowe znaki drogowe ?
    Twój robot jeździ prostolinijnie. Każde skrzyżowanie traktuje jako jazda przed siebie. Takie roboty można sprzedawać w sklepach z zabawkami. (nie stanowią ewolucji np. w komunikacji drogowej)
    Nie wiem jakie są stopnie zaawansowania w tych konkursach, ale na moje oko to jest klasa najniższa.)
    W ekstra klasie roboty się ścigają z uwzględnieniem miniaturowych znaków drogowych.
    Kiedyś w telewizji był taki program w którym roboty się wzmagały ze sobą pokonując różne trasy, na koniec walczyły ze sobą. Oczywiście tymi robotami sterowali ludzie. Dziś roboty same podejmują decyzje, a z pilota RC człowiek wspomaga w trudnych sytuacjach.
    Przepraszam że ci to powiem, ale to co pokazałeś na tym filmie to młodzi amerykańce wymyślili 20 lat wstecz.

  • #11 01 Maj 2014 20:03
    treker
    Poziom 25  

    Tylko, że w tych zawodach nie chodzi o rozpoznawanie miniaturowych znaków drogowych. Są odmiany konkurencji (w Japonii), w których robot jest informowany o zbliżającym się zakręcie - dla mnie to jest klasa "niższa", bo co to za wyczyn pokonać dobrze zakręt wiedząc, że on tam będzie. Tutaj robot musi sobie poradzić niezależnie od tego czy ma przed sobą długą prostą czy zakręt po kątem prostym.

    sylwek tedi napisał:
    Każde skrzyżowanie traktuje jako jazda przed siebie.

    Ponieważ tak założyli sobie organizatorzy w regulaminach.

    sylwek tedi napisał:
    Kiedyś w telewizji był taki program w którym roboty się wzmagały ze sobą pokonując różne trasy, na koniec walczyły ze sobą. Oczywiście tymi robotami sterowali ludzie. Dziś roboty same podejmują decyzje, a z pilota RC człowiek wspomaga w trudnych sytuacjach.

    Nie ma tutaj kompletnie co porównywać, to były zdalnie sterowane "samochodziki" z dodanymi piłami.

    sylwek tedi napisał:
    Przepraszam że ci to powiem, ale to co pokazałeś na tym filmie to młodzi amerykańce wymyślili 20 lat wstecz.

    Ok w takim razie zapraszam do działania praktycznego i pokazania jak to się robi ;) Chętnie bym zobaczył te przykłady na 20 lat wstecz. Miesiąc temu miałem okazję ścigać się w Wiedniu z zawodnikami z całej Europy, Meksyku, a nawet Tajwanu. Przegrałem tylko z jednym robotem, właśnie z Tajwanu i nie była to tak duża przegrana, jakiej można się spodziewać.

    W teorii wszystko jest proste i łatwe. Jak zobaczę, że ktoś robi coś w praktyce to przyznam mu racje, spokojnie ;)

  • #12 01 Maj 2014 20:31
    sylwek tedi
    Poziom 13  

    Te zawody są po to by wyodrębnić odpowiednich ludzi do odpowiednich zadań. Ja dokładnie rozumiem to że ty niczego szczególnego nie dostrzegasz i trochę inaczej patrzysz na świat.
    Gdybyś został wytypowany postrzegł byś technologię która bynajmniej z początku była by jak pierwszy zapalony papieros, albo 100ml czystego. (zapewne słuch po tobie by zaginął, bo tam nie pracuje się za dolary)

    Pozdrawiam. :usa

  • #13 01 Maj 2014 20:35
    treker
    Poziom 25  

    Rozumiem, Twoje poglądy jednak wydaje mi się, że w tej kwestii doszukujesz się zbyt dużo. Są konkursy, po których "to możliwe" (łaziki marsjańskie, autonomiczne samochody itd.), jednak tutaj głównie chodzi o naukę, a nie na odkrywanie nowych technologii ;)

  • #14 01 Maj 2014 20:59
    sylwek tedi
    Poziom 13  

    I właśnie sam sobie odpowiedziałeś... Nauka to za mało, ale nauka + własna kreatywność = droga do twojego hobby. (jesteś dobry, to możesz dostać szansę... Ja jestem za słaby i nie ukrywam tego.)

  • #15 01 Maj 2014 23:13
    patrx
    Poziom 16  

    Sprytnie przemyślana konstrukcja. Jestem pod wrażeniem dużej dynamiki jazdy, szczególnie na ostrych zakrętach widać jak maszynka sprytnie i z lekkością daje radę. Zamiast podczerwieni mógłbyś dodać miniaturowy moduł radiowy np. RFM01 dla pewniej kontroli nad jezdzidełkiem. Moduł waży kilka gramów także nie powinno być problemu z tonażem :) Czy próbowałeś zwiększyć prędkość jazdy tak by wycisnąć jeszcze więcej? Jakie pojawiają się ograniczenia? Przy dużej prędkości maszynka nie ogarnia i wypada z trasy a gdyby popracować nad algorytmem (może PID?) i zawalczyć o więcej? Podkręcić robaczka i zawalczyć o 1 miejsce na świecie! :)

  • #16 01 Maj 2014 23:23
    Hoptymista
    Poziom 13  

    patrx
    W tym robocie jest więcej PID'a niż myślisz :)

  • #17 01 Maj 2014 23:24
    treker
    Poziom 25  

    Dziękuję za miłe słowa. W kolejnych wersjach mam zamiar przejść na komunikację bezprzewodową (moduły SPI).

    Oczywiście, że próbuję zwiększać prędkość, na pierwszym filmiku widać 30-35% teoretycznej maksymalnej prędkości, więc tutaj zapas jest. Problemem są poślizgi (brudna trasa, różne podłoża na zawodach itd.). Czasami zdarza się 5m prostej, po której jest zakręt o 90*, tutaj trzeba się bardzo postarać, aby nie wypaść z trasy.

    W tej chwili robotem struję PD oraz 2xPID do prędkości silników (sprzężenie od enkoderów). Ciągle pracuję nad lepszymi metodami, jednak jeszcze za wcześnie, aby o tym mówić.

  • #18 01 Maj 2014 23:41
    sylwek tedi
    Poziom 13  

    To też dlatego trzeba obserwować trasę z wyprzedzeniem, co świadczy o tym iż twój regulator zachowuje się jako PI będący łączną suma całego efektu. Zwróć uwagę na to o czym pisałem wcześniej, a zdecydowanie zwiększysz efektywność.

  • #19 01 Maj 2014 23:43
    patrx
    Poziom 16  

    treker napisał:
    ...Problemem są poślizgi (brudna trasa, różne podłoża na zawodach itd.). Czasami zdarza się 5m prostej, po której jest zakręt o 90*...


    Uświadomiłeś mi istotę problemu, łatwo można przedobrzyć:) zwłaszcza ten nagły zakręt po dłuższym odcinku na którym maszynka nabierze prędkości. Łatwo nie jest, wiele zależy od "fizyczności" konstrukcji tj. gabaryty, rozłożenie mas itd. a PID jak widzę nie jest tutaj odkryciem. Może w celu optymalizacji zrobić fizyczny model w LabView? żartowałem... :)

  • #20 01 Maj 2014 23:45
    treker
    Poziom 25  

    Od pewnego czasu pracuję nad algorytmami mapującymi trasę, jednak nie zawsze jest to możliwe do realizowania na zawodach. Po drugie nie ma jeszcze potrzeby, aby wprowadzać to w tej chwili. Póki mam czas robię testy w domowym zaciszu ;)

    Kwestia zamodelowania układu i podejścia bardziej teoretycznego cały czas mnie kusi. Mam w planach "ruszyć temat" w ramach pracy inż.

  • #21 02 Maj 2014 00:15
    satanistik
    Poziom 27  

    Cytat:
    Te zawody są po to by wyodrębnić odpowiednich ludzi do odpowiednich zadań. Ja dokładnie rozumiem to że ty niczego szczególnego nie dostrzegasz i trochę inaczej patrzysz na świat.


    Wnioskuję z wypowiedzi kolegi że nie do końca kolega rozumie ideę tych zawodów.
    To nie są konkursy z dawnych lat gdzie nie było zasad i wszystko co się skleciło można było pokazać. Żeby można było mówić o rywalizacji wprowadzono liczne zasady i obostrzenia. To jak ze sportem - jak mają grać piłkarze to nie na rolkach i nie w kręgle ;-). Plusem tego rozwiązania jest to że konkursy może organizować każdy kto ma na to czas i pieniądze a o wyniku decydują mierzalne czasy.

    Co do samej konstrukcji - myślał kolega o silnikach BLDC do napędu? Ciekawe czy wprowadzenie np czujnika żyroskopowego jak w modelach helikopterów do stabilizacji mogło by w czymś pomóc. Do wykrywania poślizgu można by użyć akcelerometru. Dane z takich czujników mogły by pomóc wykryć wypadanie z zakrętu.

  • #22 02 Maj 2014 07:24
    treker
    Poziom 25  

    Wprowadzenie sprzężenia od żyroskopu również mam w planach. Silników BLDC nie używałem do napędu z racji problemów z wysterowaniem takiego napędu przy niskich obrotach.

  • #23 02 Maj 2014 10:57
    Hoptymista
    Poziom 13  

    Nie rozumiem tylko w czym taki żyroskop mógłby pomóc.

  • #24 02 Maj 2014 11:09
    treker
    Poziom 25  

    Żyroskop mierzyłby obrót wokół osi Z. Odczyt z czujników daje nam informację pod jakim kątem do linii znajduje się robot. Żyroskop mógłby być sprzężeniem do regulatora kontrolującego rotację robota.

  • #25 02 Maj 2014 11:58
    sylwek tedi
    Poziom 13  

    satanistik napisał:
    Wnioskuję z wypowiedzi kolegi że nie do końca kolega rozumie ideę tych zawodów.
    To nie są konkursy z dawnych lat gdzie nie było zasad i wszystko co się skleciło można było pokazać. Żeby można było mówić o rywalizacji wprowadzono liczne zasady i obostrzenia. To jak ze sportem - jak mają grać piłkarze to nie na rolkach i nie w kręgle . Plusem tego rozwiązania jest to że konkursy może organizować każdy kto ma na to czas i pieniądze a o wyniku decydują mierzalne czasy.

    Pisałem wcześniej że nie wiem jakie dokładnie są zasady tych konkursów w których bierze udział autor tematu.
    Prawdą oczywiście jest to, że takie rozgrywki teoretycznie może zorganizować każdy, jednak chciałbym podkreślić, że fajnie jest jak takie konkursy organizuje odpowiednia osoba, która wie jakich gości zaprosić do pierwszych "ławek".
    Co do zasad samych rozgrywek, to jest już problem realizatora. On ma tak przygotować konkurs aby zasady były w miarę równe, bo przecież niczego do końca nie da się przewidzieć.

    Autorowi oczywiście gratuluję i zachęcam do dalszego rozwoju o poziom wyżej w tej fajnej orać interesującej dziedzinie. :wink:

  • #26 02 Maj 2014 12:05
    treker
    Poziom 25  

    W chwili obecnej organizatorami większości imprez tego typu są naukowe koła studenckie przy uczelniach wyższych. Praktycznie w każdym większym mieście można takie zawody spotkać ;)

  • #27 02 Maj 2014 12:18
    tsiu
    Poziom 13  

    Ze schematu wynika że nie ma osobnej masy. Silniki jednak szarpią sążnie.
    Na którym sem. jesteś?

  • #28 02 Maj 2014 12:41
    treker
    Poziom 25  

    Osobnej masy nie ma. Masa silników jest fizycznie rozdzielona na płytce od reszty (nie łączy się z polygonami), do tego zastosowałem odpowiednie kondensatory. Akurat z zakłóceniami od silników nigdy nie było problemów. Robot nie pobiera zbyt dużo prądu.

    W tej chwili 6 sem, jednak takie rzeczy robię już kilka dobrych lat i nie czuję, aby studia mi w tym pomogły ;)

  • #29 02 Maj 2014 17:06
    mirek_zaf
    Poziom 15  

    treker napisał:
    Silników BLDC nie używałem do napędu z racji problemów z wysterowaniem takiego napędu przy niskich obrotach.

    A niby na czym ten problem miałby polegać? ;)

    Link

    Nawet zwykły silnik BLDC od DVD ma 3 analogowe czujniki Halla i co niektórzy przewijają je na większe prądy i sporo mocy z tego wyciągają w modelach latających RC.
    No ale nie można by już wtedy zareklamować jakiejś firmy bo to by była samoróbka.

    Możliwości żyroskopu i akcelerometru 3y osiowego w jednym (MPU6050), którym się ostanio bawiłem przez I2C są takie.

    Link

    Można zrobić w nim sprzetową fuzję sensorów i dodatkowo podpiąć cyfrowy kompas ;)
    Chyba dużo ciekawsze gdyby dodać do tego kamerę z OpenCV do rozpoznawania obrazu niż śledzenie idealnie czarnej lini na białym tle...

    Ja akurat potrzebowałem zrobić sztuczny horyzont do pojadu EV i sterowanie silnikiem w zależności od kąta pochylenia.

    Te zawody byłyby ciekawsze gdyby nie było tak płasko, ale to i tak tylko kilkuwatowe zabawki.

  • #30 02 Maj 2014 17:14
    treker
    Poziom 25  

    mirek_zaf napisał:
    No ale nie można by już wtedy zareklamować jakiejś firmy bo to by była samoróbka.

    Nie rozumiem zbytnio Twoich sugestii, a cała moja konstrukcja niby czym jest, jak nie samoróbką?

    Co do silników. Swego czasu ktoś próbował uruchomić robota na BLDC, jednak projekt utknął właśnie na sterowaniu silnikami przy małych prędkościach. Nie wnikałem wtedy dlaczego. Gdy zaczynałem ten projekt nie znałem dobrze tematu BLDC, więc wybrałem, to co znałem. Konstrukcja ta miała być poligonem doświadczalnym dla oprogramowania. Na "zabawy" z elektroniką przyjdzie pora w następnej odsłonie robota.

    Aktualne silniki są stosunkowo tanio, łatwo sterowalne i mają jeszcze zapas mocy. W śród zawodników z Azji popularne są z kolei silniki ze zdecydowanie wyższej półki - Faulhaber.