기압계와 가속도계를 이용한 고도 필터를 공부하면서 도중 알게 된 DCM에 대해 포스팅해보도록 하겠습니다.이 문서를 토대로 공부한 내용을 정리하겠습니다.일반적으로 방향 좌표계는 고정적인 전역 좌표계를 기준으로 상대적인 몸체의 방향을 계산하게 됩니다.보통, 전역적으로 고정되어 있는(불변하는) 절대적 좌표계를 global 좌표계라 하고, 몸체가 회전할 때마다 실시간으로 가변되는 몸체의 좌표계를 body 좌표계라고 합니다. DCM TUTORIAL – AN INTRODUCTION TO ORIENTATION KINEMATICS (REV 0.1) I, J, K는 global 좌표계의 단위 벡터라고 하고, i, j, k는 body 좌표계의 단위 벡터라고 하겠습니다.(이 벡터들 모두 시점이 O로 같습니다.) global..
표준 PID 제어기 알고리즘에서 미분항은 다음과 같이 구했습니다.DTerm = Kd * (dError / dT); 하지만 실제로 사용하는 미분항은 다음과 같이 구합니다.dInput = Input - prevInput; DTerm = -Kd * (dInput / dT); 왜 기존에 나와 있는 알고리즘대로 사용하지 않고 미분항을 수정해서 사용하게 될까요?Error = Setpoint - Input;이므로 Setpoint 값의 변경은 갑작스런 Error 변화를 유도하고 그렇게 되면 미분항의 값은 갑자기 확 커지게 됩니다. 이는 결국 output의 갑작스런 변화를 유도하게 됩니다. 그 이유를 예를 들어 설명하겠습니다. 미분항을 그대로 사용하게 될 경우 초래되는 문제 드론이 수평을 유지하도록 하기 위해 Setpo..
표준 PID 제어기 알고리즘은 다음과 같습니다. 이 알고리즘을 코드로 간단하게 표현하자면 다음과 같습니다.Error = Setpoint - Input;PTerm = Kp * Error;ITerm += Ki * Error * dt; 현재 오차(Error)는 설정(Setpoint) 값에서 현재 입력(Input) 값을 빼서 구합니다. 비례항(PTerm)은 비례항 이득값(Kp)에 현재 오차를 곱해서 구합니다. 적분항(ITerm)은 적분항 이득값(Ki)에 현재 오차와 주기(dt)를 곱해서 더해줍니다. 미분항(DTerm)을 구하기 위해서는 다음과 같이 구합니다.dError = Error - prevError;DTerm = Kd * (dError / dt); 오차 변화(dError)는 현재 오차(Error)에서 이전..
- Total
- Today
- Yesterday
- 컴퓨터구조
- C++
- compile
- 드론
- 드론개발
- UART
- teraterm
- 칼만필터
- c
- 터미널
- STM32
- 고도필터
- 초기화 리스트
- 로그
- computer_science
- PID
- 컴파일
- DMA
- DCM
- 멤버 초기화 리스트
- pwm
- SPI
- 오실로스코프
- Effective 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 |