Skocz do zawartości

Enkoder na osi RA - DIY


Behlur_Olderys

Rekomendowane odpowiedzi

fajny przykład na to jak masowa dostępność danego uniwersalnego komponentu ("kamerka", "komputer") powoduje że mimo olbrzymiej nadmiarowości i "marnotrawstwa" taka konstrukcja może okazać się łatwiejsza a nawet tańsza od konstrukcji "rozsądnej technologicznie" ale specjalizowanej.

 

54 minuty temu, Behlur_Olderys napisał:

Problem pojawia się w tym, że 1" łuku "trwa" na niebie 1/15s. To dosyć mało czasu na ściągnięcie obrazu z kamery i dokonanie wszystkich niezbędnych obliczeń

 

a może nie czasu za mało tylko pikseli za dużo?

najbardziej prymitywny enkoder pobiera tylko 2 piksele, ty pobierasz N, optimum może zawierać się gdzieś pomiędzy tymi dwoma wartościami :)

  • Lubię 2
Odnośnik do komentarza
Udostępnij na innych stronach

@szuu

Jestem w trakcie przygotowania bardziej dedykowanego sprzętu: będzie to mikrokontroler ESP32 z kamerką + obudowa wydrukowana od @Krzysztof z Bagien (notabene poprzednią, czarną zawdzięczam @Gość na chwilę :) ) Obraz o wymiarach 100x400 będzie pobierany mniej więcej 10 razy na sekundę, a algorytm zdąży policzyć przesunięcie zanim następna klatka zejdzie - całe szczęście są tam dwa rdzenie 280 MHz ;) Niestety mechanicznie i optycznie jest to delikatne do zgrania, ale hardware, algorytm i implementację na FreeRTOS już mam.

 

  • Lubię 2
  • Kocham 1
Odnośnik do komentarza
Udostępnij na innych stronach

Pytanie czy to w ogóle muszą być paski, czy randomowo rozłożone kropki nie byłyby wystarczające, z 100x400 px jest dość dużo danych do liczenia przesunięcia, o ile to nie jest zbyt wymagające obliczeniowo. Wtedy taki pasek (albo koło)  możnaby chyba w miarę łatwo samodzielnie sfabrykować

Odnośnik do komentarza
Udostępnij na innych stronach

@calla

Pewnie tak, ale koło do enkodera z drukarki można kupić hurtowo za 5zł więc....

 

Można też samemu naświetlić w jakimś przybytku poligraficznym, bez problemu i całkiem dokładnie, ale kosztowo wychodzi drożej i więcej zachodu - been there, done that...

 

Poza tym paski są łatwe do ogarnięcia przy redukcji danych: progowanie i różniczkowanie po kierunku prostopadłym do pasków. Dodatkowo stała odległość kątowa między paskami pozwala na zgrubną kalibrację. Losowy wzór nie ma tych zalet.

 

@MaciejW mam nawet laser kupiony, taki z grubym promieniem, z aliex, ale chyba jednak nie będzie potrzebny. Obraz jest dość ostry w obiektywie, zwłaszcza w niebieskim świetle (fizyka!) - podświetlam tarczę LED-em od spodu.

Odnośnik do komentarza
Udostępnij na innych stronach

7 godzin temu, Behlur_Olderys napisał:

Gorzej z trendem długoczasowym: nie wystarczy pojedyncza empiryczna wartość współczynnika nachylenia...

 

7 godzin temu, Behlur_Olderys napisał:

i zostawia do korekcji co najwyżej jakieś ugięcia, refrakcję czy też dryf, czyli łagodne, gładkie i powolne funkcje czasu, które łatwo kompensować.

