CategoryMicromouse

Sprawić, żeby robot zaczął jeździć

Trzy miesiące konkursu „Daj się poznać” już praktycznie minęły i o ile jestem zadowolony z treści, które pojawiły się na blogu, to prace nad rozwojem robota są w szczerym polu. Od początku wiedziałem, że realizacja całego projektu potrwa dłużej niż konkursowe trzy miesiące, ale liczyłem, że będę już trochę dalej. Uświadomiłem to sobie w poniedziałek i wtedy też postanowiłem podjąć się wyzwania – do końca maja (czyli w 3 dni) miałem sprawić, żeby robot zaczął jeździć. Z tego powodu w ostatnich dniach solidnie popracowałem nad projektem. Tym bardziej, że przed trzema dniami wyzwania miałem jeszcze owocny weekend z OctoPrint i drukarką 3D. Na zdjęciu puszczony na telewizorze kolejny odcinek serialu „Bootowanie Raspberry Pi”.

Czytaj dalej

Funkcje debugowe i sterownik silników

Ostatnio udało się trochę pchnąć do przodu prace nad softem. Dorobiłem prototypy funkcji debugowych i interfejsu użytkownika, a także napisałem sterownik silników, który następnie przetestowałem na robocie. Okazało się, że na płytce PCB jednak znajdowały się błędy. Zmiany w kodzie zostały wrzucone na GitHub, pojawiły się tam też pierwsze wpisy do Issue Trackera.

Czytaj dalej

Budowanie szkieletu aplikacji

Zgodnie z założeniami, które nakreśliłem we wpisie o architekturze systemu, zabrałem się do projektowania prototypów funkcji poszczególnych bloków. Dzięki temu mogę zbudować szkielet aplikacji przechodzący przez wszystkie warstwy i stopniowo wypełniać go kodem. Główny nacisk położyłem na driverach powiązanych z warstwą sprzętową. Zależy mi na szybkim zaimplementowaniu driverów, żeby można było przetestować poprawność pracy poszczególnych podzespołów na docelowej płytce. Poza tym hardware jest najbardziej zależny od rzeczy narzuconych odgórnie i dobrze jest sprawdzić jak najszybciej, czy planowana koncepcja jest na pewno realizowalna. Zaktualizowany kod znajduje się na GitHubie projektu na gałęzi dev.

Czytaj dalej

Lutowanie płytki

Płytki PCB mam już od jakiegoś czasu, elementy też, ale dopiero ostatnio znalazłem trochę czasu, żeby to wszystko polutować. Tak więc lutownica w dłoń i do dzieła!

Czytaj dalej

Architektura systemu

Koncepcję robota opisałem już jakiś czas temu i od razu zabrałem się za realizacje hardware. Soft na razie został zepchnięty na dalszy plan, ale powoli to się zmienia. W ramach przygotowań do implementacji postanowiłem więc określić architekturę systemu. Jako, że to projekt po godzinach, nie ma żadnych narzuconych procedur dotyczących dokumentacji. Nie oznacza to jednak, że ma jej w ogóle nie być. Założenie jest takie, żeby pisać tylko tyle dokumentacji ile jest w danej chwili potrzebne i żeby rosła razem z postępem prac. W tej kwestii projekt potraktuję jako poligon doświadczalny.

Czytaj dalej

Przyszły płytki do robota

Dawno nie było nic o postępach prac nad robotem. Pora to zmienić. Tym bardziej, że ostatnio odebrałem gotowe płytki PCB.

Zamówiłem trzy płytki z czarną soldermaską. Za czarny kolor trzeba było dopłacić, ale moim zdaniem było warto, bo dzięki temu robot będzie się lepiej prezentować. Gotowe płytki wyglądają tak:

Czytaj dalej

Projekt płytki drukowanej

Po zrobieniu schematu ideowego przyszła pora na projekt płytki PCB. Udało mi się uwinąć z tym zadaniem w weekend. W tym poście opiszę, czym się kierowałem przy projekcie PCB.

Wymiary robota

