Skocz do zawartości

#R2D2#

Użytkownicy
  • Zawartość

    26
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    1

#R2D2# wygrał w ostatnim dniu 10 listopada 2017

#R2D2# ma najbardziej lubianą zawartość!

Reputacja

7 Neutralna

O #R2D2#

  • Ranga
    3/10

Informacje

  • Płeć
    Mężczyzna

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Ktoś się orientuje gdzie można kupić takie joysticki? Na stronie projektu jest napisane, że wykorzystują czujniki Halla.
  2. Cześć wszystkim, chciałbym zaprezentować Wam konstrukcję, która stała się tematem mojej pracy dyplomowej. Działanie: Pojazd opiera się o Raspberry Pi 2 (bo akurat ten model posiadam), a dalmierz wykorzystuje dedykowaną kamerę do Maliny. W projekcie chciałem skupić się na wykrywaniu przeszkód, w związku z czym pominąłem pewne kwestie techniczne, jak np. zasilanie z akumulatorów (robot musi być podłączony do zasilacza kablem) albo kwestie zdalnego sterowania (robot wykonuje z góry zdefiniowane instrukcje ruchu). Najważniejszym elementem tego projektu jest własnoręcznie wykonany dalmierz laserowy, który opisuję dokładniej poniżej. Podstawowym zadaniem robota jest skanowanie przestrzeni wokół niego. Wygenerowana mapa wygląda tak: Jest ona przedstawiona w formie tablicy dwuwymiarowej, w której każda komórka odpowiada kwadratowi o boku 10 cm. Zdecydowałem się na taki sposób zapisania mapy, ponieważ można ją łatwo przetworzyć algorytmami wykrywania drogi. Konstrukcja mechaniczna: Do budowy użyłem gotowego podwozia z dwoma kołami i kółkiem podpierającym z tyłu. Podwozie te wymusza poruszanie się pojazdu analogicznie do poruszania się czołgu, a ma to tę zaletę, że robot może obracać się w miejscu. Do gotowego podwozia przykręciłem drugą płytę, którą ręcznie wyciąłem z płyty MDF. Do tej płyty przymocowana jest cała elektronika wraz z serwomechanizmem, na którym znajduje się głowica dalmierza. Głowica ta również została ręcznie wykonana z płyty pilśniowej. Składają się na nią trzy płytki, z których jedna jest przeznaczona na umocowanie lasera, druga na umocowanie kamery, a trzecia tworzy podstawę i miejsce mocowania do serwomechanizmu. Dwie pierwsze płytki są ułożone względem siebie pod kątem 9,3°. Kąt ten wynika z niedoskonałości ręcznej obróbki materiału, docelowo miał on wynosić 15° (niestety nie dysponuję drukarką 3D). Jego zmniejszenie powoduje, że dalmierz może wykonywać pomiary w większym zakresie (nawet do kilku metrów), jednak pomiary te są mniej precyzyjne, ponieważ na jeden piksel przesunięcia punktu lasera przypada większa różnica odległości. Przestrzeń pomiędzy obydwoma płytami pojazdu ma wysokość około 4 cm i jest zajmowana jedynie przez wiązki przewodów. Przestrzeń ta jest tak duża aby można było, przy przyszłej rozbudowie projektu, umieścić tam 4 cylindryczne akumulatory Li-ion wraz z towarzyszącą im elektroniką. Elektronika: Jak napisałem wcześniej głównym elementem sterującym jest Raspberry Pi, jednak niezbędne są też odpowiednie układy np. do sterowania silnikami. W tym celu stworzyłemukład, który zawiera sterownik silników L293D oraz całą niezbędna elektronikę potrzebną do m.in. sterowania laserem czy serwomechanizmem. Układ ten służy też do rozdzielenia zasilania na wszystkie komponenty. W kwestii zasilania zdecydowałem się na użycie dwóch zasilaczy 5 V, gdzie jeden odpowiada za zasilanie Maliny, a drugi za zasilanie wszystkich silników. Przy jednym zasilaczu zakłócenia powodowane przez silniki były tak duże, że często powodowały resetowanie się Raspberry Pi. Dalmierz: Dalmierz zbudowałem na podstawie poradnika Forbota, w związku z czym pominę tutaj opis metody triangulacji i niezbędne wzory, ponieważ to wszystko możecie przeczytać w wymienionym artykule. Podstawowym problemem przy korzystaniu z tak skonstruowanego dalmierza jest wyznaczenie pozycji plamki lasera na obrazie z kamery. W projekcie zaimplementowałem dwa różne sposoby osiągnięcia tego celu. Pierwszym z nich jest znalezienie najjaśniejszego puntu na obrazie. Przy użyciu biblioteki OpenCV metoda ta jest bardzo łatwa w implementacji. Jednak ja użyłem trochę bardziej rozbudowanej metody używającej maski na obrazie. Maska jest obszarem achromatycznym (1-bitowym), który wyznacza obszar na obrazie, który powinien być wyłączony z obliczeń. W projekcie maskę użyto, aby wyszukiwać najjaśniejszy punkt jedynie w wąskim poziomym pasie obrazu. Innymi słowy, maska obrazu wyłącza z przetwarzania górną i dolną część klatki. Użyłem tej metody ze względu na to, że w trakcie testów często maksimum na obrazie było wykrywane nie w miejscu plamki lasera, a np. w miejscu odbicia światła dziennego od błyszczących przedmiotów w pomieszczeniu. Dzięki ograniczeniu interesującego nas obszaru obrazu udało się znacząco zminimalizować ten efekt. Wysokość tych obszarów dobrałem eksperymentalnie, wiedząc, że ze względu na konstrukcję dalmierza, plamka lasera w oku kamery zawsze „porusza się” w linii poziomej, na stałej wysokości. Wyszukiwanie najjaśniejszego punktu jest metodą bardzo łatwą w implementacji i dobrze sprawdzają się w praktyce. Ma ona jednak jedną poważną wadę. W momencie gdy odległość do przeszkody jest tak duża, że plamka lasera znajduje się poza kadrem, metoda ta w dalszym ciągu odnajdzie najjaśniejszy punkt na obrazie, który błędnie zostanie zinterpretowany jako światło lasera. Używając tej metody nie ma możliwości sprawdzenia czy punkt lasera znajduje się w kadrze. Z tego względu spróbowałem też drugiej metody. Procedura w tym przypadku składa się z kilku kroków: pobranie klatki obrazu przy wyłączonym laserze, włączenie lasera, pobranie drugiej klatki obrazu, odjęcie dwóch pobranych klatek od siebie, wyznaczenie obszaru, w którym obie klatki różnią się od siebie. Jak widać metoda ta już w swoich założeniach jest bardziej skomplikowana niż wcześniejsza. Poza trudniejszą implementacją programową, problemy sprawiają tu też kwestie mechaniczne. Aby odjęte od siebie obrazy w wyniku dały obszar oświetlony laserem cała reszta kadru musi być na obu zdjęciach taka sama. Wymaga to, aby kamera nie poruszała się w trakcie pomiaru. Z tego względu pomiar jest też dłuższy niż przy wyszukiwaniu najjaśniejszego punktu, ponieważ należy poczekać z pobraniem kolejnych klatek aż drgania spowodowane ruchem serwomechanizmu ustaną. W projekcie metoda ta została zaimplementowana w taki sposób: każda z pobranych klatek jest konwertowana na obraz czarno-biały, 8-bitowy, gdzie wartość 255 odpowiada bieli, a 0 odpowiada czerni. Wszystkie wartości pomiędzy to odcienie szarości. Następnie obrazy te są od siebie odejmowane, w wyniku czemu uzyskujemy trzeci czarno-biały obraz. Obraz różnicy jest wtedy konwertowany na mapę 1-bitową z ustaloną wartością progową, tj. wartością, powyżej której piksel jest uznawany za biały, a poniżej za czarny. Do wszystkich tych przekształceń obrazu używane są narzędzia z biblioteki OpenCV. Na tak przetworzonym obrazie są następnie wyszukiwane białe obszary. Obszarów tych zazwyczaj jest więcej niż jeden, często też widoczne są tu krawędzie różnych obiektów, które znajdowały się w kadrze, jednak krawędzie te mają zazwyczaj 1-2 px grubości. Są to niedoskonałości obrazu, których nie udało się wyeliminować nawet przez wyeliminowanie drgań kamery. Aby krawędzie te nie wpływały na wynik, z przetwarzania wyłączane są wszystkie obszary, których wysokość lub szerokość jest mniejsza niż 3 px. W wyniku tego na obrazie różnicy pozostaje obszar światła lasera oraz kilka mniejszych obszarów, które są rożnymi zakłóceniami. Aby ostatecznie znaleźć obszar plamki lasera, szukany jest największy biały obszar na obrazie różnicy i wyznaczany jest jego środek. Obliczony punkt jest pozycją plamki lasera na obrazie. Jak widać, metoda ta jest dużo bardziej skomplikowana i dużo trudniejsza w praktycznej implementacji niż szukanie najjaśniejszego punktu. Nie ma ona jednak wady poprzedniej metody, tj. gdy w kadrze nie znajduje się światło lasera, metoda ta w większości przypadków wykryje to. Wymaga to jednak małych zakłóceń na obrazie różnicy, gdzie po odjęciu zakłóceń do 3 pikseli otrzymamy pusty obraz. Taką sytuację należy zinterpretować jako pomiar poza zakresem.
  3. Przydałoby się jeszcze podać informację, że miejsce pracy to Gdańsk.
  4. A czy jest możliwość podłączenia Raspberry Pi do PC, ale faktycznie gdy nie mamy dostępu do sieci/routera? Bo nawet w wariancie 3 tak naprawdę jakiś router mieć musimy, różni się to tylko tym, że Malina nie jest do niego podłączona bezpośrednio. A co w sytuacji gdy mamy tylko komputer i Raspberry, i nic poza tym? Da się jakoś utworzyć sieć między PC a Maliną w takiej sytuacji? Przykładowa sytuacja, do której to odnoszę: chcemy coś zaprezentować na uczelni. Mamy tylko laptopa i projekt na Raspberry Pi. Chciałbym podłączyć się do Maliny i pokazać na laptopie obraz z niej za pomocą VNC. Sieć Wi-Fi na uczelni w praktyce nie działa, a kablem do żadnego routera też nie można się podłączyć (chyba, że przyniesie się swój). Zostaje tylko laptop, Malina i kabel sieciowy. Da się to jakoś rozwiązać?
  5. Ja ma takie trochę głupie pytanie: czy można jakoś nabyć samą kartę z rozpisanymi wyjściami GPIO? Mogłaby ona być uzupełnieniem zestawu tablic Elektronika I + Elektronika II + Technika Cyfrowa (bo chyba jest w takim samym formacie).
  6. Moim zdaniem współpraca z Arduino jest ciekawym tematem na jedną część kursu, ale nie chciałbym żeby cały kurs opierał się na połączeniu Arduino i Raspberry Pi. To ma być kurs o Malinie, kursy Arduino już były. Jeszcze co do programowania, fajnie było gdybyście nie ograniczyli się tylko do Pythona albo tylko C++. Najlepiej jakby rozwiązanie każdego problemu poruszanego w kursie było pokazane w dwóch językach (wiem, postawa roszczeniowa ;-P). I mam nadzieję, że nie będziecie uczyć takich potworków jak "while (digitalRead(pin))…". O ile jest to jak najbardziej w porządku w przypadku mikrokontrolerów, to w przypadku Raspberry Pi będzie powodować 100% użycia procesora przez cały czas działania programu. Także mam nadzieję, że opiszecie jak wykorzystywać przerwania w jednym z pierwszych artykułów.
  7. Świetny kawałek sprzętu. Jak nazywają się te zielone złącza? Czy sterownik się nie przegrzewa przy długim działaniu silników? Raczej jest za mały żeby jakoś sensownie odprowadzać ciepło. I jak jest ze ścieżkami na PCB? Są zapewne bardzo cienkie, a przepływa przez nie stosunkowo duży prąd. Nic się z nimi nie stanie? Przepraszam, że zadaję takie być może amatorskie pytania, ale jeszcze wiele nauki przede mną w świecie elektroniki.
  8. Muszę przyznać, że jestem lekko rozczarowany, bo zabrakło mi w tym kursie przerzutników. Ale w takim razie pozostaje czekać na część drugą. Czy wiadomo kiedy (i czy w ogóle) będą dostępne karty/tablice do tego kursu?
  9. Super sprawa, czekałem na ten kurs od czasu gdy pojawił się pierwszy kurs elektroniki. Bardzo podoba mi się to podwozie. Widać, że można go wykorzystać do różnych projektów. Jest z nim jednak mały problem, a mianowicie po zamontowaniu do niego płytki Arduino i pakietu zasilającego nie ma już miejsca na przypięcie tam jakieś płytki stykowej. Rozumiem, że w kursie będziecie wykorzystywać tylko Waszą nakładkę (no właśnie, jest polskie słowo, które oznacza to samo co angielskie "shield", więc czemu go nie używać?), ale miejsce na płytkę stykową bardzo by się przydało do jakichś własnych projektów, gdzie nie będziemy korzystać tylko z części z kursu. Drugą sprawą jest sama nakładka. Szczerze mówiąc wolałbym pracować na "gołych" elementach, bo tak można się więcej nauczyć i lepiej zrozumieć jak to wszystko działa. Rozumiem, że kurs jest przeznaczony dla początkujących i pewnie dlatego podjęliście decyzję o pracy na nakładce. Możesz część II będzie na "gołych" scalakach? Można by omówić różnice między różnymi popularnymi układami sterującymi silnikami itd. W żadnym razie nie krytykuję, tylko chcę się podzielić pewnymi uwagami, które wpadły mi do głowy po przeczytaniu wstępu.
  10. Łał, super pomysł! Na pewno kupię przy najbliższej okazji. Czy można wiedzieć kiedy będą dostępne karty z drugiego poziomu kursu elektroniki i kursu techniki cyfrowej? Byłby fajny prezent na Boże Narodzenie.
  11. Co to za słowo "makerów"? Czy ze słowem "twórców" jest coś nie tak? A tak poza czepianiem się, to bardzo cieszy mnie ta wiadomość. Ale najbardziej ciekawi mnie, czy płytki będą dalej produkowane w Europie?
  12. Świetny artykuł, zapowiada się bardzo ciekawa seria. Taki kurs Arduino dla zaawansowanych.
  13. Ciekawe jak będzie z wersją na Linuksa. Bo w wywiadzie trochę wyminęli się z odpowiedzi na pytanie o wersje na inne platformy.
  14. Czy możesz polecić jakieś inne scalone źródła napięcia odniesienia, które mają większy wybór napięć znamionowych niż LM385?
  15. Warto dodać, że tę płytkę stworzyła firma Arduino.org, czyli ta "europejska".
×
×
  • Utwórz nowe...