MATLAB-Automated Driving Toolbox-Develop Visual SLAM Algorithm Using Unreal Engine Simulation

YUN·2025년 1월 12일

MATLAB/Simulink

목록 보기
1/20

📌 공부 기록용이라 잘못된 정보가 있을 수 있습니다.

우선, MATLAB을 다운받는다.

MATLAB

학교 이메일로 가입후, 학생 라이선스를 발급받아 사용하면 된다.

일단 부딪히며 배우는게 가장 빠르다고 생각하기에 각 Toolbox가 제공하는 예제들을 따라해보며
배워나갈 것이다.

🍎 Automated Driving Toolbox 예제overview

위는 Automated Driving Toolbox 의 모든 Example의 overview이다.
각 Example 마다 '뭐하는 예제인지'에 대한 간략한 설명이 나와있다.

우선, Automated Driving ToolboxDevelop Visual SLAM Algorithm Using Unreal Engine Simulation 예제를 따라해볼 것이다.

이 예제는 Unreal Engine Simulation 환경에서 SLAM을 해보는 예제이다.
Monocular Camera를 이용한 SLAM과 Stereo Camera를 이용한 SLAM을 해볼 것이다.

📌프로젝트 폴더 만드는 방법


나는 이렇게 C:\Users\user\Documents\MATLAB\Projects\post1 디렉토리를 만들었다.


지금 보면 post1 폴더는 약간 흐리게? 처리되어있는데 이건 MATLAB이 인식할 수 없는 경로라 그렇다.


이렇게 '경로에 추가 -> 선택할 폴더 및 하위 폴더' 를 해준다.

그래야 MATLAB이 내 프로젝트 폴더에 저장된 파일들을 참조할 수 있게된다.

📌참고


MATLAB 명령창에 path 라고 치면 MATLAB이 인식하는 디렉토리를 전부 보여준다.
MATLAB은 해당 경로에 존재하는 함수,,기타 파일들만 기본적으로 인식한다.

해당 경로에 없는 파일을 참조하려면 절대 경로를 이용해 해당 파일의 위치를 MATLAB에게 알려줘야 하는 것으로 알고있다.

다시 Develop Visual SLAM Algorithm Using Unreal Engine Simulation 로 이동 하자.

우측 상단에 This example uses: ~~~ 에 나타난 Toolbox(라이브러리 같은 개념인듯?) 들을 전부
다운 받아야한다.

MATLAB의 홈 탭에서 '애드온 받기'를 누른다.

설치할 Toolbox 검색

나는 이미 해당 Toolbox를 다운 받은 상태라 '설치' 버튼이 없는데 다운 받지 않은 상태라면

'설치' 버튼이 뜰 것이다. 그 뒤로는 그냥 계속 '예'만 누르면서 따라하면 된다.

이런식으로 해당 예제가 필요로하는 Toolbox들을 전부 다운받아주자.

다시 Develop Visual SLAM Algorithm Using Unreal Engine Simulation 로 이동

우측 상단의 Copy Command를 누르고 MATLAB에서 명령 창에 치면 이 예제를 따라해보기위해 필요한 각종 함수, 기타 파일등이

C:\Users\user\Documents\MATLAB\Examples\R2024b 경로로 다운로드 되는 것을 확인할 수 있다.

📹 SLAM with Monocular Camera

🍎참고

Monocular Camera 는 우리가 흔히 사용하는 렌즈가 1개인 일반적인 카메라이다.
카메라로 찍은 프레임들을 비교해서 깊이 정보를 추정해낸다.

이제 예제 코드를 MATLAB 으로 실행시켜보자.

MATLAB 명령 창에 위 코드를 복붙 후 실행(Enter)한다.

📌 코드 설명

parkingLotReferenceData.mat 에는 Unreal Engine 가상 환경에서 ego vehicle(내가 실험 주행시킬 차량)이 움직일 경로, 주차된 차량들의 위치,,,등에 관련된 정보가 저장되어있다.

이 파일로부터 ego vehicle 이동 경로, 주차된 차량들의 위치를 받아온다.

