Lab4 » Historia » Wersja 2
Wersja 1 (Dawid Seredyński, 2018-06-13 17:24) → Wersja 2/9 (Dawid Seredyński, 2018-06-13 17:26)
Lab 4: Interpolation of motion
h2. Scope:
This laboratory consist of two parts:
* A short introduction.
* Writing your own ROS package.
h2. The task:
*
Rozwijamy system z poprzedniego laboratorium rozszerzając istniejący już pakiet albo dokładając nowy.
*
Tworzymy węzeł jint interpolujący trajektorię w przestrzeni konfiguracyjnej
*
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.
*
węzeł jint ma przyjmować położenia zadane stawów wraz z innymi koniecznymi parametrami (np. czasem ruchu)
*
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).
*
Zdalnie wywoływaną procedurę można wywołać z konsoli bądź specjalnie utworzonego węzła jcmd.
*
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
*
w wersji podstawowej stosujemy interpolację liniową,
*
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.
*
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.
*
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
Testujemy system and show it to the tutor. i przedstawiamy prowadzącemu do oceny.
h2. Scope:
This laboratory consist of two parts:
* A short introduction.
* Writing your own ROS package.
h2. The task:
*
Rozwijamy system z poprzedniego laboratorium rozszerzając istniejący już pakiet albo dokładając nowy.
*
Tworzymy węzeł jint interpolujący trajektorię w przestrzeni konfiguracyjnej
*
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.
*
węzeł jint ma przyjmować położenia zadane stawów wraz z innymi koniecznymi parametrami (np. czasem ruchu)
*
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).
*
Zdalnie wywoływaną procedurę można wywołać z konsoli bądź specjalnie utworzonego węzła jcmd.
*
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
*
w wersji podstawowej stosujemy interpolację liniową,
*
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.
*
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.
*
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
Testujemy system and show it to the tutor. i przedstawiamy prowadzącemu do oceny.