본문 바로가기

전체 글

(32)
이중 PID제어 이전에 사용한 PID제어는 단순히 각도를 PID제어한 것이었다. 그 결과 자세를 안정화하는데 시간이 걸려서 자세제어가 잘 되지않았다. 그럼 어떻게해야할까 고민하며 구글링을 해보았는데, 원래 PID제어로는 자세 제어가 잘 안되고 이중 PID제어를 해야한다는 것이다. 이중 PID제어도 어떻게 하냐에 따라 다른 것같았다. PI-PI제어를 하기도 하던데 내가 찾은 것 중 가장 괜찮다고 생각한 것은 외부 루프로 각도를 P제어한 후, 그 결과를 Set point로 하여 내부 루프로 각속도를 PID제어를 하는 것이다. 단순히 각도만으로 제어하는 것보다 각도로 제어한 값을 각속도로 융합해서 제어하므로 효율이 더 좋을 거라 생각했다. errorAngle = targetAngle - currentAngle; //각도 오차..
PID제어 피드백 제어란 뭘까? 드론을 원하는 각도로 움직이기 위해서는 자세 센서에서 출력되는 오일러 각도, 각속도 그리고 조종기(SBus data)의 값을 이용하여 피드백 구조로 제어하여야 한다. 피드백 구조를 사용하지 않는다면 조종기로 드론에 명령을 내려도 명령을 정확인 수행하지 못한다. 예를 들어, 제자리에서 왼쪽 모터에 30만큼 힘을 주면 10도만큼 오른쪽으로 기울어진다고 가정해보자. 하지만 드론이 제자리에서 오른쪽으로 이미 조금 기울어져 있다면 왼쪽 모터에 30만큼 힘을 주었을 때, 10도보다 더 오른쪽으로 기울어질 것이다. 그러므로 자세 센서에서 드론의 현재 오일러 각도를 분석한다. 그리고 드론은 조종기에서 내린 명령 각도에서 현재 각도를 뺀 값만큼을 움직인다. 예를 들어 조종기에서 30도만큼 기울이라는..
PyQt란? 나의 최종 목표는 드론의 자율주행이기 때문에 드론을 지상에서 제어할 수 있는 시스템을 만들어야한다. 비행중에 PID Gain값을 수정하거나 좌표를 통해 자율비행하고 현재 속력, 비행시간, 배터리 잔량 등등을 알 수 있게할 것이다. 그러려면 PC에서 GUI프로그램을 통해 사용자에게 입력받고 드론과 통신해야한다. GUI 프로그램 개발은 1학년 때 스마트팜 점프 업 캠프에서 조금 배웠지만 열심히하지않아서 잘 기억이 안난다. 그 때 PyQt를 썼었는데 다시 공부해서 PyQt로 GCS를 개발해보려한다. PyQt란 뭔까? Qt는 컴퓨터 프로그래밍에서 GUI 프로그램 개발에 널리 쓰이는 크로스 플랫폼 프레임워크이다. -위키백과 - 크로스 플랫폼은 여러 종류의 컴퓨터 플랫폼에서 작동할 수 있다는 뜻이다. Qt는 C++..