Skip to main content
Skip table of contents

커스텀 맵

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


시작하기

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

수행 절차

SIM에 로드하는 커스텀 맵은 2D/3D 그래픽 개발 엔진인 Unity 환경에서 Asset(에셋)을 단위로 구성된다. 따라서 아래와 같이 맵을 구성하는 에셋을 생성 및 빌드하여 커스텀 맵을 생성하는 과정이 필요하다.

1] RoadRunner에서 OpenDRIVE 파일을 생성

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

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

custommapcrr_kr.png

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


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

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

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

필요 프로그램

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

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

UUnity 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 입력

Custom Map 은 Add-on Service 로, 데모용 ID/PW 발급을 위해서는 MORAI Help Desk 에 문의

  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.