-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathUtil.py
68 lines (60 loc) · 1.26 KB
/
Util.py
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# -*- coding: utf-8 -*-
from math import *
import cv2 as cv
import numpy as np
def isDeviceMoving(a):
if(abs(a) < 0.005):
return False
else:
return True
def lowPassFilter(value,newValue,alpha):
value = value * alpha + newValue * (1 - alpha)
return value
"""
High-pass filter
- newValues 新しい値
- lowValue 前回の低周波領域値が渡され、今回の低周波領域値が格納される配列
- value ハイパスフィルタ適用後の値が格納される配列
"""
def highPassFilter(newValues, lowValue, alpha):
lowValue = alpha * lowValue + (1 - alpha) * newValues
value = newValues - lowValue
return value, lowValue
def matrixGyro2Euler(x,y):
#回転行列
R = np.array([
[1, sin(x)*tan(y), cos(x)*tan(y)],
[0, cos(x), -sin(x)],
[0, sin(x)/cos(y), cos(x)/cos(y)]
])
return R
def rotationMatrixX(r):
C = cos(r)
S = sin(r)
#回転行列
R = np.array([
[1, 0, 0],
[0, C, -S],
[0, S, C]
])
return R
def rotationMatrixY(r):
C = cos(r)
S = sin(r)
#回転行列
R = np.array([
[C, 0, S],
[0, 1, 0],
[-S, 0, C]
])
return R
def rotationMatrixZ(r):
C = cos(r)
S = sin(r)
#回転行列
R = np.array([
[C, -S, 0],
[S, C, 0],
[0, 0, 1]
])
return R