Laboratorium 3 Dokumentacja - pw-eiti-anro-21l/dwornik_matysek GitHub Wiki

Pliki

Skrypty

nonkdl_dkin.py

  • plik wykonawczy dla węzła obsługującego węzeł NONKDL_DKIN, który oblicza położenie kursora na podstawie metody analitycznej
  • na początku program wczytuje parametry z pliku params.yaml i tworzy subscribera dla tematu joint_states
  • następnie na temacie /pose_stamped_nonkdl publikowana jest nowa pozycja dla kursora

kdl_dkin.py

  • plik wykonawczy dla węzła obsługującego węzeł KDL_DKIN, który korzysta z biblioteki KDL
  • podobnie jak poprzednio, program zaczyna się od inicjalizacji parametrów i subscribera
  • potem tworzymy obiekt typu Chain, zawierający dane o połączeniach i orientacji stawów robota
  • następnie tworzymy obiekt typu JntArray i dodajemy do niego dane z topicu joint_states
  • następnie wywołujemy ChainFkSolverPos_recursive(), który rozwiązuje prostą kinematykę
  • rezultaty przetwarzamy na kwaternion i publikujemy na temacie pose_stamped_kdl

Pliki związane z modelem

  • param.yaml - plik z parametrami ramienia
  • robot.rviz - plik umożliwiający wizualizację robota w RVIZie
  • robot.urdf.xacro.xml - plik definiujące parametry i ograniczenia ruchu ramion

Schemat systemu

Screenshot from 2021-04-25 16-45-47

Tematy

Publishery

  • /pose_stamped_kdl
  • /pose_stamped_nonkdl

Subscribery

  • joint_poses

Testy

Wykres wartości orientacji dla zmiany ustawień stawów z (0, 0, 0) na (-0,96; -0,13; 0,1)

Screenshot from 2021-04-25 17-48-02

Wykres wartości położenia dla zmiany ustawień stawów z (0, 0, 0) na (-2,53; 0,26; 0,03)

Screenshot from 2021-04-25 17-53-36

Obserwacja

Wykresy dla obydwu wykresów mają zbliżone charakterystyki. Jednak, gdy na przykład przybliżymy drugi wykres, to możemy zobaczyć, że węzeł NONKDL_DKIN szybciej dostosowuje się do zmian, niż KDL_DKIN: Screenshot from 2021-04-25 17-54-01

Możliwe, że obliczenia w funkcjach biblioteki KDL są bardziej złożone, niż te w węźle bez KDLa, przez co ten drugi działa szybciej