지난 포스팅에서 보여드리기만 하고 증명이나 설명은 거의 없었던 그 식에 대해서 설명드리겠습니다. 이게 바로 저번 포스팅에서 얘기했던 식입니다. 각 부분에 대해서 다시 설명해보자면 변환할 값(새로 갱신된 데이터)에 변환 이득값을 곱해 작은 범위를 큰 범위로 늘려주고 마지막으로 모자란 보충값을 더해줍니다. 한번 세부적으로 예를 들어보도록 하겠습니다. sbus data는 지난 번에 얘기한 대로 352 ~ 1696의 범위를 가집니다.(모든 리시버의 데이터가 이 범위를 가지는 것은 아닙니다. 여러분 각자 하드웨어마다 다른 범위를 가질 것입니다.)그럼 범위의 scale은 1696 - 352 = 1344입니다. 한편 우리가 sbus data를 가지고 만들어야 할 pulse 값의 범위는 4619 ~ 8147입니다.(지..
오늘은 조종기 신호를 수신하는 SBUS 리시버의 output data를 이용하여 드론의 PWM을 생성해보는 방법에 대해서 알아보겠습니다. STM32 MCU를 이용하여 설명하겠습니다. 오늘 이 포스팅을 통해 어떤 하드웨어가 출력하는 PWM의 주기와 Duty Cycle을 MCU Timer 세팅을 통해 그대로 구현해 볼 수 있을 것입니다. 최근 진행했던 드론 프로젝트의 구성을 예로 설명하겠습니다. SBUS 리시버가 출력하는 PWM 파형 분석프로젝트에 사용했던 SBUS 리시버에서 출력하는 PWM을 오실로스코프를 통해 확인해보니 다음과 같은 결과가 있었습니다. PWM 주기 : 15msHIGH duration(한 펄스에서 HIGH가 차지하고 있는 시간) : 1.1ms ~ 1.94ms HIGH duration 범위를..
현재 프로젝트에서는 고도를 측정하기 위해 기압 센서를 사용하여 기압을 고도로 변환하여 실제 비행에서 고도를 파악하려고 합니다. 하지만 워낙 노이즈가 심해서 필터 없이는 도저히 사용할 수 없는 수준이기에 고도 필터를 구현하기로 했습니다. 제가 가장 큰 도움을 받고 있는 멘토분에게 여쭤가며 얻어낸 소중한 지식을 여러분과 공유하고자 이렇게 포스팅을 하게 되었습니다. 고도필터의 전체적인 구현 시퀀스는 다음과 같습니다. 1. 가속도계의 z축 값에서 중력 가속도 성분을 제거합니다.(보상한다라고도 표현하는 것 같습니다.) 2. 중력 가속도 성분을 제거한 값(벡터)을 DCM을 이용(오일러각 이용)하여 관성 좌표계(고정 NED 좌표계) 벡터로 분해합니다.(벡터를 표현하는 좌표계를 옮기는 것이라고 이해하시는 게 쉬울 것 ..
기압계와 가속도계를 이용한 고도 필터를 공부하면서 도중 알게 된 DCM에 대해 포스팅해보도록 하겠습니다.이 문서를 토대로 공부한 내용을 정리하겠습니다.일반적으로 방향 좌표계는 고정적인 전역 좌표계를 기준으로 상대적인 몸체의 방향을 계산하게 됩니다.보통, 전역적으로 고정되어 있는(불변하는) 절대적 좌표계를 global 좌표계라 하고, 몸체가 회전할 때마다 실시간으로 가변되는 몸체의 좌표계를 body 좌표계라고 합니다. DCM TUTORIAL – AN INTRODUCTION TO ORIENTATION KINEMATICS (REV 0.1) I, J, K는 global 좌표계의 단위 벡터라고 하고, i, j, k는 body 좌표계의 단위 벡터라고 하겠습니다.(이 벡터들 모두 시점이 O로 같습니다.) global..
- Total
- Today
- Yesterday
- 오실로스코프
- 고도필터
- 터미널
- 컴파일
- STM32
- compile
- 초기화 리스트
- Effective C++
- 멤버 초기화 리스트
- DCM
- UART
- computer_science
- 칼만필터
- SPI
- pwm
- 로그
- 드론개발
- teraterm
- c
- DMA
- 드론
- 컴퓨터구조
- PID
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |