Skip to content

Archive

Alpha-D

Year
2016
Result
Encouragement, URP
Team
정재영, 장준영, 김용재, 권창영, 정찬영

#URP#Machine learning#Drone

Concept과 개발목표

Alpha-D 프로젝트는 머신러닝을 이용하여 쿼드콥터 제어를 연구하는 프로젝트이다. 1997년 머신러닝의 방법론과 이론적 기반이 제안된 후로부터 근 20년간 패턴 인식, 얼굴 및 대상 인식 등 많은 분야에서 활용되어왔다. 그러나 아직까지도 머신러닝은 이미지, 텍스트 인식과 같이 구조화되기 쉬운 데이터들에 한해서 주로 사용되어 왔다. 물리적 현상 및 실제 제어와 같이 구조화되기 어려운 데이터들에 대해서는 그다지 적용되어 오지 못하고 있었다. Alpha-D 프로젝트 팀은 쉽게 구조화시키기 어려운 데이터들인 물리적 제어에 머신러닝을 적용하고자 했다. 머신러닝을 적용한 실제 물리적 제어 대상으로는 쿼드콥터로 선정해 연구를 진행했다. 이는 쿼드콥터가 아직까지도 제어 최적화에 대한 이슈를 가지고 있기 때문이다. 쿼드콥터의 경우 현재 Extended Kalman Filter를 이용한 PID 제어를 활용해 주로 제어를 해내고 있지만, PID 계수를 경험적인 데이터에 의존하거나, suboptimal한 알고리즘을 사용하였기 때문에 현재까지 최적화된 제어가 이루어지지 않고 있다. 쿼드콥터 특성상 하중이 변하거나, 프로펠러 출력이 불안정해지는 경우가 있는데, 이와 같은 불안정 비행에서의 PID 제어는 일반적인 제어보다 더욱 섬세한 제어가 필요한 상황이다. 이를 해결할 방법으로, Alpha-D 팀은 다량의 Test Set을 활용한 머신러닝을 통해 쿼드콥터 제어를 최적화하고자 한다.

중점개발

머신러닝을 통한 쿼드콥터 제어를 최적화에 관하여 Alpha-D 프로젝트는 네가지 개발 중점에 머신러닝을 적용하였다. 첫째는 공중 정지 상태에서의 PID 계수 도출, 둘째는 임의의 무게 부하시 정상 비행이 가능한 알고리즘 개발, 셋째는 추락 상황 시 안정 비행 구현, 넷째는 실제 기동을 위한 Path-Planning 구현이다.

2.1 공중 정지 상태에서의 PID 계수 도출

쿼드콥터 프로펠러와 모터 특성상 각 날개 추력이 미세하게나마 다르다. 따라서 쿼드콥터가 실제로는 공중 정지 상태를 유지하지 못하고, 미끄러지듯이 조금씩 이동하는 현상이 발생하는데, 이를 해결하고자 하였다. Reinforcement learning을 이용하여 쿼드콥터가 스스로 공중정지상태를 유지하도록 PID 계수 설정을 구현하였다.

2.2 임의의 무게 부하시 정상 비행이 가능한 알고리즘 개발

물체를 운반해야하는 쿼드콥터의 경우, 물체의 무게는 쿼드콥터 제어에 상당한 영향을 끼치는 변수가 된다. 이를 해결하기 위하여 임의의 무게가 쿼드콥터에 부하로 작용시에도, 정상비행할 수 있는 알고리즘을 구축하고자 하였으며, 이를 구현하기 위해 유전 알고리즘을 사용하였다. 유전 알고리즘은 생물이 진화해가는 과정을 모방한 알고리즘이다. 해결하고자 하는 문제에 대한 가능한 해들을 정해진 형태의 자료구조로 표현하고, 이를 점차적으로 변형하여 Global solution에 가까운 해를 구하는 방식이다. ROS(Robot Operating system) gazebo simulator를 활용하여 시뮬레이션을 진행했고, 쿼드콥터에게 임의의 부하를 주어 진화, 변형, 돌연변이 시킴에 따라 최적의 PID 계수를 결정하였다.

2.3 추락 상황시 안정 비행 구현

쿼드콥터의 각 프로펠러 모터 출력 간의 지나친 불균형이 발생하더라도 안정 비행을 가능하도록 하였다. Madwick의 Quaternion filter fusion 알고리즘을 이용하여 자세추정을 구현하였다. 이후 쿼드콥터 4개의 날개 중 한 개의 날개의 크기를 달리하여 추락 상황을 시뮬레이션 하였다. CNN(Convolutional Neural Network)를 적용하여 머신러닝하였고, 실제 상황에서는 미리 수집된 데이터를 바탕으로 PID 계수를 결정하도록 하였다.

2.4 Path-Planning 구현

이미 만들어진 Trajectory library에서 경로를 선택하여 목적지까지 이동하도록 했고, 이를 통해 실시간 연산량을 최소로 줄일 수 있었다. Library에 있는 경로 중 적합한 경로를 선택하기 위해 reinforcement learning을 이용했다. 차후 path 형성을 구현하기 위한 전 단계로 카메라 영상처리 기술을 활용했다. PTAM(Parallel Tracking and Mapping) 알고리즘을 이용하여 depth data를 추출하는 알고리즘을 머신러닝을 이용해 구현하였다. 비전처리에서 외곽선을 추출하기 위해서는 적합한 Threshold 값이 필요한데, 이를 supervised learning을 통해 가장 적합한 값을 설정했다.

  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D
  • Alpha-D