czyli klasyczny guiding i tak będzie potrzebny?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeszcze garść fotek z dotychczasowego setupu - obudowa od @Gość na chwilę. Zamiast porządnego wałka - szpilka M5, za długa ale już nie chciało mi się piłować. Do wału przymocowane sprzęgło od @Krzysztof z Bagien - musiałem usunąć lunetkę, ale i tak z niej nie korzystam na balkonie. Enkoder z jakiejś drukarki HP. Do tego "przyspawana" przedłużka 1.25", kamera T7C oraz najgorsze użycie Arduino: jako zasilacz do modułu diody LED RGB która (na niebiesko) oświetla mi od spodu enkoder. Całkowita fuszerka - z pozoru, a jednak jakie wyniki! Tym bardziej napawa nadzieją, że "porządny" setup - znacznie mniejszy, bardziej zwarty i elegancki - będzie "robił robotę" :)

encoder1.jpg

 

encoder2.jpg

 

encoder3.jpg

 

11 minut temu, Piotr4d napisał:

czyli klasyczny guiding i tak będzie potrzebny?

 

Raczej nie - przynajmniej w moim wypadku wydaje się, że wystarczy np. co 1 klatkę sprawdzać przesunięcie kadru i skorygować. Dla mnie nieporuszone klatki 1-2 minutowe to i tak będzie powód do świętowania - mówimy o skali 0,91"/px. Tak czy inaczej zakładam brak fizycznego, dodatkowego zestawu guider + kamera, wystarczyć ma materiał z kamery głównej.

 

Notabene: bardzo liczę na to, że nieregularności wprowadza nieco sfatygowane i pokrzywione koło enkodera, oraz ogólnie mechaniczne niedoskonałości, ugięcia itp. - np. strasznie słabe mocowanie do montażu - to tylko kawałki blachy 1mm...

W nowej wersji koło enkodera to będzie nówka nieśmigana, a docelowo pewnie zamówię gdzieś porządne, sztywne kawałki aluminium do umocowania całości, poza tym "prawdziwy" wałek 10mm i odpowiednie łożyska + sprzęgło, mocowanie kamery będzie załatwione zupełnie inaczej, więc zakładam lepszą powtarzalność. Patrząc na wykres z pierwszego posta myślę, że 80% uzysk dla klatek 5-minutowych już teraz wydaje się całkiem realny. No, ale może niepotrzebnie się tak nakręcam, bo póki wszystko jest (jeszcze) na papierze to jestem optymistą, a przy testach na gwiazdach okaże się, jak bardzo to tylko moje pobożne życzenia :P 

 

Odnośnik do komentarza
Udostępnij na innych stronach

15 minut temu, Behlur_Olderys napisał:

wystarczyć ma materiał z kamery głównej.

 

 

19 minut temu, Behlur_Olderys napisał:

wydaje się, że wystarczy np. co 1 klatkę sprawdzać przesunięcie kadru i skorygować

Czyli taki niby guiding (choć nazwa jest może nie adekwatna), bo korekty i tak jakieś będą, to czy błąd długookresowy z wykresy z pierwszego postu nie traci na znaczeniu przy klatkach do 2minut. 

Odnośnik do komentarza
Udostępnij na innych stronach

1 godzinę temu, apolkowski napisał:

Rozważałeś liniowy sensor CCD zamiast kamery?

 

Rozważałem - ba! nawet miałem taki prototyp i go testowałem! :)

 

Miałem tylko linijkę 1x128 CDD o kiepskiej charakterystyce (duży szum).

 

Wyniki były bardzo niedokładne - może +/- 10" w jednym pomiarze, teraz teoretycznie mam możliwość zejść poniżej 1".

Kalibracja koszmarna, geometria układu musiała być bardzo dokładna, czuła na kąt nachylenia - a teraz wystarczy tak "na oko wszystko ustawić i gra

Algorytm bardzo skomplikowany: myślałem o nim po nocach, w pracy, rysowałem i liczyłem cały czas, a potem i tak nic się nie zgadzało i wychodziło 10 nowych niewiadomych, współczynników empirycznych itp...

 

