3.5기(200104~)/강화학습

강화학습 20.04.16 드론에이전트 & 학습환경 수정

KAU-Deeperent 2020. 4. 17. 14:04

스터디 : 20.04.16 행아웃

작성자 : 김성훈

랜덤하게 action을 취하는 드론 에이전트 시뮬레이션

기존 드론 환경 수정 :

 

이전에 작성했던 환경은 discrete action에 마추어 구성되어있었다. 이번 주차에 DDPG 알고리즘을 도입하며, contineous action에 걸맞게 Environment step을 수정하게 되었다. 또한 이전엔 드론 시뮬레이션을 나이브한 방식으로 표현했었는에 마침 환경을 수정하게 되어, 드론 시뮬레이션의 퀄리티도 상당부분 손보게 되었다. 우선 기존엔 드론은 앞으로만 나가알 수 있었기에 라이다센서를 전방에만 배치했는데, 이제부턴 드론의 앞뒤 구분을 없애어 90도 간격으로 라이더를 결합한 형태로 수정하였다. 그리고 액션의 종류와 액션을 통한 다이나믹스를 변경하였다. 실제 드론은 위치이동을 하기위해선 inner control loop로 각도제어를 취한다. 따라서 우리도 뉴럴네트워크의 아웃풋으로 각도 제어값들을 받기로 하였다. 

 

Roll angle input : 0deg 유지

Pitch angle input : -45deg ~ 45deg 내에서 뉴럴네트워크가 선택

Psi angle input : -180deg ~ 180deg 내에서 뉴럴네트워크가 선택

위 3가지 input으로 오일러각가속도를 PID제어로 계산하여 드론에 요구되는 3축 토크를 계산할 수 있다.

그리고 4개의 모터의 추력의 합인 Throttle은 드론의 고도가 유지되는 값이 항상 요구된다.  드론에서 요구되는 LMNT는 약간의 선형화를 통하여 우리가 임의로 만들어준 제어 입력이고, 이 값들을 다이나믹스로 업데이트하기위해선 비선형 연립미분방정식을 풀어야한다. 우리는 이 업데이트를 위하여 시간간격을 discrete하게 나누고 수치해석적으로 비선형연립미분방정식을 푸는 것을 택하였다.

이 환경을 진행시키기 위해 피드백해야하는 물리량이 늘어남에 따라 뉴럴네트워크와 구조와 environment.reset 과 environment.rendering 코드또한 추가적으로 수정하게 되었다. 우리가 다룰 수 있는 물리량이 개수가 많아져, 하나의 스텝에서 표현하는 정보 또한 증가하여, 드론 시뮬레이션이 지난 번 보다 좀 더 공중에 떠잇는 것처럼 보이게되었다. 현재 DDPG를 이용한 에이전트학습이 진행중이고, 학습속도 또한 매우 느려졌다. 에이전트 학습에 관한 내용은 차후있을 세미나에서 점차 발표해 나갈 예정이다.