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
- Proszę pobrać dane do kalibracji, następnie przekonwertować je do formatu ROS 1.
- Dokonać kalibracji dwóch kamer za pomocą narzędzia
kalibr. - Proszę wrzucić na eKursy plik .pdf z wynikami kalibracji.
Kalibracja nie jest procesem deterministycznym, dlatego wyniki będą się różnić.
Dodatkowe zadanie
- Proszę porównać wyniki kalibracji uzyskane za pomocą
kalibrz wynikami uzyskanymi za pomocącamera_calibration. - 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ąkalibri porównać wyniki.