본문 바로가기
SSM/쿼드콥터

[쿼드콥터] 스케줄링 및 Time Rate 에 관하여

by 우툴 2016. 3. 8.
728x90

 스케줄링의 필요성 

 쿼드콥터는 비행체이다. 그렇기에 비행을 유지를 하지 못하면 바로 추락해 버리게 된다. 그렇기 때문에 정해진 시간마다 계산이 이루어져서 출력을 해줘야하는데 이런 시스템을 RTOS(Real Time Operating System) 이라고 한다. 즉 CPU 시간 관리 부분에 초점을 맞춰서 실시간으로 운영하면 프로세스의 우선 순위에 따라 제어를 해야 한다. 그렇지 않으면 추락하게 되는 것이다.

스케줄링 기법

 인터넷을 조금만 찾아봐도 CPU의 스케줄링 기법은 여러개이고 심지어 복잡한 것을 발견할 수 있다. 나 같은 경우는 이해가 힘들기 때문에 따로 스케줄링 기법을 쓰지 않고 내가 직접 시간을 측정하고 계산해서 일정 시간마다 딱 한번의 동작만 일어날 수 있게 하는 One - Shot 작업으로 쿼드콥터의 계산 시간을 제어하였다. 이렇게 한 이유는 계산을 처리하기 까지의 시간이 많지 않아서 이 방식을 사용하였습니다. 그래서 주기를 정해서 그 주기에 모든 작업이 일어나게 하였습니다. 아래의 그림이 주기를 2.5ms로 주어서 절차지향적으로 진행될 수 있게 코드를 구성하였습니다. 

 

Time Rate의 관해

 처음 저 주기 (Time Rate)를 정할때 막연히 10ms 면 충분하겠지 라고 생각하고 주기를 정했었는데 그렇게 정하고 쿼드콥터를 날려봤을때 이상하게 쿼드콥터가 제대로 날지를 못하고 고꾸러지는 것을 관찰할 수 있었다. 처음에는 이득의 선정을 잘못해서 그런줄 알고 다른데서 수정을 하고 그랬었는데 혹시라는 마음에 이 주기를 2.5ms 줄이고 나서 보니까 거짓말 처럼 쿼드콥터가 제대로 나는 것을 확인할 수 있었다. 정확히 어느 정도의 Time Rate를 줘야하는지는 모르겠지만 쿼드콥터가 비행을 하기위한 최소한의 Time Rate가 있는것 같다. 그 이상 Time Rate가 길어지면 쿼드콥터가 비행을 하는데 문제가 있어 보인다.  

Time Rate는 왜 필요한가?

 왜 Time Rate가 필요할까 그 답은 생각보다 간단하다. 그 이유는 바로 우리가 제어하는 것은 디지털영역이기 때문이다. 우리가 학교나 지식으로 공부하는 제어공학의 이론들은 디지털 영역이 아닌 아날로그 영역이다. 그렇기에 실시간으로 반응하여 피드벡을 주고 제어하지만 실제로 이렇게 MCU를 통해서 제어하는 영역은 디지털 영역이다. 그렇기에 Time Rate를 정해놓고 그 사이에 작업을 진행하게 하고 이 것을 반복하면서 아날로그 신호를 따라가는것 처럼 작동하게 되는 것이다. 


 



728x90

댓글