Skocz do zawartości

[linefollower] mojStary from zero to hero


mojStary

Pomocna odpowiedź

Cześć wszystkim,
Chciałem zbudować robota typu linefollower i jednocześnie dokumentując cały proces od zera. Przygotujcie się więc że, ten wątek będzie bardzo długoczasowy.

W trakcie budowy będę się posiłkował się chatem GPT do generowania kodu, przykładami z githuba i istniejącymi konstrukcjami.

Chciałem przy okazji budować stacje do testowania poszczególnych komponentów np. stacja do testowania linii, stacja do silników, tester opon itd. 
W zamyśle pierwszy prototyp LF będzie duży i modułowy.  

Stan na dzień 1:

20231016_094850.thumb.jpg.9af99d826e21df1eb4d310eecb89eb54.jpg

- nie mam biurka, ale już jest w drodze

- zrobiłem re-search po istniejących konstrukcjach i algorytmach - zajęło mi to parę dni - mam 9 stron notatek i zdjęć innych konstrukcji

- kupiłem Arduino (wiem, że do końcowej konstrukcji będzie trzeba użyć czegoś mocniejszego, ale do pierwszych testów może wystarczy)

- kupiłem czujniki od myszki

 

Założenia co będzie miał końcowy LF:

- jakiś docisk (turbina lub śmigła - Japońskie LF uwielbiają śmigła)

- algorytm zapamiętujący trasę i wykorzystujący tą wiedzę w kolejnych przejazdach

 

TODO w najbliższym czasie:

- stworzyć miejsce pracy

- podpiąć czujnik od myszki do Arduino i zobaczyć czy za pomocą dwóch takich czujników można wyznaczyć położenie (w przyszłości pewnie połączę to z enkoderem i  IMU)

  • Lubię! 1
Link do komentarza
Share on other sites

Dnia 16.10.2023 o 11:33, mojStary napisał:

- algorytm zapamiętujący trasę i wykorzystujący tą wiedzę w kolejnych przejazdach

Sam chciałbym umieścić w mojej konstrukcji algorytm zapamiętywania trasy ale po zagłębieniu się w temat stwierdziłem że najpierw postaram się osiągnąć maksymalnie dobry czas bez tego i dopiero wtedy to rozważę. W zrozumieniu na czym to polega i co jest do tego potrzebne pomogło mi parę prac inżynierskich i magisterskich z politechniki wrocławskiej więc na twoim miejscu tam właśnie bym się udał jeżeli zamierzasz to zaimplementować. Swoją drogą generalnie przy budowie lfa polecam zasięgnąć materiałów stworzonych przez politechnikę wrocławską a precyzując, youtubowy kanał konar. Powodzenia!

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Moje stanowisko pracy dalej nie przyjechało, a za niedługo minie miesiąc od zamówienia... Na razie wygląda to tak, że mam Arduino Leonardo w tekturowej pokrywce od jakiegoś pudełka: 

20231112_090752.thumb.jpg.70abb7ef23af437be3b425e16f2e2d36.jpg
xD
 

Nie mniej jednak wykorzystałem ostatni czas na dokształcanie się:

- wiem, że to co dla mnie jest sufitem, dla innych jest podłogą, ale poczytałem o dzielnikach napięcia, pullup/pulldown rezystorach itd.

- przerobiłem kurs Arduino, pobawiłem się zapalaniem LED, przyciski, potencjometry itd. 

- poczytałem o projektowaniu płytek PCB i jak to się robi w kiCadzie

- chat GPT + google dało radę i napisałem prosty soft w Pythonie, który łączy się z Arduino i wyświetla mi koordynaty XY od pojedynczego czujnika myszki. W warunkach laboratoryjnych przy wolnych prędkościach, na krótkich odcinkach, przy stałej odległości od podłoża, ruchach tylko prostopadłych, błąd jest akceptowalny. 
Wykres z rzeczywistego sensora, gdzie 0,0 to jednocześnie punkt startowy i końcowy - widać drobny błąd, bo punkty startu i stopu się nie pokrywają, ale ruszałem z ręki, więc nie po liniach prostych i nie bez minimalnego obrotu: 

image.thumb.png.ec09580abc10f934274962c69d894e79.png
- zrobiłem sobie symulator danych z 2 czujników myszki i próbę wyznaczenia położenia robota na ich podstawie. 
Na wykresie obliczone teoretyczne położenie robota dla symulowanych danych z czujników:

