Projekt

Ogólne

Profil

Lab4 » Historia » Wersja 4

Wersja 3 (Dawid Seredyński, 2018-06-13 17:27) → Wersja 4/9 (Dawid Seredyński, 2018-06-13 17:45)

h1. Lab 4: Interpolation of motion

h2. Scope:

This laboratory consist of two parts:

* A short introduction.
* Writing your own ROS package.

h2. The task:

* Develop the Rozwijamy system from the previous laboratory by either copying the package or modyfying it. z poprzedniego laboratorium rozszerzając istniejący już pakiet albo dokładając nowy.
* Create ROS node Tworzymy węzeł jint that interpolates trajectory in configuration space. interpolujący trajektorię w przestrzeni konfiguracyjnej

* The node uses ROS Węzeł jint obsługuje zdalnie wywoływaną procedurę, dla której należy utworzyć dedykowany service (Remote Procedure Call - RPC) of type jint_control_srv. You should create this service type. jint_control_srv określający struktury wykorzystywane do komunikacji.

* The node węzeł jint gets desired joint position and other required parameters (e.g. duration) as input. ma przyjmować położenia zadane stawów wraz z innymi koniecznymi parametrami (np. czasem ruchu)
* The node answers interpolation W odpowiedzi na rozkaz węzeł określa status that can be sent after the interpolation is complete or immediately, if there are errors in the input parameters (e.g. zero or negative duration). 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).
* The RPC can be executed directly from terminal or by a dedicated node Zdalnie wywoływaną procedurę można wywołać z konsoli bądź specjalnie utworzonego węzła jcmd.
* After reception of valid command, the node Po otrzymaniu poprawnego rozkazu węzeł jint publishes interpolated positions on ROS topic and sends it to publikuje kolejne położenie uzyskane z interpolacji ruchu na topiku i przesyła je do węzła robot_state_publiher node.


* At first, use linear interpolation. w wersji podstawowej stosujemy interpolację liniową,
* Next, add more sophisticated method, e.g. trapezoid velocity profile or spline interpolation (please refer to: https://en.wikipedia.org/wiki/Spline_interpolation#Algorithm_to_find_the_interpolating_cubic_spline). You can assume zero velocity at the begining and at the end of motion. 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.
* All interpolation modes should be implemented in one ROS node and can be selected in jint_control_srv. 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.
* Visualize behavior of the system in RVIZ. Visualize the followed trajectory. Wizualizujemy działanie systemu w RVIZ, nanosząc na scenę przykładową trajektorię, po której poruszał się robot.

* Tworzymy analogiczny węzeł oint, który wygeneruje, poprzez interpolację, pozycje pewnego układu w przestrzeni operacyjnej (Kartezjańskiej)
* 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ą
* W RVIZ wykorzystujemy marker pose i ustawiamy shape jako axes
* Wiadomość wysyłana do RVIZ jest typu PoseStamped z pakietu geometry_msgs
* W wersji podstawowej koncentrujemy się na interpolacji położenia przyjmując stałą orientację.
* W wersji rozszerzone interpolujemy też orientację,
* Rozkaz dla węzła oint jest przesyłany w service oint_control_srv z konsoli bądź dedykowanego węzła ocmd
* Wizualizujemy działanie systemu w RVIZ, nanosząc na scenę przykładową trajektorię, po której poruszał się układ.
* 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.
* Uczulam na właściwe udokumentowanie struktury systemu z oznaczeniem, gdzie są tematy, a gdzie zdalne wywoływanie procedur.
* 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.
* 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.
* Pozostała część systemu sterowania powinna być uruchamiana w oddzielnym pliku roslaunch.
* Test the system and show it to the tutor.