Autor: Dondu
Artykuł jest częścią cyklu: Robotyka - Teoria oraz kurs budowy robotów.
Ścierają się tutaj różne sprzeczne potrzeby i zjawiska, a każde ma zalety i niestety także wady.
Oto kilka przykładów:
Prosty czujnik linii o 3 polach - Pololu. |
Prosty czujnik linii o 8 polach - Pololu. |
Kształt listwy z czujnikami nie musi być prostokątny i to konstruktor decyduje, jaki uzna za najlepszy dla swojego robota. Dlatego też znajdziesz wiele projektów robotów, które wykorzystują listwy wygięte do przodu:
lub do tyłu:
lub dokładnie po promieniu od środka pomiędzy kołami robota:
albo nawet takie:
Można także zagęszczać czujniki w środkowej części listwy np. tak:
Każdy z przedstawionych wyżej oraz innych ma swoje zalety i wady, które zależą od wielu parametrów robota i kształtu trasy, po której podąża. Dlatego też:
Nie ma jednoznacznej odpowiedzi, który typ jest najlepszy do wszystkich linefollowerów, tak jak nie ma odpowiedzi, które przedni spojler jest najlepszy dla wszystkich samochodów formuły F1 :-)
Testy, testy, testy ... i jeszcze raz testy!
Testy, testy, testy ... i jeszcze raz testy!
Ale jest jedna:
Najważniejsza zasada:
Odstęp między czujnikami nie może być większy niż szerokość linii. Dlatego warto jest przyjąć, że odstęp ten powinien stanowić około 75% szerokości linii lub mniej.
Odstęp między czujnikami nie może być większy niż szerokość linii. Dlatego warto jest przyjąć, że odstęp ten powinien stanowić około 75% szerokości linii lub mniej.
Wyjątkiem od powyższej zasady, mogą być dodatkowe czujniki dedykowane do wykrywania np. zbliżania się do ostrego zakrętu, które są wystawione znacznie przed listwę z czujnikami. Jednakże w dobie bardzo szybkich robotów, takie czujniki nie zawsze dają spodziewane rezultaty, ale to temat na osobny artykuł.
Na etapie testowym, warto rozważyć przygotowanie listwy opartej o zasadę działania grabi do liści o zmiennym rozstawie:
Nie jest to łatwe do realizacji, ale daje kolosalne możliwości testowania różnych rozkładów czujników.
Odległość transoptorów od powierzchni
To bardzo newralgiczny punkt ze względu na zasięg transoptorów. Z reguły zasięg ten, to zaledwie 0,5-2mm. Szerzej pisałem o tym w artykułach:
- Transoptor odbiciowy: Zależności prądów diody i kolektora oraz powierzchni
- Transoptor odbiciowy: Wpływ ruchu powierzchni na odpowiedź transoptora
Dlatego niezwykle istotne jest, by listwa z czujnikami była umocowana tak, by niezależnie od tego co się dzieje z robotem, czujniki nie odrywały się od podłoża na więcej niż w/w odległość.
Konstrukcje jednoosiowe
Wśród konstrukcji linefollowerów zdecydowanie przodują konstrukcje jednoosiowe. W ich przypadku listwa czujników stanowi naturalną podporę robota:
Linefollower jednoosiowy. |
Na niniejszych rysunkach żółtym kolorem zaznaczyłem dystanse w postaci połowy sfery kuli, które odpowiadają za utrzymanie nie mniejszej niż wymagana odległości transoptorów od powierzchni.
Dystanse muszą stawiać jak najmniejszy opór niezależnie od kierunku poruszania się robota. Dlatego sfera jest najlepszym kształtem, a teflon najlepszym materiałem, choć możesz mieć problem z ich zdobyciem i/lub przymocowaniem do listwy (klejenie teflonu nie jest proste). Niezłe są także kulki ceramiczne, które w szczególności w sztucznej biżuterii są stosowane i łatwiej je przykleić.
Jeżeli listwa jest wystarczająco sztywna, to wystarczą dwa dystanse po jednym na obu końcach listwy (patrz uwaga na końcu tego punktu). Jeżeli natomiast listwa nie jest wystarczająco sztywna można zastosować dodatkowy dystans w środkowej jej części.
Robot jednoosiowy, w zależności od długości ramienia i średnicy kół zmienia kąt obserwacji podłoża przez transoptory. Jeżeli kąt ten jest spory może t o negatywnie wpłynąć na odczyty linii. Dlatego też warto skorygować ten kąt w taki sposób, aby czoło czujników było równoległe do powierzchni. Można to zrobić wyginając delikatnie nóżki czujnika:
W ten sposób uzyskamy najlepsze możliwe parametry pracy transoptorów, co zrewanżuje się nam niezawodnym ich działaniem.
Konstrukcje dwuosiowe
Na koniec tego punktu, bardzo istotna uwaga praktyczna:
Ilość czujników
Ile czujników powinno być na listwie?
Jeden czujnik
Przy niezbyt dużej prędkości robota wystarczy jeden, który będzie jechał po wybranej krawędzi linii:
W takim przypadku należy jednak napisać program tak, by wiedział w którą stronę ma skręcić, gdy czujnik widzi jasną powierzchnię, a w którą gdy widzi ciemną:
Niestety robot będzie miał tendencję do sporych oscylacji w poszukiwaniu krawędzi, co jak zapewne się domyślasz nie pozwoli na osiągnięcie zbyt dużej prędkości jazdy. Jeżeli ją zaryzykujesz, to taki robot szybko zgubi linię przy pierwszym ostrzejszym zakręcie, gdy przejedzie na jej drugą krawędź:
i podejmie złą decyzją :-)
Dla zakrętu w prawo sytuacja będzie odwrotna, ale konsekwencje takie same, czyli wypadnięcie z trasy.
Dwa czujniki
No to może zastosujmy dwa czujniki?
Pamiętając o zasadzie, że odstęp pomiędzy czujnikami powinien być mniejszy niż szerokość linii będziemy mieli następującą sytuację:
Dołożenie drugiego czujnika znacznie ułatwi robotowi orientację w położeniu względem linii i pozwoli na znacznie mniejsze oscylacje (w zależności od szerokości linii i rozstawu czujników), przez co także na znacznie większą prędkość jazdy .
100 czujników
Skoro im więcej tym lepiej, to może zróbmy 100 czujników?
Ba! Z punktu widzenia człowieka, im więcej czujników (większa rozdzielczość) tym lepiej i tym łatwiej i szybciej można zauważyć, w którą stronę linia ucieka. Jest to możliwe, ponieważ mamy bardzo sprawne CPU w postaci naszego mózgu :-)
Jednakże z punktu widzenia robota nie jest to już taka oczywista prawda, ponieważ każdy czujnik wymaga:
Kompromis
Jaki jest więc najlepszy kompromis?
Parzysta, czy nieparzysta ilość czujników?
W zasadzie nie ma znaczenia jakie rozwiązanie wybierzesz. Wszystko i tak zależy od tego jak napiszesz program. Jednakże nieparzysta ilość czujników z środkowym czujnikiem wiodącym, jest naturalnym i łatwym do oprogramowania rozwiązaniem.
Waga listwy
W poprzednim artykule wspominałem, jak ważna jest masa całkowita robota i w jaki sposób wpływa na jego osiągi. W przypadku ramienia podtrzymującego listwę czujników oraz samej listwy, ich waga jest szczególnie istotna.
Domyślasz się kiedy?
W trakcie pokonywania zakrętów siła bezwładności listwy czujników i ramienia, przeciwdziała obrotowi robota w zadanym kierunku. Zjawisko, to powoduje:
Powstający w czasie skrętu moment bezwładności wynosi (dla punktu materialnego):
gdzie:
Listwa robota wraz z ramieniem nie są punktem materialnym lecz skomplikowaną bryłą i różnorodnej masie w danym punkcie materialnym. Aby obliczyć dla takiego przedmiotu moment bezwładności występujący podczas skręcania, należałoby rozbić tę bryłę na punkty materialne i zsumować poszczególne momenty bezwładności, czyli wykonać obliczenia jak w przypadku czajnika :-) :
Powyższe zjawisko ma kolosalny wpływ na zachowanie się robota na trasie. Dlatego też:
Jeżeli listwa jest wystarczająco sztywna, to wystarczą dwa dystanse po jednym na obu końcach listwy (patrz uwaga na końcu tego punktu). Jeżeli natomiast listwa nie jest wystarczająco sztywna można zastosować dodatkowy dystans w środkowej jej części.
Robot jednoosiowy, w zależności od długości ramienia i średnicy kół zmienia kąt obserwacji podłoża przez transoptory. Jeżeli kąt ten jest spory może t o negatywnie wpłynąć na odczyty linii. Dlatego też warto skorygować ten kąt w taki sposób, aby czoło czujników było równoległe do powierzchni. Można to zrobić wyginając delikatnie nóżki czujnika:
Linefollower jednoosiowy - Korekta ustawienia transoptorów w listwie. |
W ten sposób uzyskamy najlepsze możliwe parametry pracy transoptorów, co zrewanżuje się nam niezawodnym ich działaniem.
Konstrukcje dwuosiowe
Inną wersją linefolowerów są konstrukcje dwuosiowe (taki będzie RoDonM8 w moim wykonaniu). W tym wypadku należy zamocować ramię listwy w taki sposób, by mogła swobodnie własnym ciężarem dociskać czujniki do podłoża. Możesz więc zastosować na przykład zawias:
Linefollower dwuosiowy. |
Na koniec tego punktu, bardzo istotna uwaga praktyczna:
Uwaga dot. zawodów!
W trakcie zawodów możesz się spotkać z sytuacją, że tor jest ułożony z kilku płyt, w przypadku których łączenia nie są idealnie płaskie!!!
Z reguły na łączeniach robot jedzie pod kątem prostym do krawędzi płyty. Dlatego jest bardzo istotne w przypadku listwy w kształcie fragmentu łuku wygiętego do przodu, by w środkowej części także umieścić dystans.
W ten sposób nie narazisz się na utratę czujników :-)
W trakcie zawodów możesz się spotkać z sytuacją, że tor jest ułożony z kilku płyt, w przypadku których łączenia nie są idealnie płaskie!!!
Z reguły na łączeniach robot jedzie pod kątem prostym do krawędzi płyty. Dlatego jest bardzo istotne w przypadku listwy w kształcie fragmentu łuku wygiętego do przodu, by w środkowej części także umieścić dystans.
W ten sposób nie narazisz się na utratę czujników :-)
Ilość czujników
Ile czujników powinno być na listwie?
Jeden czujnik
Przy niezbyt dużej prędkości robota wystarczy jeden, który będzie jechał po wybranej krawędzi linii:
Robot z jednym czujnikiem śledzący krawędź linii. |
W takim przypadku należy jednak napisać program tak, by wiedział w którą stronę ma skręcić, gdy czujnik widzi jasną powierzchnię, a w którą gdy widzi ciemną:
Algorytm robota z jednym czujnikiem śledzącego krawędź linii. |
Niestety robot będzie miał tendencję do sporych oscylacji w poszukiwaniu krawędzi, co jak zapewne się domyślasz nie pozwoli na osiągnięcie zbyt dużej prędkości jazdy. Jeżeli ją zaryzykujesz, to taki robot szybko zgubi linię przy pierwszym ostrzejszym zakręcie, gdy przejedzie na jej drugą krawędź:
Robot z jednym czujnikiem śledzącego krawędź linii. Błędna decyzja po przekroczeniu drugiej krawędzi linii. |
i podejmie złą decyzją :-)
Dla zakrętu w prawo sytuacja będzie odwrotna, ale konsekwencje takie same, czyli wypadnięcie z trasy.
Dwa czujniki
No to może zastosujmy dwa czujniki?
Pamiętając o zasadzie, że odstęp pomiędzy czujnikami powinien być mniejszy niż szerokość linii będziemy mieli następującą sytuację:
Robota z dwoma czujnikami. |
Dołożenie drugiego czujnika znacznie ułatwi robotowi orientację w położeniu względem linii i pozwoli na znacznie mniejsze oscylacje (w zależności od szerokości linii i rozstawu czujników), przez co także na znacznie większą prędkość jazdy .
100 czujników
Skoro im więcej tym lepiej, to może zróbmy 100 czujników?
Ba! Z punktu widzenia człowieka, im więcej czujników (większa rozdzielczość) tym lepiej i tym łatwiej i szybciej można zauważyć, w którą stronę linia ucieka. Jest to możliwe, ponieważ mamy bardzo sprawne CPU w postaci naszego mózgu :-)
Jednakże z punktu widzenia robota nie jest to już taka oczywista prawda, ponieważ każdy czujnik wymaga:
- podłączenia w jakiś sposób do mikrokontrolera,
- odczytania jego stanu przez program,
- dokładnej analizy zależności od innych czujników,
- niemałego prądu zasilania diody oświetlającej podłoże obserwowane przez dany czujnik,
Kompromis
Jaki jest więc najlepszy kompromis?
Podobnie jak w przypadku kształtów listwy, także i tutaj musimy kombinować i testować, testować ... i jeszcze raz testować przyjęte rozwiązanie.
Ale żeby wskazać Ci pewną drogę powinieneś przyjąć, że czujników powinno być co najmniej 5, lecz nie więcej niż 20-25. Kilkanaście, to optymalne rozwiązanie.
Ale żeby wskazać Ci pewną drogę powinieneś przyjąć, że czujników powinno być co najmniej 5, lecz nie więcej niż 20-25. Kilkanaście, to optymalne rozwiązanie.
Parzysta, czy nieparzysta ilość czujników?
W zasadzie nie ma znaczenia jakie rozwiązanie wybierzesz. Wszystko i tak zależy od tego jak napiszesz program. Jednakże nieparzysta ilość czujników z środkowym czujnikiem wiodącym, jest naturalnym i łatwym do oprogramowania rozwiązaniem.
Na pewno stosuj nieparzystą ilość czujników w przypadku, gdy stosujesz ich niewielką ilość.
Waga listwy
W poprzednim artykule wspominałem, jak ważna jest masa całkowita robota i w jaki sposób wpływa na jego osiągi. W przypadku ramienia podtrzymującego listwę czujników oraz samej listwy, ich waga jest szczególnie istotna.
Domyślasz się kiedy?
W trakcie pokonywania zakrętów siła bezwładności listwy czujników i ramienia, przeciwdziała obrotowi robota w zadanym kierunku. Zjawisko, to powoduje:
- opóźnienie momentu skrętu,
- nie pozwala na ciasne zakręty,
- może spowodować zerwanie przyczepności kół i uślizg robota.
Powstający w czasie skrętu moment bezwładności wynosi (dla punktu materialnego):
gdzie:
- m - masa punktu,
- r - promień obrotu.
Moment bezwładności (punktu materialnego) jest iloczynem jego masy i kwadratu odległości od osi obrotu.
Listwa robota wraz z ramieniem nie są punktem materialnym lecz skomplikowaną bryłą i różnorodnej masie w danym punkcie materialnym. Aby obliczyć dla takiego przedmiotu moment bezwładności występujący podczas skręcania, należałoby rozbić tę bryłę na punkty materialne i zsumować poszczególne momenty bezwładności, czyli wykonać obliczenia jak w przypadku czajnika :-) :
Momenty bezwładności przykładowych brył. Źródło: Wikipedia |
Powyższe zjawisko ma kolosalny wpływ na zachowanie się robota na trasie. Dlatego też:
Niezwykle ważne jest minimalizowanie wagi listwy z czujnikami oraz ramienia w szczególności, gdy listwa jest wysunięta daleko do przodu.
Znalazłem jeden błąd a mianowicie w zdaniu "Na etapie testowy, warto rozważyć przygotowanie listwy opartej o zasadę działania grabi do liści o zmiennym rozstawie:" powinno być raczej "na etapie testowym" a nie "na etapie testowy,".
OdpowiedzUsuńDziękuję za spostrzegawczość. Poprawię, gdy dodam zapomniane rysunki dot. odległości czujników od podłoża :-)
UsuńPozdrawiam!
"Moment bezwładności jest iloczynem jego masy i kwadratu odległości od osi obrotu" <- tak, ale tylko dla punktu materialnego
OdpowiedzUsuńDziękuję za zwrócenia uwagi.
UsuńZgadza się, definicja dot. punkty materialnego, dlatego też zaraz pod nią zamieściłem animację znalezioną na Wikipedii, by pokazać jak zmieniają się wzory w zależności od kształtu przedmiotu. Do formułki dodam, iż chodzi o punkt materialny.
A jak dobrać odległoość listwy o osi kół?
OdpowiedzUsuń