본문 바로가기
Quadrotor Gazebo Simulation

Quadrotor -2부 쿼드로터 신호출력

by 항공학도 2012. 12. 6.

지난 1부 쿼드로터는 어떻게 나는가! 를 통해 쿼드로터의 기본적 Dynamics를 살펴 보았습니다. 이번 글을 통해서는 한개의 신호로 어떻게 4개의 모터 출력을 조절할 수 있는지에 대해 알아보도록 하겠습니다. 

쿼드로터가 공중에서 정지(Hovering) 해 떠있기 위해서는 Gyro 센서, 가속도 센서, 고도 센서 등등으로부터 피드백을 받죠 이 신호들은 MCU를 거쳐 모터가 알아먹을 수 있는 4개의 각기다른 PWM신호로 출력되어야  합니다.(PWM에 대해 궁금하신분들은 PWM 완전 정복! 참고하세요)

예를들어 볼게요, 만약, Hovering하던 쿼드로터가 바람이나 외부 충격에 의해 기울어 졌다면 다시 수평으로 자리를 잡아야 겠죠? 그러면 Gyro 센서가 그 즉시 기울어졌다는 피드백 신호를 보내줄겁니다 이때, 기울어진 반대편의 모터2개는 천천히 돌고 기울어진 쪽의 모터2개는 빠르게 돌면 다시 수평으로 자리잡게 되겠죠. 이런식으로 동작해야 하기 때문에 모터4개로 들어가는 PWM신호들은 각기 다른 출력을 내야 합니다. 어떻게하면 1개의 신호를 그에 맞는 4개의 각기다른 출력으로 바꿀 수 있을까요?

위 그림은 Pitch 동작에 관한 설명입니다. 그림에서 보시듯이 Pitch를 증가시키기 위해선 Motor1,Motor2가 빠르게 회전하고, M3,M4가 느리게 회전하면 되죠? 그럼 이걸 아래와 같이 쓸 수 있습니다. (여기서 cmd는 Command의 줄임말입니다! 코딩에 넣을땐 길면 지저분하니까 보통 저렇게 줄여서 쓰게되요)

Roll 동작은 y축을 중심으로 회전이므로 Motor1과 Motor3이 빠르게 돌고 나머지가 느리게 돌면되죠 그러면 이것 역시 아래와 같이 쓸 수 있습니다.

Yaw동작은 헷갈리니 그림을 봐보도록 할게요

위 그림에서 보면 Motor2와 Motor3이 빠르게 돌고 Motor1과 Motor4가 느리게돌면 반시계방향으로 회전하는 것을 알 수 있죠  헷갈리시는 분들은 1부- 쿼드로터는 어떻게 나는가! 를 참고하시기 바랍니다.

그럼 이 역시 아래와 같이 쓸 수 있겠죠.

그리고 마지막으로 Thrust가 있겠죠? 위로 상승하려는 힘 ! 이것은 모터4개가 모두 빠르게 회전하면 위로 상승할테니!

로 쓸수 있죠. 그럼 이제 이걸 행렬식으로 정리해볼게요

짜잔! 위와 같이 표현할 수 있죠? 이제 이걸 다시 풀어서 쓰면요

이제 우변의 앞행렬에 역행렬을 취해줍니다 그럼!

드디어 좌변에 4개 모터의 회전속도가 나오게 됬죠. 우변에 있는 Ucmd[]의 값들은 코딩에서 초기 값으로 Define되거나 자이로, 가속도센서로부터 그 값이 정해져서 들어올겁니다. 그러므로 자동적으로 그 값에따라 모터4개 각각으로 다른 신호가 들어가게 되죠! 조금 복잡하지만 생각해보면 쉬우니 이해 해보시길 바랍니다!

댓글