Lab03-Stereo

Nowoczesne Sensory w Robotyce

Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej

Laboratorium 3: Stereo-wizja

Powrót do wyboru zajęć ## Ważne uwagi organizacyjne

Ze sprzętem laboratoryjnym należy obchodzić się ostrożnie. Nie odłączać kabli sieciowych od komputerów.

Cel zajęć

Celem zajęć jest uruchomienie narzędzia kalibr służącego do kalibracji kamer. # Kalibr

Kalibr jest narzędziem do kalibracji kamery i IMU, które pozwala na dokładne określenie parametrów wewnętrznych i zewnętrznych kamery oraz IMU. Kalibracja za pomocą tego narzędzia jest bardziej zaawansowana niż kalibracja za pomocą camera_calibration, ale pozwala na uzyskanie bardziej dokładnych wyników. Na przykład można się powoływac na tą metodę kalibracji w publikacjach naukowych.

Dzisiaj skupimy się na kalibracji samej kamery, bez wykorzystania IMU.

Sam Kalibr został przygotowany do pracy z ROS 1, dlatego użyjemy dockera. Proszę zapoznać się z instrukcja.

TLDR;
W celu utworzenia obszaru roboczego, należy utworzyć katalog <your_workspace> i sklonować repozytorium kalibr:

mkdir -p <your_workspace>
cd <your_workspace>
git clone https://github.com/ethz-asl/kalibr.git
cd kalibr
docker build -t kalibr -f Dockerfile_ros1_20_04 .

Następnie, należy uruchomić kontener Docker z odpowiednimi uprawnieniami do wyświetlania grafiki:

xhost +local:root
docker run -it -e "DISPLAY" -e "QT_X11_NO_MITSHM=1" \
    -v "/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    -v "${PWD}:/data" kalibr

Proszę zwrócić uwagę na to, że folder w któym się znajdujemy zostanie zamontowany w kontenerze pod ścieżką /data. Pomoże nam to łatwo przenosić dane do kalibracji do kontenera.

Z racji, że nasze dane zostały zebrane w formacie kompatybilnym z ROS 2, musimy je przekonwertować do formatu kompatybilnego z ROS 1. Tutaj znajdą Państwo instrukcję jak to zrobić. W tym celu w kontenerze utworzonym podczas instalacji Kalibr, należy uruchomić następujące polecenie:

pip3 install rosbags>=0.9.12
rosbags-convert <ros2_bag_folder> --dst ros_bag_name.bag

Następnie proszę utworzyć plik z informacjami o markerze, na przykład aprilgrid.yaml Tutaj znajdują się informacje o tym jak powinien wyglądać taki plik. Nasza plansza miała 6 rzędów i 6 kolumn. Rozmiar kwadratu to 55 mm. Natomiast odstęp między kwadratami wynosi 17 mm.

W celu kalibracji proszę zapoznać się z dokumentacją.

rosrun kalibr kalibr_calibrate_cameras \
    --target aprilgrid.yaml \
    --models pinhole-radtan pinhole-radtan \
    --topics /your_topic1 /your_topic2 \
    --bag <your_name>.bag \
    --approx-sync 0.04
Z racji, że jest to kalibracja stereo, ważne jest, aby obrazy z obu kamer były zsynchronizowane i czasowo. W tym celu używamy opcji --approx-sync, która pozwala na synchronizację obrazów z obu kamer z pewnym marginesem błędu (w tym przypadku 0.04 sekundy).

Zadanie

  1. Proszę pobrać dane do kalibracji, następnie przekonwertować je do formatu ROS 1.
  2. Dokonać kalibracji dwóch kamer za pomocą narzędzia kalibr.
  3. Proszę wrzucić na eKursy plik .pdf z wynikami kalibracji.

Kalibracja nie jest procesem deterministycznym, dlatego wyniki będą się różnić.

Dodatkowe zadanie

  1. Proszę porównać wyniki kalibracji uzyskane za pomocą kalibr z wynikami uzyskanymi za pomocą camera_calibration.
  2. W tym celu proszę zebrać dane do kalibracji i dokonać kalibracji za pomocą camera_calibration, tak jak tydzień temu. Następnie dokonać kalibracji za pomocą kalibr i porównać wyniki.