- Tak, ale tylko gdy się go zbudowało.
Po obronie. Remiq -> mgr inz remiq.
Ostatnie testy - OK
Powrót do najstabilniejszego firmware - FAIL (podczas programowania silnik lewego koła ruszył. Czyli zwarcie, albo spalenie sterownika. Trzeba wymienić)
pFud do sterowania sterownikami silników używa sygnału z zakresu 0-3.3V. Jako że komputery nie potrafią podawać na wyjście napięcia o dowolnej wartości, w projekcie jest wykorzystany PWM (Pulse Width Modulation), czyli odpowiednie włączanie i wyłączanie prądu 3.3V, by (uśredniając) uzyskać dowolną wartość z zakresu 0-3.3V.
Dla lepszego zrozumienia mikrokontrolerów, "zbudujemy" ściemniacz żarówek wolframowych.
1. Stajemy przy włączniku światła w pokoju.W taki sposób działa sterowanie silnikami w pFudzie. Przypatrzmy się punktowi 4. pFud zaczyna zawsze od włączonego "światła". Jednak, co by się stało, gdyby podczas jazdy 20% mocy naprzód, coś przestawiło polaryzację (czyli właśnie początkową pozycję w punkcie 4)? Silniki dostałyby 80% mocy (sporo upraszczam i kłamię w tym punkcie). Przy czym, musiałoby się to przestawić na wszystkich czterech kanałach PWM. Jeśli przestawiłoby się na jednym, jedno koło jechałoby 20% do przodu, a drugie 80% do przodu. I tak właśnie wyglądał stan berserk robota, na który trafiałem od dłuższego czasu.
Po dłuższych badaniach, okazało się, że w rejestrze ustawień modułu PWM nie ma informacji o tym, że polaryzacja została przestawiona. Robot nie wie, że coś jest nie tak, więc skoro nie może sam wykryć, nie może sam tego naprawić. Stąd też, byłem zmuszony zastosować tytułowy ugly hack: reset kanałów PWM co 64 cykle głównej pętli. Przypuszczalnie, pFud będzie mógł szaleć około pół sekundy, zanim sterowanie nie wróci do normy.
Dwa dni temu, problem szumu w danych z sensorów został zredukowany, przez co pFud już się nie trzęsie, nawet przy dużym wskaźniku P. Po kolejnym teście ulicznym, sąsiadka zadała bardzo ciekawe pytanie: "Czy umiesz tym jeździć?". Czy budując jakiś pojazd, konstruktor potrafi nim jeździć? Nawet, jeśli pojazd nie jest skończony? Czy jeśli nauczę się nim jeździć, to czy po pewnych zmianach nie będę już posiadał tej umiejętności? Czy wtedy będą to zmiany na lepsze, czy na gorsze? Co o tym sądzicie?
Przed chwilą odkryłem, dlaczego czasem pFud wariuje. Otóż, samoczynnie zmienia polaryzację sygnału sterującego, na jednym z kanałów. Jak się okazuje, nie jestem jedyny.
Noga zamontowana, kierownica gotowa, soft do skręcania na szybko dopisany (okazało się, że kontroler wie ile i w którą stronę skręca, ale nic z tymi informacjami nie robi). pFud gotowy do wyjazdu.
Przeszkoda pierwsza: uskok poprzeczny kanału samochodowego. pFud jest zdezorientowany.
Przeszkoda druga: uskok podłużny w postaci drzwi garażowych. pFud marudzi, wjeżdża jednym kołem, drugie nie ma wystarczająco mocy.
Przeszkoda trzecia: równia pochyła w górę. Przydałoby się więcej mocy.
Wreszcie na asfalcie. Po doładowaniu akumulatora, pFud zachowuje się zupełnie inaczej niż z umierającym. Trudno się na nim utrzymać, przy większym przechyle brakuje mocy. Albo czeka mnie dieta, albo podkręcę współczynnik P.
Współczynnik P podkręcony. Śruby sprzęgające dwie osie urwane. Za dużo mocy.
R: Przewierćmy obie osie na wylot i włóżmy tam śrubę.
O: 4mm powinny wystarczyć.
R: Na pewno? Może 5mm?
O: Jeśli 4mm nie wytrzymają, a ten plastik wytrzyma, to oficjalnie przyznam, że jest ono naprawdę wytrzymałe.
Po 30 minutach wiercenia i pierwszym teście, śruba się połamała. W dwóch miejscach...
Tak wyglądają ślady po dzisiejszym berserku pFuda. Podczas jazdy próbnej po zwiększeniu responsywności i niewielkim (naprawdę niewielkim) zwiększeniu zmiennej całkującej w sterowniku PID, pomyślałem, że jazda z odkręconym panelem sterującym i wystającą na kilka centymetrów śrubą w okolicy moich hmm, może mnie zakwalifikować do nagrody Darwina. Podczas odkręcania śruby, robot uznał, że mi pomoże, po czym odpalił jeden silnik na maksimum w przód, a drugi maksimum w tył, dzięki czemu zaczął się obracać przeciwnie do wskazówek zegara z dużą prędkością i obijać oponami o szafę. W tym momencie podziękowałem za pomysł wbudowania wyłącznika. Inaczej czekałoby mnie około 30 - 45 minut obserwowania "robot rampage", bądź próba odkręcenia akumulatora z pędzącego pojazdu. Dobrze, że na tym nie stałem.
Zastanawia mnie, jak to się mogło stać, że bot wpadł w berserk. Jedyna możliwość, to generowanie napięcia na nie podłączonych stykach od kierownicy. Pod znakiem zapytania stawiam możliwość dłuższej jazdy, szczególnie w warunkach "chodnik obok ulicy". Może powinienem zamontować czarną skrzynkę, w której notowane by były stany urządzenia? Może powinienem wprowadzić jakieś dodatkowe zabezpieczenia?
Z perspektywy naukowej, godny odnotowania jest wpływ zwiększenia częstotliwości wykonywania głównej pętli (w tym algorytmu PID) na wyniki. Zgodnie z przewidywaniami, dla różnych częstotliwości należy zmienić wartości zmiennych całkujących i różniczkowych. Z uwagi na dużą wrażliwość szczególnie zmiennej całkującej, przed zmianą częstotliwości należy ją wyzerować. Podczas zwiększania częstotliwości, różniczkowanie staje się mniej czułe, za to różniczkowanie przeciwnie.
Zwiększenie częstotliwości wykonania głównej pętli nie polepszyło szybkości reakcji na przechylenie - bardzo zaskakujące, jeśli wziąć to na zdrowy rozsądek. Również zmienna różniczkująca, czyli pozwalająca reagować na szybkie zmiany, nie dała pożądanych rezultatów, lecz spowodowała przy dużej wartości do niestabilności układu. Dopiero zmienna całkująca poprawiła ten parametr. Jest to kontr intuicyjne i godne dłuższego zastanowienia. Nawarstwianie się niewielkiego błędu w buforze całkowania pozwala na wypoziomowanie podstawy. To by sugerowało, że zmienna proporcjonalna jest wciąż zbyt mała i nie reaguje na niewielkie wychylenia (silniki dostają za mało "mocy", by je niwelować).
Stagnacja w pracach przy pFudzie. Robot wzbogacił się o podwójne gniazdo USB.
Znalezione dwa dni temu spięcie okazało się śmiertelne dla jednego ze sterowników silników. Mimo operacji wymiany jedynego poza sercem elementu, który mógł owo spięcie robić, układ nie odżył. Tym samym, pFud stał się kaleką na okres około tygodnia. Jeśli ktoś zna dawcę serca o symbolu BTS7960B, rodzina byłaby wdzięczna...
Bardziej to przypomina tresurę, niż budowanie urządzenia. Skoro robot nie potrafi się zachowywać przewidywalnie (czyja to wina? :P ), musi zostać zamknięty w kojcu. Okazuje się, że ślady po wczorajszym mam nie tylko ja, ale i pFud. Ślady po kwasie, that is.
Wróciłem do podstaw oprogramowania, a mimo to, koła wciąż kręcą się w losowych kierunkach. Doszło nawet do tego, że po włączeniu zasilania, prawe koło kręci się, choć program powinien startować od nop'ów, czyli bezczynności. Laik spytałby się, dlaczego? Otóż, w tym tkwi sekret programowania mikrokontrolerów.
Koła zamocowane na osiach, silniki przykręcone. Wrażenia? Ciężar remiqa nie złamał całej konstrukcji, czego obawiano się na widok plastiku, z którego wykonano osie. Płyta nośna znajduje się dość wysoko, około 20cm nad ziemią, co może będzie nastręczać problemów z wsiadaniem. Maksymalne wychylenie to około 30 stopni. Trzeba będzie zamontować gumową matę, by nie zsunąć się po gładkim aluminium podczas jazdy.
Dziś trzeba zamontować całą elektronikę.
.Zdobycie części przez niedoświadczonego i bez znajomości potencjalnego inżyniera jest trudne. Brakuje sklepów, które celowałyby w klienta indywidualnego wykonującego prototypy. W takich warunkach potencjalny inżynier budujący urządzenie przechodzi metamorfozę. Na wszystko patrzy pod kątem "czy to mi się przyda do zrobienia jakiegoś elementu?".
Taka refleksja mnie ogarnęła, gdy zorientowałem się, że patrzę na koła swojego grilla w sposób bardzo nietypowy. "Those wheels are awesome!"
Mega wielki sklep z USA (McMaster-Carr, ponad 465k produktów sprzedawanych przez siec i salony w całym kraju) przysłał mi maila:
Due to the ever-increasing complexity of U.S. Export regulations, McMaster-Carr has decided to only accept orders from a few, long-established customers of ours overseas. We cannot accept your order, and regret any inconvenience this causes you.
Your order has been cancelled.
Należy sobie zadać pytanie, gdzie ja teraz kupię, dla przykładu "One-Piece Clamp-on Shaft Coupling Steel, Without Keyway, 1/2" X 5/8" Bore, 1-5/16" OD". Odpowiedź brzmi: Na pewno nie w Polsce. Tutaj można tylko po znajomości dorwać tokarza, albo przejść się po złomie i wymontować pozostałości z darów technologicznie normalnych krajów. Może i Pan Premier ma rację. Kupi się dzieciom komputery, to Polska będzie potęgą informatyczną. Bo na przemysł nie ma co liczyć.
Na marginesie, mysz bezprzewodowa zeżarła dwa paluszki w 3,5 miesiąca. Nie tak źle.
Nie ma to jak Daler Mehndi i herbata wiśniowa o poranku. Aż chce się pisać kod. Co z tego, że trzy godziny przez planowaną pobudką.
Z wieści uczelnianych, wykładowca powiedział, że "myślę... czasem". I rzeczywiście, myślę nad realizacją pracy dyplomowej... czasem. Wszystkie części jednego modułu już mam, jednak wciąż nie zrobiłem "analizy literaturowej" tego, co w tym polu zostało już zrobione. Dzisiaj może się przejdę do promotora, zaskoczę, zapytam o szczegóły - może będzie miał jakieś ciekawe źródła, sugestie. Bo nie ukrywam, im częściej myślę o moim temacie, tym częściej łapie się na tym, że mimo trudności, jest to bardziej temat pracy inżynierskiej niż magisterskiej. Chociaż, może dzięki temu mój inż. będzie bardziej... Hmmm
Po dłuższej przerwie wracam do projektu Fud. Choć może powinienem zmienić nazwę? Nah, nie ma potrzeby.
Poprzednie eksperymenty ze zbudowaniem własnego H-bridge wylądowały na śmietniku (czyt. w szafie). Jak dzisiaj zobaczyłem, firma Robot Power czyli twórcy OSMC wydali nowy produkt - kolejny sterownik silników elektrycznych. W OSMC przeszkadzały mi zbyt wielkie możliwości (i cena :> ), w Simple-H, cóż, obie cechy są mniejsze. 165$ wolałbym wydać w inny sposób (karta graficzna i ram?), ale jeśli mam wybierać między tym, a projektowaniem urządzenia, które zakłóci całą sieć na WIPS, to sądzę, że posłużę się radą pewnego niedocenianego wykładowcy. Brzmiała ona: "Jeśli możesz wydać pieniądze na to, by ktoś dobrze zrobił to, na czym Ty się nie znasz, lepszego sposobu na ich spożytkowania nie znajdziesz." Oczywiście jest to pseudocytat, wymyślony na bazie przesłania, a nie dokładnych słów wypowiedzianych pewnego dnia.
!Ona (0/0)
Przyjaciele (4/5)
Kategorie
Jogger (7/7)
WIPS (3/3)
Bookmarks
Login
Zalogowano jako:
Archiwum