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

Armadilo-linefolower inny niż wszystkie

piotrek_bogdan 30 Mar 2011 23:28 9732 17
  • Armadilo-linefolower inny niż wszystkie
    Armadilo-linefolower inny niż wszystkie

    Pomysł na budowę tego robota pojawił się ok roku temu. Podczas rozbierania starego skanera natrafiłem na ciekawy element, matryce CCD (ILX524K) . Matryca składała się z 2700 pikseli w trzech kolorach ustawionych w jednej linii. Wraz z małym obiektywem świetnie nadawała się na czujnik do linefolowera.
    Przez rok powstały kilka pomysłów na odczytywanie matrycy i kilka podstaw jezdnych. robot który dzisiaj przedstawiam na pewno nie jest ostatni ale stwierdziłem że warto go zaprezentować. Nie będzie to dokładny opis każdego szczegółów i na pewno nie podzielę się wsadem do mikrokontrolera ponieważ spędziłem naprawdę dużo czasu pracując nad tym i zamierzam startować tym robotem w zawodach. Chciałem się podzielić tym pomysłem z wami tylko po to żeby pokazać że każdy można wymyślić coś fajnego i warto eksperymentować.

    Armadilo-linefolower inny niż wszystkie

    Matryca i co dalej...
    Jak się szybko okazało obsługa matrycy to nie taka prosta sprawa. trzeba wygenerować trzy sygnały zegarowe , wzmocnić i zdekodować sygnał analogowy i wszystko to w jak najkrótszym czasie ponieważ przy prędkościach ok 1m/s liczy się każdy milimetr. Do obsługi matrycy wykorzystałem Atmege32 ponieważ na razie nie umiem żadnej innej rodziny programować a 32-ka ma wystarczającą ilość portów i pamięci SRAM. Wraz z atmegą współpracuje przetwornik A/D ADC1175CIJM , wzmacniacz LM6172IN i drabinka R-2R jako offset do sygnału z matrycy. Dzięki nauce asemblera w wakacje i optymalizacji programu osiągnąłem ok 600 fps ale mam już plan jak dobić do 1000 fps .Matryca może osiągnąć nawet 1800 fps ale czas naświetlania nie może być zbyt krótki bo nie da się rozróżnić lini. Przy tak dużej szybkości trzeba doświetlać podłoże bo jak się okazuje co sprawiło mi duży problem w moim pokoju oświetlonym świetlówką 100 razy na sekundę jest ciemno.

    Armadilo-linefolower inny niż wszystkie

    CCD to nie wszystko.
    Położenie linii przesyłane jest usartem z prędkością 0,5 Mbps do Atmegi48 gdzie już standardowy kontroler PID. Silnik napędowy sterowany przez mosfet N plus zwieranie terminali silnika przez mosfet P w celu hamowania. Silnik kierujący jest sterowany przez popularny L298 i sprzężenie zwrotne przez potencjometr i przetwornik ADC wbudowany w Atmege48.

    Trochę o zasilaniu.
    Wszystko zasila pakiet li-ion 7,4 V. Napięcia baterii przetwarzane jest na: 5V przez stabilizator LDO, 12V dla matrycy przez MC34063.

    Konstrukcja
    Robot zaprojektowany w CAD. Zbudowany jest z czarnej 3mm plexy wyciętej na mojej CNC . Sposób napędy na tylne skrętne koło wydawał mi się bardzo dobry jak na linefolowera. Jednak rozczarowałem się, przy większych prędkościach (>0,7m/s) robot jest niestabilny. Cała elektronika zbudowana jest na płytkach uniwersalnych bo są wygodne i można zmieniać niektóre fragmenty obwodów co było bardzo pomocne. Robot napędzany jest przez silnik modelarski speed 280 który świetnie spisuje się w tej roli (satysfakcjonujące przyśpieszenie i prędkość maksymalna >1,5m/s). Do skręcania po zmianach użyty jest ten sam model silnika. Początkowo zamontowany był tam silnik krokowy który się nie spisał z powodu zbyt małej prędkości. Podłoże podświetlane przez szereg diod Led na przodzie odbija się w lusterku i trafia przez soczewkę na matrycę znajdującą się z tyłu robota. Wszystko widać na zdjęciach. Całość waży ok 600g.


    Armadilo-linefolower inny niż wszystkie Armadilo-linefolower inny niż wszystkie Armadilo-linefolower inny niż wszystkie Armadilo-linefolower inny niż wszystkie Armadilo-linefolower inny niż wszystkie
    Armadilo-linefolower inny niż wszystkie

    Przyszłość
    Kolejny linefolower będzie na pewno mniejszy i lżejszy. Będę chciał osiągnąć 1000 fps. Zastosuje inną topologie napędu.


    http://www.youtube.com/watch?v=BCz86GI-aw0

    Proszę o wyrozumiałość gdyż to mój pierwszy artykuł.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    piotrek_bogdan
    Poziom 11  
    Offline 
    piotrek_bogdan napisał 13 postów o ocenie 179, pomógł 0 razy. Mieszka w mieście Kraków. Jest z nami od 2008 roku.
  • Computer Controls
  • Computer Controls
  • #3
    mevelrik
    Poziom 12  
    Koncepcja ciekawa , choć uważam że szukanie linii o szerokości ok 20mm czujnikiem o szerokości 30mm to nietrafiony pomysł. Zamiast na slalomie jechać prawie prosto on będzie musiał cały czas jechać po tym slalomie a to zajmuje czas.

    Pokaż nagranie :)
  • #4
    3_at
    Poziom 14  
    mevelrik napisał:
    Koncepcja ciekawa , choć uważam że szukanie linii o szerokości ok 20mm czujnikiem o szerokości 30mm to nietrafiony pomysł. [...]


    Nie wiem czy zauważyłeś ale kolega wprowadził podobną konstrukcję jak w skanerze, a tam mały czujnik skanuje kartkę wielkości A4. Jeśli będzie dostatecznie wydłużona odległość czujnika od podłoża (patrz lusterko) to i czujnik złapie szerszy "pasek".
    Ja jestem ciekawy bardziej jak to działa w praktyce. Jakiś filmik by się przydał.
  • #5
    naelektryzowany
    Poziom 17  
    Ciekawy sposób wykrywania linij, ma bardzo dużo punktów pomiarowych, a przy tym stosunkowo niską cenę (stare skanery kosztują grosze), obawiam się jednak o stabilność odczytów, 600fps to niezbyt wiele, jednak przy stabilnych odczytach powinno wystarczyć, szczególnie, że robot nie jest ultra szybki.
    Przy takim czujniku linii bardzo ważną, rzeczą jest algorytm. Jak przetwarzasz dane, wybierasz kilka (naście) punktów, czy obliczasz przesunięcie względem środka, a pid załatwia resztę?
  • #6
    Tranzystor_1992
    Poziom 16  
    Witam,
    nareszcie ktoś stworzył coś godnego uwagi ;)
    Bardzo fajna konstrukcja, bardzo ciekawe rozwiązanie problemu, nawet wizualnie wyszło Ci dość dobrze, gdyby nie te płytki uniwersalne :( Ale to na razie jest prototyp, mam nadzieję, że poprawisz to w ostatecznej wersji modelu ;)

    Myślałeś, żeby udoskonalić projekt i wykonać pojazd, który samodzielnie poruszałby się w pomieszczeniu, tzn. bez wyznaczonej trasy :?:

    Pozdrawiam ;)
  • #7
    Sabre
    Poziom 18  
    piotrek_bogdan nie obraź się ale daleka droga przed tobą. Rozumiem chęć wykorzystania ciekawego podzespołu, ale po co wyważać otwarte drzwi? Używając transoptorów odbiciowych można uzyskać dużo lepsze efekty przy dużo większych prędkościach. Twój linefollower jakieś 3 lata temu robiłby furorę, ale nie dziś. Teraz większość najszybszych polskich linefollowerów jeździ z prędkościami powyżej 1,5m/s, a z takim napędem i czujnikiem raczej nie osiągniesz takich prędkości.
  • #8
    piotrek_bogdan
    Poziom 11  
    Nie chcę nikogo obrażać ale patrząc na najnowsze konstrukcje linefolowerów wyglądają on dla mnie jak ctrl-c ctrl-v a różnice w czasach przejazdu podczas finałów obrazują różnice w naładowaniu baterii. Dla mnie czujniki odbiciowe mają dwie podstawowe wady są mało dokładne i muszą się prawie stykać z podłożem. Matryca, może jeszcze nie w tym modelu ale może eliminować te dwie wady bo jeśli wyobrazimy sobie że możemy sczytywać linie 30cm przed robotem po linii fragmentu okręgu otaczającego przód robota bez wystających "łopat" to już stwarza możliwości a jeśli dodamy do tego dziesięć razy większą dokładność. Nie chcę tu stwierdzić że matryca jest najlepszym rozwiązaniem ale wydaje mi się że transoptory odbiciowe są już wykorzystywane na granicy swoich możliwości i trzeba szukać jakiś lepszych rozwiązań a nawet jeśli się nie uda to zdobędzie się jakieś nowe doświadczenie.

    Dodano po 22 [minuty]:

    W sprawie wcześniejszych niejasności odnośnie szerokości czytania matrycy dodałem zdjęcie modułu wyciągniętego z skanera gdzie widać małą soczewkę która jest obiektywem jak w normalnym aparacie i w zależności od ustawień można regulować szerokość pola widzenia (przybliżenie).
  • #9
    Sabre
    Poziom 18  
    Może i wszystkie konstrukcje są do siebie podobne bo powielane są najlepsze rozwiązania, stąd z przodu "łopata" z czujnikami, ale wierz mi, że te linefollowery różnią się od siebie znacznie. Nie zgodzę się z opinią, że transoptory są wykorzystywane na granicy swoich możliwości bo to nieprawda. Na granicy możliwości to są stosowane przez większość osób silniki z pololu, czy użyte mikrokontrolery. Wiem, że są lepsze rozwiązania i lepsze sposoby na szybszą jazdę, sam pracuję nad jednym z nich :).

    Jeśli chodzi o różnicę czasów w finałach na zawodach i twoją wypowiedź to widać jak mało wiesz o linefollowerach. Te, tak małe, różnice wynikają z maksymalnej możliwej prędkości, możliwej do uzyskania na danym podłożu. Szybciej się po prostu nie da bo robot wpada w poślizg chociażby, a te małe różnice są wynikiem różnego oprogramowania danego robota i chwytów zawartych w nim. Inna sprawa to to, że ten sam robot puszczony 2 razy po tym samym torze z tym samym kodem i tak samo naładowanymi akumulatorkami będzie miał różne czasy, bo np w 1 przejeździe trasa była mniej zakurzona niż w 2. To są już kruczki, pojeździsz po zawodach po całej Polsce to dojdziesz do innych wniosków niż wyciągasz teraz.
  • #10
    gbd.reg
    Poziom 21  
    Mam pytanko: jak zareaguje robot, jeśli w zasięgu matrycy znajdzie się druga linia? wybierze tą bliżej środka, stanie, wybierze tą, która mu bardziej pasuje (którą pierwszy zauważy), czy pojedzie pomiędzy? Bo trochę ciekawi mnie jak oprogramowałeś tą atmegę.
  • #11
    satanistik
    Poziom 27  
    Też planowałem zastosowane takiego czujnika jednak nie udało mi się odnaleźć dokumentacji do żadnego z posiadanych. mógł by kolega przedstawić zarys algorytmu wyszukiwania linii ?
  • #12
    piotrek_bogdan
    Poziom 11  
    Sabre tak się składa że tydzień temu byłem na zawodach RobotChallenge w Wiedniu i do takich wniosków doszedłem choć wypowiedz o naładowaniu baterii miała raczej podtekst ironiczny. Będę miał czas zastanawiać się i wyciągać wnioski jak rozpocznę studia jak na razie za miesiąc zdaje maturę i raczej to mi tylko teraz w głowie. Odnośnie szukania linii jeśli odczyt z matrycy w jakiś sposób stał się niejednoznaczny (np. przez pojawienie się drugiej linii) robot podąża w kierunku ostatniego poprawnego odczytu z zmniejszoną prędkością. Odnośnie algorytmu to powstały dwa jeden to różniczkowanie wykresu naświetlenia i szukanie dwóch największych bezwzględnych wartości i zapisywanie ich położenia i drugi po prostu porównywanie odczytanych wartości do wyliczonej stałej i szykanie "przecięć" (w sensie było mniejsze a teraz jest większe i na odwrót).
  • #13
    Sabre
    Poziom 18  
    piotrek_bogdan, wiem że byłeś, widziałem zdjęcie twojego robota w jednej z galerii na diodzie. Dziwię się, że zamiast wystawiać robota na własnym podwórku, jeździsz tak daleko aby zdobywać doświadczenie :).
  • #14
    me_super
    Poziom 29  
    Sabre napisał:
    piotrek_bogdan, wiem że byłeś, widziałem zdjęcie twojego robota w jednej z galerii na diodzie. Dziwię się, że zamiast wystawiać robota na własnym podwórku, jeździsz tak daleko aby zdobywać doświadczenie :).


    Bardzo dobrze że jeździ dalej, bo poziom rodzimych amatorskich rozwiązań jest na żenującym poziomie.
    Oprogramowanie linijki CCD i zaimplementowanie algorytmów to wyższy poziom techniki niż dwa fototranzystory i garść opampów i za należy się pochwała.
  • #15
    Sabre
    Poziom 18  
    me_super napisał:

    Bardzo dobrze że jeździ dalej, bo poziom rodzimych amatorskich rozwiązań jest na żenującym poziomie.
    Oprogramowanie linijki CCD i zaimplementowanie algorytmów to wyższy poziom techniki niż dwa fototranzystory i garść opampów i za należy się pochwała.


    Właśnie udowodniłeś jak mało wiesz o rodzimych konstrukcjach. Czy byłeś kiedykolwiek na jakichś zawodach? Chociażby na Robomaticonie, który był niedawno w Warszawie.

    W tej chwili jest około 10 linefollowerów, które jeżdżą powyżej 1m/s (m.in. mój Tsubame). Najszybsze z nich przekraczają 1,5m/s. Większość z nich zawiera regulator PD, czasami cały PID. Najszybszy polski robot Hurricane na zawodach w Wiedniu jeździł sporo powyżej 1,5m/s, ma on turbinkę, która przysysa go do podłoża.
  • #16
    djgrabo
    Poziom 11  
    Przy zastosowaniu 8-bitowego przetwornika ADC i 5 fototranzystorów można spokojnie uzyskać rozdzielczość 1000 pozycji! Problemem w uzyskaniu większych prędkości jest, tak jak napisał Sabre, między innymi przyczepność na torze. Według mnie wypadanie z zakrętów spowodowane jest bezwładnością silników, a rozwiązaniem mogłoby być zastosowanie enkoderów i sterowanie przez regulator PID lub chociażby PD. Dynamika poprawiłaby się znacząco!
  • #17
    andrzejlisek
    Poziom 28  
    Zawsze myślałem, że w zwykłych skanerach do papieru przetwornik CCD jest w formie listwy długości co najmniej takiej, jak szerokość przestrzeni roboczej, czyli nieco więcej niż szerokość kartki papieru, inaczej to przetwornik musiałby jeździć wzdłuż listwy podobnie jak pojemniki z tuszem w drukarce atramentowej.

    A ten przetwornik o długości 30mm to z jakiego skanera pochodzi. Czy jednak była taka optyka, że przetwornik uchwyci całą szerokość kartki? Liczyłem, że jeżeli 2700 pikseli miałoby odpowiadać 21cm (szerokość kartki A4), to wyjdzie trochę ponad 300dpi.
  • #18
    piotrek_bogdan
    Poziom 11  
    andrzejlisek napisał:
    Zawsze myślałem, że w zwykłych skanerach do papieru przetwornik CCD jest w formie listwy długości co najmniej takiej, jak szerokość przestrzeni roboczej, czyli nieco więcej niż szerokość kartki papieru, inaczej to przetwornik musiałby jeździć wzdłuż listwy podobnie jak pojemniki z tuszem w drukarce atramentowej.

    A ten przetwornik o długości 30mm to z jakiego skanera pochodzi. Czy jednak była taka optyka, że przetwornik uchwyci całą szerokość kartki? Liczyłem, że jeżeli 2700 pikseli miałoby odpowiadać 21cm (szerokość kartki A4), to wyjdzie trochę ponad 300dpi.


    Rozebrałem już kilka skanerów i wszystkie są tak samo zrobione. Matryca (w nocie katalogowej jest napisane że ta jest właśnie przeznaczona do rozdzielczości 300dpi) później "obiektyw" czyli cztery małe soczewki w mosiężnej rurce i zestaw luster które sprawiają że pomiędzy obiektywem a papierem jest stała dość duża odległość optyczna rzędu 40cm.