diff --git a/lab04/README.md b/lab04/README.md index eaa2e8e9839405530a3c795f9998cd6f59021218..330bafb7cf2ab2e0ec452a677aea454d23ea1575 100644 --- a/lab04/README.md +++ b/lab04/README.md @@ -61,7 +61,7 @@ W dowolnej chwili moĹźemy sprawdziÄ aktualne przesuniÄcie (transformacje) pomi rosrun tf tf_echo <nazwa ukĹadu wspĂłĹrzÄdnych> <nazwa ukĹadu wspĂłĹrzÄdnych> ``` -@@@@@@@@@@ +  @@ -71,7 +71,9 @@ Program tf co sekundÄ pokazuje nam odlegĹoĹÄ i zmianÄ orientacji pomiÄdzy **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. ----------- - + +# Odometria + PrzechodzÄ c do pojazdĂłw, standardowa struktura ukĹadĂłw wspĂłĹrzÄdnych i ich nazewnictwo przedstawia siÄ nastÄpujÄ co:  @@ -116,15 +118,20 @@ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch PrzejdĹş do programu RVIZ, zmieĹ ustawienie widoku na **ThirdPersonFollower**, zbliĹź kamerÄ do robota. WĹÄ cz wizualizacjÄ TF i wĹÄ cz widocznoĹÄ tylko nastÄpujÄ cych ukĹadĂłw **base_link**, **base_scan**, **base_link**, **wheel_right_link**, **wheel_left_link**, **odom**. Zmniejsz rozmiar zwizualizowanych ukĹadĂłw wspĂłĹrzÄdnych "Marker scale", tak aby nie przysĹaniaĹy modelu robota. -@@@@@@@@@ + **Zadanie 5:** Podejrzyj co dzieje siÄ na topicu **/odom**. ObserwujÄ c robota jak i topic **/odom** przejedĹş okoĹo 1 m do przodu symulowanym robotem. **Zadanie 6:** ZmieĹ staĹy ukĹad wspĂłĹrzÄdnych "Fixed Frame" z **odom** na **base_scan**. PrzejedĹş ponownie robotem jakÄ Ĺ odlegĹoĹÄ w dowolnym kierunku. Jak teraz prezentowane sÄ dane w programie RVIZ? -@@@@ TU jeszcze pokazaÄ jak ukĹady przeskakujÄ @@@@@ +Podczas tworzenia mapy 3d na laboratorium nr 3 mogĹeĹ doĹwiadczyÄ dopasowywania ukĹadu wspĂłĹrzÄdnych **odom** do **map**. MoĹźesz ponieĹźej zobaczyÄ odpowiadajÄ cy temu fragment mapowania. W poczÄ tkowej fazie widzimy jak jedna ze Ĺcian korytarza zbiega siÄ do drugiej, tak jakby korytaĹź siÄ zwÄrzaĹ. Na kamerze moĹźemy zobaczyÄ, Ĺźe algorytm widzi tylko jednÄ Ĺciane. W momencie gdy na obrazie pojawiajÄ siÄ obie, algorytm uznaje, Ĺźe znajduje siÄ w poczÄ tkowej pozycji i naprawia mapÄ. Tym samym zmieniajÄ c transformacjÄ pomiÄdzy mapÄ , a odometriÄ . Później kamery caĹy czas widzÄ znajomÄ przestrzeĹ, dlatego caĹy czas prĂłbujÄ dopasowaÄ swojÄ pozycjÄ i mapÄ, co skrutkuje skakaniem ukĹadu wspĂłĹrzÄdnych **t265_odom_frame** + + ------ + +# Orientacja +  OprĂłcz pozycji czÄsto potrzebujemy rĂłwnieĹź orientacji robota. OrientacjÄ w trzech osiach moĹźemy uzyskaÄ dziÄki Ĺźyroskopowi, akcelerometrowi i magnetometrowi. Magnetometr jest bardzo podatny na zakĹĂłcenia, szczegĂłlnie w pomieszczeniach i wymaga dobrej kalibracji, aby dziaĹaĹ poprawnie. Z tego powodu zwykle uĹźywa siÄ jedynie Ĺźyroskopu i akcelerometru. Akcelerometr pozwala nam wyliczyÄ dokĹadny kÄ t Pitch i Roll na podstawie wektora grawitacji jednak tylko przy wolniejszych zmianach. DziÄki Ĺźyroskopowi jesteĹmy w stanie natomiast nadÄ ĹźaÄ, za szybkimi zmianami jednak wyliczanie orientacji na jego podstawie polega na caĹkowaniu prÄdkoĹci kÄ towych w kaĹźdej osi, co skutkuje ciÄ gle narastajÄ cym bĹÄdem. ĹÄ czÄ c dane z akcelerometru i Ĺźyroskopu moĹźemy ĹledziÄ szybkie zmiany orientacji, a zarazem zniwelowaÄ narastajÄ ce bĹÄdy dziÄki wektorowi grawitacji, ale niestety odnosi siÄ to tylko do kÄ tĂłw Roll i Pitch, poniewaĹź obrĂłt w osi Z (kÄ t Yaw) nie wpĹywa na odczyt wektora grawitacji. Z tego powodu kÄ t Yaw uzyskuje siÄ jedynie z Ĺźyroskopu i jest on obarczony narastajÄ cym bĹÄdem. Aby zniwelowaÄ ten bĹÄ d uĹźywa siÄ magnetometru, ktĂłry wskazuje biegun magnetyczny ziemi. MoĹźna rĂłwnieĹź wykorzystaÄ inne metody okreĹlania kÄ ta Yaw, jak np. uĹźycie dwĂłch odbiornikĂłw GPS zamontowanych na dwĂłch kraĹcach pojazdu. @@ -153,12 +160,12 @@ Najpierw rozpoczniemy pracÄ od programu QGroundControl. Zwykle uĹźywa siÄ go p Uruchom program QGroundControl ZnajdujÄ cy siÄ na pulpicie komputera zdalnego. -@@@@@@@ + Najpierw program ĹÄ czy siÄ z kontrolerem Pixhawk i ĹciÄ ga jego aktualnÄ konfiguracjÄ. W naszym przypadku uzyskamy komunikat, iĹź pojazd jest nie zdolny do dziaĹania, poniewaĹź nie zostaĹy podĹÄ czone kluczowe komponenty. Do prawidĹowego dziaĹania potrzebne jest zdalne poĹÄ czenie przez Radio RC oraz GPS. PrzejdĹş do widoku mapy. -@@@@@@ + JeĹli mielibyĹmy podĹÄ czony GPS, wiedzielibyĹmy aktualnÄ pozycjÄ naszego pojazdu. W prawym gĂłrnym rogu moĹźna zauwaĹźyÄ kilka podstawowych parametrĂłw jak orientacja w trzech osiach, wysokoĹÄ, prÄdkoĹÄ czy czas lotu. @@ -169,7 +176,7 @@ MoĹźemy teĹź dodaÄ szybki podglÄ d dowolnego parametru klikajÄ c na koĹo zÄba Parametry moĹźemy rĂłwnieĹź wyĹwietlaÄ w formie wykresĂłw, przechodzÄ c do zakĹadki Analyze -@@@@@@@@ + Po dodaniu Parametru do wykresu moĹźemy zauwaĹźyÄ, Ĺźe jego zmiany sÄ bardzo skokowe. Jest to spowodowane maĹÄ czÄstotliwoĹciÄ wysyĹania tego parametry przez kontroler. AktualnÄ czÄstotliwoĹÄ odĹwieĹźania moĹźemy zobaczyÄ po lewej stronie przy nazwie grupy parametrĂłw. @@ -178,16 +185,17 @@ Po dodaniu Parametru do wykresu moĹźemy zauwaĹźyÄ, Ĺźe jego zmiany sÄ bardzo s CzÄstotliwoĹÄ odĹwieĹźania moĹźemy w ustawieniach w zakĹadce MAVLink: -@@@@@@@@ + (JeĹli jest wyĹÄ czony to uruchom wiatrak na stronie zarzÄ dzania niniejszym laboratorium [link](), aby moduĹy zaczÄĹy siÄ poruszaÄ) **Zadanie 8:** WyĹwietl na wykresie trzy prÄdkoĹci kÄ towe (xgyro, ygyro, zgyro) i zaobserwuj jak wyglÄ dajÄ wskazania przed zmianÄ i po zmianie czÄstotliwoĹci odĹwieĹźania. -Ostatnim waĹźnym aspektem moĹźliwoĹÄ programu QGroundControl jest moĹźliwoĹÄ konfiguracji ustawieĹ pojazdu. PoniĹźej zaprezentowano zmianÄ parametru opisujÄ cego typ uĹźywanych silnikĂłw. **UmiejÄtnoĹÄ konfiguracji pojazdu bÄdzie prawdopodobnie niezbÄdna przy realizacji zadaĹ projektowych.** +Ostatnim waĹźnym aspektem moĹźliwoĹÄ programu QGroundControl jest moĹźliwoĹÄ konfiguracji ustawieĹ pojazdu. PoniĹźej zaprezentowano zmianÄ parametru opisujÄ cego typ uĹźywanych sterownikĂłw silnikĂłw **MOT_PWM_TYPE**. **UmiejÄtnoĹÄ konfiguracji pojazdu bÄdzie prawdopodobnie niezbÄdna przy realizacji zadaĹ projektowych.** + -@@@@@@@@@ + Zamknij program QGroundControl @@ -234,7 +242,7 @@ To co pojawia siÄ przy kaĹźdym podĹÄ czeniu nowego urzÄ dzenia do komputera to Po uruchomieniu stworzonego pliku powinno pojawiÄ siÄ wiele topicĂłw udostÄpnionych przez mavros z danymi z naszego kontrolera. Wszystkie sÄ opisane w [dokumntacji](http://wiki.ros.org/mavros). -@@@@@@@ + PosiadajÄ c dostÄp do danych moĹźemy zajÄ Ä siÄ przedmiotem tego Äwiczenia, czyli obliczeniem orientacji naszego kontrolera, a potencjalnie robota/pojazdu. Po pierwsze potrzebne sÄ nam dane z Ĺźyroskopu i akcelerometru. SÄ one dostÄpne na topicu **/mavros/imu/data_raw**. WiadomoĹci na tym topicu sÄ typu [sensor_msgs/Imu](http://docs.ros.org/en/melodic/api/sensor_msgs/html/msg/Imu.html) i standardowo zawierajÄ orientacjÄ (w tym przypadku jej niema poniewaĹź sÄ wysyĹane na tym topicu tylko dane z Ĺźyroskopu i akcelerowmetru), przyspieszenia liniowe w trzech osiach oraz prÄdkoĹci kÄ towe w trzech osiach. @@ -245,7 +253,7 @@ Przy przetwarzaniu tego typu danych waĹźna jest czÄstotliwoĹÄ publikowania da ```bash rostopic hz <nazwa topicu> ``` -@@@@@ + SprawdĹş jak czÄsto pojawiajÄ siÄ wiadomoĹci na tym topicu. DomyĹlnie dane wysyĹane sÄ z czÄstotliwoĹciÄ 2 Hz. Aby algorytm okreĹlajÄ cy dziaĹaĹ poprawnie potrzebujemy danych znacznie czÄĹciej. IdeaĹem byĹyby informacje dostarczane z czÄstotliwoĹciÄ 200 Hz lub wyĹźszÄ . Wtedy Ĺledzenie orientacji byĹoby bardzo pĹynne i pojawiaĹyby siÄ mniejsze bĹÄdy. Pixhawk, z domyĹlnym firmwarem ardupilot rover jest w stanie wysyĹaÄ dane z sensorĂłw z maksymalnÄ czÄstotliwoĹciÄ ok 40 Hz. Nie jest to wartoĹÄ idealna jednak juĹź wystarczajÄ ca, aby wyznacza orientacja byĹa uĹźyteczna. @@ -260,7 +268,6 @@ Aby zmieniÄ czÄstotliwoĹÄ wysyĹania surowych danych z sensorĂłw musimy uĹźy ```bash rosrun mavros mavsys rate --raw-sensors 40 ``` -@@@@@@ **Zadanie 10:** ZmieĹ czÄstotliwoĹÄ wysyĹania danych z sensorĂłw i sprawdĹş komendÄ ```rostopic hz```, czy dane rzeczywiĹcie przychodzÄ czÄĹciej. @@ -287,7 +294,7 @@ W powyĹźszym pliku pojawiajÄ siÄ dwie nowe informacje. Po pierwsze moĹźliwy je Po uruchomieniu pliku launch na topicu **/imu/data** powinny pojawiÄ siÄ dane tym razem wzbogacone o orientacje. Pakiet imu_tools dostarcza rĂłwnieĹź plugin rozszerzajÄ cy moĹźliwoĹÄ programu RVIZ o wyĹwietlanie orientacji obiektu. -@@@@@@ + **Zadanie 11:** Uruchom filtr madgwicka plikiem launch z pakietu **laboratorium_pliki_dodatkowe** i uruchom wizualizacje w programie RVIZ. diff --git a/lab04/img/mavros_hz.gif b/lab04/img/mavros_hz.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0baa8c1fdfb782b4c1ca8ef0e8145c9c3df91de Binary files /dev/null and b/lab04/img/mavros_hz.gif differ diff --git a/lab04/img/mavros_list.gif b/lab04/img/mavros_list.gif new file mode 100644 index 0000000000000000000000000000000000000000..6b5ce75203df64bbd7a3755d7c76e2521ecdc763 Binary files /dev/null and b/lab04/img/mavros_list.gif differ diff --git a/lab04/img/mavros_mad_wiz.gif b/lab04/img/mavros_mad_wiz.gif new file mode 100644 index 0000000000000000000000000000000000000000..b8e3b9d613d4be0b2482009c186133196591b285 Binary files /dev/null and b/lab04/img/mavros_mad_wiz.gif differ diff --git a/lab04/img/qgroundcontrol.gif b/lab04/img/qgroundcontrol.gif new file mode 100644 index 0000000000000000000000000000000000000000..5408aab514df12a054859fac0094a6db4d299fdb Binary files /dev/null and b/lab04/img/qgroundcontrol.gif differ diff --git a/lab04/img/qgroundcontrol_hz.gif b/lab04/img/qgroundcontrol_hz.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1219ae51be08826d9de1fcdb8b182a3cb936f84 Binary files /dev/null and b/lab04/img/qgroundcontrol_hz.gif differ diff --git a/lab04/img/qgroundcontrol_param.gif b/lab04/img/qgroundcontrol_param.gif new file mode 100644 index 0000000000000000000000000000000000000000..07852e5445c24443b41170a2790cfb97bee840f6 Binary files /dev/null and b/lab04/img/qgroundcontrol_param.gif differ diff --git a/lab04/img/qgroundcontrol_plot.gif b/lab04/img/qgroundcontrol_plot.gif new file mode 100644 index 0000000000000000000000000000000000000000..7756ad054b5e4955ead1b96e194859e93cd3939a Binary files /dev/null and b/lab04/img/qgroundcontrol_plot.gif differ diff --git a/lab04/img/sim_rviz_setup.gif b/lab04/img/sim_rviz_setup.gif new file mode 100644 index 0000000000000000000000000000000000000000..daf01e3b2bc42990ae535782144cb820aa2c3082 Binary files /dev/null and b/lab04/img/sim_rviz_setup.gif differ diff --git a/lab04/img/tf_echo.gif b/lab04/img/tf_echo.gif new file mode 100644 index 0000000000000000000000000000000000000000..b17dad4c29819cbee95ba45a91fc6bb11c165de2 Binary files /dev/null and b/lab04/img/tf_echo.gif differ