Skocz do zawartości

Błąd pomiaru przejechanej drogi podczas skrętu Arduino Uno - Robot LineFollower


arek5195

Pomocna odpowiedź

Dzień dobry,

zbudowałem robota linefollower, na Arduino Uno, robot ma napęd na 2 koła, pozycje zliczam czujnik szczelinowy + tarcza enkoderowa

Generalnie robot jeździ wzdłuż linii poprawnie, zliczanie impulsów dla koła lewy i prawy jest ok.

Chciałem dodać funkcję aby po przejechaniu np. 1metra, robot się zatrzymał i tutaj pojawia się problem, ponieważ jak podczas jazdy prosto w idealnych warunkach zliczone impulsy na kole lewym i prawym powinny być takie same, jednak podczas skręcania, te odczyty (zliczone impulsy na lewym i prawym kole) się różnią od siebie - co jest logiczne.

 

Moje pytanie/prośba:

  • Jak zliczać przebytą drogę podczas skrętu w prawo lub lewo?
  • Prośba o kawałek kodu / poradę / artykuł. (znalazłem artykuł zagranicznych wykładowców, tamte macierze, wzory są dla mnie skomplikowane)

 

PS. Prosba o przeniesienie zapytania jeśli nieodpowiedni dział.

PS2. obejrzałem mase filmików / artykułów, jednak nie znalazłem odpowiedzi na moje pytanie.

 

Z góry dziękuję,

Adrian.🙂

 

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

1 godzinę temu, arek5195 napisał:

Czy jest ktoś w stanie mi pomóc? 

Cierpliwości - naprawdę myślisz, że wszyscy tutaj mają włączone powiadomienia, czekają aż zadasz pytanie i natychmiast rzucą wszystko i siądą do odpowiedzi???

Dnia 24.04.2022 o 18:42, arek5195 napisał:

Jak zliczać przebytą drogę podczas skrętu w prawo lub lewo?

Możesz przyjąć, że droga to średnia dróg przejechanych przez koła, a więc...

Dnia 24.04.2022 o 18:42, arek5195 napisał:

Prośba o kawałek kodu

Ależ proszę 🙂

Nimpulsy = (Nlewy + Nprawy) / 2;

Niestety - jeśli chcesz się bawić robotami to bez znajomości geometrii może być raczej ciężko.

 

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Należy zauważyć,że skręcając, pojazd porusza się po okręgu.Koło wewnętrzne porusza się po okręgu o promieniu r1 a koło zewnętrzne po okręgu r2.Ten promień r2 jest większy od promienia r1 o rozstaw kół. Koło poruszając się po okręgu  pokonuje drogę zgodnie ze wzorem s= α*2πr/360 czyli koło wewnętrzne s1= α*2πr1/360 a zewnętrzne s2= α*2πr2/360.I w tym miejscu dochodzimy do sedna problemu czyli do definicji przebytej drogi przez pojazd dwuśladowy w ruchu po okręgu.Proponuję by ta droga była mierzona względem środka pojazdu  promieniem  r1+ rozstaw kół/2 lub (r1+r2)/2.Przepraszam za te nawiasy ale inaczej zapisać nie mogę a zdaję sobie sprawę z tego,że nie jest to zgodne z ogólnie przyjętym językiem w matematyce .Pojazd skręca raz w lewo raz w prawo.W związku z tym w zależności od tego w którą stronę skręca pojazd koła r są kołami wewnętrznymi a a innym razem zewnętrznymi.A zatem mierzona droga względem środka pojazdu Sśroka pojazdu=(s1+s2)/2.Warunek jest jeden - muszą być dwa identyczne jakieś enkodery współpracujące z  kołami.Te wzory a szczególnie ten ostatni to kawałek kodu.W Twoim przypadku  wzory s1,s2 masz wyznaczone już w istniejącym kodzie.Wystarczy zastosować wzór.Oczywiście z wartości s1,s2 wynika dużo więcej informacji ale nie jest to przedmiotem rozważań.

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

Dziękuję Wam za odpowiedź, była mega pomocna!🙂

Idąc dalej zderzyłem się z kolejną ścianą. Chciałbym aby robot jadąc po linii aktualizował swoją pozycję w układzie współrzędnych (pozycja X, pozycja Y). 

Jednak nie wiem jak określić kierunek jazdy, a dokładniej kąt skrętu.

Natknąłem się na poniższe wzory (najbardziej przystępne, do przełożenia na kod arduino):

image.png.8e285a6bf30d953d706ee51df12d4bc3.png

Rozumiem że:

PozX'= PozX + Droga robota * cos ∅

PozY'= PozY + Droga robota * sin ∅

 

  • Ale obliczenie ∅' = ∅ + (DrogaPraweKolo - DrogaLeweKolo / L) jest na pewno prawidłowe?
  • L rozumiem to odległość między kołami?
  • ∅ powinno zmieniać się w zakresie od 0 do 360 stopni? 
  • Prośba o pomoc jak wyznaczać kierunek jazdy.

 

Dziękuję,

Adrian 🙂

Link do komentarza
Share on other sites

Może czas sobie narysować?

rycinka.thumb.png.83e1826786ff7f0e03b5e0f0dd8eb6bf.png

Obliczenia na obrazku to informacja, skąd bierze się wyliczenie kąta. Dokończ sam, by odpowiedzieć sobie na wątpliwości odnośnie poprawności cytowanych wzorów. Dodam, że ∅ to symbol średnicy, a kąt w równaniach z Twojego posta oznaczony jest grecką literą fi - Φ. Jest on wyrażony w obliczeniach w radianach. A może śmiało sięgać w każdą stronę w nieskończoność, jak i zresztą również mógłby, gdyby był wyrażony w stopniach. Najlepiej będzie, jeżeli całą resztę też przemyślisz, wyprowadzisz czy narysujesz sobie ze zrozumieniem.

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

Arek5195 przeczytaj ostatnie zdanie z mojego poniedziałkowego posta.Musisz dokonać analizy wzoru Sśroka pojazdu=(s1+s2)/2 .W dalszych rozważaniach to zastosowanie będzie mieć geometria analityczna,której musisz poświęcić trochę czasu.Podpowiem - musisz odpowiedzieć sobie na pytanie co będzie jeśli s1=s2,s1>s2,s1<s2. Te wartości s1 i s2 są wprost proporcjonalne do ilości zliczeń związanych z enkoderami . Jak już wyciągniesz  wnioski to będziesz gotowy do  dokonania modyfikacji kodu.A później jeszcze jeden krok i powstanie zagadnienie pojazdu autonomicznego.

 

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.