Czy są z tym jakieś problemy?
Główny problem polega na tym, że chociaż proponowane rozwiązanie natychmiast poprawi niedopasowanie wydajności silników, nie poprawi skumulowanego błędu, nie mówiąc już o bardziej złożonych błędach w położeniu, takich jak błąd Abbe (patrz później).
Jakie jest lepsze podejście?
Istnieje kilka rzeczy, które możesz zrobić, w zależności od tolerancji błędów i wysiłku, jaki chcesz włożyć w ich naprawę.
Pierwszym krokiem byłoby skonfigurowanie pary pętli PID, po jednej dla każdego koła, dając im obie te same pozycje zapotrzebowania. Jak zasugerowałem w mojej odpowiedzi na podobne pytanie , jeśli utrzymasz oba koła w bardzo ścisłym błędzie w granicach miejsca, w którym je poprosisz, to zajmie trochę czasu, aby zebrać wystarczająco dużo błędu, aby spowodować zauważalną zmianę kierunku.
O wiele łatwiej będzie dostroić dwie nominalnie niezależne pętle PID na poziomie silnika niż dostroić pojedynczy złożony, współzależny połączony system. Aby znieść każdą zmianę pracy sterowania wyższego poziomu, naprawdę potrzebujesz, aby każdy silnik zachowywał się tak bardzo, jak to możliwe, z drugim silnikiem przez możliwie jak najdłuższy czas, a to naprawdę wymaga oddzielnych pętli serwo.
Istnieje jednak wiele dalszych komplikacji i zależy to od dokładności, jakiej potrzebujesz i od tego, ile wysiłku jesteś gotów podjąć, aby je poprawić, aby wybrać odpowiednie rozwiązanie. Może się zdarzyć, że Dead Reckoning jest wystarczający lub konieczne może być dodanie do robota określenia pozycji względnej lub absolutnej.
Jednym z problemów jest to, że nawet jeśli lewe i prawe koła poruszają się enkoderem 1000, to nadal możesz znaleźć się w innej pozycji podczas dwóch różnych biegów.
Na przykład, powiedzmy, że wystąpił maksymalny błąd następujący po 10 zliczeniach enkoderów, a wasze silniki pracują z prędkością powiedzmy 10 zliczeń enkoderów na iterację pętli PID. Twój lewy silnik może się poruszać 5,10,10,10 ... 10,5, podczas gdy twój prawy silnik może mieć profil 4,11,10,10 ... 10,5, a nawet niewielką różnicę przyspieszenia na początku ruchu może spowodować, że robot ruszy w nieco złym kierunku. Nie tylko to, ale im dalej posuwasz się w tym kierunku, tym większy będzie błąd w wartościach bezwzględnych. O tym mówimy, gdy mówimy o błędzie Abbe , i bez złożonego modelu kinematycznego lub jakiegoś zewnętrznego odniesienia nigdy nie będziesz w stanie go naprawić.
Aby uzyskać więcej informacji, zobacz moją odpowiedź na podobne, ale nie do końca zduplikowane pytanie: jak mogę użyć biblioteki Arduino PID do prowadzenia robota w linii prostej?
i moja odpowiedź na powiązaną optymalizację Line Follower