Skip to main content
Skip table of contents

커스텀 맵

본 섹션에서는 MORAI SIM: Drive 에서 제공하는 맵 외에 사용자가 자체적으로 커스텀 맵을 생성하여 SIM 에 로드하는 과정을 가이드한다.


시작하기

커스텀 맵을 생성하여 SIM 에 로드하기 위해 수행해야 하는 절차와 필요한 프로그램을 설명한다.

수행 절차

커스텀 맵은 2D/3D 그래픽 개발 엔진인 Unity 환경에서 Asset (에셋)을 단위로 구성된다.

따라서 맵을 SIM에 로드하기에 앞서, 아래와 같이 맵을 구성하는 에셋을 생성 및 빌드하여 커스텀 맵으로 생성하는 과정이 필요하다.

1] RoadRunner 에서 OpenDRIVE 파일을 생성

2] OpenDRIVE Support 에서 Obejct (Road Mesh)와 MGeo (차량의 주행 경로) 파일로 변환

3] Unity AssetBundle Editor 에서 에셋 빌드 후 커스텀 맵 파일로 생성

그림 1. 커스텀 맵을 활용하기 위한 수행 절차


본 가이드에서는 OpenDRIVE Support 에서 샘플로 제공된 OpenDRIVE 파일을 전제로 Road Mesh와 MGeo 파일로 변환하는 과정부터 기술하므로 RoadRunner 에서 OpenDRIVE 파일을 생성하고 MapEditor 에서 지도를 편집하는 과정은 포함하지 않는다.

RoadRunner 는 자율주행 시스템 시뮬레이션 및 테스트를 위한 대화형 에디터로 ASAM OpenDRIVE 포맷의 3차원 Scene을 설계하여 추출할 수 있다.
RoadRunner로 새로운 오픈드라이브 파일을 생성하려면 RoadRunner 가이드를 참고한다.

MapEditor 는 SIM 과 연동하여 시나리오를 수행하는 도구인 Scenario Runner 의 Add-on 기능으로 OpenDRIVE 파일로부터 자동으로 도로 메쉬를 생성할 뿐만 아니라, 사용자가 메쉬의 생성 방식을 제어하도록 편집할 수 있다.
Map Editor 에 대한 자세한 사용법은 Map Editor 공식 가이드를 참고한다.

필요 프로그램

커스텀 맵을 생성 후 SIM 에 로드하기 까지 필요한 프로그램은 아래와 같다.

Unity Editor 사용 시, ProBuilder 설치 및 AssetBundle Editor 실행을 위해 반드시 Unity Pro 라이선스를 활성화한다.

