관리 메뉴

개발자비행일지

Drone-Gyroscope 계산과정 본문

▶ Ardupilot

Drone-Gyroscope 계산과정

Cyber0946 2020. 12. 6. 16:12

Gyroscope 

아래는 실제 Gyroscope의 사진이다.

이 전글에서 언급 하였듯이  Gyroscope는 각도의 변화율을 코리울리 힘을 이용해서 측정하는 장치이다.

자 이제 Gyrosensor가 회전을 계산하는 방식을 알아보자. 

초기시간 T0, 이후 시간  T1이 있다고 할 때, 시간 변화에 따른 각도의 변화율을 측정하는 과정을 통해 어떻게 계산하는지 알아보자.

시간 T0에서 축 Y 주위의 회전 각도(즉,  Axz 각도) (R을 xz 평면으로 정사형으로 만들고, 이 때 Z축과 정사형이 가지는 각도를 측정했을 때, Axz0으로 정의한다. 그리고 T1일 때의 이 각도를  Axz1이라 한다. 

이 때, 변경율은 다음과 같이 계산할 수 있다. 

RateAxz  = (Axz1-Axz0)/(t1-t0) 

Axz를 각도와 시간 단위로 표현하면 deg/sec로 표현할 수 있다. 이것이 Gyroscope가 측정하는 값이다.

이러한 각도변화를 측정하기 위해서는 관성력(코리울리 힘)을 측정해야 되는데 이는 다음과 같이 측정한다. 

RateAxz = {AdcGyroXZ * [Vref(전압레퍼런스) / 1023(R의 초기값)] - VzeroRate}/Sensitivity(1g 일때 측정되는 전압)
RateAyz = {AdcGyroYZ * [Vref(전압레퍼런스) / 1023(R의 초기값)] - VzeroRate}/Sensitivity(1g 일때 측정되는 전압)

AdcGyroXZ, AdcGyroYZ는 ADC모듈을 통해서 얻은 것으로  YZ 평면과  XZ 평면에 정사형된 벡터 R의 Z축을 기준으로 한 회전을 측정한 값이다. 이 값을 센서의 snesitivity를 기준으로 하면 회전의 정도를 표현할 수 있다. 위의 두 가지 회전을 회전의 중심이 되는 축을 기준으로 보면 AdcGyroXZ는 Y축, AdcGyroYZ는 X축이 된다. 

위 식에서  Vref = 3.3V를 사용한 경우의 ADC 기준 전압이다. 그리고  VzeroRate는  Zero Rate의 전압, 즉  Gyroscope가 회전하지 않을 때 출력하는 전압을 말하고, 여기서 이용한 보드의 경우 1.23V 이다. 
Sensitivity는 mV/deg/s로 표시되는 Gyroscope의 감도로 mV/deg/s로 표시된다. 회전속도를 초당 1도 증가시키는데 얼마의 mV가 필요한지를 계산하는데 사용된다. LPR550AL보드를 기준으로 할 때, 2mv/deg/s  이다. 

예제로 ADC 모듈이 다음과 같은 값을 가진다고 할 때를 기준으로 계산해 보자.

1. AdcGyrroXZ = 571, AdcGyroYZ = 323

그럼 아래와 같이 계산할 수 있다. 

RateAxz = (571 * (3.3V/1023)-1.23V) /(0.002V/deg/s) = 306deg/s

RateAyz = (323*(3.3V/1023)-1.23V) /(0.002V/deg/s) =-94deg/s이 된다. 

여기서 '-'부호는 기준 회전 방향과 역방향을 말한다. 

 

'▶ Ardupilot' 카테고리의 다른 글

Attitude Control Algorithm for drone  (0) 2021.03.24
[펌글]PWM이란?  (0) 2021.02.24
Drone -Gyro Sensor  (0) 2020.12.06
매틀랩 단축키  (0) 2020.10.08
C++ 초기화 리스트  (0) 2020.09.03