Snack 지식
버터워즈 필터
- 통과 대역의 응답을 평탄하게 만드는 필터
- 원하지 않는 신호 성분은 최대한 왜곡없이 유지하면서 원치 않는 노이즈를 깎아내는데에 목적이 있음
버터워즈 필터의 적용
- 아래 그림은 버터워즈 필터중 low-pass filter 를 적용한 그래프

- cut-off가 2Hz 라고 가정
- 2Hz는 초로 변환시 0.5초임, 위 그래프 신호-시간 그래프에서 0.5초의 급격한 변화를 스무딩 해준다고 생각하면됨

- 위 그림처럼 0.5초 내의 급격한 변화를 깎아낸다고 직관적으로 이해가능
- 2Hz는 초로 변환시 0.5초임, 위 그래프 신호-시간 그래프에서 0.5초의 급격한 변화를 스무딩 해준다고 생각하면됨
감쇠량
- 팍! 튀는게 어느정도인지, 그것을 어느정도로 줄이는지에 대해 논의함
- 아래와 같은 수식을 따름
- 위의 예시에서 2Hz의 10배 신호 20Hz의 경우,
만큼 감쇠를 시킨다고 볼 수 있음 - cutoff가 커질 수록 기하급수 적으로 더 많이 감쇠를 시킴
filtfilt
- 위와같은 버터워즈 필터는 위상지연을 만듦, 과거 데이터 기반으로 스무딩하기 때문에, 최신 데이터에 즉각적인 반응을 못한다고 직관적으로 이해하면됨
- filtfilt은 정방향으로 필터링을 한번하고, 데이터를 뒤집어 똑같이 역방향으로 한번더 필터링을해 상쇄시킴
- 필터를 두번 쓰기 때문에 실질적으로 차수가 2배가됨
- 미래의 데이터를 알아야하기 때문에 사후 분석에만 쓰일 수 있음
예시
- cutoff를 2Hz로 설정 -> 2Hz 이상의 진동은 다 버리겠다. -> 매우 느긋하고 메인 움직임만 확인하겠다.
- 느긋하게 cut해서 매우 부드러움
- cutoff를 6Hz로 설정 -> 6Hz 이상의 진동은 다 버리겠다. -> 사람의 주파수만 확인
- cutoff를 100Hz 로 설정 -> 100Hz 이상의 진동만 버리겠다 -> 노이즈도 존재함, 매우 짧은 time window(주파수의 역수)로 cut을 하겠다.
- 거칠고 노이즈 다 살아있음
상보필터
- 상보필터는 성격이 다른 두 신호를 합쳐서 하나의 완벽한 값을 만들어 내는것
- 두 센서가 서로 Complementary 를 함
- 주로 가속도계와 자이로스코프의 조합에서 사용하고 두 센서의 비교는 아래와 같음
| 구분 | 가속도계 (Accelerometer) | 자이로스코프 (Gyroscope) |
|---|---|---|
| 측정 방식 | 중력 가속도 방향을 측정 | 회전 속도(각속도)를 측정 |
| 장점 | 가만히 있을 때 매우 정확함 (오차가 쌓이지 않음) | 움직임이 매우 빠르고 매끄러움 |
| 단점 | 진동이나 갑작스러운 움직임에 노이즈가 심함 | 시간이 지날수록 오차가 누적되는 드리프트(Drift) 발생 |
| 필요한 처방 | 저주파 통과 필터 (LPF) | 고주파 통과 필터 (HPF) |
- 상보필터의 수식
- 기존까지 알고있던 각도에 자이로가 측정한 변화량을 더함 (부정적분)
- 0.96~0.99까지만 믿고, 나머지 1~4%는 가속도를 섞어 오차를 교정해줌
- angle 입장에서는 이전값들을 아주 조금씩 길게 평균을 내는 것
- -> 튀는 고주파를 제거하고 저주파만 남김 -> LPF처럼 동작을 하게됨
- gyro 입장에서는 기존 데이터를 버리는 행위를함
- 천천히 쌓인 저주파 드리프트를 버리고, 빠른 움직임만 적분 결과에 영향을 미치게됨
arctan2
이전 삼각함수의 한계
tangent & arctan
- 직각 삼각형에서 각도를 구할때 쓰는 방식
- 문제점
- 사분면을 정확히 알지못함
- x = 1, y = 1 일때, y/x = 1
- x = -1, y = -1 일때, y/x = 1
- 두 상황 모두 비율이 1이기 때문에 똑같이 45도라고 답함
- 하지만 B는 -135도에 있어야함
- 분모가 0일때
- 물체가 수직으로 되어있으면, x 좌표가 0이됨
- 이때 arctan 값은 0으로 나눌 수 없다는 에러를 내뿜음
- 사분면을 정확히 알지못함
arctan2
- y, x 를 따로받아 사분면을 확인하고 정확한 좌표를 내뱉음
- x = 0이 들어오면 에러 대신에 y의 부호를 보고 90도나 -90도를 반환