Aeolus-Ocean
<p align="center">
<img src="https://user-images.githubusercontent.com/93454699/220417462-e59f27fd-344d-4f4a-a9c4-dfb31f3006ed.png">
</p>
Aeolus Ocean - Deep Reinforcement Learning 및 해상 물체 탐지(Maritime Object Detection)를 사용한 자율 COLREG 준수 무인 수상 선박 항해 시뮬레이션 환경
설명 (Description)
기상 조건과 시간대에 관계없이 작동하는 시뮬레이터로, 해상 선박이 웨이포인트(waypoint)에 도달하려는 과정에서 다른 선박과의 충돌을 피하고 해상 충돌 규정(COLREGs), 장애물 및 육지를 준수하도록 하는 자율 항해를 위한 디지털 트윈으로 구현될 수 있습니다.
본 프로젝트는 보퍼트 풍력 계급(Beaufort 1-11)의 해양 시스템과 선박-물 상호작용 및 추진력을 처리하는 물리 알고리즘으로 구성됩니다. 각 선박은 자체적인 표적 획득 시스템을 갖추고 있습니다. 물체 탐지(Object Detection)를 위해 카메라는 YOLO-X를 사용하여 화면상의 다른 선박을 시각적으로 위치시키며, 이 데이터는 시뮬레이션된 레이더 시스템에서 추출된 정보와 융합되어 환경 내 모든 다른 선박의 위치 데이터를 탐지합니다. 육지는 간소화된 소나(sonar) 유사 시스템으로 감지됩니다. 각 선박의 항해 유도는 Deep Reinforcement Learning (PPO)과 Unity's Machine Learning Agents Toolkit (ML-Agents)을 사용한 모방 학습(Imitation Learning)을 통해 다양한 시나리오에서 훈련된 지능형 에이전트가 제어합니다.
현재 이 프로젝트는 바이너리 형태로 제공됩니다. 릴리스에서 다운로드할 수 있습니다. 현재 작업에 충분한 관심이 있다면, 소스 코드가 향후 공개될 수도 있습니다.
실행 방법 (How to Run)
Aeolus-Ocean의 릴리스을 다운로드하면, AEOLUS OCEAN.exe로 프로그램을 안전하게 실행할 수 있습니다. 이 바이너리는 Unity 빌드 설정에서 직접 생성되었기 때문에, Windows는 '알 수 없는 게시자'로부터 온 것일 수 있다며 신뢰 여부를 물어볼 수 있습니다.
메인 메뉴의 "Simulation(시뮬레이션)" 탭을 클릭하면 다음과 같은 설정 메뉴가 나타날 것입니다.
setupmenueveningv2
시뮬레이션 설정 (Simulation Setup)
제어 가능한 모든 설정 매개변수(기본값 표시)에 대한 설명은 다음과 같습니다.
| 환경 매개변수 (Environment Parameters) | 설명 |
| :---: --- | :--- |
| 환경 수 (Number of Environments) | 에이전트가 웨이포인트에 도달할 환경의 개수입니다. 소스 코드에서는 이 값을 사용하여 에이전트를 병렬로 훈련하는 데 사용됩니다. |
| ... |
<br>
| 웨이포인트 매개변수 (Waypoint Parameters) | 설명 |
| :---: --- | :--- |
| 웨이포인트 변경 거리 (Waypoint Change Distance) | 이 거리에 도달하면 현재 에이전트를 위해 새로운 웨이포인트가 생성되는 지점까지의 미터 단위 거리입니다. |
| ... |
<br>
| 절차적 섬 매개변수 (Procedural Island Parameters, Perlin Noise) | 설명 |
| :---: --- | :--- |
| 환경별 섬 생성 (Generate Island Per Environment) | 각 환경의 중앙에 하나의 섬을 생성합니다. |
| ... |
<br>
| 지정 자아 선박 (Designated Ego Vessel, DEV) 매개변수 | 설명 |
| :---: --- | :--- |
| DEV ID | 이 설정에서 어떤 선박이 DEV가 될지 사용자가 선택할 수 있는 슬라이더입니다. DEV를 선택하면 프로그램에 센서 시스템을 구현할 선박을 알려줍니다. |
| ... || 레이더 거리 (Radar Distance) | DEV의 레이더 센서가 근처의 다른 선박을 감지하는 미터 단위 거리입니다. |
| 레이더 스윕 (Radar Sweep) | 레이더 스윕의 분당 회전수입니다. 값이 높을수록 먼 곳에 있는 선박은 탐지하지 못할 위험이 있지만, 주변 선박을 더 정확하게 추적할 수 있습니다. |
<br>
준비가 되면 "Autonomous Vessel Control(자율 선박 제어)"을 클릭하십시오.
중요 참고 사항: 이 버튼을 클릭했을 때 시뮬레이션이 멈춘다면, "Generate Island Per Environment" 옵션을 비활성화하십시오. 이는 곧 수정될 예정입니다.
시뮬레이션 중 (During the Simulation)
시뮬레이션이 실행되는 동안 사용자는 '자율 제어(Autonomous Control)' 버튼을 클릭하여 자율 운항 지속 여부를 선택하거나 제어를 재정의할 수 있습니다. 이렇게 하면 선박이 키보드 화살표 키로 제어될 수 있는 '사용자 제어(User Control)' 모드로 전환됩니다. 화면 왼쪽 상단에 있는 GUI 버튼을 통해 사용자는 날씨 및 조명 조건을 사용자 정의할 수 있습니다. '경유지 표시(Show Waypoint Markers)'가 켜져 있으면, 상단의 녹색 항법 화살표는 다음 경유지 방향을 보여주고, 파란색 화살표는 선박의 속도 방향 벡터를 보여줍니다. 시뮬레이션에서 비나 눈이 활성화되면 카메라에 물방울이 생성되어 목표 선박 탐지에 부정적인 영향을 미칠 수 있습니다. 또한 안개뿐만 아니라 태양의 눈부심(Sun's glare)과 잔잔한 해상 상태에서의 반사된 햇빛도 목표 선박 탐지에 영향을 줄 수 있으며, 이는 목표 선박 방향에 있을 경우 해당됩니다.
| 이미지: 경유지로 접근하는 선박 (낮). | 이미지: 밤에 다른 목표 선박을 추적하는 DEV. |
|---|
| <img src="https://user-images.githubusercontent.com/93454699/220351883-c5557f2d-7aba-446e-a6cd-bdb64dff0147.png" width="350" /> | <img src="https://user-images.githubusercontent.com/93454699/220360839-1e61cfe1-bf99-4fdf-8c05-a868c1a6921b.png" width="350" /> |
| GIF: 선박들이 COLREG 규칙 14(정면 충돌) 및 16을 준수함. | GIF: 선박들이 COLREG 규칙 15(교차) 및 16을 준수함. |
| <img src="https://user-images.githubusercontent.com/93454699/220564888-52ac4766-b974-4c7b-bc9c-d9ce0feb2b46.gif" width="350" /> | <img src="https://user-images.githubusercontent.com/93454699/220414500-d063615a-251a-48a8-9c52-93e6ab97c9cf.gif" width="350" /> |
| GIF: 비가 오는 동안 다른 목표 선박을 추적하는 DEV. | GIF: 눈과 안개 조건에서 추적하는 DEV. |
⚠️ [IMG:N] 형식 토큰은 이미지 placeholder 입니다. 번역하지 말고 원래 위치에 그대로 유지하세요.
[번역된 제목]: Aeolus-Ocean: 자율 항해 시뮬레이션 환경
<img src="https://user-images.githubusercontent.com/93454699/220569086-4b1245b7-66e0-43ad-90be-f1f9d15445ec.gif" width="350" /> | <img src="https://user-images.githubusercontent.com/93454699/220571120-6384a7dd-6522-43a7-b16f-e62c91773e04.gif" width="350" />
참고: GIF 파일은 업로드 크기 제한을 관리하기 위해 약간 빠르게 재생될 수 있습니다.
한계점 (Limitations)
- 현재는 단일 선박 유형(모터보트)만 충분히 오랫동안 훈련되었습니다.
- 또한, 이 버전(v1.11)에서는 각 환경에서 동일한 유형의 선박만 시뮬레이션할 수 있습니다. 향후 버전에서는 자체적인 Agent Brain을 가진 다양한 선박 유형이 허용될 것입니다.
- 거품은 단순화된 입자 시스템을 기반으로 하므로, 큰 파도와 함께 사용하면 좋지 않을 수 있습니다.
라이선스 (License)
BSD-3-Clause License
인용 (Citation)
@article{vekinis2023aeolus,
title={Aeolus Ocean -- A simulation environment for the autonomous COLREG-compliant navigation of Unmanned Surface Vehicles
using Deep Reinforcement Learning and Maritime Object Detection},
...