Lab4 » Historia » Wersja 3
Dawid Seredyński, 2018-06-13 17:27
| 1 | 3 | Dawid Seredyński | h1. Lab 4: Interpolation of motion |
|---|---|---|---|
| 2 | 1 | Dawid Seredyński | |
| 3 | 1 | Dawid Seredyński | h2. Scope: |
| 4 | 1 | Dawid Seredyński | |
| 5 | 1 | Dawid Seredyński | This laboratory consist of two parts: |
| 6 | 1 | Dawid Seredyński | |
| 7 | 1 | Dawid Seredyński | * A short introduction. |
| 8 | 1 | Dawid Seredyński | * Writing your own ROS package. |
| 9 | 1 | Dawid Seredyński | |
| 10 | 1 | Dawid Seredyński | h2. The task: |
| 11 | 1 | Dawid Seredyński | |
| 12 | 2 | Dawid Seredyński | * Rozwijamy system z poprzedniego laboratorium rozszerzając istniejący już pakiet albo dokładając nowy. |
| 13 | 2 | Dawid Seredyński | * Tworzymy węzeł jint interpolujący trajektorię w przestrzeni konfiguracyjnej |
| 14 | 1 | Dawid Seredyński | |
| 15 | 2 | Dawid Seredyński | * Węzeł jint obsługuje zdalnie wywoływaną procedurę, dla której należy utworzyć dedykowany service jint_control_srv określający struktury wykorzystywane do komunikacji. |
| 16 | 2 | Dawid Seredyński | |
| 17 | 2 | Dawid Seredyński | * węzeł jint ma przyjmować położenia zadane stawów wraz z innymi koniecznymi parametrami (np. czasem ruchu) |
| 18 | 2 | Dawid Seredyński | * W odpowiedzi na rozkaz węzeł określa status interpolacji, który może być odesłany po jej poprawnym zakończeniu, albo zaraz po otrzymaniu rozkazu w przypadku, w którym interpolacja nie była możliwa: np. zadano niepoprawne parametry (np. zerowy czas ruchu). |
| 19 | 2 | Dawid Seredyński | * Zdalnie wywoływaną procedurę można wywołać z konsoli bądź specjalnie utworzonego węzła jcmd. |
| 20 | 2 | Dawid Seredyński | * Po otrzymaniu poprawnego rozkazu węzeł jint publikuje kolejne położenie uzyskane z interpolacji ruchu na topiku i przesyła je do węzła robot_state_publiher |
| 21 | 2 | Dawid Seredyński | * w wersji podstawowej stosujemy interpolację liniową, |
| 22 | 2 | Dawid Seredyński | * w wersji rozszerzonej trapezowy (lub inny ciągły) przebieg prędkości: np. interpolacja krzywymi sklejanymi. Dobry opis jest na angielskim wiki https://en.wikipedia.org/wiki/Spline_interpolation#Algorithm_to_find_the_interpolating_cubic_spline. Można rozważyć przypadek ruchu między dwoma punktami z założeniem zerowej prędkości na początku i końcu ruchu. |
| 23 | 2 | Dawid Seredyński | * wszystkie tryby interpolacji powinny być zaimplementowane w jednym węźle i obsługiwane za pomocą jint_control_srv, gdzie określi się sposób interpolacji i konieczne parametry. |
| 24 | 2 | Dawid Seredyński | * Wizualizujemy działanie systemu w RVIZ, nanosząc na scenę przykładową trajektorię, po której poruszał się robot. |
| 25 | 2 | Dawid Seredyński | |
| 26 | 2 | Dawid Seredyński | * Tworzymy analogiczny węzeł oint, który wygeneruje, poprzez interpolację, pozycje pewnego układu w przestrzeni operacyjnej (Kartezjańskiej) |
| 27 | 2 | Dawid Seredyński | * W tym ćwiczeniu przemieszczany układ nie jest w żaden sposób związany z robotem, nie jest w szczególności jego końcówką |
| 28 | 2 | Dawid Seredyński | * W RVIZ wykorzystujemy marker pose i ustawiamy shape jako axes |
| 29 | 2 | Dawid Seredyński | * Wiadomość wysyłana do RVIZ jest typu PoseStamped z pakietu geometry_msgs |
| 30 | 2 | Dawid Seredyński | * W wersji podstawowej koncentrujemy się na interpolacji położenia przyjmując stałą orientację. |
| 31 | 2 | Dawid Seredyński | * W wersji rozszerzone interpolujemy też orientację, |
| 32 | 2 | Dawid Seredyński | * Rozkaz dla węzła oint jest przesyłany w service oint_control_srv z konsoli bądź dedykowanego węzła ocmd |
| 33 | 2 | Dawid Seredyński | * Wizualizujemy działanie systemu w RVIZ, nanosząc na scenę przykładową trajektorię, po której poruszał się układ. |
| 34 | 2 | Dawid Seredyński | * W ramach repozytorium na serwerze GitHub z własnym pakietem dodajemy wiki z opisem plików źródłowych, instrukcją jak uruchomić system opisany w pliku roslaunch oraz przebiegiem testów. |
| 35 | 2 | Dawid Seredyński | * Uczulam na właściwe udokumentowanie struktury systemu z oznaczeniem, gdzie są tematy, a gdzie zdalne wywoływanie procedur. |
| 36 | 2 | Dawid Seredyński | * Testy powinny zawierać przebiegi zmiennych z poszczególnych tematów. W szczególności istotna jest ciągłość przebiegów wyjść interpolatorów trajektorii. |
| 37 | 2 | Dawid Seredyński | * Podczas pracy z systemem właściwe jest wydzielenie pliku roslaunch, który będzie uruchamiany jako pierwszy w dedykowanej konsoli włączając roscore oraz RVIZ. Ta część systemu zasadniczo nie powinna być wyłączana, o ile nie jest modyfikowany plik URDF. |
| 38 | 2 | Dawid Seredyński | * Pozostała część systemu sterowania powinna być uruchamiana w oddzielnym pliku roslaunch. |
| 39 | 2 | Dawid Seredyński | * Test the system and show it to the tutor. |