일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- QGC#QGrouncControl#GLIB오류
- 파파고 꿀팁
- 파이썬#subprocess#communicate()
- 파파고 번역
- 스트림 암호 one-time-pad 공격#보안#암호
- 파이썬 엑셀 파일 읽고 쓰기
- 파이썬 #파이썬프로젝트 #파이썬 예시 #파이썬 파일경로 #파이썬 자동화
- 파이썬 #
- 파이썬#파이썬경로#파이썬폴더#파이썬디렉토리
- 파이썬 유튜브
- 패스트 캠퍼스 #자율주행 #비전
- 파이썬 파일 전송
- 파이썬 텍스트 변환 #파이썬 공부
- 파이썬 열
- 파이선 행
- 파이썬 예시
- 통계 #ROC #TPR #FPR #TNR #이진분류 #Accuracy #Recall
- pdf 번역
- 크롬오류#크롬검색어자동완성끄기#검색어자동완성오류#검색어자동완성 제거#검색어 노란선#검색어반복입력
- 파이썬 음성파일 텍스트 변환
- 파이썬 음성인식
- 파이썬
- 리눅스기초#리눅스명령어#리눅스 tail#tail#모의해킹 리눅스
- ROS #spin() #spinOnce() #ROS기초
- 파이썬 채팅
- ROS #Robotics #ROS기초
- 파이썬 프로젝트
- 논문번역 꿀팁
- PDF 개행문자
- 리눅스#모의해킹#리눅스명령어#head 명령어
개발자비행일지
Drone-Gyroscope 계산과정 본문
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 |