2010-05-25 14 views
11

Mam pole wypełnione przeszkodami, wiem, gdzie się znajdują i znam pozycję robota. Korzystając z algorytmu wyznaczania ścieżek, obliczam ścieżkę, którą robot musi wykonać.Prowadzenie robota przez ścieżkę

Teraz mój problem polega na tym, że kieruję robota z siatki do siatki, ale to powoduje, że ruch nie jest tak płynny. Zaczynam od A, obracam nos do punktu B, poruszam się prosto, aż osiągam punkt B, płuczę i powtarzam aż do osiągnięcia punktu końcowego.

Moje pytanie brzmi: jakiego rodzaju techniki są używane do nawigacji w takim środowisku, aby uzyskać płynny ruch?

Robot ma dwa koła i dwa silniki. Zmieniam kierunek silnika, obracając silniki do tyłu.

EDYCJA: Mogę zmienić prędkość silników w zasadzie robot jest arduino plus ardumoto, mogę dostarczyć wartości od 0-255 do silników w obu kierunkach.

+2

jeśli wszystko, co chcesz zrobić, to wygładzić ruch, spróbuj obliczanie krzywej splajnu za droga, której należy przestrzegać –

+0

@steven ów rzeczywiście to, co chcę, ale to, co nie mają kluczem jest, jak odwzorować krzywą na prędkości silnika. –

+0

Byłby to stosunek oparty na nachyleniu krzywej w bieżącym locus wzdłuż niego; zasadniczo linia prosta ma stosunek koła-silnika do mocy równy 1: 1, z ostrymi lewymi końcami i prawami jako 0: 1 i 1: 0. Zakrzywione zwoje są więc ułamkami, więc delikatny obrót w lewo może wynosić 0,75: 1. –

Odpowiedz

8

Potrzebna jest linearyzacja sprzężenia zwrotnego dla robota sterowanego inaczej. Ten document wyjaśnia w sekcji 2.2. Podaję odpowiednie fragmenty poniżej:

Symulowana robota wymagane dla projektu jest robotem di ff napęd różniczkowych z prędkością ograniczonego. Od niefonomicznych robotów napędowych są nieholonomiczne, studenci są zachęcani do korzystania z linearyzacji sprzężenia zwrotnego do konwersji kinematycznego wyjścia sterującego z ich algorytmów do sterowania różnych robotów napędowych. Transformacja następująco:

Transformation

gdzie v ω, x, Y są liniowe, kątowego i prędkości kinematyczne. L jest długością zestawu proporcjonalną do wymiaru podstawy robota .

+0

Dzięki! Pomyśl, że go tutaj odświeżę zamiast linkowania do kopii w pamięci podręcznej. – Jacob

1

Moje pierwsze myśli na ten temat (jestem w pracy, więc nie może spędzać zbyt dużo czasu):

To zależy jak mocno chcesz lub potrzebujesz swoje rogi być (co będzie zależeć od tego, ile oddali swoje wyszukiwarka ścieżek daje ci przeszkody)

Biorąc pod uwagę szerokość robota, możesz obliczyć promień skrętu, biorąc pod uwagę prędkości dla każdego koła. Zakładając, że chcesz jechać tak szybko jak to możliwe, a poślizg nie jest problemem, zawsze zachowasz zewnętrzne koło na 255 i zredukujesz wewnętrzne koło do prędkości, która zapewnia wymagany promień skrętu.

Biorąc pod uwagę kąt dla konkretnego zakrętu na Twojej drodze i promień skrętu, jaki będziesz wykorzystywać, możesz obliczyć odległość od tego węzła, w którym zwolnisz wewnętrzne koło.

5

Jednym z algorytmów kontrolnych, z którymi miałem całkiem dobre wyniki, jest pure pursuit. Zasadniczo robot próbuje przesuwać się do punktu wzdłuż ścieżki na ustaloną odległość przed robotem. Gdy robot porusza się po ścieżce, punkt na przód również się rozwija. Algorytm kompensuje nieholonomiczne ograniczenia, modelując możliwe ścieżki jako łuki.

Większe odległości z wyprzedzeniem spowodują płynniejszy ruch. Jednak większe odległości z wyprzedzeniem spowodują, że robot pokrzykuje rogi, które mogą kolidować z przeszkodami. Możesz rozwiązać ten problem, wdrażając pomysły z algorytmu sterowania reaktywnego o nazwie Histogram pola wektorowego (VFH). VFH zasadniczo odsuwa robota od ścianek. Podczas gdy zwykle używa się jakiegoś czujnika odległości, możesz ekstrapolować względne położenie przeszkód, ponieważ znasz położenie robota i lokalizacje przeszkód.

0

Podejście optymalizacyjne jest bardzo ogólnym sposobem radzenia sobie z tym.

Użyj swojej obliczonej ścieżki jako danych wejściowych do ogólnego nieliniowego algorytmu optymalizacji (do wyboru!) Z funkcją kosztów składającą się z bliskości trajektorii odpowiedzi do trajektorii wejściowej, a także przestrzegania nieholonomicznych ograniczeń, oraz wszelkie inne ograniczenia, które chcesz egzekwować (np. przebywanie z dala od przeszkód). Algorytm optymalizacji można również zainicjować trajektorią zbudowaną z oryginalnej trajektorii.

Notatki z kursu robotyki Marc Toussaint są dobrym źródłem tego typu podejścia. Patrz w szczególności wykład 7: http://userpage.fu-berlin.de/mtoussai/teaching/10-robotics/

Powiązane problemy