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

Robot podążający za ruchem

ghost666 18 Sie 2015 15:29 6318 9
  • Robot podążający za ruchem
    Autor po wstępnych zabawach z Arduino zdecydował, że czas na jakiś kompletny projekt. Zdecydował się wykonać jakiś układ, który porusza się sam. Wybór padł na prosty robot, śledzący ruch w swoim otoczeniu.

    Potencjalne aplikacje takiego układu:

    • Kamery śledzące ruch
    • Roboty świadome swojego otoczenia
    • Wieżyczki śledzące ruch
    • Projekty edukacyjne
    • Roboty omijające przeszkody

    Wymagane materiały:

    • Płytka prototypowe
    • Dalmierze ultradźwiękowe - 2 sztuki
    • Serwomechanizm
    • Arduino UNO lub podobny moduł
    • Zworki kablowe do połączenia elementów
    • Karton lub inny materiał do wykonania szkieletu układu
    • Bateria 9 V i złącze do niej
    • Elementy do wykonania uchwytu serwa

    Wymagane narzędzia:

    • Pistolet z gorącym klejem
    • Nóż tapicerski
    • Komputer z środowiskiem Arduino IDE
    • Taśma izolacyjna lub podobna taśma klejąca

    Krok 1: Montaż sensorów

    Robot podążający za ruchem Robot podążający za ruchem Robot podążający za ruchem Robot podążający za ruchem Robot podążający za ruchem Robot podążający za ruchem Robot podążający za ruchem


    Pierwszym etapem montażu konstrukcji jest budowa uchwytów do sensorów ultradźwiękowych. Prototyp wykonany został z kartonu, a dalsze plany zakładają nawet druk 3D odpowiednich elementów.

    Budową zacząć należy od wycięcia prostokąta o wysokości takiej samej jak jeden sensor i o 3 mm dłuższego niż dwa sensory obok siebie. Następnie należy wyciąć dwa identyczne trójkąty równoramienne o kącie miedzy ramionami około 120°. Kąt ten wynika z faktu, że sensory mają stożek detekcji o kącie rozwarcia równym 15°. Takie nachylenie sensorów względem siebie pozwala zminimalizować martwe pole układu i zoptymalizować obserwowany obszar.

    Następnie po zmontowaniu kartonowego szkieletu wycinamy niewielkie prostokątne otwory do montażu sensorów - możliwie niewielkie, aby zagwarantować dobre dopasowanie elementów. W dolnym trójkącie wycinamy otwór na kable. Po zmontowaniu wszystkiego w całość sensory powinny trzymać się w miejscu, jeśli jednak tak nie jest można umocować je klejem.

    Po skończonym montażu tego elementu łączymy go z osią serwomechanizmu poruszającego układem.

    Krok 2: Podłączenia elektryczne

    Robot podążający za ruchem Robot podążający za ruchem Robot podążający za ruchem Robot podążający za ruchem


    Teraz trzeba połączyć wszystkie elementy. Powyższy diagram, wykonany w Fritzing, pokazuje jak należy to zrobić, a dalsze zdjęcia prezentują zmontowany układ.

    Poniższy program wykorzystuje piny od 9 do 13. Pin 9 kontroluje serwo, 10 i 11 podłączone są do echo i triggera lewego sensora, a 12 i 13 do prawego. Serwo i sensory zasilane są napięciem 5 V z płytki Arduino, poprzez płytkę stykową.

    Krok 3: Program

    Robot podążający za ruchem


    Zaprezentowany poniżej kod pozwala na zmianę progu odległości. Próg ten pozwala na konfigurację tego z jakiej odległości sensory wykrywają przedmioty.

    W programie jest kilka ifów przełączanych zmienną logiczną. Jeśli zmienna jest TRUE to program komunikuje się poprzez interfejs szeregowy, co ułatwia debugging. Ustawienie zmiennej na FALSE wyłącza komunikację, co przyspiesza działanie programu.

    Zaprezentowany poniżej kod z pliku .ino można skopiować do Arduino IDE, lub pobrać gotowy program.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Program można pobrać także stąd.

    Krok 4: Podsumowanie

    Robot podążający za ruchem


    Gdy do modułu załadujemy program i podłączymy baterię 9 V system zacznie działać i śledzić ruch wszystkiego co pojawi się w ustalonym zasięgu.

    Problemy?

    • Jeśli sensory kręcą się w złą stronę, trzeba zamienić kabelki z pinów 10 i 11 z tymi z 12 i 134.
    • Jeśli sensor nie rusza się w ogóle trzeba sprawdzić czy nic się nie odczepiło - o to bardzo łatwo z płytką stykową.
    • Jeśli sensor porusza się powoli, upewnijmy się że debuggowanie jest wyłączone.
    • Jeśli układ nadal nie działa trzeba włączyć debuggowanie i zobaczyć czy dalmierze działają. Można też przetestować czy serwomechanizm działa

    Plany na przyszłość:

    • Poprawa precyzji sensorów z wykorzystaniem termometru
    • Druk 3D uchwytu na sensor
    • Drugie serwo do ruchu w pionie
    • Zamiana serw na silniki krokowe, aby umożliwić śledzenie ruchu w zakresie 360° wokół urządzenia.

    Źródło: http://www.instructables.com/id/Motion-Following-Robot/?ALLSTEPS

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 10082 postów o ocenie 8347, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • #2
    intertom
    Poziom 11  
    Co to ma być?
    A ta możliwość większej dokładności z użyciem termometru to mnie rozwaliła...
  • #3
    Freddy
    Poziom 43  
    Autor niedokładnie przetłumaczył, w oryginale jest "temperature sensor", a to jest różnica.
  • #4
    ghost666
    Tłumacz Redaktor
    Freddy napisał:
    Autor niedokładnie przetłumaczył, w oryginale jest "temperature sensor", a to jest różnica.


    Pozwoliłem sobie uprościć. Tak, chodzi o sensor temperatury (czyli termometr). Zainteresowanych i niedowiarków odsyłam do literatury.
  • #5
    treker
    Poziom 25  
    Ciężko w takiej formie nazwać projekt kompletnym, jednak faktycznie do zabawy jest to rozwiązanie bardzo ciekawe. Gdyby ktoś chciał próbować, to polecam zastosować jednak czujniki odbiciowe IR (np.: Sharpy). Są mniejsze, co pozwala ustawienie ich bliżej siebie i dzięki temu zwiększenie precyzji urządzenie. Po drugie lżejsza głowice również lepiej się sprawdza, na takim małym serwomechaniźmie.
  • #6
    matigi12
    Poziom 12  
    Mnie ciekawi tylko jedno, jak dużo zabawy kosztowalo by gdyby chciec zaadaptowac jakos kamerke zamiast czujnikow
  • #7
    ghost666
    Tłumacz Redaktor
    matigi12 napisał:
    Mnie ciekawi tylko jedno, jak dużo zabawy kosztowalo by gdyby chciec zaadaptowac jakos kamerke zamiast czujnikow


    Zabawy w sensie sprzętowym? bardzo mało. W sensie programistycznym - bardzo dużo. Nie sądzę, aby Arduino z swoim malutkim AVRkiem podołało takiemu zadaniu. Raspberry Pi - już prędzej, ale nie wiem nadal czy system analizy obrazów działał by dostatecznie szybko.
  • #8
    matigi12
    Poziom 12  
    Kiedyś szukałem jakichkolwiek materiałów na wykorzystanie kamerek ze starych telefonów (mała rozdzielczość, możliwość wyboru 8 bitów kolorów i inne, złącze SPI) ale co trafiłem już na coś ciekawego nagle trop ginął. Z siemensa C65 lub np starych SE byłby dobry, zwłaszcza SE bo lepsze matryce miały ( mniej szumów) wiec procek mniej obliczeń by robił.
  • #9
    zuba1
    Poziom 13  
    A ja proponuję popatrzeć za czujnikami z myszek optycznych. Matryca 16x16 albo 18x18 pix. Głębia 4-8 bit mono. Jak znalazł do takiego zadania. Nawet avr to dźwignie. Dla za interesowanych początkujących podaję linka:

    https://www.elektroda.pl/rtvforum/topic642292.html
    Inna sprawa jeśli ktoś naprawdę niema co robić i jest bardziej zaawansowanym programistą.

    Link


    Ok Ale co to ma wspólnego z robotem śledzącym?? Dopasowujemy oświetlenie obiektu. Skupiamy naszego avr na analizie tablicy pobranej z kamery i filtrowaniu jej w bardziej złożone punkty koloru czerwonego lub kształtu. A potem prostymi if-ami definiujemy ruch serwa czy jak w tym przypadku całej maszyny

    Link


    Wersja troszkę starsza:

    Link
  • #10
    bogjan
    Poziom 10  
    Witam
    chciałem podziękować za temat a zwłaszcza za przetłumaczenie
    bo z angielskim krucho.
    Kod który podałeś jest niepełny
    brakuje
    #include <Servo.h>
    long Rduration, Lduration, Rinches, Linches;
    zrobiłem ten układ wszystko ok tylko ma jedną wadę
    dla mnie zasadniczą jeśli przeszkoda będzie pośrodku
    to układ wpada w wibracje tzn. serwo rusza raz w lewo raz w prawo z dosyć dużą
    prędkością .
    Po włączeniu transmisji na port rzeczywiście porusza się dużo wolniej i ten efekt
    jest słabszy.