Pierwszym krokiem do stworzenia PCB było określenie wymiarów. Byłem tutaj ograniczony przez program Eagle, który wykorzystałem do zrobienia projektu. Maksymalny rozmiar płytki możliwy w darmowej wersji programu to 80x100mm. Minimalna szerokość musiała być taka, aby zmieściły się dwa mocowania silników – długość jednego to 23mm, a szerokość to 40mm. Szerokość z zamontowanymi kołami to 50mm. Ostatecznie zdecydowałem, że pomiędzy silnikami umieszczę jeszcze baterię i szerokość wyniesie 60mm. Przed mocowaniami silników po zostawieniu miejsca na koła zdecydowałem się na zwiększenie szerokości do 80mm i wyprofilowanie kształtu półkola. Wzorowałem się tutaj na istniejących robotach. Takie rozwiązanie jest standardem, a przykłady można obejrzeć tu(należy wybrać Projects->Micromouse), tu i tu. Jak bym chciał być pro, to mogłem jeszcze tam wyciąć ze środka część PCB dla odchudzenia konstrukcji. Jednak nie byłem pewny, czy się ze wszystkim zmieszczę, a dopóki nie będę chciał rywalizować z najlepszymi Micromouse na zawodach w Japonii raczej nie będę musiał dbać o każdy gram. Ostateczny kształt płytki można obejrzeć na rysunku. Obraz jest mocno zaciemniony przez żółte linie reprezentujące niedokończone połączenia, których oczywiście zapomniałem wyłączyć do screena. Jednak obrys robota i rozmieszczenie najważniejszych elementów są widoczne.

Czytaj dalej

Schemat ideowy robota

Prace nad robotem ruszyły. Dodałem pierwsze commity na GitHuba, wybrałem licencję dla projektu (tym aspektem zainteresowałem się dzięki Slackowi konkursowemu, normalnie bym olał ten temat), dodałem krótkie readme, a przede wszystkim zrobiłem schemat ideowy robota. W tym wpisie opiszę wykonany schemat.

Do wykonaniu schematu użyłem programu Cadsoft Eagle 7.2, czyli starszej wersji programu wydanej jeszcze zanim Eagle został kupiony przez Autodesk. Początkowo chciałem wypróbować nową wersję, ale stwierdziłem, że płytki projektuję raz na kiedyś, w tej wersji mam wszystko czego potrzebuję łącznie z customowymi bibliotekami elementów i poznawanie nowej wersji będzie startą czasu. Zamiast tego wolę skupić się na narzędziach programistycznych. Cały schemat prezentuje się następująco:

W kolejnych rozdziałach omówię poszczególne moduły.

Czytaj dalej

Micromouse – koncepcja

W poprzednim wpisie tylko ogólnie napisałem o projekcie. Teraz przyszła pora na więcej szczegółów technicznych. Opiszę więc na czym polegają zawody Micromouse, sformułuję wymagania i przedstawię koncepcję robota.

Opis konkurencji Micromouse

Micromouse to jedna z konkurencji odbywających się podczas zawodów robotów. Jej celem jest jak najszybsze przejechanie robota z rogu labiryntu do mety znajdującej się najczęściej w środku labiryntu. Każdy ze startujących robotów ma określony czas, jaki może spędzić w labiryncie. Robot zaczyna od przejazdu eksploracyjnego podczas którego poznaje ułożenie ścian. Następnie wraca na start i rozpoczyna speed run, czyli jak najszybszy przejazd od startu do mety. Jeśli czas na to pozwala, robot może wykonać więcej niż jeden speed run. Podczas przejazdu możliwa jest interwencja zawodnika np. jeżeli robot się zablokuje. W takim wypadku dodawana jest kara czasowa do wyniku przejazdu. Końcowy wynik to najczęściej czas najszybszego przejazdu + kary. Na niektórych zawodach dodawany jest również całkowity czas spędzony w labiryncie podzielony przez jakiś przelicznik.

Czytaj dalej

Mocowania do silników z drukarki 3D

Ostatnio po ciężkiej przeprawie dotarły do mnie dwie przesyłki. Pierwsza z nich zawierała obejmy do silników i felgi zrobione na drukarce 3D, a druga śrubki do montażu tych części. Obie przesyłki zostały nadane na początku grudnia, a dotarły do mnie na początku lutego. Poczta Polska jak zwykle się spisała. No ale skoro części w końcu przyszły, mogłem zająć się składaniem mocowań silników i kół do nowego Micromouse.

Czytaj dalej

© 2018 ucgosu.pl

Theme by Anders NorénUp ↑