arek5195 Napisano Kwiecień 24, 2022 Udostępnij Napisano Kwiecień 24, 2022 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. 1
arek5195 Kwiecień 25, 2022 Autor tematu Udostępnij Kwiecień 25, 2022 Dzień dobry, Czy jest ktoś w stanie mi pomóc?
ethanak Kwiecień 25, 2022 Udostępnij Kwiecień 25, 2022 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. 1 1
Gość Kwiecień 25, 2022 Udostępnij Kwiecień 25, 2022 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ń.
arek5195 Kwiecień 28, 2022 Autor tematu Udostępnij Kwiecień 28, 2022 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): 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
trainee Kwiecień 29, 2022 Udostępnij Kwiecień 29, 2022 Może czas sobie narysować? 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. 1
Gość Kwiecień 29, 2022 Udostępnij Kwiecień 29, 2022 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.
Pomocna odpowiedź
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ę »