diff --git a/lab04/README.md b/lab04/README.md
index 3a954d5e007b80ba09f35034f441ceedea1a4ec7..7a1ced05167c0cc465a80f31d6b193af2e012d4b 100644
--- a/lab04/README.md
+++ b/lab04/README.md
@@ -3,13 +3,13 @@ Połącz się ze zdalnym środowiskiem i ściągnij swoje repozytorium do przest
  
  
 # Transformacje pomiędzy układami współrzędnych
-Przed przystąpieniem 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 orientację względem poszczególnych układów współrzędnych. 
+Przed przystąpieniem 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 orientację 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. 
  
 ![model_katana](img/model_katana.png "model_katana")
  
-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 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 składa się elementów i jak są one połączone ze sobą. 
  
@@ -43,7 +43,7 @@ Uruchom plik launch **wizualizacja_urdf** z paketu **laboratorium_pliki_dodatkow
 ![urdf_rviz](img/urdf_rviz.gif "urdf_rviz")
  
  
-**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. 
+**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. 
  
  
 ![model_tf](img/model_tf.png "model_tf")
@@ -114,7 +114,7 @@ export TURTLEBOT3_MODEL=waffle
 roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
 ```
  
-**Zadanie 4:** Uruchom program rqt i zobacz jak wyglądają zależności pomiędzy układami współrzędnych w tym robocie.
+**Zadanie 4:** Uruchom program rqt i zobacz, jak wyglądają zależności pomiędzy układami współrzędnych w tym robocie.
  
 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**, **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. 
  
@@ -124,7 +124,7 @@ Przejdź do programu RVIZ, zmień ustawienie widoku na **ThirdPersonFollower**,
  
 **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?
  
-Podczas tworzenia mapy 3d na laboratorium nr 3 mogłeś doświadczyć dopasowywania układu współrzędnych **odom** do **map**. Możesz poniżej zobaczyć odpowiadający temu fragment mapowania. W początkowej fazie widzimy jak jedna ze ścian korytarza zbiega się do drugiej, tak jakby korytarz się zwężał. Na kamerze możemy zobaczyć, że algorytm widzi tylko jedną ścianę. 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 skutkuje skakaniem układu współrzędnych **t265_odom_frame** w stosunku do układu **map**
+Podczas tworzenia mapy 3d na laboratorium nr 3 mogłeś doświadczyć dopasowywania układu współrzędnych **odom** do **map**. Możesz poniżej zobaczyć odpowiadający temu fragment mapowania. W początkowej fazie widzimy jak jedna ze ścian korytarza zbiega się do drugiej, tak jakby korytarz się zwężał. Na kamerze możemy zobaczyć, że algorytm widzi tylko jedną ścianę. 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 skutkuje skakaniem układu współrzędnych **t265_odom_frame** w stosunku do układu **map**
  
 ![tf_jumping](img/tf_jumping.gif "tf_jumping")
  
@@ -153,7 +153,7 @@ Na pokładzie pixhawka mamy do dyspozycji żyroskop, akcelerometr, magnetometr o
  
 Aby odczytać dane z kontrolera możemy wykorzystać dwie metody:
 - program stacji bazowej np. [QGroundControl](http://qgroundcontrol.com/) czy [Mission Planner](https://ardupilot.org/planner/). W przypadku systemu Windows zalecam używanie programu Mission Planner, ponieważ posiada on dużo użytecznych funkcjonalności. Niestety jest on dostępny jedynie na systemy Windows, dlatego na potrzeby laboratorium użyjemy QGroundControl. Nie mniej jednak program QGroundControl jest również bardzo użytecznym programem, a zainstalować możemy go nawet na telefonie z systemem Android. 
-- bezpośrednio przy pomocy protokołu mavlink. Tą metodę stosuje się gdy do sterownika podłączamy komputer, który ma nadzorować jego pracę i wydawać mu komendy, tak jak w naszym przypadku. 
+- bezpośrednio przy pomocy protokołu mavlink. Tę metodę stosuje się, gdy do sterownika podłączamy komputer, który ma nadzorować jego pracę i wydawać mu komendy, tak jak w naszym przypadku. 
  
  
 Najpierw rozpoczniemy pracę od programu QGroundControl. Zwykle używa się go przy początkowej konfiguracji pojazdu, a następnie do zdalnego monitorowania autonomicznej misji misji.
@@ -164,7 +164,7 @@ 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. 
+PrzejdĹş do widoku mapy. 
 ![qgroundcontrol_map](img/qgroundcontrol_map.gif "qgroundcontrol_map")
  
 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. 
@@ -188,7 +188,7 @@ Częstotliwość odświeżania możemy w ustawieniach w zakładce MAVLink:
 ![QgroundControl_hz](img/qgroundcontrol_hz.gif "QgroundControl_hz")
  
 (Jeśli jest wyłączony to uruchom wiatrak na stronie zarządzania niniejszym laboratorium [link](http://153.19.49.102:5000) (Zakładka sterowanie. Po włączeniu wiatraka sprawdź na kamerze), aby moduły zaczęły się poruszać. Wyłącz go po zakończeniu ćwiczenia)
-**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. 
+**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. 
  
  
  
@@ -232,7 +232,7 @@ Przykładowy plik launch pozwalający uruchomić połączenie z pixhawkiem wygl
 </launch>
 ```
  
-To co pojawia się przy każdym podłączeniu nowego urządzenia do komputera to konieczność sprawdzenia portu do którego zostało ono przypisane. Sprawdź port do którego został podpięty pixhawk. Nazwa powinna rozpoczynać się od **usb-ArduPilot_fmuv3**.
+To co pojawia się przy każdym podłączeniu nowego urządzenia do komputera to konieczność sprawdzenia portu, do którego zostało ono przypisane. Sprawdź port do którego został podpięty pixhawk. Nazwa powinna rozpoczynać się od **usb-ArduPilot_fmuv3**.
  
 ![ls_pixhawk](img/ls_pixhawk.png "ls_pixhawk")
  
@@ -244,7 +244,7 @@ Po uruchomieniu stworzonego pliku powinno pojawić się wiele topiców udostępn
  
 ![mavros_list](img/mavros_list.gif "mavros_list")
  
-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.
+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 nie ma, 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.
  
 ![imu_mes](img/imu_mes.png "imu_mes")