...i koniec końców zarzuciłem temat. Ale to było dawno temu. Może teraz, bogatszy w doświadczenia, lepiej bym to zrobił, na dłuższej linijce, porządnie i elegancko... ale już mi się nie chce :P Obraz z kamerki jest milion razy bardziej wymowny i wygodny.

 

EDITED:
Na poparcie moich słów - pojedyncza ekspozycja (bez debayera) T7C, 640x960

Capture_00001.png

  • Lubię 2
Odnośnik do komentarza
Udostępnij na innych stronach

7 godzin temu, Behlur_Olderys napisał:

Notabene: bardzo liczę na to, że nieregularności wprowadza nieco sfatygowane i pokrzywione koło enkodera, oraz ogólnie mechaniczne niedoskonałości, ugięcia itp. - np. strasznie słabe mocowanie do montażu - to tylko kawałki blachy 1mm...

Po części na pewno tak, więc będzie lepiej, ale na pewno jest też drugi efekt - tolerancja wykonania tarczy enkodera plus jakieś błędy z geometrii obiektywu i obrazu. Gdyby z tarczy za kilka zł dało się zinterpolować idealnie pozycję np co do 1", to produkcja enkoderów po kilka tyś zł nie miałyby sensu :) One różnią się nie tylko ilością prążków, ale przede wszystkim precyzją wykonania. Tak więc, żeby przekroczyć kolejny poziom dokładności, będziesz musiał zmierzyć charakterystykę swojego enkodera i uwzględnić ją w obliczeniach. Czyli coś jak PEC, ale nie dla przekładni, a układu pomiarowego. Taką charakterystykę zbierzesz albo guiderem (z ograniczeniem do seeingu plus wspomniane przez Ciebie "błędy" atmosfery i ugięć), albo używając wzorcowego enkodera - metoda najlepsza, ale jak wiadomo kosztowna - miałaby sens przy produkcji takich urządzeń :) Można też pomyśleć o trzeciej metodzie - zrobić idealny napęd do enkodera, żeby zmierzyć obrót przy obrocie niezakłóconym błędami montażu. To oczywiście wymaga idealnej przekładni (czyli drogie), ale można też użyć sztuczek, jak bardzo długa dźwignia popychana na końcu, gdzie idealną przekładnię stanowi jej długość właśnie (ale tu z kolei nie da się zrobić całego obrotu - trzeba by było to zbierać kawałkami). Po zebraniu charakterystyki trzeba by też zapewnić, aby startować enkoder zawsze w ustalonej pozycji - bo charakterystyka będzie różna dla każdego zęba - ogólnie da się to ogarnąć jakimś zgrubnym czujnikiem "home".

 

Gorąco trzymam kciuki za jak najlepsze efekty :) 

Odnośnik do komentarza
Udostępnij na innych stronach

6 godzin temu, MateuszW napisał:

Tak więc, żeby przekroczyć kolejny poziom dokładności, będziesz musiał zmierzyć charakterystykę swojego enkodera i uwzględnić ją w obliczeniach. Czyli coś jak PEC, ale nie dla przekładni, a układu pomiarowego. Taką charakterystykę zbierzesz albo guiderem (z ograniczeniem do seeingu plus wspomniane przez Ciebie "błędy" atmosfery i ugięć)

 

A jakby wycelować we w miarę odległą ścianę z cegieł (czy inny powtarzalny wzór)? Wtedy przynajmniej seeing i atmosfera odpadną. (Przy idealnym prowadzeniu wzór powinien przesuwać się jednostajnie w polu widzenia, pozostaje pomierzyć odchyłki).

Edytowane przez WielkiAtraktor
  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

Ciekawe eksperymenty. Gratuluję zapału i trzymam kciuki!

 

Kilka rzeczy mnie zastanawia.

1. Używasz kamerki i nie wykorzystujesz kompletnie faktu, że obraz jest 2d. Naprawdę nie warto zainwestować trochę w wydruk/grawer sinusoidy/cosinusoidy na kole?