Unity Hub 설치 완료 후 2020.3.6 다운로드 링크 (unityhub://2020.3.6f1/338bb68529b2)를 브라우저 주소창에 입력해 설치한다.

  • MORAI SIM: 정규 배포 버전 권장. 예: R22.4.2

1. OpenDRIVE Support - 맵 데이터 생성하기

Unity 의 Asset 생성에 필요한 맵 데이터 (Road Mesh와 MGeo 파일)를 생성하는 과정을 설명한다.

본 가이드에서는 모라이에서 제공하는 OpenDRIVE Support 프로그램을 통해 별도의 OpenDRIVE 파일 (.xodr)을 별도의 편집 없이 Road Mesh (.obj)와 MGeo (.json) 파일로 변환한다.

Step 1: OpenDRIVE Support 실행

다운로드한 OpenDRIVE Support 프로그램을 아래와 같이 실행한다.

  1. 설치 프로그램을 압축 해제 후 install.bat 을 파일 더블 클릭하여 실행


2. opendrive_support_program 바로가기 파일 생성

Step 2: OpenDRIVE 파일 변환

샘플로 제공된 OpenDRIVE 파일을 Road Mesh와 MGeo 파일로 변환하는 과정은 아래와 같다.

  1. 설치 한 OpenDRIVE Support 프로그램 하위 opendrive 폴더에서 아래와 같은 OpenDRIVE 샘플 파일을 확인

  1. 명령프롬프트 창을 실행 후 opendrive_support_program 바로가기 파일이 존재하는 위치까지 이동

  1. 아래와 같은 구조의 파일 변환 명령어 기입

CODE
opendrive_support_program.lnk -c config/{config 파일명} -x opendrive/{OpenDRIVE 파일명} -o output/{출력 파일 저장 경로}

# 예시
opendrive_support_program.lnk -c config/config.json -x opendrive/V_RHT_HighwayJunction_1.xodr -o output/V_RHT_HighwayJunction_1

  1. 데모용 ID/PW 입력
    - ID: test_internal
    - PW: morai0508

  1. 파일 변환이 정상적으로 이루어지면 아래와 같은 정상 명령어가 출력되며, 출력 파일 경로에서 생성된 파일을 확인 가능

2. AssetBundle Editor - 커스텀 맵 생성하기

Unity > AssetBundle Editor 에서 도로 메쉬 (Road Mesh)와 주행 경로 (MGeo)파일을 에셋으로 생성 후 커스텀 맵으로 빌드하는 과정을 설명한다.

Step 1: 유니티 프로젝트 환경 구성

Unity 에서 AssetBundle Editor 실행하기 위한 프로젝트를 환경을 아래의 순서로 구성한다.

  1. Unity Hub 에서 새 프로젝트를 클릭하여 아래와 같은 옵션으로 빈 프로젝트를 생성한다.
    - 에디터 버전: 2020.3.6f1
    - 템플릿: 3D 코어

  1. Asset Bundle 생성을 위한 패키지 파일 다운로드
    MoraiAssetBundleCreator.unitypackage

  1. 다운로드한 패키지 파일을 프로젝트 > Assets 폴더 안으로 드래그 앤 드롭한다.

  1. 팝업된 Import Unity Package 창에서 MoraiAssetBundleCreator 패키지 파일을 확인 후 하단의 Import 를 클릭한다.

Step 2: AssetBundle Editor 실행

AssetBundle Editor 실행을 위해 아래와 같이 ProBuilder 패키지를 설치한다.

  1. 상단 메뉴 Window > Package Manager에서 ProBuilder 패키지를 설치한다.

  1. Package Manager 창에서 상단의 Packages 옵션을 Unity Registry 로 변경 후, 탐색되는 ProBuilder 4.5.2 Intsall 한다.

  1. 상단 메뉴에 생성된 Build 메뉴에서 AssetBundles > AssetBundle Editor 를 실행한다.

  1. 아래와 같은 AssetBundle Editor 실행 창을 확인한다.

  • Initialize: 에디터 초기화. AssetBundle Editor 실행 시 자동으로 초기화되지만 에디터 실행 중 데이터 추가 시 Initialize 를 클릭하여 한 번 더 초기화 진행

  • Set Path to Copy: 지정한 경로로 Asset Bundle File 을 복사

    • Overwrite asset files?: 지정한 경로에 동일한 Asset 파일이 존재하는 경우, 체크하면 복사할 때 파일 덮어쓰기 됨. 체크 해제하면 에러와 함께 파일 복사가 되지 않음

  • Build Bundle: 번들 빌드 진행. 번들 생성 후 마지막에 진행하는 단계

  • Scene: 맵을 구성하는 Scene 에셋를 생성하는 탭

  • Obstacle: 맵을 구성하는 Obstacle 에셋을 생성하는 탭

  • Create Bundle: 초기화 이후 생성할 맵에 대해 번들 생성 진행

Step 3: Scene 에셋 파일구성

커스텀 맵 생성에 앞서, 아래와 같은 순서로 커스텀 맵에 필요한 Extra Scene 에셋 파일을 구성한다.

  1. 하단의 프로젝트 구성에서 98_Scene 경로 하위에 생성할 맵 이름 (예: extra_map)의 폴더를 생성 후 OpenDRIVE Support 에서 생성한 도로 메쉬 (.obj)를 포함한다.

  2. 생성한 맵 폴더 하위에 MgeoData 폴더를 추가 생성하고 도로 메쉬에 대응하여 생성된 Mgeo 파일 (.json)을 포함한다.

이때, 아래와 같은 mat_config.json 파일을 추가하여, 포함한 도로 메쉬의 meterial 종류를 명시한다.

JSON
{
  "Lane_White": [
    "lm_white.obj"
  ],
  "Lane_Blue": [
    "lm_blue.obj"
  ],
  "Asphalt": [
    "road.obj"
  ]
}

개발 특성에 따라 지원하는 material 종류가 추가되거나, 파일 명이 변경 될 수 있음

Step 4: Scene 에셋 생성 및 빌드

구성한 에셋 파일을 가지고, AssetBundle Editor에서 아래와 같은 순서로 Scene 에셋을 생성 및 빌드한다.

  1. 상단 메뉴 Build > AssetBundles 에서 AssetBundle Editor 를 실행 및 Initialize 를 클릭하여 초기화한다.

  1. AssetBundle Editor > Map Create 하위 리스트에서 생성할 맵을 선택 후 Create Bundle 을 클릭한다.

  1. 선택된 맵(예: extra_map2)을 클릭하여 Object Tag Find Setting 하위에 GameObject 가 생성된 것을 확인한다.

4, GameObject의 Tag0 드롭다운 리스트를 클릭하여 추가한 도로 메쉬 (.obj)의 meterial 에 해당하는 태그 값을 선택한다.

추가한 오브젝트의 종류에 따라 태그를 선택한다.

  • 도로 Object → Asphalt

  • 차선 Object → Road_Sign

  1. 에디터 좌측 Scene 에서 도로 메시를 클릭하면 Ego Vehicle Gizmo (직육면체 축)가 생성된다.
    이 Gizmo 의 위치와 방향을 조정하여 SIM 에 로드된 커스텀 맵에서 Ego 차량의 초기 위치 및 회전값을 정할 수 있다.

  1. 원하는 Road 위치를 더블 클릭하여 Ego StartPoint Ego StartRotation 을 설정하고 Save Asset 을 클릭한다.

  • StartPoint: SIM 맵에서 차량의 초기 위치 값

  • StartRotation: SIM 맵에서 차량의 초기 회전 값

StartPoint 미지정 시, SIM 의 Custom Map 로드 후 Ego 차량이 도로 아래로 계속해서 추락한다.

  1. 도로 메쉬의 Prefab Asset 및 Mgeo data 가 아래와 같이 프로젝트 내 AssetBundle/extrasceneprefab 경로에 정상 생성되는 것을 확인한다.

8. Build Bundle 을 클릭하여 Scene 에셋 번들을 빌드한다.

9. 에셋 번들 빌드 진행 후 커스텀 맵을 구성하는 파일이 C:/ExtraAssetBundle/win_extra 경로 하위에 생성된 것을 확인한다.

3. SIM - 커스텀 맵 로드하기

AssetBundle Editor 빌드 후 생성된 커스텀 맵 파일을 SIM 에 로드하는 과정을 설명한다.

  1. 생성된 커스텀 맵 파일을 아래의 경로 하위에 복사한다.

  • {SIM 런처 설치 경로} \MoraiLauncher_Win_data\Bundle\(Version)\extra

  1. 시뮬레이터 실행 시 Map List에서 V_Extra_Scene Vehicle 및 특정 Vehicle 모델을 선택하고 Start 를 클릭한다.

  1. 아래와 같이 시뮬레이터 로딩 화면에 Extra Scene Selecter 창이 나타나면 생성한 커스텀 맵 (예: extra_map)을 선택하고 Load Scene 을 클릭한다.

  1. 시뮬레이터 실행 후 아래와 같이 커스텀 맵이 로드된 것을 확인한다.


Copyright © MORAI Inc. 2023 All rights reserved.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.