
[Simulink & UE 를 이용하여, Vehicle에 Camera Installation and Visulize]
😊Place Cameras on Actors in the Unreal Editor_ Matlab Official
카메라를 달아서 시각화 하는거지만, 다른센서도 유사한 방법으로 달아주면 된다.
현재 포스트에서는 simulink block diagram을 사용하는 방법을 알아보는 단계라고 생각하면 된다!
1️⃣. Simulink Empty model 만들기.
Block을 배치하기 위한 Simulink model을 만들자.


2️⃣. Browser Library에서 블록 찾아서 배치
브라우저 라이브러리: Simulink 기본 블럭들과, Add on으로 받은 애드온 블럭들이 있다.
이 다양한 애드온의 블럭들을 이용하여, 내가 원하는 시스템의 원하는 시뮬레이션 환경을 내맘대로 구성할 수있다.



위 블록도에 대한 설명
a) 공식사이트 예제는 한개의 카메라를 달았다.
b) 필자는 두개의 카메라를 차량 앞본넷트 양쪽에 달려고 한다.
c) Simulation 3D Actor Transform Set으로 좌 우측 카메라의 위치를 조정하고,
Simulation 3D camera Get블록을 통해 얻은 UE에서의 카메라 이미지를, Vector concatenate를 이용하여 한개의 창에서 양옆으로 나뉜 카메라 이미지들을 보여주는 블록도 이다.
사용한 블럭
a) Simulation 3D Scene Configuation: UE - Matlab 연동을 위한 블럭.
b) Simulation 3D Camera Get: UE에서 설치한 카메라가 인식한 이미지를 가져오는 블럭
c) To Video Display: 시각화 블럭
d) Vector Concatenate: 두개의 카메라에서 받아온 정보를 합쳐서 좌우 분할 시각화를 하기 위한 블럭
d) Simulation 3D Actor Transform Set: UE에 설치한 Actor들을 제어하는 블록. 여기서는 UE에 설치한 카메라의 위치,회전 값을 제어하기 위해 사용.
e) Constant: 상수값 또는 행렬값을 넣어주기위한 블럭. 여기서는 Simulation 3D Actor Transform Set에 인자로서 카메라의 위치, 회전, 크기값을 행렬로서 넣어주기 위해 사용하였다.
💡각 블럭의 위치는 인터넷 검색을 통해 잘 찾아보도록 하자.
⚠️블럭 세부 파라미터 설정은 언리얼 환경 생성 및 액터 배치후 설명하겠다.
3️⃣. 언리얼 환경 생성 및 카메라 액터 배치
- Epic Games 런처로 UE5.3 실행
- Game - Vehicle 프로젝트 생성( .uproject 파일 만들기 )
- 해당 프로젝트에서 Matlab 플러그인 등록
- Simulink로 돌아와서, 만들어둔 .uproject 파일 열어서, 차량 및 카메라 액터 등등 설치
- simulink를 이용한 simulation
⚠️Epic Games 런처를 통해 실행한 UE에서는 프로젝트 생성만 해야한다. 수정은 반드시 Simulation 3D Scene Configuation Simulink Block을 통해서 해야한다!
1. Epic Games 런처로 UE5.3 실행

2. Game - Vehicle 프로젝트 생성

3. 해당 프로젝트에서 Matlab 플러그인 등록
⚠️체크하고 나면 재시작하라고 하는데, 재시작 하면 에러난다! 왜냐하면 매틀랩 플러그인을 등록한 프로젝트인데, simulink 블럭을 통해 프로젝트를 오픈하지 않아서 그렇다!! 그냥 체크하고 UE 끄면된다.

4. Simulink로 돌아와서, 만들어둔 .uproject 파일 열어서, 차량 및 카메라 액터 등등 설치
⚠️Simulation 3D Scene Configuation Simulink Block 의 project 경로를 방금 만들어준 Project의 경로로 해줘야된다!


Auto Posses Player: 어떤 플레이어가 이 액터를 조정가능하게 할지에 대한 설정이다.
게임이라면 1P , 2P 같은 멀티플레이어마다 고유한 제어를 위한 설정이다.
Matlab Simulink가 제어권한을 가지려면 'Player0'으로 설정해줘야된다.

UE에서 Matlab과 연동가능한 카메라 액터는 'sim 3d Scene Cap'

생성한 카메라 액터를 차량에 부착하려면 드래그 앤 드랍을 해주면 된다.

'choose skeleton or bone'은 차량의 어디에 붙일지를 정하는 단계인데, None으로 하면된다.
(None으로 하게되면 차량 액터의 중앙에 붙게된다. 이후 simulink의 Traslation으로 상대위치 조정을 해줄거다.)

차량에 부착한 카메라 엑터를 Simulink가 인식하게 하기 위해서는 Tag를 설정해줘야한다. 이 이름을 가지고 Simulink 블록이 UE의 카메라 액터를 찾으니 잘 지정하자.
같은 방식으로 ID가 IdealCamera2 인 카메라 액터 하나 더 생성해주면 된다.
카메라 두개 쓸거니까!!!!
5. Parent Class 설정

부모 클래스를 sim 3d ~ 로 해줘야 simulink에서 인식을 할 수 있는것같다. 그냥 따라하자
6. 프로젝트 저장
UE -> 파일 -> 저장
4️⃣ Simulink Block 파라미터 설정
UE에서 생성한 액터들을 simulink의 블럭을 이용해서 데이터를 받아오고, 시각화해보자. 또한 액터들의 위치를 수정도 해보자.
a) 카메라 액터 위치 수정









이미지는 다차원 배열, 차원결합 인자를 1로 주면 상하 결합, 2는 좌우 결합
5️⃣ Simulation
simulink에서 실행버튼, UE에서도 실행버튼 클릭
좌측에는 본넷 왼쪽의 카메라, 우측에는 본넷 우측의 카메라 화면이 나오는것을 확인할 수 있다.

💡6️⃣ 마무리
음 의외로 Matlab simulink 블럭 쓰는게 어렵지 않다. 오히려 무궁무진한 플러그인들을 이용해서 내 상황에 맞는 시뮬레이션 환경을 만들 수 있다는거에 놀랐다.
이제 SLAM해보면 되는거지~ 라이다도 붙여보고. 음 암튼 좋은것 같다.
ps . Carla는 ROS랑 통합하려다가 carla-rosbridge가 잘 안되어서 일단 보류다.