Figure_2.thumb.png.424a1abdd12ec44e1d2847264086cfff.png
Teraz trzeba będzie zamienić teorię w praktykę. 

 

 

 

  • Lubię! 2
Link do komentarza
Share on other sites

(edytowany)

Mała aktualizacja. 
Robota może nie idzie w ekspresowym tempie, ale idzie w dobrym kierunku.
Od ostatniego wpisu:
- biurko przyjechało, mam fotel i lampkę, więc można w komfortowych warunkach coś tworzyć, 
- zrobiłem kurs freeCAD, żeby móc wydrukować swoje części na drukarce 3D,
- pobawiłem się drukarką i ponieważ jest super tania, to nie drukuje zbyt dokładnie. Jednakże w końcu, w n-tej iteracji udało mi się wydrukować podstawkę pod sensor myszki. Teraz sensory mogą być ze sobą w stałej odległości,
- napisałem program na Arduino, który komunikuje się z oboma sensorami po SPI, ale nie zadziałało od kopa... Sprawdzałem pełno rzeczy i już przez chwilę myślałem, że przekraczam z długością przewodów bo od Arduino przez płytkę stykową (w celu rozgałęzienia sygnału SCK, MISO i MOSI) do sensora miałem jakieś 50 cm, a większość źródeł mówi, że max to 20-40 cm, ale okazało się, że to coś innego. Na płytce, na której są czujniki od myszki, są też 74LVC1T45GW125 czyli Bus Transceivers, coś jak szybki konwerter poziomów logicznych (?) i niestety z uwagi na swoje podłączenie nie jest trzy stanowy i nigdy nie jest w wysokiej impedancji, przez co sygnał MISO jest zakłócany przez drugi czujnik (być może piszę totalne głupoty, ale tak to rozumiem). Ponieważ Arduino Leonardo nie ma drugiego interfejsu SPI, zamówiłem sobie "SN74HC125N BUFOR NIEODWRACAJĄCY", który chyba pozwoli mi rozwiązać problem z brakiem 3 stanowości. 
Docelowo pewnie zaprojektuję płytki PCB pod czujnik bez tego defektu, ale to raczej po fazie testów. 

Plan do zrobienia:
- naprawić komunikację 2 czujników z Arduino i PC,
- przerobić kurs STM32 HAL 

20231202_094554.thumb.jpg.178bc14e9cf4be7784b83ad48756fdaa.jpg

Edytowano przez mojStary
Link do komentarza
Share on other sites

image.thumb.png.86187dec3bc3d5a54a404c28010e04b3.png

Udało się podpiąć 2 czujniki od myszki i przesłać wyniki do komputera w celu wizualizacji. 

20231209_110100.thumb.png.e6c967409cdc8b7a6f90bb2de52b9f18.png
20231209_114549.thumb.jpg.bdd17a1e427459a11a0c0342de0ebb79.jpg

Test przeprowadzony ręcznie, bo jeszcze nie ma kółek, silnika itd. Dokładność pomiarów jest zadowalająca. W przyszłości się to jeszcze poprawi, jak dojdzie jeszcze pomiar z enkoderów i czujnika 9DoF IMU.
Aktualny czas pomiaru dla dwóch czujników to 3,9 ms (wykonywany sekwencyjnie). Jeżeli wyeliminowałbym błąd konstrukcyjny płytki i pozwolił sobie na szybszą transmisję danych, to można by zejść z czasem do 2,4 ms. Jeżeli udałoby się użyć symultanicznie dwóch interfejsów SPI na STM32, to będziemy mieli próbkowanie 1,2 ms, co już jest całkiem spoko. 

Plan na najbliższy czas:
- dokończyć kurs STM32 HAL,
- podpiąć czujnik linii QTR-8A.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

Powrót po rozpoczęciu nowego roku niesie ze sobą pomyślność w dziedzinie mojego projektu. Bluetooth sprawnie funkcjonuje, a karta SD oferuje nie tylko dostęp do pojedynczego adresu, lecz także umożliwia korzystanie z systemu plików FATFS, co zdecydowanie sprzyja wygodzie obsługi.
20240123_163021.thumb.jpg.7d3443707b04853b5043fab46e535ec4.jpg

W kontekście dalszych działań pozostaje jeszcze zainicjowanie następujących elementów:
- turbiny, której nazwa to EDF 27, oraz jej układ sterowania DUALSKY XC0610BA.
- 9-stopniowy układ żyroskopu, akcelerometru i magnetometru (9 DOF).

