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
@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?
@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.
@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
a do czego jest potrzebny ten czujnik przyspieszenia i zyroskop? Sama ta kamera nie wystarczy?
@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.
@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ść
@HolenderskiWafel dokładnie taki był zamysł w implementacji kamery i fuzji z innymi sensorami
Zaloguj się aby komentować