Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Robot Line Follower na Raspberry Pi + kamerka

Piroman1024 13 Lis 2017 13:07 1503 8
  • Witam!
    Jakiś czas temu popełniłem robota typu Line Follower, zdaję sobie sprawę że takich konstrukcji jest multum ale ten akurat bazuje na analizie obrazu wideo z kamerki.
    Robot posiada prostą konstrukcję, mianowicie podstawę stanowi sklejka 6mm, na której umieszczone są powerbank oraz dwa silniki z przekładniami stanowiące napęd, na powerbanku zaś umieściłem raspberryPi z kamerką.
    Całość skleiłem klejem z pistoletu oraz połączyłem opaskami zaciskowymi :D
    Co tu dużo mówić, na zamieszczonych zdjęciach wszystko widać:
    Robot Line Follower na Raspberry Pi + kamerka
    Robot Line Follower na Raspberry Pi + kamerka
    Robot Line Follower na Raspberry Pi + kamerka
    Robot Line Follower na Raspberry Pi + kamerka
    W projekcie wykorzystałem Raspberry Pi 3B, kamerkę PiCamera, sterownik dwóch silników oraz powerbank jako zasilanie całego układu. Nie będe rysował schematu gdzyż połączenie jest trywialnie proste.
    Algorytm wykorzystany w projekcie działa następująco:
    1.Akwizycja obrazu
    2.Przycięcie kadru
    3.Konwersja kadru do odcieni szarości
    4.Konwersja kadru z użyciem algorytmu Gaussian Blur
    5.Konwersja kadru do obrazu czarno białego z użyciem tzw.wyzwalania(tresholding)
    6.Inwersja kadru
    7.Szukanie największego konturu w kadrze
    -Jeżeli kontur jest z lewej strony uruchom prawy silnik
    -Jeżeli kontur jest z prawej strony uruchom lewy silnik inaczej jedź prosto
    8.Leć do punktu pierfszego :D

    Program napisałem w Pythonie z użyciem biblioteki OpenCV.
    Myślę że każdy z tymi informacja przy odrobinie wysiłku będzie w stanie zbudować takiego robota.
    Jeździ toto tak:

    Link


    Link


    Link


    Pozdrawiam
    Grzesiek


    Fajne!
  • #2 13 Lis 2017 16:44
    szymon122
    Poziom 36  

    Piroman1024 napisał:
    4.Konwersja kadru z użyciem algorytmu Gaussian Blur
    5.Konwersja kadru do obrazu czarno białego z użyciem tzw.wyzwalania(tresholding)
    6.Inwersja kadru

    Mogę prosić o omówienie tych trzech kroków? Najlepiej z przykładową klatką przed krokiem 4, po nim, po kroku 5 i 6.

    Jakie jest użycie zasobów RPi w trakcie analizy obrazu? Czy RPi zero będzie wystarczające do tego celu? Czy kamera usb również się sprawdzi w tym celu?
    Powiedz coś więcej na temat sterownika silników.

  • #3 13 Lis 2017 18:38
    Piroman1024
    Poziom 16  

    szymon122 napisał:
    Piroman1024 napisał:
    4.Konwersja kadru z użyciem algorytmu Gaussian Blur
    5.Konwersja kadru do obrazu czarno białego z użyciem tzw.wyzwalania(tresholding)
    6.Inwersja kadru

    Mogę prosić o omówienie tych trzech kroków? Najlepiej z przykładową klatką przed krokiem 4, po nim, po kroku 5 i 6.

    Jakie jest użycie zasobów RPi w trakcie analizy obrazu? Czy RPi zero będzie wystarczające do tego celu? Czy kamera usb również się sprawdzi w tym celu?
    Powiedz coś więcej na temat sterownika silników.


    Czołem!
    Nie ma co tu omawiać, każdy z tych kroków to oddzielna instrukcja biblioteki OpenCV, tylko parametry trzeba odpowiednie podać.
    Na zamieszczonym obrazku widać te klatki o które prosiłeś(są po kolei).
    Robot Line Follower na Raspberry Pi + kamerka

    Zużycie procesora to jakieś 4-7% więc być może raspberry Pi Zero wystarczy.
    Testowałem kamerkę USB ale w moim mniemaniu była zbyt wolna.
    Sterownik silników to jakiś kupiony na Allegro noname, miał jeden parametr podany - prąd do 0.8A na silnik.

    Pozdrawiam
    Grzesiek

  • #4 13 Lis 2017 19:05
    398216 Usunięty
    Poziom 43  

    A jak sobie poradzi z linią zygzakowatą?

  • #6 14 Lis 2017 21:49
    karol9966
    Poziom 9  

    Masz rację, że robotów typu line follower jest bardzo dużo, tylko, że ogólny poziom tychże robotów jest bardzo niski. Od kilku lat stoi to w miejscu, konstrukcje są kopiowane jeden od drugiego, żadna nie wnosi nic nowego. Podobnie jest z Twoją konstrukcją. Robota line follower bazującego na odczytach z kamery widziałem już kilkanaście lat temu i jeździł podobnie jak Twój teraz. Mówisz, że RPI Zero do tego celu wystarczy, jednocześnie pisząc, że zużywa 4-7% sprzętu. Jeżeli jeździ tak jak jeździ, zużywa niecałe 10% procesora i Ty mówisz, że RPI Zero wystarczy, no to gdzieś tu jest jakiś błąd, bo jeździ fatalnie, nie ma co się oszukiwać. Przysiądź do tego porządniej, pomyśl jak to zrobić lepiej, zrób konstrukcję dorównującą chociaż robotom bazującym na transoptorach odbiciowych i wtedy pochwal się. Kamera w line followerze to duży potencjał, bo moglibyśmy przewidywać trasę i przez to lepiej na nią reagować. W wersji, którą wrzuciłeś nie widzę nic ciekawego a ni odkrywczego ot kolejny line follower z kamerą, który kompletnie sobie z tą linią nie radzi. :)

  • #7 15 Lis 2017 00:35
    Piroman1024
    Poziom 16  

    Dzięki za konstruktywne uwagi!

    karol9966 napisał:
    Mówisz, że RPI Zero do tego celu wystarczy, jednocześnie pisząc, że zużywa 4-7% sprzętu. Jeżeli jeździ tak jak jeździ, zużywa niecałe 10% procesora i Ty mówisz, że RPI Zero wystarczy, no to gdzieś tu jest jakiś błąd, bo jeździ fatalnie, nie ma co się oszukiwać.


    Nie sprawdzałem tego empirycznie ale Rpi Zeroz z moim programem, wedle moich szacunków powinno wystarczyć aby robot zasuwał tak samo prędko. A że porusza się powoli według Ciebie to już inna historia..

    karol9966 napisał:
    Przysiądź do tego porządniej, pomyśl jak to zrobić lepiej, zrób konstrukcję dorównującą chociaż robotom bazującym na transoptorach odbiciowych i wtedy pochwal się.


    Tak się składa że skleciłem wcześniej LineFollowera na transoptorach odbiciowych i jak na prowizoryczny napęd zasuwał dosyć szybko, mógłby o wiele szybciej ale zmajstrowałem go w trzy godzinki...

    Link

    Przydałby się żeby nie wlókł za sobą ciężkiej baterii i więcej transoptorów by się przydało ale zrobiony był z części które były po ręką.
    Robot z PICamerką, a tym bardziej z kamerką na USB ze względu na ich dużą bezwładność nigdy nie będzie zasuwał tak szybko jak na transoptorach odbiciowych, nie masz pojęcia o czym mówisz.


    karol9966 napisał:
    Kamera w line followerze to duży potencjał, bo moglibyśmy przewidywać trasę i przez to lepiej na nią reagować. W wersji, którą wrzuciłeś nie widzę nic ciekawego a ni odkrywczego ot kolejny line follower z kamerą, który kompletnie sobie z tą linią nie radzi. :)


    Mój robot odbiera dane z kamerki z maksymalną jej prędkością to jest 60klatek/s i zużywa przy tym zaledwie 7% mocy procesora , próbowałem robić znany myk z drugim wątkiem obsługującym wyłącznie kamerkę i wówczas niby osiągałem ponad 100klatek/s ale robot najzwyczajniej gubił się, te dane były poprostu przekłamane.
    Na prędkość robota mają wpływ takie czynniki jak kontrast pomiędzy kolorem lini po której jeździ a tłem - mój jeździ po kolorowych panelach i to jest problematyczne, na białym tle mógłby zasuwać znacznie szybciej(próbowałem).
    Drugim problemem jest bezwładność samego robota, jest dosyć ciężki z powodu ciężkiego powebanku ale tylko takie powerbanki mają wyjście 2.1A ,a tyle potrzeba by zasilić Rpi 3B oraz silniki napędowe.
    Trzeci czynnik to napęd, zastosowałem pierwsze z brzegu koła z przekładniami jakie miałem pod ręką i na nich szybko się nie pojedzie(zbyt duża przekładnia) - nadają się bardziej do dźwigania ciężkich konstrukcji , a moja jest ciężka.
    Jest też pewien problem z drganiem kamerki oraz ze zmiennymi warunkami oświetleniowymi które w jakimś stopniu i tak mój program kompensuje.
    Zgodzę się z tym że mojego robota można przyspieszyć ale nie lepszym kodem ,a w/w sposobami.

  • #8 17 Lis 2017 15:02
    wesoly wymiatacz
    Poziom 6  

    Gratuluję udanej konstrukcji. Ja line follower'a na RPi widzę po raz pierwszy. Pomysł z kamerką jest bardzo ciekawy i w dalszym rozwoju daje wiele możliwości. Nie myślałeś nad redukcją wagi tegoż robota, np. zastąpienie sklejki czymś lżejszym?

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME