Laboratorium 5 Dokumentacja - pw-eiti-anro-21l/dwornik_matysek GitHub Wiki
Pliki
Pliki launch
- rviz.launch.py - plik uruchamiający rviza
- lab5.launch.py - plik ładujący model robota oraz uruchamiający węzły ocmd, oint i ikin
Pliki skryptowe
- oint.py - klient usługi oint
- oint_control_srv.py - plik z interfejsem usługi oint
- ikin.py - plik, który rozwiązuje odwróconą kinematykę, na podstawie otrzymanej zadanej pozycji
- ocmd.py - plik, który zadaje węzłowi oint ruch po prostokącie lub elipsie
Schemat systemu
Tematy
Publishery
Oint
- /pose_stamped_lab4
- /marker_pose
Ikin
- /joint_states
Subscribery
Ikin
- /pose_stamped_lab4
Działanie
Aby zadane położenie zamienić na zmiany kątów i wysunięć poszczególnych stawów manipulatora, musimy rozwiązać zadanie kinematyki odwrotnej. W tym celu musimy wyznaczyć macierz przekształcenia końcówki naszego manipulatora. Po wymnożeniu wszystkich składowych macierzy transformacji, wygląda ona następująco:
W ostatniej kolumnie znajduje się położenie końcówki,które można wyznaczyć na podstawie układu równań:
Na jego podstawie możemy wyznaczyć następujące rozwiązania:
Oczywiście w ciągu obliczeń może potencjalnie dojść do sytuacji, w której, w ciągu obliczeń może się okazać, że wyznaczona wartość cosinusa kąta phi 2 może wychodzić poza zakres wartości cosinusa, co będzie oznaczać, że zadane położenie będzie niemożliwe do osiągnięcia. Dodatkowym ograniczeniem będą ograniczenia kinematyczne manipulatora, które również zmniejszają pulę możliwych do osiągnięcia współrzędnych.
Wykresy
Wyznaczanie eliptycznej trajektorii
Wyznaczanie prostokątnej trajektorii
Wykres porównujący położenia wyznaczone przez węzeł nonkdl i zadane położenia: