Od jakiegoś czasu dodaję filmy nagrane na turniejach robotyki. Buduję różne konstrukcje, co parę lat zmieniam kategorie aby zbudować coś zupełnie nowego. Zaczynałem od kategorii minisumo jak większość, później przeszedłem do kategorii micro, nano i pico (12,5^3 mm).
Po 12 latach z małymi przerwami na rozwijanie startupu i innymi podbojami rynku rzuciłem rękawice kategorii linefollower oraz micromouse. Nie byłbym jednak sobą gdybym nie spróbował zbudować robota inaczej niż to robią wszyscy i tak mój pierwszy linefollower bazował na kamerze a nie na czujniku linii.
Pierwsza koncepcja robota pojawiła się 4 lata temu gdy podłączyłem kamerę do mikrokontrolera stm32f4 za pomocą magistrali równoległej.
w zrealizowanej konstrukcji mamy rozwiązanie to samo lecz niepodobne. Kamera połączona z mikrokontrolerem esp32s3 za pomocą szeregowego interfejsu streamuje wstępnie przetworzone klatki obrazu z prędkością 240 klatek/s. Sama kamera dokonuje rejestracji obrazu z prędkością 720 klatek/s po czym dokonuje substracji trzech kolejnych klatek z włączonym oraz wyłączonym oświetlaczem. Obraz jest czarnobiały w paśmie 720nm. Następnie przeportowana biblioteka open CV dokonuje odpowiednich filtracji obrazu a na koniec prosty program wyznacza pozycję linii. Robot spełnia postawione założenia ale nie obyło się bez błędów konstrukcyjnych. Jednym z nich jest z zbyt wysoka temperatura płyty głównej na której znajdują się wszystkie potrzebne komponenty takie jak procesor, przetwornice, drivery do silników, złącza oraz układ wykonany w technologii MEMS będący połączeniem czujnika przyśpieszenia i żyroskopu w trzech osiach. Ten właśnie gagatek na skutek nagrzewania się płyty głównej zaczyna kumulować błąd jak składową stałą trudną do eliminacji co w przyszłości myślę wyeliminować filtrem Klamana. #robotyka #elektronika #programowanie
https://youtube.com/shorts/ET8Pqrj0NPo?si=1MebmsycGdeOoPDd
k0201pl

@0x34 a może warto zadbać o usunięcie problemu nagrzewania niż usuwanie jego efektów w pierwszym etapie? Masz ograniczenia ilości miejsca itp.? Może warto rozważyć zmianę miejsc układów, żeby odsunąć maksymalnie ten czujnik od driverów - dać go na goldpinach wyżej?

0x34

@k0201pl cenna uwaga. Od początku wiedziałem że problem nagrzewania pochodzi z driverów silników. Płyta jest przesadnie zminiaturyzowana i zaprojektowana pod kątem rozpraszania ciepła z mostków tak więc cała nagrzewa się równomiernie, również w okolicy IMU. Liczyłem na lepsze rozproszenie ciepła w trakcie przejazdu. Najprawdopodobniej w kolejnej rewizji czujnik zostanie przeniesionymi własną płytkę co ułatwi również lokalizację samej płyty. Kalman i tak musi się pojawić. Pomimo niskopoziomowego przetwornika i wysokim częstotliwości próbkowania błąd kumuluje się i wymaga kompensacji.

k0201pl

@0x34 jasne, w sofcie zawsze coś łatwiej dodać niż zmieniać płytkę, dlatego warto sobie zapisywać i przemyśleć co można zmienić między iteracjami

HolenderskiWafel

a do czego jest potrzebny ten czujnik przyspieszenia i zyroskop? Sama ta kamera nie wystarczy?

0x34

@HolenderskiWafel bywa że koła tracą przyczepność. Samym enkoderem tego nie wychwycę. Próbowałem wyznaczać peaki i w ten sposób implementować VDC ale dzięki żyroskopowi jestem w stanie uchwycić niezamierzony dryf konstrukcji i dodatkowo kompensować prędkości kątowe. Ponadto jeśli widzę że trasa prowadzi prosto i chcę poruszać się z dużym przyspieszeniem to nie muszę aż tak polegać na kamerze.

HolenderskiWafel

@0x34 no nieźle, czyli mozesz zwalniac przed zakrętami i przyspieszać na prostych, w zwykłych robotach z czujnikiem pewnie jest stała prędkość

0x34

@HolenderskiWafel dokładnie taki był zamysł w implementacji kamery i fuzji z innymi sensorami

Zaloguj się aby komentować