위는 ego vehicle의 이동 경로와 주차된 차량의 위치를 LargeParkingLot 이라는 Scene 위에 띄워서 새로운 figure(창) 위에 나타내는 코드이다.

이런 figure 가 하나 뜰 것이다.


이 코드도 MATLAB에 복붙하자.

📌 코드 설명

GenerateImageDataOfParkingLot 이라는 Simulation Model을 새 figure로 여는 코드이다.

🍎 참고

GenerateImageDataOfParkingLot.slx 는 위에서 Copy Command 로 복붙한 명령어에 의해
자동으로 MATLAB에 다운된 시뮬레이션 파일이다.


실행시켜 주자.

📌 코드 설명

주차된 차량들을 모델에 추가하여주는 코드이다.

실행시켜주자.

📌 코드 설명

시뮬레이션에 사용할 카메라의 내부 파라미터(focal length,,,,etc)들을 설정하는 코드이다.

실행 시켜주자.

📌 코드 설명

시뮬레이션을 실행하고 , 시뮬레이션 과정에서 센서로 얻은 데이터를 simOut에 저장한다.

📌 코드 설명

simOut에서 카메라 이미지와 센서들의 방향, 위치등을 추출한다.

🛑 'helperGetCameraImages를 인식할 수 없다' 는 오류

해당 예제 페이지에서 마우스 스크롤을 쭉~ 내려준다.

Supporting Functions 를 찾을 수 있다.

여기에 나온 코드들을 Matlab path에 포함된 경로에 아무데나 함수로 (확장자를 .m으로) 만들어준다.

나는 그냥 예제 디렉토리에다가 함수들을 추가해줬다.


뭔가 이상한데;;

📌 코드 설명

monovslam 클래스를 이용하여 SLAM을 진행하는 코드이다.

*monovslam은 Monocular Camera 로 slam을 할때 사용하는 클래스이다.

📌 코드 설명

최종 3-D 맵 포인트와 카메라의 움직임을 변수에 저장하는 코드이다.

📌 코드 설명

SLAM 결과로 오차 산출? 하는 코드같은데, 잘 모르겠다.

📹SLAM with Stereo Camera

이제 Stereo Camera 로 Unreal Engine 가상환경에서 SLAM을 진행해볼 것이다.

(Monocular Camera를 이용한 SLAM 예제를 따라가는 과정에서 생긴 Figure들을 끄면 안된다.
만약 껐다면 Monocular Camera 내부 parameter 설정하기 전까지의 코드를 다시 처음부터 Matlab 명령 창에 쳐주면 된다.)

🍎 참고

Stereo Camera카메라 렌즈가 2개 달려있는데, 이 두 렌즈로 찍은 프레임의 차이를 이용하여 깊이 정보를 추정해낼 수 있다.


Stereo Camera를 사용하니까 시뮬레이션 모델에서도 카메라가 2개인것을 확인할 수 있다.

Stereo Camera를 이용하기때문에 2개의 화면을 보여주는 것을 알 수 있다.
(자세히보면 baseline 때문에 프레임이 조금씩 다르다.)

📌 코드 설명

MonoCamera 대신 Stereo Camera를 사용하기 때문에 useMonoCamera 값을 0으로 설정.
Stereo Camera의 내부 parameter를 설정해주고 실제로 Simulation을 실행하는 코드이다.

📌 코드 설명

앞서 했던 것과 마찬가지로 시뮬레이션 결과로부터 센서(Stereo Camera)값과 센서(Stereo Camera)의 움직임을 추출한다. (SLAM에 사용하기 위해!)



📌 코드 설명

streovslam 클래스를 이용하여 앞서 시뮬레이션 결과로부터 추출해낸 데이터들을 기반으로 SLAM을 진행한다.

📌 코드 설명

최종 3-D Map과 카메라의 움직임을 변수에 저장하고, 오차를 산출한다.


📌 코드 설명

시뮬레이션 과정에서 얻은 센서값들로 Dense Reconstruction을 수행하는 코드이다.

🍎Dense Reconstruction
3D 환경을 고해상도로 재구성하는 기술

profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글