Autor: Dondu
Artykuł jest częścią cyklu: Robotyka - Teoria oraz kurs budowy robotów.
Dlaczego?
Rozważmy następujące problemy:
Prędkość obrotową kół robota ustawia się poprzez odpowiednie ustawienie wypełnienia sygnału PWM sterującego silnikami:
W dużym uproszczeniu dla potrzeb niniejszego artykułu przyjmujemy, że:
Uproszczenie modelu dla potrzeb niniejszego artykułu. |
prędkość obrotowa jest zależna liniowo od wartości wypełnienia sygnału PWM.
Nastawienie zadanej prędkości obrotowej poprzez odpowiednie ustawienie wypełnienia sygnału PWM nie oznacza jednak, że robot natychmiast rozpędzi koła do tej prędkości. Jest to niemożliwe przede wszystkim z powodu ograniczonego momentu obrotowego silników oraz niezerowej masy robota, a także innych sił (nazwijmy je roboczo "spowalniaczami"):
- bezwładność wirnika silnika i kół,
- tarcie o podłoże,
- uginanie opon,
- straty na przekładniach,
- opór powietrza,
- itd.
Przyspieszenie robota jest więc zależne od przyspieszenia prędkości obrotowej kół, które przekładają moment obrotowy generowany przez silnik na siłę F działającą na robota, pomniejszoną o sumaryczną siłę "spowalniaczy" (FS).
Siłę wypadkową FW działającą na robota można więc zapisać następująco:
Skoro wiemy już, że przyspieszenie robota zależy od wypadkowej siły działającej na robota oraz od jego masy, możemy więc stwierdzić, że przyspieszenie naszego robota obliczymy następująco:
gdzie:
- a - przyspieszenie robota
- Fw - wypadkowa siła działająca na robota
- m - masa robota
Jest to nic innego jak:
II zasada dynamiki Newtona
Jeśli siły działające na ciało nie równoważą się, to ciało porusza się ruchem przyspieszonym (opóźnionym), w którym przyspieszenie (opóźnienie) jest wprost proporcjonalne do wartości siły wypadkowej, a odwrotnie proporcjonalne do masy tego ciała.
Jeśli siły działające na ciało nie równoważą się, to ciało porusza się ruchem przyspieszonym (opóźnionym), w którym przyspieszenie (opóźnienie) jest wprost proporcjonalne do wartości siły wypadkowej, a odwrotnie proporcjonalne do masy tego ciała.
Możemy więc wyciągnąć pierwszy wniosek, że:
Przy tych samych silnikach i przekładniach oraz innych "spowalniaczach", im większa masa robota tym przyspieszenie będzie mniejsze.
Skoro przyspieszenie jest zależne od wypadkowej siły działającej na robota (której wielkość jest przecież ograniczona momentem obrotowym i "spowalniaczami") oraz masy robota (która nie jest zerowa), to możemy się domyślić, że:
Od momentu zadania nowej prędkości obrotowej do momentu jej osiągnięcia, upływa pewien czas.
Pewien czas ... , ale jak długi?
Tutaj z pomocą przychodzi nam:
Ogólna definicja przyspieszenia
Przyspieszenie, to wielkość fizyczna wyrażająca zmianę prędkości w czasie.
Przyspieszenie, to wielkość fizyczna wyrażająca zmianę prędkości w czasie.
Możemy więc zapisać nasze przyspieszenie jako:
gdzie:
- Δv - zmiana prędkości,
- Δt - czas trwania zmiany prędkości.
Przyrównując oba powyższe wzory przyspieszenia stronami możemy zapisać, że:
Ponieważ nas interesuje czas, stąd po przekształceniu otrzymujemy:
co rozumiemy następująco:
Czas zmiany prędkości zależy wprost proporcjonalnie od wielkości zmiany prędkości oraz masy robota, a odwrotnie proporcjonalnie od siły działającej na robota.
Podsumowując, od momentu zadania nowej wartości PWM, do momentu osiągnięcia nastawionej prędkości obrotowej kół robota upływa określony czas, który jest zależny od wielu w/w czynników.
Podobnie jest w przypadku zmniejszenia nastawionej prędkości, ze względu na siłę bezwładności robota, która nie pozwoli na natychmiastowe zmniejszenie prędkości do prędkości zadanej i musi upłynąć jakiś czas zanim faktyczna prędkość obrotowa będzie równa prędkości zadanej.
Ruszanie z miejsca
Ruszanie z miejsca, to specyficzny moment przyspieszania.
To zjawisko łatwo jest doświadczyć na własnej skórze. Wystarczy spróbować pchać własnoręcznie samochód. Zauważysz wtedy, że najgorszym momentem jest ruszenie samochodu z miejsca. Jest to związane z faktem, iż musimy przezwyciężyć wiele sił i oporów (zwane wcześniej "spowalniaczami") oraz nadać samochodowi pewną niezerową prędkość, czyli przyspieszyć. Następnie, gdy już osiągniesz zadaną prędkość do jej utrzymania wystarczy znacznie mniejsza siła.
W przypadku robotów zjawisko to oczywiście także występuje, choć siły są znacznie mniejsze (no chyba że robotem jest samochód). Dlatego też w czasie ruszania z miejsca w szczególności następuje moment, w którym prędkość obrotu kół nie odpowiada prędkości zadanej.
Powierzchnia pochyła
Roboty nie jeżdżą tylko i wyłącznie po powierzchniach płaskich, stąd zapewne jesteś świadomy, że na powierzchniach pochyłych w zależności od tego, czy robot jedzie pod górę, czy w dół, czas niezbędny do osiągnięcia zadanej prędkości obrotowej kół będzie:
- dłuższy, gdy robot jedzie pod górę,
- krótszy, gdy jedzie w dół.
Równia pochyła Źródło: Wikipedia |
Istnieje też możliwość, że z powodu zbyt dużej pochyłości powierzchni, robot nie będzie w stanie osiągnąć zadanej prędkości obrotowej kół.
Zatrzymanie na równi pochyłej
Aby zatrzymać robota na równi pochyłej w przypadku braku hamulców niezbędne jest:
- ustawienie robota bokiem, tak by nie zjeżdżał z górki pod wpływem siły grawitacji,
- lub generowanie przez silniki siły, równoważącej siłę grawitacji spychającą robota w dół.
Ten drugi przypadek jest dla nas najlepszym przykładem dlaczego nie możemy ufać jedynie zadanej wartości prędkości obrotowej poprzez odpowiednie wypełnienie sygnału PWM.
W przypadku tym ustawienie niezerowego wypełnienia sygnału PWM, świadczyłoby o tym, że pojazd porusza się, podczas gdy faktycznie jedynie stałby w miejscu na równi pochyłej, czyli koła nie kręciły by się.
Buksowanie kół i poślizg w czasie hamowania
W powyższych rozważaniach nie bierzemy pod uwagę istotnego zjawiska jakim jest buksowanie kół. Zjawisko to występuje wtedy, gdy koła nie mają wystarczająco dużej przyczepność do podłoża i zaczynają się obracać szybciej niż następuje przemieszczenie liniowe robota wynikające z obwodu koła.
Innymi słowy silniki mają tak duży moment obrotowy, że zrywają przyczepność kół do podłoża powodując szybkie przyspieszenie prędkości obrotowej kół, przy jednocześnie niewielkiej zmianie prędkości liniowej robota.
Specyficznym przypadkiem buksowania jest moment hamowania, w którym następuje zjawisko buksowania lecz niejako w drugą stronę. Jeżeli siła tarcia koła o powierzchnię nie jest wystarczająco duża, to następuje poślizg kół, a wartość zadana prędkości obrotowej, nie odpowiada faktycznej.
Jeszcze innym przypadkiem jest uślizg kół na zakrętach, przy zbyt małej przyczepności w stosunku do promienia skrętu i prędkości robota. W tym wypadku koła także będą się kręcić z inną prędkością niż zadana.
Z naszego punktu widzenia, zjawiska te są bardzo niekorzystne nie tylko z powodu mniejszego przyspieszenia, czy hamowania robota, ale przede wszystkim z błędnych wniosków wyciąganych przez algorytm robota jedynie na podstawie zadanej prędkości obrotu kół.
Wniosek końcowy nr 1
Wyciągamy więc najważniejszy dla nas wniosek z tego punktu:
Nigdy nie możemy przyjmować, że zadana prędkość obrotowa kół jest równa faktycznej prędkości obrotowej.
2. Kierunek obrotu kół
Koła robota z reguły są na sztywno sprzężone z silnikami bezpośrednio lub poprzez przekładnie.W związku z tym w momencie, gdy ustawimy na przykład jazdę do przodu powinniśmy się spodziewać, że koła kręcą się w tym kierunku. Jednakże nie jest to takie oczywiste!
Rozważmy następujące przypadki:
Jazda pod górkę
Podczas jazdy pod górę może się okazać, że przy zadanym nastawieniu PWM, silniki nie generują wystarczającego momentu obrotowego, by robot pod górę był w stanie jechać.
Może się więc okazać, że pomimo nastawienia jazdy do przodu, robot porusza się do tyłu.
Hamowanie przez odwrócenie kierunku obrotów
Podobnie dzieje się, gdy rozpędzonego robota próbujemy hamować za pomocą odwrócenia ciągu, czyli ustawienia obrotów w przeciwnym kierunku. W takiej sytuacji jeżeli nie zerwiemy przyczepności kół do podłoża, będziemy spotykali się z sytuacją, że robot jedzie jeszcze jakiś czas (siłą bezwładności) np. do przodu, pomimo że ustawiliśmy jazdę do tyłu.
Zderzenie z ciałem obcym
Jeszcze innym przypadkiem, w którym możemy zaobserwować problem innego kierunku obrotu kół niż kierunek zadany, jest zderzenie z ciałem obcym. Innymi słowy, gdy w naszego robota jadącego do przodu uderzy czołowo na przykład inny robot o zgromadzonej znacznie większej energii, to nasz robot zacznie jechać do tyłu pomimo, że ma zadany tryb jazdy do przodu.
Wniosek końcowy nr 2
Wyciągamy więc najważniejszy dla nas wniosek z tego punktu:
Nigdy nie możemy przyjmować, że zadany kierunek obrotu kół kół jest faktycznym kierunkiem.
3. Jazda po prostej
Niemniej istotnym jest fakt, iż mechaniczny układ jezdny nie jest idealny. Oznacza to, że:
Przy tych samych nastawach prędkości obrotowej kół prawego i lewego (sygnały PWM) mogą występować różnice w faktycznej prędkości liniowej lewego i prawego boku robota.
Jaki będzie tego skutek?
Robot nie będzie poruszał się po linii prostej lecz skręcał na przykład tak:
Aby sobie z tym problemem poradzić należy znać prędkości obrotowe kół oraz współczynnik różnicy pomiędzy kołami lewej i prawej strony robota, który można wyznaczyć doświadczalnie, a co łącznie pozwoli nam na jazdę po linii zbliżonej do prostej.
Wnioski główne
Podsumowując niniejszy artykuł:
Aby móc panować nad robotem nie możemy ufać wartościom zadanym (prędkości i kierunkowi) lecz musimy określać dla każdego koła osobno faktyczne:
- prędkość obrotów,
- kierunek obrotów.
W tym celu potrzebne nam będą czujniki, którymi mogą być transoptory odbiciowe lub szczelinowe. Możemy także wykorzystać czujniki Halla, ale jest to trudniejsze w realizacji od strony mechanicznej, dlatego my zastosujemy transoptory.
Aby zmierzyć prędkość obrotów koła, wystarczy jeden czujnik i odpowiednia tarcza impulsatora:
Jednakże, by wykryć kierunek obrotu koła niezbędne są dwa czujniki, a działanie ich jest oparte o tę samą zasadę, co działanie impulsatora (enkodera). W tym przypadku musimy więc tak rozmieścić czujniki, by dawały sygnały przesunięte w fazie względem siebie:
Stąd oba czujniki jednego koła powinny być rozmieszczone względem tarczy impulsatora następująco:
W ten sposób będziemy mogli zmierzyć zarówno aktualną prędkość obrotu kół, jak i określić kierunek ich obrotu, co pozwoli nam na wyeliminowanie prawie wszystkich wyżej wymienionych problemów.
Kurcze, niby takie oczywiste, ale zanim się weźmie za budowę robota faktycznie trzeba dużo spraw przemyśleć. Chociażby to stanie na górce, czy jazda po prostej. Dzięki za poszerzanie horyzontów myślenia!
OdpowiedzUsuńLinefollower raczej nie zderzy się z innym.
OdpowiedzUsuńArtykuł nie dotyczy tylko i wyłącznie linefollowera, lecz ogólnych zasad dla robotów poruszających się na kołach. Takim są na przykład roboty grupy SUMO-pochodnych (spychające się na wzajem z ringu), dla których zderzenia są podstawą ich bytu :-)
UsuńPo co określać kierunek obrotu kół? Można założyć, że jest on jednak znany, a obniży to koszt konstrukcji. Najważniejsze jest porównanie wartości zadanej przez sterownik do rzeczywistego zachowania koła.
OdpowiedzUsuńNa Twoje pytanie właśnie odpowiada ten artykuł.
UsuńZ jednej strony pytasz po co określać kierunek obrotu koła, a z drugiej piszesz, że cyt:
"Najważniejsze jest porównanie wartości zadanej przez sterownik do rzeczywistego zachowania koła."
Co w takim układzie rozumiesz przez "rzeczywiste zachowanie koła"?
Myślę, że Olek zrozumiał swój błąd i dlatego się nie odzywa. Chodzi o to, że rzeczywiste zachowanie o którym pisał, to nic innego jak właśnie ustalenie faktycznego kierunku i prędkości obrotów koła. Inaczej się nie da i o tym Dondu pisał w artykule.
UsuńMoże po prostu Olek nie wszedł na tę stronę po moim komentarzu, tym bardziej, że napisałem go dwa dniu później. Co do meritum tego o czym piszesz, to właśnie jest to, na co chciałem naprowadzić Olka zadając mu pytanie.
UsuńTen komentarz został usunięty przez administratora bloga.
OdpowiedzUsuńWitam serdecznie kolegę. Jeśli kolega chce dyskutować kulturalnie, to proszę bardzo. Chamstwa jednak nie toleruję. Pozdrawiam, serdecznie :)
Usuń