Lab4 - pw-eiti-anro-20l/kruk_wojcik GitHub Wiki
Wstęp
Laboratorium polegało na stworzeniu dwóch węzłów. Pierwszy miał za zadanię interpolowania trajektorii w przestrzeni konfiguracyjnej. Drugi natomiast generowania, poprzez interpolację, pozycje pewnego układu w przestrzeni operacyjnej (Kartezjańskiej). Należało dwa typy interpolacji. W projekcie posłużono się językiem programowania Python.
Uruchomienie projektu
W celu uruchomienia projektu należy wykonać poniższe komendy:
- source devel/setup.bash (będąc jednocześnie w katalogu głównym projektu)*
- W katalogu lab4/scripts wykonać: chmod +x jint.py oint.py start_oint.py
- W katalogu głównym wykonać: roslaunch lab4 main.launch
- Otworzyć nowy terminal (może być nowa zakładka) wykonać ponownie polecenie nr 1.
Następnie, w celu uruchomienia 1 zadania:
- rosrun lab4 jint.py
- Otworzyć nowy terminal a w nim wykonać polecenie nr. 1
- rosservice call /jint_control_srv "{base_link_link1: 0.0, link1_link2: 0.0, link2_link3: 0.0, time: 0.0, type: ''}" **
W celu uruchomienia 2 zadania:
- rosrun lab4 oint.py
- Otworzyć nowy terminal a w nim wykonać polecenie nr. 1
- rosservice call /oint_control_srv "{x: 0.0, y: 0.0, z: 0.0, qx: 0.0, qy: 0.0, qz: 0.0, qw: 0.0, time: 0.0, type: ''}" **
*Komenda zależna jest od używanej powłoki np. dla zsh należy użyć source devel/setup.zsh
**Możliwe typy to : "linear", "spline".
Pliki źródłowe
- config/urdf_params.yaml - zawiera przeliczone paramatry DH na reprezentacje przystosowaną do URDF.
- launch/main.launch - launch, uruchamia rviz
- rviz/config.rviz - zawiera ustawienia startowe rviz
- src/interpolation.py - moduł odpowiadający za interpolację ruchu
- src/jint.py - pilk wykonywalny - odpowiada za uruchomienie węzła jint
- src/oint.py - plik wykonywalny - odpowiada za uruchomienie węzła oint
- src/set_robot_position.py - moduł odpowiadający za rozwiązanie prostego zagadnienia kinematyki
- src/start_oint.py - plik wykonywalny odpowiadający za ustawienie poseStamped w punkcie 0.0
- srv/jint.srv - określa request w service typu jint
- srv/oint.srv - określa request w service typu oint
- urdf/robot2.xacro - zawiera opis badanego robota w rviz
Struktura projektu
Strukturę projektu wygenerowano przy pomocy rqt_graph.
Zadanie 1
Zadanie 2
Działanie progamu
Zadanie 1
Przykładowe działanie pokazane jest na rysunkach poniżej
Zadanie 2
Testy
Program przetestowano przy pomocy polecenia rqt_plot. Otrzymane efekty dla interpolacji liniowej przemieszczania się układu są przedstawione na rys. poniżej.
Widać, że wartości zmieniają się liniowo co jest zgodne z oczekiwaniami.
Na poniższym wykresie pokazane są efekty interpolacji splajnami dla takiej samej zmiany pozycji jak w poprzednim przykładzie.
Jeśli porówanymy oba wykresy, można zauważyć różnice. Wynikają one z różnych rodzaji wykorzystywanych interpolacji. W pierwszym przypadku wartosć zmienia się liniowo. Natomiast w drugim przypadku zmiana jest nielinowa, wynika to z cech interpolacji splajnami. Nieliniowść najbardziej widać na początku i na końcu ruchu układu gdzie można zaobserwować "przyśpieszenie" i "hamowanie" układu.
Poniżej przedstawiony jest wykres dla zmian orientacji układu przy użyciu interpolacji liniowej.
Poniżej przedstawiony jest wykres dla zmian orientacji układu przy użyciu interpolacji splajnami.
Wnioski w przypadku zmian orientacji są takie same jak wnioski przypadku zmian położenia.
W powyższych wykresach należy zwrócić uwagę, że niezależnie czy korzystamy z interpolacji liniowej czy interpolacji splajnami, efekt końcowy jest taki sam, tj. końcowe położenie/orientacja układu jest takie samo. Dowodzi to poprawności implementacji obu metod interpolacji.