Switch to unified view

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()