Lab04-projekcja
Nowoczesne Sensory w Robotyce
Politechnika Poznańska, Instytut Robotyki i Inteligencji Maszynowej
Laboratorium 4: Projekcja
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 zapoznanie się z metodami projekcji obrazów z kamery na płaszczyznę roboczą. Projekcja jest kluczowym etapem w wielu aplikacjach robotycznych, takich jak nawigacja, manipulacja czy rozpoznawanie obiektów. Podczas zajęć uczestnicy nauczą się, jak wykorzystać dane z kamery do określenia pozycji i orientacji obiektów w przestrzeni roboczej.
Przygotowanie środowiskia
Proszę pobrać z eKursu zdjęcie, na którym będziemy operować na dzisiejszych zajęciach. Należy również przygotować plik z wynikami kalibracji kamery, można tu użyć narzędzi poznanych na poprzednich zajęciach (Kalibr). Do wykonania zadań niezbędne będą parametry wewnętrzne kamery (macierz kamery oraz współczynniki dystorsji). Plaszna kalibracyjna ma kwadrat o boku 5 cm. Wielkość planszy proszę podejrzeć uruchamiając Baga i licząc wewnętrzne narożniki.
A tak wyglądał setup podczas wykonywania zdjęcia. Proszę zwrócić uwagę na nieco inny układ osi kamery.
Camera Optical Frame
Jest to dosyć mylące jak już się ustawi wszystkie TF’y i chcemy zobaczyć co się dzieje. A tam nic nie ma. Proszę sobie przypomnieć jak definiowany jest obraz z przedmioty o obrazkach. Oś X jest skierowana w prawo, oś Y jest skierowana w dół, a oś Z jest skierowana do przodu. Dlatego często jak się buduje transformację sensorów naszego robota, tworzy się dodatkowego TF’a, o nazwie “camera_optical_frame”. Wiem, że teraz jest to bardziej ciekawostka, ale proszę mi uwierzyć, że w przyszłości to docenicie :D.
Source: Matlab
Zadania do wykonania
Proszę pobrać zdjęcie na którym będziemy operować na dzisiejszych zajęciach z eKursu.
1. Rzutowanie punktów w 3D na obraz 2D:
- Cel: Znaleźć współrzędne w pikselach [u, v] dla punktu 3D [-0.05, 0.115, 0.45].
Proszę skorzystać z funkcji projectPoints z biblioteki OpenCV, która umożliwia rzutowanie punktów 3D na obraz 2D.
Oczekiwany wynik to: [572.7778 , 684.56665]
2. Szacowanie pozycji obiektu w 3D:
- Cel: Znaleźć pozycję [X, Y, Z] lewego, bliższego narożnika różowej kartki. Kartka jest ułożona wzdłuż osi X oraz Z (pomijamy rotację), a jej wymiary to 7,6 na 7,6 cm. Proszę skorzystać z funkcji solvePnP.
Oczekiwany wynik to:
[-0.12603076], [0.1138322], [0.2284263]
3. Szacowanie długości z twierdzenia Talesa
- Cel: Obliczyć fizyczną długość czarnej taśmy oddalonej o \(50\) cm
Korzystamy z idealnego modelu kamery otworkowej (Pinhole camera model). Według tego modelu rzutowanie opiera się na prostym podobieństwie trójkątów (twierdzenie Talesa).
Oczekiwany wynik to: około 0.12 m
Co wrzucić na eKursy?
- Kod źródłowy rozwiązujący powyższe zadania.
- Krótkie podsumowanie, w którym opiszecie jak rozwiązaliście zadania.