To, co udało się przetestować w tej fazie, wydaje się być wystarczająco wszechstronne. Jednak czy istnieją jeszcze elementy wartościowe do przetestowania przed przystąpieniem do projektowania płytki PCB? Nie chciałbym pominąć czegoś istotnego. 

Edytowano przez mojStary
  • Lubię! 2
Link do komentarza
Share on other sites

Cześć forumowicze!

Chciałem się podzielić z Wami moimi pierwszymi wrażeniami po uruchomieniu czujnika 9dof w moim linefollowerze. Na razie wszystko wydaje się być w porządku, a wskazania są obiecujące, choć jeszcze nie jestem pewien, jak bardzo będą pomocne przy osiąganiu maksymalnej prędkości.

Jestem pod wrażeniem możliwości EDF 27, który potrafi zasysać nawet 500g przy pełnych obrotach, o ile jest odpowiednio uszczelniony.
Moja stacja do testowania: obciążeni na wadze z przyklejonym do tego kawałkiem HDF (zakładam, że czasem na takiej powierzchni się jeździ, potem uszczelniona turbina na kawałku innego HDF, który symuluje PCB, z którego boków zwisa taśma klejące przyklejona do góry nogami robiąca za uszczelnienie LF. 
20240203_135159.thumb.jpg.2b071a41ed6656fce275e1cd55df23d0.jpg
Jednakże, zaczynam zauważać pewne potencjalne problemy:
- dziura na środku PCB,
- po zaprojektowaniu ciężko wymienić na inny np. większy, bo trzeba zrobić nową płytkę PCB,
- LF musi być niski, płaski i dobrze uszczelniony,
- siła docisku nie jest do końca znana i ciężko ją kontrolować, może zależeć od tego czy robot stoi, czy jest w ruchu, 
- mały kamyczek na drodze == potencjalnie rozwalona turbina.

Natomiast silniczki i łopatki od quadrocoptera:
- swoboda w projektowaniu PCB,
- łatwość i taniość w testowaniu różnych łopatek i różnych położeń silników
- szeroki wybór silniczków
- stała siła docisku podczas przejazdu i nie trzeba się martwić uszczelnieniem (nawet 15-20x większa niż waga silnika)
- łatwiej można sobie pociąć palce niż w turbinie

Mogę zrozumieć, ze state-of-the-art LF będzie miał turbinę, ale w większości przypadków wydaje mi się, że rozwiązanie z quadrocoptera będzie lepsze. Oczywiście mówię to jako zupełny laik, który nie ma żadnego doświadczenia, więc lepiej zróbcie na odwrót xD

Ostatnio trafiłem na ciekawy kanał Mistrza Japończyka, który w swoim linefolowerze wykorzystał (info z 2022) 2x ICM-20649 (6dof: żyroskop + akcelerometr) : https://www.youtube.com/watch?v=bf8YL840noQ. A w 2023 temu jeździł już tak:

Pod tym filmem dał kilka fajnych komentarzy, między innymi link do swojego githuba, gdzie pokazuje jak optymalizuje trasę: https://github.com/kyamashita5/robotrace-shortcut-path

Wyznaczam sobie jego przejazd jako benchmark i chciałbym to przebić. 

Plan na najbliższy czas:
- przetestować czujnik odległości (prawie o tym zapomniałem)
- zaprojektować testową płytkę PCB, która będzie zawierać tylko:
* CPU + zasilanie + kondensatory
* wyprowadzenia na moduły, które testowałem w poprzednich postach
* wyprowadzenia dodatkowe, jakby się okazało, że o czymś zapomniałem lub coś upaliłem podczas podłączania

Dziękuję za uwagę i wszelkie rady będą mile widziane!

  • Lubię! 1
Link do komentarza
Share on other sites

Dnia 3.02.2024 o 14:52, mojStary napisał:

Plan na najbliższy czas:
- przetestować czujnik odległości (prawie o tym zapomniałem)
- zaprojektować testową płytkę PCB, która będzie zawierać tylko:
* CPU + zasilanie + kondensatory
* wyprowadzenia na moduły, które testowałem w poprzednich postach
* wyprowadzenia dodatkowe, jakby się okazało, że o czymś zapomniałem lub coś upaliłem podczas podłączania

Ambitnie, powodzenia - chętnie przeczytam kolejne aktualizacje 🙂 

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.