Lab3 - pw-eiti-anro-20l/kruk_wojcik GitHub Wiki

Cel projektu

Zadanie polegało na rozwinięciu projektu nr. 2. Należało dodać dwa węzły, które rozwiązuja proste zagadnienie kinematyki manipulatora. Jeden węzeł rozwiązuje zagadnienie przy użyciu KDL a drugi bez używania KDL. Należało również uwzględnić ograniczenia ruchów co do zakresu ruchu stawów.

Uruchomienie projektu

W celu uruchomienia projektu należy wykonać poniższe komendy:

  1. sudo -s
  2. source devel/setup.bash (będąc jednocześnie w katalogu głównym projektu)*
  3. W katalogu lab3/scripts wykonać: chmod +x nonkdl_dkin.py kdl_dkin.py
  4. W katalogu głównym wykonać: roslaunch lab3 main.launch
  5. Otworzyć nowy terminal (może być nowa zakładka) wykonać ponownie polecenia 1 oraz 2 a następnie: roslaunch lab3 kinematic.launch
  6. Uruchamia się rviz w którym pojawia się robot z możliwością poruszania stawami.

*Komenda zależna jest od używanej powłoki np. dla zsh należy użyć source devel/setup.zsh

Pliki źródłowe

  • config/urdf_params.yaml - plik zawierający przeliczone paramatry DH na reprezentacje przystosowaną do URDF.
  • launch/main.launch - launch, uruchamiający rviz
  • launch/kinematic.launch - launch służący do uruchomienia w rviz węzłów odpowiadających za rozwiązywanie prostej kinematyki
  • rviz/config.rviz - zawiera ustawienia startowe rviz
  • urdf/robot2.xacro - opisuje strukturę oraz wygląd badanego robota w rviz.
  • scripts/kdl_dkin.py - skrypt rozwiązujący proste zagadnienie kinematyki robota przy użyciu KDL
  • scirpts/nonkdl_dkin.py - skrypt rozwiązujący proste zagadanie kinematyki robota bez użycia KDL

Ograniczenia ruchu stawów

Ograniczenia ruchu stawów zaimplementowane zostały tylko dla wersji bez użycia KDL. Używając ograniczeń takich samych jak tych zdefiniowanych w pliku urdf, nie zanotowano żadnych różnic w zachowaniu robota, jednakże po zmienieniu wartości ograniczeń na takie znajdujące się wewnątrz przedziały zdefiniowanego w plikach urdf, zauważono zmiany w zachowaniu robota podczas poruszania. W badanym przypadku zmieniono ograniczenia pierwszego stawu na zakres [-0.3 0]. Podczas żądania aby robot znalazł się w położeniu innym niż zdefiniowany otrzymujemy wynik przedstawiony na poniższych rysunkach.

\

Testy

Pierwszym przeprowadzonym testem było sprawdzenie poprawności komunikacji między węzłami. Sprawdzono to posługując się komendą "rqt_graph", która wizualizuje komunikację między wezłami. Otrzymany wynik zgadza się z pokazanym w zadaniu. Wynik przedstawiony jest na rysunku poniżej. \


Jednakże na rysunku nie widać komunikacji /nonkdl_dkin_msgs oraz /kdl_dkin_msgs z rviz, które w rzeczywistości istnieją, dlatego też załączono jeszcze jeden rysunek przedstawiający większy zakres komunikacji w projekcie.
\

Następne przeprowadzone testy polegału na testowaniu robota manualnie. Zmieniano położenia stawów i sprawdzano czy otrzymane wyniki są zgodnie z założeniami. Przykładowe położenia robota pokazane są poniżej.


\

Zauważyć można że oba wyniki prostej kinematyki są identyczne dla obu węzłów (kdl i nonkdl). Jest to efekt zamierzony i oznacza poprawność wykonania zadania.

Przetestowano projekt używająć też rqt_plot i sprawdzająć czy otrzymane wykresy się pokrywają, tzn. oczekiwane położenie wygenerowane przez non_kdl i przez kdl jest identyczne. Otrzymano wyniki zadowalające, ponieważ wszystkie wykresy były zgodne. Dla poszczególnych wartości położenia tj. x, y, z, wykresy przedstawione są poniżej.


\