본 포스트에서는 (주)인스페이스에서 제작한 유니티 기반 드론 강화학습 환경을 공유하고자 합니다.
저장소 링크 : https://github.com/InSpaceAI/RL-InDrone
소개
강화학습 적용을 위해 유니티로 제작한 드론 시뮬레이션 환경입니다.
기본적으로 드론 비행 시뮬레이션, 드론 저글링 시뮬레이션을 제공합니다.
공유 파일들은 다음과 같은 기능을 제공합니다.
- 직접 제작한 강화학습 알고리즘을 적용할 수 있습니다.
- State, Action, Reward 설정을 바꿀 수 있습니다.
- 유니티 툴을 이용하여 원하는 환경으로 마음껏 변환할 수 있습니다.
- 사용자가 직접 키보드로 드론을 조종할 수 있습니다.
진행 환경
- Windows10 64bit
- Unity 2019.1.0f2 Personal
- Unity ML-Agents v0.8
- VisualStudio 2017
드론 비행 환경
목표
- 이 환경의 목표는 목적지(하얀 구체)에 도달하는 것입니다.
State 설정
- 드론 - 목적지 벡터
- 드론 상향 벡터
- 드론 전방 벡터
- 드론 속력
- 드론 각속력
Action 설정
- 각 프로펠러의 추력 (Continuous)
Reward 설정
- 드론-목적지 거리의 변화량
드론 저글링 환경
목표
- 이 환경의 목표는 빨간 공을 놓치지 않으면서 비행을 하는 것입니다.
State 설정
- 드론 - 공 벡터
- 드론 현재 위치 - 초기 위치 벡터
- 드론 상향 벡터
- 드론 전방 벡터
- 드론 속력
- 드론 각속력
- 공 위치 변화량의 유닛 벡터
Action 설정
- 각 프로펠러의 추력 (Continuous)
Reward 설정
- 드론 상향 벡터의 y축 값
- 1 / 드론 초기 위치 부터 벗어난 거리
- 1 / 공 초기 위치 부터 벗어난 거리
시작하기
설정 변경 및 환경 제작
- Unity에서 UnitySDK 를 Open 하시면 드론 환경에 접근할 수 있습니다.
- 드론 환경은 Assets/DRONEENV 에 있습니다.
Unity ML-Agents 튜토리얼이 필요하시면 참조하시기 바랍니다.
링크 : https://github.com/hyunho1027/Unity_ML_Agents_Tutorial
강화학습 알고리즘 적용
- notebooks/getting-started.ipynb. 에서 직접 만든 알고리즘을 적용할 수 있습니다.
사용자 모드
- playermodes/DRONEENV/DRONEENV.exe 에서 키보드로 직접 드론을 조종해볼 수 있습니다.
사용자 설정
- 사용자 모드에서 Q, W, A, S 로 직접 드론을 조종할 수 있습니다. 각 키를 누르면 해당하는 프로펠러에 추력을 발생합니다.