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

Screenshot from 2021-05-23 18-54-10

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:

CodeCogsEqn

W ostatniej kolumnie znajduje się położenie końcówki,które można wyznaczyć na podstawie układu równań:

równania

Na jego podstawie możemy wyznaczyć następujące rozwiązania:

wyniki

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

Screenshot from 2021-05-23 18-56-21 Wyznaczanie prostokątnej trajektorii

Screenshot from 2021-05-23 19-39-12

Wykres porównujący położenia wyznaczone przez węzeł nonkdl i zadane położenia: Screenshot from 2021-05-23 19-24-26