2. Planujesz tą kamerę z optyką skalibrować (używając np. klasycznej szachownicy)? Dystorsja Ci wprowadzi kolejne błędy.

3. Aby skalibrować ten enkoder musisz mieć inny sensor, który mierzy o rząd wielkości dokładniej.... to raczej będzie trudne.

 

Generalnie zastanawiam się czy sens ma używanie sensora, który sam w sobie będzie miał błąd okresowy, do korygowania innego błędu okresowego. 

Nie lepiej użyć prostego enkodera absolutnego na osi ślimaka i po prostu nagrać PEC'a w oparciu o guiding, i potem go precyzyjnie odtwarzać. Wystarczył by oczywiście nawet pojedynczy impuls ale z enkoderem absolutnym nie trzeba by tyle przewijać montażu na początku. Można by taki zewnętrzny PEC oprzeć o mikrokontroler i po USB połączyć z komputerem. Potem napisać driver, który będzie grał rolę guider'a - tzn. będzie odbierał pulsy, które mają iść do montażu i je modyfikował dodając PEC.

 

Ja osobiście będę się mierzył z enkoderem RA w niedalekiej przyszłości, bo kupiłem w tym celu używany enkoder sin/cos za 170 eur. 

Mam jednak zamiar zmienić całą elektronikę montażu na własny projekt oparty o FPGA, bo chcę mieć bezpośrednią kontrolę nad napędami i przy okazji dodać kilka gadżetów. Poza tym soft montażu jest generalnie kiepski i brakuje wielu rzeczy (iOptron ieq45).

Jak coś zacznę robić to na pewno stworzę wątek na forum, w celu utrzymania motywacji :D

 

 

  • Lubię 1
Odnośnik do komentarza
Udostępnij na innych stronach

11 godzin temu, MateuszW napisał:

Gdyby z tarczy za kilka zł dało się zinterpolować idealnie pozycję np co do 1", to produkcja enkoderów po kilka tyś zł nie miałyby sensu

Te tarcze są robione dla prostych enkoderów z maską i czteroma fotodiodami, i rzeczywiście, tym sposobem nie ma szans.

Ale dla moich potrzeb nie jest istotna w ogóle jakość wykonania tego koła, bowiem liczę jedynie przesunięcie - różnicę pomiędzy dwoma kolejnymi obrazami. Gotowe koło jest wygodne, ale właściwie mógłbym użyć - tak jak mówił @calla dowolnego, nawet randomowego wzoru, kosztem nieco bardziej skomplikowanych obliczeń. Ważne, żeby tarcza była sztywna, i tyle.

Jedyne co jest skrajnie istotne w tym momencie to skala odwzorowania (czynnik liniowo wpływający na jakość odczytu) oraz czysty tor optyczny - bez rys, kropek, brudów itp. Prawdopodobnie najlepiej byłoby jeszcze podzielić obraz przez flat, to dałoby się spokojnie zrobić. Skala odwzorowania będzie zależała od odległości tarcza - obiektyw - matryca i ew. ugięć, więc zależy od jakości mechanicznej układu.

 

 

 

2 godziny temu, zbuffer napisał:

1. Używasz kamerki i nie wykorzystujesz kompletnie faktu, że obraz jest 2d. Naprawdę nie warto zainwestować trochę w wydruk/grawer sinusoidy/cosinusoidy na kole?

 

Możesz rozwinąć myśl? Jak miałoby to wyglądać? Moim zdaniem wykorzystuję 2D, bo uśredniam przesunięcie po całej długości paska, co zwiększa dokładność.

 

2 godziny temu, zbuffer napisał:

2. Planujesz tą kamerę z optyką skalibrować (używając np. klasycznej szachownicy)? Dystorsja Ci wprowadzi kolejne błędy.

