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.

Czujnik orientacji robota - jaki polecacie?

jacekhladysz 30 Maj 2011 15:19 2996 18
  • #1 30 Maj 2011 15:19
    jacekhladysz
    Poziom 12  

    Witam.
    Jestem w trakcie tworzenia pracy mgr i staram się wykonać robota półautonomicznego - poszukiwawczego, któremu zadawana ma być powierzchnia do przeszukania a on sam będzie ja przeczesywał.
    Staram się dobrać czujnik orientacji ( coś w rodzaju kompasu), który byłby przydatny podczas skrętów o 90 st. i podczas kompensacji toru jazdy na wprost.
    Posiadam czujnik MMC2120, niestety duże kłopoty sprawia komunikacja po I2C.
    Czy istnieją jakieś inne czujniki/rozwiązania, które mógłbym wykorzystać?
    Z góry dziękuję za pomoc.

  • #3 15 Lip 2011 10:54
    sq1gqp
    Poziom 23  

    Cześć, czy udało się Tobie przetestować jakieś rozwiązanie?
    Ja próbuję zbudować proste urządzenie które będzie dążyło do utrzymania poziomu (w dwóch osiach) i szukam w miarę kompaktowego, podającego konkretne dane "poziomomierza" :)

  • #4 15 Lip 2011 20:53
    McRancor
    VIP Zasłużony dla elektroda

    Poczytaj o robotach balansujących - stosuje się tam parę żyroskop + akcelerometr na każdą oś. Ewentualnie - systemy stabilizacji do quadrocopterów, są ciekawe opracowania w oparciu o elementy z kontrolera Nintendo Wii.

    Prościej się raczej nie da, bo jakby się dało to by nikt się w to nie babrał :)

  • #5 15 Lip 2011 22:03
    sq1gqp
    Poziom 23  

    Super, sprawdzę. Dzięki za info.

  • #6 19 Lip 2011 11:33
    pitlab
    Poziom 12  

    Odnośnie czujników to tak jak pisali przedmówcy żyroskop jest najrozsądniejszy do zapewnienia krótkookresowej stabilności ruchu we wszystkich osiach. Niestety żyroskop ma dryft, który w dłuższym czasie będzie zakrzywiał trajektorię ruchu. Dryft kasuje się filtrami łączącymi dane z dwu różnych czujników (filtry komplementarne, filtr Kalmana itp).
    W osiach XY dryft kasuje się akcelerometrem, który szumi ale po uśrednieniu daje dokładne położenie wektora grawitacji. W osi Z dryft kasuje się właśnie magnetometrem, który daje stabilny wektor magnetyczny (o ile da mu się szansę nie zakłócając go żelastwem i polami magnetycznymi od obwodów prądowych).
    Tak wiec w dłuższym horyzoncie czasowym nie unikniesz magnetometru.

    jacekhladysz napisał:
    Posiadam czujnik MMC2120, niestety duże kłopoty sprawia komunikacja po I2C.

    Jakby co mam u siebie w komputerze pokładowym działające czujniki MMC3120 a wczoraj na tym samym kodzie uruchomiłem MMC3140.
    Kod bazuje na transmisji I2C działajacej na przerwaniach. W kodzie odpalam sparametrywowaną transmisję a transmisja wykonuje się sama w tle.
    Pierwsza czynność to obudzenie układu i wystartowanie transmisji. Po tym trzeba poczekać 5ms na konwersję i można rozpocząć odczyt danych:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Druga operacja to odczyt 7 bajtów danych do zmiennych tablicowych chDatax (x=0, 1, 2)
    Kod: c
    Zaloguj się, aby zobaczyć kod


    I finalnie obliczenie wartości wektora (podaję tylko dla jednej magistrali, pozostałe są analogiczne).
    Kod: c
    Zaloguj się, aby zobaczyć kod


    To wszystko. Prawda że proste?
    Schody zaczynają się dopiero od tego momentu, bo żeby policzyć kurs arkusem tengensem trzeba aby początek wektora magnetycznego leżał w zerze. Do tego służą zmienne uwzgledniające korekcję magnetyczną fCorrMagnMMCx i offset wskazań fOfstMagnMMCx.
    Korekcję fCorrMagnMMCx wyznaczam robiąc pomiary dla struktury namagnesowanej w jedną i drugą stronę poleceniami SET i RESET.
    Offset fOfstMagnMMCx wyznaczam poprzez policzenie średniej z ekstremów pomiaru dla każdej osi. Nie jest tak łatwo znaleźć ekstrema wektora magnetycznego, ale daje się. Moja metoda polega na sygnalizowaniu dźwiękiem znalezienia wartości większej niż maksymalna lub mniejszej niż minimalna. W ten sposób słyszę ekstrema i lepiej mogę je wyszukiwać.
    Teraz pracuję nad jeszcze lepszą metodą znajdowania offsetu metodą średniokwadratowego dopasowania danych do sfery. Już mi to prawie działa w arkuszu, ale jest jeszcze jakiś błąd w obliczeniach i przy dużych odległości od środka jest jakiś błąd obliczania środka sfery.
    Trochę o moich bojach z magnetometrem można poczytać na forum komputera pokładowego AutoPitLot. Teraz magnetometr trochę poszedł w odstawkę, ale jeszcze do niego wrócę.

  • #7 19 Lip 2011 21:12
    aby1
    Poziom 11  

    jeśli chodzi o tani to może coś na styl tego w starych myszkach z kulką?

  • #8 20 Lip 2011 10:17
    sq1gqp
    Poziom 23  

    To chyba już za proste. Muszę wybrać coś pomiędzy - kompromis pomiędzy prostotą i skutecznością. Chyba skończy się na żyro+akcelerometr. Z tego, co się orientuje to nie ma na rynku zintegrowanych z wbudowanym mechanizmem (filtrem) łączącym dane, trzeba zrobić lub zlecić wykonanie modułu.

    Generalnie potrzebuję do swojego projektu już wynikowych danych n/t kątów w w miarę dobrze (nie koniecznie idealnie) wyfiltrowanymi zakłóceniami od ruchu czy temteratury.

  • #9 20 Lip 2011 10:26
    pitlab
    Poziom 12  

    sq1gqp napisał:
    Z tego, co się orientuje to nie ma na rynku zintegrowanych z wbudowanym mechanizmem (filtrem) łączącym dane, trzeba zrobić lub zlecić wykonanie modułu.
    Generalnie potrzebuję do swojego projektu już wynikowych danych n/t kątów w w miarę dobrze (nie koniecznie idealnie) wyfiltrowanymi zakłóceniami od ruchu czy temteratury.

    Ależ jest tego cała masa. Słowo kluczowe dla googla: "AHRS". To znaczy Attitude and Heading Reference System. Widzę nawet całkiem niedrogie oferty w krajowych sklepach.

  • #11 20 Lip 2011 10:51
    pitlab
    Poziom 12  

    Ech... Myślałem że kogoś zarażę pasją tworzenia a tu od razu ścieżka na łatwiznę...

    sq1gqp napisał:
    O, nie wiedziałem. Czy możesz podać jakieś sklepy z tym.

    Pierwszy z brzegu krajowy sklep:
    http://www.stratomaster.pl/xtreme-ahrs-sztuczny-horyzont

    albo
    http://www.vectornav.com/index.php?option=com_content&view=article&id=9&Itemid=15
    http://www.xsens.com/en/general/mti-oem
    http://www.watson-gyro.com/products/attitude_reference_AHRS-S305_spec.html
    http://www.microstrain.com/3dm-gx1.aspx
    itd... można długo wymieniać.
    Jakiś czas temu widziałem ogłoszenie sprzedaży u nas na forum: http://rc-cam.pl/viewtopic.php?t=1954&highlight=vectornav
    Tylko uprzedzam że to mogą być kosztowne zabawki.

  • #13 20 Lip 2011 11:03
    pitlab
    Poziom 12  

    sq1gqp napisał:
    Skąd bierze się taka różnica w cenie pomiędzy tym na forum (2000zł) a tym
    http://nettigo.pl/product/Adapter-9-stopni-sw...-3200-%2B-ADXL-345-%2B-HMC5843,9dof-razor-imu

    Razor to jest IMU a Vectornav to AHRS.
    IMU zwraca wartości czujników: żyroskopu, akcelerometrów, magnetometru. To jest coś co średniokumaty hobbysta zrobi w kilka tygodni.
    AHRS to jest IMU + filtr. To właśnie oprogramowanie filtra kosztuje, bo to nie jest banalna sprawa, aczkolwiek możliwa do zrobienia.

  • #14 20 Lip 2011 12:47
    sq1gqp
    Poziom 23  

    Czyli w tym filmiku
    http://www.youtube.com/watch?v=WuHRCnpcsDQ&feature=player_embedded

    jest dodatkowy (poza płytką) program obliczający położenia?
    Działa to b. stabilnie, jak rozumie to soft i filtry są w pececie?

    Moduł ma mikrokontroler - w sumie mógłby to już liczyć :)

    Dodano po 4 [minuty]:

    Są w nich jeszcze określenia 6 lub 9 stopni swobody - jak to jest liczone? Nie ma tylko X, Y i Z?

  • #15 20 Lip 2011 13:00
    pitlab
    Poziom 12  

    sq1gqp napisał:
    Czyli w tym filmiku [...] jest dodatkowy (poza płytką) program obliczający położenia?
    Działa to b. stabilnie, jak rozumie to soft i filtry są w pececie?

    Wygląda na to ze tak właśnie jest. Nie znam produktu, więc nie chcę się wypowiadać autorytatywnie.

    sq1gqp napisał:
    Moduł ma mikrokontroler - w sumie mógłby to już liczyć :)

    Pewnie mógłby, ale pewnie łatwiej jest napisać czy zaleźć gotowy soft na PC niż na konkretny mikrokontroler.
    Jeżeli chcesz na mikrokontroler, to jest co najmniej kilka otwartych projektów posiadających własne oprogramowanie do AHRS.
    Przyjrzyj się projektom autopilotów takich jak Paparazzi, OpenPilot, PixHawk, Mikrokopter, AeroQuad, ArduMega Pilot, Gentlenav, GluonPilot. Wszystkie one mają udostępnione firmware i można podejrzeć jak to jest zrobione.

  • #16 20 Lip 2011 13:07
    sq1gqp
    Poziom 23  

    Tak czytam http://www.sparkfun.com/products/9623

    i jest udostępniony AHRS Code, jest napisany w C:

    http://code.google.com/p/sf9domahrs/source/list

    Ale nie jestem pewien czy to pliki do wgrania do kontrolera czy kompilacji na kompie (dziwne rozszerzenia).

    Dodano po 1 [minuty]:

    Zobacz:

    Outputs of all sensors processed by on-board ATmega328 and sent out via a serial stream

    Czyli niby sygnał na serialu jest przeprocesowany (jest też magnetometr) :)

  • #17 20 Lip 2011 13:15
    pitlab
    Poziom 12  

    sq1gqp napisał:
    i jest udostępniony AHRS Code, jest napisany w C [...]
    Ale nie jestem pewien czy to pliki do wgrania do kontrolera czy kompilacji na kompie (dziwne rozszerzenia).

    Rozszerzenie PDE mają projekty arduino. To jest takie środowisko na AVRy bardzo podobne do C. Na tym są oparte ArduPilot i ArduMegaPilot z diydrones.com

  • #18 20 Lip 2011 13:32
    sq1gqp
    Poziom 23  

    O, tu chyba widać ładnie
    http://www.youtube.com/watch?v=SIYj0tMy-Is

    Dodano po 2 [minuty]:

    Jak uważasz, czy to wygląda na urządzenie którego szukam? Patrząc na dane przesłane bezpośrednio z niego (chyba na tym AHRS firmware) to otrzymuję już przetrawione informacje.

    Dodano po 12 [minuty]:

    Ten kawałek kodu od niego
    Read_adc_raw(); // This read gyro data
    Read_Accel(); // Read I2C accelerometer

    if (counter > 5) // Read compass data at 10Hz... (5 loop runs)
    {
    counter=0;
    Read_Compass(); // Read I2C magnetometer
    Compass_Heading(); // Calculate magnetic heading
    }

    // Calculations...
    Matrix_update();
    Normalize();
    Drift_correction();
    Euler_angles();
    // ***

    printdata();

    sugeruje, że obliczenia są załatwione wewnątrz (chyba)

  • #19 20 Lip 2011 14:58
    pitlab
    Poziom 12  

    Tak. Wygląda na to że to jest to czego potrzebujesz jako punktu odniesienia do sterowania swoim pojazdem.

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