|
a |
|
b/app/scratch/finger_angle_plots.py |
|
|
1 |
import numpy as np |
|
|
2 |
import matplotlib.pyplot as plt |
|
|
3 |
from resources.pymo.pymo.parsers import BVHParser |
|
|
4 |
from matplotlib2tikz import save as tikz_save |
|
|
5 |
|
|
|
6 |
# BVH-File |
|
|
7 |
bvh = BVHParser() |
|
|
8 |
bvh_data = bvh.parse('../../output/BVH/20190213_validierung_1.bvh') |
|
|
9 |
bvh_number_frames = np.size(bvh.data.values.RightHandIndex2_Xrotation.values) |
|
|
10 |
bvh_frames = np.arange(0, bvh_number_frames) |
|
|
11 |
print(bvh_number_frames, bvh_frames) |
|
|
12 |
|
|
|
13 |
# Thumb |
|
|
14 |
bvh_RightHandThumb2 = np.array([bvh_data.values.RightHandThumb2_Xrotation.values, |
|
|
15 |
bvh_data.values.RightHandThumb2_Yrotation.values, |
|
|
16 |
bvh_data.values.RightHandThumb2_Zrotation.values]) |
|
|
17 |
bvh_RightHandThumb3 = np.array([bvh_data.values.RightHandThumb3_Xrotation.values, |
|
|
18 |
bvh_data.values.RightHandThumb3_Yrotation.values, |
|
|
19 |
bvh_data.values.RightHandThumb3_Zrotation.values]) |
|
|
20 |
bvh_RightHandThumb4 = np.array([bvh_data.values.RightHandThumb4_Xrotation.values, |
|
|
21 |
bvh_data.values.RightHandThumb4_Yrotation.values, |
|
|
22 |
bvh_data.values.RightHandThumb4_Zrotation.values]) |
|
|
23 |
bvh_RightHandThumb5 = np.array([bvh_data.values.RightHandThumb5_Xrotation.values, |
|
|
24 |
bvh_data.values.RightHandThumb5_Yrotation.values, |
|
|
25 |
bvh_data.values.RightHandThumb5_Zrotation.values]) |
|
|
26 |
|
|
|
27 |
# Index |
|
|
28 |
bvh_RightHandIndex1 = np.array([bvh_data.values.RightHandIndex1_Xrotation.values, |
|
|
29 |
bvh_data.values.RightHandIndex1_Yrotation.values, |
|
|
30 |
bvh_data.values.RightHandIndex1_Zrotation.values]) |
|
|
31 |
bvh_RightHandIndex2 = np.array([bvh_data.values.RightHandIndex2_Xrotation.values, |
|
|
32 |
bvh_data.values.RightHandIndex2_Yrotation.values, |
|
|
33 |
bvh_data.values.RightHandIndex2_Zrotation.values]) |
|
|
34 |
bvh_RightHandIndex3 = np.array([bvh_data.values.RightHandIndex3_Xrotation.values, |
|
|
35 |
bvh_data.values.RightHandIndex3_Yrotation.values, |
|
|
36 |
bvh_data.values.RightHandIndex3_Zrotation.values]) |
|
|
37 |
bvh_RightHandIndex4 = np.array([bvh_data.values.RightHandIndex4_Xrotation.values, |
|
|
38 |
bvh_data.values.RightHandIndex4_Yrotation.values, |
|
|
39 |
bvh_data.values.RightHandIndex4_Zrotation.values]) |
|
|
40 |
bvh_RightHandIndex5 = np.array([bvh_data.values.RightHandIndex5_Xrotation.values, |
|
|
41 |
bvh_data.values.RightHandIndex5_Yrotation.values, |
|
|
42 |
bvh_data.values.RightHandIndex5_Zrotation.values]) |
|
|
43 |
|
|
|
44 |
# Middle |
|
|
45 |
bvh_RightHandMiddle1 = np.array([bvh_data.values.RightHandMiddle1_Xrotation.values, |
|
|
46 |
bvh_data.values.RightHandMiddle1_Yrotation.values, |
|
|
47 |
bvh_data.values.RightHandMiddle1_Zrotation.values]) |
|
|
48 |
bvh_RightHandMiddle2 = np.array([bvh_data.values.RightHandMiddle2_Xrotation.values, |
|
|
49 |
bvh_data.values.RightHandMiddle2_Yrotation.values, |
|
|
50 |
bvh_data.values.RightHandMiddle2_Zrotation.values]) |
|
|
51 |
bvh_RightHandMiddle3 = np.array([bvh_data.values.RightHandMiddle3_Xrotation.values, |
|
|
52 |
bvh_data.values.RightHandMiddle3_Yrotation.values, |
|
|
53 |
bvh_data.values.RightHandMiddle3_Zrotation.values]) |
|
|
54 |
bvh_RightHandMiddle4 = np.array([bvh_data.values.RightHandMiddle4_Xrotation.values, |
|
|
55 |
bvh_data.values.RightHandMiddle4_Yrotation.values, |
|
|
56 |
bvh_data.values.RightHandMiddle4_Zrotation.values]) |
|
|
57 |
bvh_RightHandMiddle5 = np.array([bvh_data.values.RightHandMiddle5_Xrotation.values, |
|
|
58 |
bvh_data.values.RightHandMiddle5_Yrotation.values, |
|
|
59 |
bvh_data.values.RightHandMiddle5_Zrotation.values]) |
|
|
60 |
|
|
|
61 |
# Ring |
|
|
62 |
bvh_RightHandRing1 = np.array([bvh_data.values.RightHandRing1_Xrotation.values, |
|
|
63 |
bvh_data.values.RightHandRing1_Yrotation.values, |
|
|
64 |
bvh_data.values.RightHandRing1_Zrotation.values]) |
|
|
65 |
bvh_RightHandRing2 = np.array([bvh_data.values.RightHandRing2_Xrotation.values, |
|
|
66 |
bvh_data.values.RightHandRing2_Yrotation.values, |
|
|
67 |
bvh_data.values.RightHandRing2_Zrotation.values]) |
|
|
68 |
bvh_RightHandRing3 = np.array([bvh_data.values.RightHandRing3_Xrotation.values, |
|
|
69 |
bvh_data.values.RightHandRing3_Yrotation.values, |
|
|
70 |
bvh_data.values.RightHandRing3_Zrotation.values]) |
|
|
71 |
bvh_RightHandRing4 = np.array([bvh_data.values.RightHandRing4_Xrotation.values, |
|
|
72 |
bvh_data.values.RightHandRing4_Yrotation.values, |
|
|
73 |
bvh_data.values.RightHandRing4_Zrotation.values]) |
|
|
74 |
bvh_RightHandRing5 = np.array([bvh_data.values.RightHandRing5_Xrotation.values, |
|
|
75 |
bvh_data.values.RightHandRing5_Yrotation.values, |
|
|
76 |
bvh_data.values.RightHandRing5_Zrotation.values]) |
|
|
77 |
|
|
|
78 |
# Pinky |
|
|
79 |
bvh_RightHandPinky1 = np.array([bvh_data.values.RightHandPinky1_Xrotation.values, |
|
|
80 |
bvh_data.values.RightHandPinky1_Yrotation.values, |
|
|
81 |
bvh_data.values.RightHandPinky1_Zrotation.values]) |
|
|
82 |
bvh_RightHandPinky2 = np.array([bvh_data.values.RightHandPinky2_Xrotation.values, |
|
|
83 |
bvh_data.values.RightHandPinky2_Yrotation.values, |
|
|
84 |
bvh_data.values.RightHandPinky2_Zrotation.values]) |
|
|
85 |
bvh_RightHandPinky3 = np.array([bvh_data.values.RightHandPinky3_Xrotation.values, |
|
|
86 |
bvh_data.values.RightHandPinky3_Yrotation.values, |
|
|
87 |
bvh_data.values.RightHandPinky3_Zrotation.values]) |
|
|
88 |
bvh_RightHandPinky4 = np.array([bvh_data.values.RightHandPinky4_Xrotation.values, |
|
|
89 |
bvh_data.values.RightHandPinky4_Yrotation.values, |
|
|
90 |
bvh_data.values.RightHandPinky4_Zrotation.values]) |
|
|
91 |
bvh_RightHandPinky5 = np.array([bvh_data.values.RightHandPinky5_Xrotation.values, |
|
|
92 |
bvh_data.values.RightHandPinky5_Yrotation.values, |
|
|
93 |
bvh_data.values.RightHandPinky5_Zrotation.values]) |
|
|
94 |
|
|
|
95 |
# Anybody |
|
|
96 |
interpol_data = np.loadtxt("hand_interpolated_joint_angles_n047_2.txt", delimiter=",", skiprows=1, unpack=True) |
|
|
97 |
any_number_frame = np.size(interpol_data[1]) |
|
|
98 |
any_frame = np.arange(0, bvh_number_frames, np.round(bvh_number_frames/any_number_frame)) |
|
|
99 |
print(any_number_frame, any_frame) |
|
|
100 |
|
|
|
101 |
# Thumb |
|
|
102 |
any_RightHandThumb2 = np.array([np.multiply(interpol_data[1], (180 / np.pi)), # CMC1Flexion |
|
|
103 |
np.multiply(interpol_data[2], (180 / np.pi)), # CMC1Abduction |
|
|
104 |
np.zeros(any_number_frame)]) # CMC1Deviation = 0 |
|
|
105 |
|
|
|
106 |
any_RightHandThumb3 = np.array([np.multiply(interpol_data[3], (180 / np.pi)), # MCP1Flexion |
|
|
107 |
np.multiply(interpol_data[4], (180 / np.pi)), # MCP1Abduction |
|
|
108 |
np.zeros(any_number_frame)]) # MCP1Deviation = 0 |
|
|
109 |
|
|
|
110 |
any_RightHandThumb4 = np.array([np.multiply(interpol_data[5], (180 / np.pi)), # DIP1Flexion |
|
|
111 |
np.zeros(any_number_frame), # DIP1Abduction = 0 |
|
|
112 |
np.zeros(any_number_frame)]) # DIP1Deviation = 0 |
|
|
113 |
|
|
|
114 |
any_RightHandThumb5 = np.array([np.zeros(any_number_frame), # = 0 |
|
|
115 |
np.zeros(any_number_frame), # = 0 |
|
|
116 |
np.zeros(any_number_frame)]) # = 0 |
|
|
117 |
|
|
|
118 |
# Index |
|
|
119 |
any_RightHandIndex1 = np.array([np.zeros(any_number_frame), # CMC2Flexion = 0 |
|
|
120 |
np.zeros(any_number_frame), # CMC2Abduction = 0 |
|
|
121 |
np.zeros(any_number_frame)]) # CMC2Deviation = 0 |
|
|
122 |
|
|
|
123 |
any_RightHandIndex2 = np.array([np.multiply(interpol_data[6], (180 / np.pi)), # MCP2Flexion |
|
|
124 |
np.multiply(interpol_data[7], (180 / np.pi)), # MCP2Abduction |
|
|
125 |
np.zeros(any_number_frame)]) # MCP2Deviation = 0 |
|
|
126 |
|
|
|
127 |
any_RightHandIndex3 = np.array([np.multiply(interpol_data[8], (180 / np.pi)), # PIP2Flexion |
|
|
128 |
np.zeros(any_number_frame), # PIP2Abduction = 0 |
|
|
129 |
np.zeros(any_number_frame)]) # PIP2Deviation = 0 |
|
|
130 |
|
|
|
131 |
any_RightHandIndex4 = np.array([np.multiply(interpol_data[9], (180 / np.pi)), # DIP2Flexion |
|
|
132 |
np.zeros(any_number_frame), # DIP2Abduction = 0 |
|
|
133 |
np.zeros(any_number_frame)]) # DIP2Deviation = 0 |
|
|
134 |
|
|
|
135 |
any_RightHandIndex5 = np.array([np.zeros(any_number_frame), # = 0 |
|
|
136 |
np.zeros(any_number_frame), # = 0 |
|
|
137 |
np.zeros(any_number_frame)]) # = 0 |
|
|
138 |
|
|
|
139 |
# Middle |
|
|
140 |
any_RightHandMiddle1 = np.array([np.zeros(any_number_frame), # CMC3Flexion = 0 |
|
|
141 |
np.zeros(any_number_frame), # CMC3Abduction = 0 |
|
|
142 |
np.zeros(any_number_frame)]) # CMC3Deviation = 0 |
|
|
143 |
|
|
|
144 |
any_RightHandMiddle2 = np.array([np.multiply(interpol_data[10], (180 / np.pi)), # MCP3Flexion |
|
|
145 |
np.multiply(interpol_data[11], (180 / np.pi)), # MCP3Abduction |
|
|
146 |
np.zeros(any_number_frame)]) # MCP3Deviation = 0 |
|
|
147 |
|
|
|
148 |
any_RightHandMiddle3 = np.array([np.multiply(interpol_data[12], (180 / np.pi)), # PIP3Flexion |
|
|
149 |
np.zeros(any_number_frame), # PIP3Abduction = 0 |
|
|
150 |
np.zeros(any_number_frame)]) # PIP3Deviation = 0 |
|
|
151 |
|
|
|
152 |
any_RightHandMiddle4 = np.array([np.multiply(interpol_data[13], (180 / np.pi)), # DIP3Flexion |
|
|
153 |
np.zeros(any_number_frame), # DIP3Abduction = 0 |
|
|
154 |
np.zeros(any_number_frame)]) # DIP3Deviation = 0 |
|
|
155 |
|
|
|
156 |
any_RightHandMiddle5 = np.array([np.zeros(any_number_frame), # = 0 |
|
|
157 |
np.zeros(any_number_frame), # = 0 |
|
|
158 |
np.zeros(any_number_frame)]) # = 0 |
|
|
159 |
|
|
|
160 |
# Ring |
|
|
161 |
any_RightHandRing1 = np.array([np.zeros(any_number_frame), # CMC4Flexion = 0 |
|
|
162 |
np.zeros(any_number_frame), # CMC4Abduction = 0 |
|
|
163 |
np.zeros(any_number_frame)]) # CMC4Deviation = 0 |
|
|
164 |
|
|
|
165 |
any_RightHandRing2 = np.array([np.multiply(interpol_data[14], (180 / np.pi)), # MCP4Flexion |
|
|
166 |
np.multiply(interpol_data[15], (180 / np.pi)), # MCP4Abduction |
|
|
167 |
np.zeros(any_number_frame)]) # MCP4Deviation = 0 |
|
|
168 |
|
|
|
169 |
any_RightHandRing3 = np.array([np.multiply(interpol_data[16], (180 / np.pi)), # PIP4Flexion |
|
|
170 |
np.zeros(any_number_frame), # PIP4Abduction = 0 |
|
|
171 |
np.zeros(any_number_frame)]) # PIP4Deviation = 0 |
|
|
172 |
|
|
|
173 |
any_RightHandRing4 = np.array([np.multiply(interpol_data[17], (180 / np.pi)), # DIP4Flexion |
|
|
174 |
np.zeros(any_number_frame), # DIP4Abduction = 0 |
|
|
175 |
np.zeros(any_number_frame)]) # DIP4Deviation = 0 |
|
|
176 |
|
|
|
177 |
any_RightHandRing5 = np.array([np.zeros(any_number_frame), # = 0 |
|
|
178 |
np.zeros(any_number_frame), # = 0 |
|
|
179 |
np.zeros(any_number_frame)]) # = 0 |
|
|
180 |
|
|
|
181 |
# Pinky |
|
|
182 |
any_RightHandPinky1 = np.array([np.zeros(any_number_frame), # CMC5Flexion = 0 |
|
|
183 |
np.zeros(any_number_frame), # CMC5Abduction = 0 |
|
|
184 |
np.zeros(any_number_frame)]) # CMC5Deviation = 0 |
|
|
185 |
|
|
|
186 |
any_RightHandPinky2 = np.array([np.multiply(interpol_data[18], (180 / np.pi)), # MCP5Flexion |
|
|
187 |
np.multiply(interpol_data[19], (180 / np.pi)), # MCP5Abduction |
|
|
188 |
np.zeros(any_number_frame)]) # MCP5Deviation = 0 |
|
|
189 |
|
|
|
190 |
any_RightHandPinky3 = np.array([np.multiply(interpol_data[20], (180 / np.pi)), # PIP5Flexion |
|
|
191 |
np.zeros(any_number_frame), # PIP5Abduction = 0 |
|
|
192 |
np.zeros(any_number_frame)]) # PIP5Deviation = 0 |
|
|
193 |
|
|
|
194 |
any_RightHandPinky4 = np.array([np.multiply(interpol_data[21], (180 / np.pi)), # DIP5Flexion |
|
|
195 |
np.zeros(any_number_frame), # DIP5Abduction = 0 |
|
|
196 |
np.zeros(any_number_frame)]) # DIP5Deviation = 0 |
|
|
197 |
|
|
|
198 |
any_RightHandPinky5 = np.array([np.zeros(any_number_frame), # = 0 |
|
|
199 |
np.zeros(any_number_frame), # = 0 |
|
|
200 |
np.zeros(any_number_frame)]) # = 0 |
|
|
201 |
|
|
|
202 |
# Plot |
|
|
203 |
bvh_plot = bvh_RightHandIndex3 |
|
|
204 |
any_plot = any_RightHandIndex3 |
|
|
205 |
|
|
|
206 |
# use LaTeX fonts in the plot |
|
|
207 |
# plt.rc('text', usetex=True) |
|
|
208 |
plt.rc('font', family='serif') |
|
|
209 |
|
|
|
210 |
fig, axs = plt.subplots(3, 1) |
|
|
211 |
axs[0].plot(bvh_frames, bvh_plot[0], linestyle='-', linewidth=2) |
|
|
212 |
axs[0].plot(any_frame, -any_plot[0], linestyle=':', linewidth=2, marker='x') |
|
|
213 |
axs[0].set_xlim(0, bvh_number_frames) |
|
|
214 |
axs[0].set_ylim(-90, 90) |
|
|
215 |
axs[0].set_xlabel('frames') |
|
|
216 |
axs[0].set_ylabel('angle in degree') |
|
|
217 |
axs[0].set_title('flexion (x-axis)') |
|
|
218 |
axs[0].legend(['bvh', 'any'], loc='center left', bbox_to_anchor=(1, 0.5)) |
|
|
219 |
axs[0].grid(True) |
|
|
220 |
|
|
|
221 |
axs[1].plot(bvh_frames, bvh_plot[1], linestyle='-', linewidth=2) |
|
|
222 |
axs[1].plot(any_frame, -any_plot[1], linestyle=':', linewidth=2, marker='x') |
|
|
223 |
axs[1].set_xlim(0, bvh_number_frames) |
|
|
224 |
axs[1].set_ylim(-90, 90) |
|
|
225 |
axs[1].set_xlabel('frames') |
|
|
226 |
axs[1].set_ylabel('angle in degree') |
|
|
227 |
axs[1].set_title('abduction (y-axis)') |
|
|
228 |
axs[1].legend(['bvh', 'any'], loc='center left', bbox_to_anchor=(1, 0.5)) |
|
|
229 |
axs[1].grid(True) |
|
|
230 |
|
|
|
231 |
|
|
|
232 |
axs[2].plot(bvh_frames, bvh_plot[2], linestyle='-', linewidth=2) |
|
|
233 |
axs[2].plot(any_frame, -any_plot[2], linestyle=':', linewidth=2, marker='x') |
|
|
234 |
axs[2].set_xlim(0, bvh_number_frames) |
|
|
235 |
axs[2].set_ylim(-90, 90) |
|
|
236 |
axs[2].set_xlabel('frames') |
|
|
237 |
axs[2].set_ylabel('angle in degree') |
|
|
238 |
axs[2].set_title('deviation (z-axis)') |
|
|
239 |
axs[2].legend(['bvh', 'any'], loc='center left', bbox_to_anchor=(1, 0.5)) |
|
|
240 |
axs[2].grid(True) |
|
|
241 |
fig.tight_layout() |
|
|
242 |
plt.savefig("pgf_texsystem.pdf") |
|
|
243 |
plt.savefig("pgf_texsystem.png") |
|
|
244 |
plt.show() |