Nie planowałem. Zobaczę, jaką dokładność da się uzyskać bez tego, a potem, jeśli nie będę zadowolony, to będę szukał alternatyw.... albo zajmę się zwykłym guidingiem :P

 

2 godziny temu, zbuffer napisał:

3. Aby skalibrować ten enkoder musisz mieć inny sensor, który mierzy o rząd wielkości dokładniej.... to raczej będzie trudne.

Nie muszę go kalibrować bardziej dokładnie, niż tak, żeby gwiazdka którą fotografuję nie ruszała się z miejsca... prawda? :)

 

2 godziny temu, zbuffer napisał:

Generalnie zastanawiam się czy sens ma używanie sensora, który sam w sobie będzie miał błąd okresowy, do korygowania innego błędu okresowego. 

Nie lepiej użyć prostego enkodera absolutnego na osi ślimaka i po prostu nagrać PEC'a w oparciu o guiding, i potem go precyzyjnie odtwarzać. Wystarczył by oczywiście nawet pojedynczy impuls ale z enkoderem absolutnym nie trzeba by tyle przewijać montażu na początku. Można by taki zewnętrzny PEC oprzeć o mikrokontroler i po USB połączyć z komputerem. Potem napisać driver, który będzie grał rolę guider'a - tzn. będzie odbierał pulsy, które mają iść do montażu i je modyfikował dodając PEC.

Już to robiłem, nie podobało mi się to - było zbyt skomplikowane, przynajmniej w moim wykonaniu. Tutaj conieco w temacie:

 

 

@count.neverest

W nowszym designie będę używał OV2640 z pikselem 2.2um

Odnośnik do komentarza
Udostępnij na innych stronach

3 godziny temu, Behlur_Olderys napisał:

Możesz rozwinąć myśl? Jak miałoby to wyglądać? Moim zdaniem wykorzystuję 2D, bo uśredniam przesunięcie po całej długości paska, co zwiększa dokładność.

Hmm... najpierw przyszło mi na myśl żeby wykorzystać sinusoidę zamiast pasków, bo wtedy masz ciągłą zmianę wartości a nie tylko impulsy. Jednak rozumiem, że koło z drukarki jest tanie i jest to zaleta rozwiązania. 

 

Jeśli chodzi o uśrednianie, o którym mówisz, to w jakimś sensie może wyeliminować błędy losowe - defekty w paskach - ale z drugiej strony nie wyeliminuje błędu systematycznego, który wynika z dystorsji obiektywu i który musisz skalibrować. Inaczej Twoje uśrednianie może być gorsze niż wybranie pikseli z jednego rzędu czy kilku sąsiednich, w miejscu w którym dystorsja jest niska.

 

Myślę jednak że użycie 2D ma inna przewagę. Zamiast robić naiwne uśrednianie jakichś gradientów, które nigdy nie będą perfekcyjnie równolegle do kolumn CCD, i walczyć z wieloma defektami w paskach które widzę na załączonej klatce z kamery, mógłbyś spróbować zastosować optical flow. Jest to metoda estymacji ruchu obrazu. Wykorzystywana jest np. w analizie modalnej z wykorzystaniem kamer. Rozdzielczość pomiaru sięga 1/100 wielkości piksela.

Nie wiem czy to ma szansę działać na wspomnianym mikrokontrolerze, może potrzebne jest FPGA, ale mógłbyś spróbować z komputerem na początek. Główna zaleta jest taka, że nie ma znaczenia jak te paski wyglądają, właściwie może to być dowolna tekstura.

 

Szybkie wyszukiwanie dało mi taki wynik na ten temat:

https://learnopencv.com/optical-flow-in-opencv/

 

3 godziny temu, Behlur_Olderys napisał:

 

Już to robiłem, nie podobało mi się to - było zbyt skomplikowane, przynajmniej w moim wykonaniu. Tutaj conieco w temacie:

 

Prześledziłem mniej więcej i jedno czego nie rozumiem to dlaczego czekasz aż błąd przekroczy krok silnika zamiast używać sterowania mikrokrokowego? 

