diff --git a/README.md b/README.md index a2873aa2cd4f16986a6b39a6f75ca05dd18e83c8..dda75812c8a77ce8fe64a3a5cdc6afcb031e8b47 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Podsystemy platform bezzaĹogowych -Celem tego laboratorium jest zaznajomienie z oprogramowaniem oraz sprzÄtem wykorzystywanym przy tworzeniu robotĂłw. Laboratorium podzielone zostaĹo na 4 bloki tematyczne, ktĂłre skupiajÄ siÄ na waĹźnych aspektach +Celem tego laboratorium jest zaznajomienie z oprogramowaniem oraz sprzÄtem wykorzystywanym przy tworzeniu robotĂłw. Laboratorium podzielone zostaĹo na 4 bloki tematyczne, ktĂłre skupiajÄ siÄ na waĹźnych aspektach zagadnieĹ zwiÄ zanych z platformami bezzaĹogowymi. ## Laboratorium 0 **Opis**: W tym Äwiczeniu naleĹźy na swoim komputerze zainstalowaÄ Ĺrodowisko Visual Studio Code oraz program NoMachine, ktĂłre bÄdÄ podstawowymi narzÄdziemi do zdalnej pracy na komputerze jednoukĹadowym z zainstalowanym Ĺrodowiskiem Linux. diff --git a/lab04/README.md b/lab04/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6c5f90e1768114bcf48bf0e910205145d76b545c --- /dev/null +++ b/lab04/README.md @@ -0,0 +1,75 @@ +# Przygotowanie przestrzeni roboczej +PoĹÄ cz siÄ ze zdalnym Ĺrodowiskiem i ĹciÄ gnij swoje repozytorium do przestrzeni roboczej catkin_ws. + + +# Transformacje pomiÄdzy ukĹadami wspĂłĹrzÄdnych +Przed przystapieniem do omawiania nawigacji waĹźnym jest aby rozumieÄ jak wiele ukĹadĂłw wspĂłĹrzÄdnych znajduje siÄ w platformie robotycznej, jak sÄ one ze sobÄ poĹÄ czone oraz jak okreĹlaÄ poĹoĹźenie i orientacje wzglÄdem poszczegĂłlnych ukĹadĂłw wspĂłĹrzÄdnych. + +DziaĹanie zaleĹźnoĹci pomiÄdzy ukĹadami wspĂłĹrzÄdnych zostanie zwizualizowane na przykĹadzie manipulatora o 5 stopniach swobody. + + + +W systemie ROS moĹźemy wizualizowaÄ roboty i elementy Ĺrodowiska przy pomocy opisu URDF. Na niniejszym laboratorium jednak nie zostanie on wyjaĹniony. JeĹli chcesz dowiedzieÄ jak tworzy siÄ pliki URDF i jak stworzyÄ model wĹasnego robota, to tu znajdziesz wiÄcej informacji [link](http://wiki.ros.org/urdf/Tutorials) (tutorial opisuje jak stworzyÄ prosty model robota R2D2). + +W skrĂłcie pliki URDF pozwalajÄ opisaÄ jak zĹoĹźony jest robot. Z jakich zĹoĹźony jest elementĂłw i jak sÄ one poĹÄ czone ze sobÄ . + +Aby uruchomiÄ naszÄ wizualizacjÄ potrzebujemy pliku launch. + +```xml +<launch> + <param name="robot_description" command="$(find xacro)/xacro.py '$(find katana_description)/urdf/katana_300_6m180.urdf.xacro'" /> + <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher"> + </node> + + <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"> + <param name="ignore_timestamp" value="false"/> + </node> + + <node pkg="tf" type="static_transform_publisher" name="katana_base_link_to_box" args="0 0.5 0 0 0 0 /katana_base_link /box 100"/> +</launch> +``` +ZostaĹ on juĹź stworzony w pakiecie "laboratorium_pliki_dodatkowe". + +Po pierwsze musimy zaĹadowaÄ opis naszego robota jako parametr pod nazwÄ **robot_description**. + +NastÄpnie uruchamiamy trzy node'y. Pierwszy odpowaiada za publikowanie stanu poszczegĂłlnych przegubĂłw robota. Po uruchomieniu zobaczysz okno z interfejsem, ktĂłry pozwoli na zmianÄ pozycji poszczegĂłlnych przegubĂłw robota. JeĹli posiadalibyĹmy prawdziwego robota, ktĂłrego chcielibyĹmy wizualizowaÄ, wtedy jego sterownik publikowaĹby aktualne stany poszczegĂłlnych przegubĂłw. + +Kolejny node na podstawie pliku urdf oraz danych publikowanych przez **joint_state_publisher** uaktualnia pozycje wizualizowanych elementĂłw robota. + +Ostatni node **static_transform_publisher** publikuje staĹe przeksztaĹcenie (odsuniÄcie o 0.5 m w osi y) pomiÄdzy ukĹadem wspĂłĹrzÄdnych **katana_base_link**, a **box**. Ma on symulowaÄ poĹoĹźenie przykĹadowego elementu i posĹuĹźy do lepszego wyjaĹnienia omawianego zagadnienia. + +Uruchom plik launch **wizualizacja_urdf** z paketu **laboratorium_pliki_dodatkowe**. NastÄpnie uruchom program RVIZ i dodaj wizualizacje modelu robota, tf oraz zmieĹ staĹy ukĹad wspĂłĹrzÄdnych na **katana_base_link**. + +@@@@@@ + + +**Zadanie 1:** Przy pomocy **joint_state_publisher** obrĂłÄ poszczegĂłlne przeguby robota i zobacz jak zmienia siÄ wizualizacja. ZmieĹ staĹy ukĹad wspĂłĹrzÄdnych (Fixed frame) na wybrany ukĹad zaczynajÄ cy siÄ od nazwy **katana_motor**. SprawdĹş jak teraz zmienia siÄ wizualizacja przy ruchach przegubĂłw. + + + + +Jak widaÄ robot zĹoĹźony jest z wielu ukĹadĂłw wspĂłĹrzÄdnych poĹÄ czonych ze sobÄ . KaĹźdy kolejny ukĹad wspĂłĹrzÄdnych jest zaczepiony w poprzednim i wzglÄdem niego jest ukreĹlana jego pozycja. Taki sposĂłb organizacji wszystkich ukĹadĂłw wspĂłĹrzÄdnych pozwala nam w Ĺatwy sposĂłb wyliczyÄ, gdzie np. znajduje siÄ koĹcĂłwka robota wzglÄdem podstawy lub dowolnego innego obiektu np. pudeĹka o ukĹadnie wspĂłĹrzÄdnych **box**. Wszystkie poĹÄ czenia pomiÄdzy ukĹadami wspĂłĹrzÄdnych sÄ zorganizowane w postaci struktury drzewa. AktualnÄ strukturÄ moĹźemy zobaczyÄ przy pomocy narzÄdzia rqt i TF Tree. + +**Zadanie 2:** Uruchom program rqt przy pomocy komendy ``` rqt ``` w terminalu. NastÄpnie wĹÄ cz wizualizacje TF Tree (Plugins -> Visualization -> TF Tree). + +Po uruchomieniu TF Tree moĹźesz zobaczyÄ jak caĹa struktura jest zorgranizowana. Dodatkowo, dziÄki temu narzÄdziu moĹźemy sprawdziÄ czy na pewno wszystko jest ze sobÄ poĹÄ czone. JeĹli ktĂłryĹ z elementĂłw nie bÄdzie poĹÄ czony z resztÄ to dane z takiego elementu nie mogÄ byÄ odniesione do innych np. jeĹli nie wprowadzimy jak zamontowany jest lidar na robocie to bÄdziemy wiedzieÄ jak dalego znajduje siÄ przeszkoda od lidaru, ale nie bÄdziemy wiedzieÄ jak blisko znajduje siÄ od np. przedniego zderzaka robota. + + + +W dowolnej chwili moĹźemy sprawdziÄ aktualne przesuniÄcie (transformacje) pomiÄdzy dwoma dowolnymi ukĹadami wspĂłĹrzÄdnych. MoĹźomy to zrobiÄ przy pomocy komendy: +```bash +rosrun tf tf_echo <nazwa ukĹadu wspĂłĹrzÄdnych> <nazwa ukĹadu wspĂłĹrzÄdnych> +``` + +@@@@@@@@@@ + + + +Program tf co sekundÄ pokazuje nam odlegĹoĹÄ i zmianÄ orinetacji pomiÄdzy dwoma ukĹadami wspĂłĹrzÄdnych. PrzesuniÄcie okreĹlone jest kolejno w osiach X,Y,Z. Natomiast zmiana orientacji podana jest w trzech róşnych jednostkach. + + +**Zadanie 3:** Uruchom tf_echo pomiÄdzy ukĹadami wspĂłĹrzÄdnych **katana_gripper_tool_frame** i **box**, a nastÄpnie ustaw koĹcĂłwkÄ robota na tyle blisko ukĹadu wspĂłĹrzÄdnych **box**, aby odlegĹoĹÄ w Ĺźadnej osi nie przekraczaĹa 0.2 m. + + + + diff --git a/lab04/img/README.md b/lab04/img/README.md deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/lab04/img/model_katana.png b/lab04/img/model_katana.png new file mode 100644 index 0000000000000000000000000000000000000000..32bc91b9f9a4f495bef6d4bc1bf4117764e5be4c Binary files /dev/null and b/lab04/img/model_katana.png differ diff --git a/lab04/img/model_tf.png b/lab04/img/model_tf.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c9ff05f0f66bec9623b5a0bea5edb8b012bb24 Binary files /dev/null and b/lab04/img/model_tf.png differ diff --git a/lab04/img/tf_echo.png b/lab04/img/tf_echo.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed645d04dd3d14300bbd7facbadeb9fc591985c Binary files /dev/null and b/lab04/img/tf_echo.png differ diff --git a/lab04/img/tf_tree.png b/lab04/img/tf_tree.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f9b3aa62a3def519168aa152fac3f49539c1f3 Binary files /dev/null and b/lab04/img/tf_tree.png differ