Druga sprawa to że ja bym oparł odtwarzanie o czas a nie enkoder, bo i tak nie ma on wystarczającej rozdzielczości. Dla mnie enkoder byłby użyteczny żeby rozpocząć odtwarzanie w odpowiednim momencie i dlatego zastosowałbym absolutny.

 

Edytowane przez zbuffer
Odnośnik do komentarza
Udostępnij na innych stronach

3 godziny temu, Behlur_Olderys napisał:

Ale dla moich potrzeb nie jest istotna w ogóle jakość wykonania tego koła, bowiem liczę jedynie przesunięcie - różnicę pomiędzy dwoma kolejnymi obrazami. Gotowe koło jest wygodne, ale właściwie mógłbym użyć - tak jak mówił @calla dowolnego, nawet randomowego wzoru, kosztem nieco bardziej skomplikowanych obliczeń. Ważne, żeby tarcza była sztywna, i tyle.

Tak, możesz użyć nawet randomowego wzoru pod warunkiem, że... znasz jego dokładny kształt :) Nie możesz zakładać, że paski w kółku są np w równych odstępach, bo na pewno występują tutaj odchyłki wynikające z dokładności wykonania. Ten efekt przekłada się potem na długookresowy błąd. Tak samo dystorsja obiektywu - jeśli mierzysz przesunięcia o więcej niż kilka pikseli, to zaczyna ona wpływać na dokładność.

No ale po kolei - jak poprawienie mechaniczne tego układu da niewystarczający efekt, to będziesz miał kolejną rzecz do sprawdzenia i uwzględnienia :) 

Odnośnik do komentarza
Udostępnij na innych stronach

6 minut temu, WielkiAtraktor napisał:

W ImPPG używam korelacji fazowej , ale nie wiem, czy do takiego wymagającego dokładności zastosowania się nada (mnie wystarcza, że do animacji jest „na oko” płynnie).

 

Na pierwszy rzut oka nie wydaje się jakoś nadzwyczaj dokładne, ale może przy zastosowaniu jakichś subpixelowych tricków byłoby spoko.

Problem z FFT to że trzeba ją liczyć dla całego obrazu co trochę zajmuje. A tak naprawdę to przecież z góry wiem, że poza pikselami stanowiącymi brzeg paska nic więcej w obrazie się nie zmienia....

Odnośnik do komentarza
Udostępnij na innych stronach

Godzinę temu, Behlur_Olderys napisał:

 

Tak czy inaczej, po ręcznej kalibracji, udało mi się naświetlić 200x10s galaktyki Igła. Kamera T7C działała z prędkością 2fps, co jest dość wolno, bo przecież niebo przebiega wtedy ok 7", a skala na moim zdjęciu to 0,91".

 

 

częstotliwość korekt jest chyba nawet więcej niż wystarczająca

w końcu sam napęd prowadzi dobrze czyli kolejne mikrokroki wykonuje z dokładnością kwarcu, a my wprowadzamy jedynie drobne korekty spowodowane nieidealnym prowadzeniem wynikającym z kolei z niedokładności mechanicznych

 

dla EQ3-2 PE to jakieś 60" łuku przy okresie trwającym ponad 10 minut czyli średnio odchyłka od idealnego prowadzenia to 0,1" /sekundę. Przy 2 korektach w ciągu sekundy daje to potrzebną przeciętną korektę na poziomie 0,05". Nawet jeśli rzeczywiste niedokładności prowadzenia są 5 razy większe to i tak niezbędna przeciętna korekta to ledwo 0,25" czyli wyraźnie poniżej skali zdjęcia. Moim zdaniem ze sporym zapasem. W przypadku guide korekty są nawet rzadziej bo co 2-3 sekundy i to całkowicie wystarcza

 

pozdrawiam

  • Lubię 1
  • Dziękuję 1
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.