Add flexor FEM model
This commit is contained in:
		
							
								
								
									
										2177
									
								
								data/flexor_ID16/22921061.STEP
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										2177
									
								
								data/flexor_ID16/22921061.STEP
									
									
									
									
									
										Executable file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								data/flexor_ID16/cp91_2MDoF_6modes.sub
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								data/flexor_ID16/cp91_2MDoF_6modes.sub
									
									
									
									
									
										Executable file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										2147
									
								
								data/flexor_ID16/flexor_ID16.STEP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2147
									
								
								data/flexor_ID16/flexor_ID16.STEP
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								data/flexor_ID16/flexor_ID16.slx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								data/flexor_ID16/flexor_ID16.slx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										20
									
								
								data/flexor_ID16/mat_K_6modes_2MDoF.matrix
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								data/flexor_ID16/mat_K_6modes_2MDoF.matrix
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
 | 
			
		||||
MAT_K: 
 | 
			
		||||
[ 1, 1]: 1.122e+07 [ 1, 2]: 1.950e+02 [ 1, 3]: 2.215e+03 [ 1, 4]:-7.188e-01 [ 1, 5]:-2.652e+02 [ 1, 6]: 1.594e+00 [ 1, 7]:-1.122e+07 [ 1, 8]:-2.132e+02 [ 1, 9]:-2.217e+03 [ 1,10]: 1.471e-01 [ 1,11]: 2.656e+02 [ 1,12]:-1.333e+00 [ 1,13]: 0.000e+00 [ 1,14]: 0.000e+00 [ 1,15]: 0.000e+00 [ 1,16]: 0.000e+00 [ 1,17]: 0.000e+00 [ 1,18]: 0.000e+00 
 | 
			
		||||
[ 2, 1]: 1.950e+02 [ 2, 2]: 1.143e+07 [ 2, 3]: 1.286e+03 [ 2, 4]:-1.484e+02 [ 2, 5]:-1.875e-01 [ 2, 6]: 2.414e+00 [ 2, 7]:-2.122e+02 [ 2, 8]:-1.143e+07 [ 2, 9]:-1.286e+03 [ 2,10]: 1.484e+02 [ 2,11]: 1.357e-01 [ 2,12]:-2.542e+00 [ 2,13]: 0.000e+00 [ 2,14]: 0.000e+00 [ 2,15]: 0.000e+00 [ 2,16]: 0.000e+00 [ 2,17]: 0.000e+00 [ 2,18]: 0.000e+00 
 | 
			
		||||
[ 3, 1]: 2.215e+03 [ 3, 2]: 1.286e+03 [ 3, 3]: 1.194e+08 [ 3, 4]: 1.309e+00 [ 3, 5]: 1.488e+00 [ 3, 6]: 1.789e+00 [ 3, 7]:-2.221e+03 [ 3, 8]:-1.286e+03 [ 3, 9]:-1.194e+08 [ 3,10]:-1.310e+00 [ 3,11]:-1.329e+00 [ 3,12]:-1.784e+00 [ 3,13]: 0.000e+00 [ 3,14]: 0.000e+00 [ 3,15]: 0.000e+00 [ 3,16]: 0.000e+00 [ 3,17]: 0.000e+00 [ 3,18]: 0.000e+00 
 | 
			
		||||
[ 4, 1]:-7.188e-01 [ 4, 2]:-1.484e+02 [ 4, 3]: 1.309e+00 [ 4, 4]: 3.296e+01 [ 4, 5]: 4.883e-04 [ 4, 6]:-9.766e-04 [ 4, 7]: 1.410e-01 [ 4, 8]: 1.483e+02 [ 4, 9]:-1.309e+00 [ 4,10]:-3.297e+01 [ 4,11]: 2.641e-04 [ 4,12]: 3.780e-04 [ 4,13]: 0.000e+00 [ 4,14]: 0.000e+00 [ 4,15]: 0.000e+00 [ 4,16]: 0.000e+00 [ 4,17]: 0.000e+00 [ 4,18]: 0.000e+00 
 | 
			
		||||
[ 5, 1]:-2.652e+02 [ 5, 2]:-1.875e-01 [ 5, 3]: 1.488e+00 [ 5, 4]: 4.883e-04 [ 5, 5]: 3.298e+01 [ 5, 6]: 2.930e-03 [ 5, 7]: 2.658e+02 [ 5, 8]: 1.537e-01 [ 5, 9]:-1.488e+00 [ 5,10]: 2.599e-04 [ 5,11]:-3.294e+01 [ 5,12]:-2.446e-03 [ 5,13]: 0.000e+00 [ 5,14]: 0.000e+00 [ 5,15]: 0.000e+00 [ 5,16]: 0.000e+00 [ 5,17]: 0.000e+00 [ 5,18]: 0.000e+00 
 | 
			
		||||
[ 6, 1]: 1.594e+00 [ 6, 2]: 2.414e+00 [ 6, 3]: 1.789e+00 [ 6, 4]:-9.766e-04 [ 6, 5]: 2.930e-03 [ 6, 6]: 2.358e+02 [ 6, 7]:-1.323e+00 [ 6, 8]:-2.547e+00 [ 6, 9]:-1.792e+00 [ 6,10]: 3.789e-04 [ 6,11]:-2.516e-03 [ 6,12]:-2.358e+02 [ 6,13]: 0.000e+00 [ 6,14]: 0.000e+00 [ 6,15]: 0.000e+00 [ 6,16]: 0.000e+00 [ 6,17]: 0.000e+00 [ 6,18]: 0.000e+00 
 | 
			
		||||
[ 7, 1]:-1.122e+07 [ 7, 2]:-2.122e+02 [ 7, 3]:-2.221e+03 [ 7, 4]: 1.410e-01 [ 7, 5]: 2.658e+02 [ 7, 6]:-1.323e+00 [ 7, 7]: 1.145e+07 [ 7, 8]: 2.458e+04 [ 7, 9]: 1.637e+03 [ 7,10]: 1.200e+02 [ 7,11]:-4.800e+03 [ 7,12]:-4.800e+01 [ 7,13]: 0.000e+00 [ 7,14]: 0.000e+00 [ 7,15]: 0.000e+00 [ 7,16]: 0.000e+00 [ 7,17]: 0.000e+00 [ 7,18]: 0.000e+00 
 | 
			
		||||
[ 8, 1]:-2.132e+02 [ 8, 2]:-1.143e+07 [ 8, 3]:-1.286e+03 [ 8, 4]: 1.483e+02 [ 8, 5]: 1.537e-01 [ 8, 6]:-2.547e+00 [ 8, 7]: 2.458e+04 [ 8, 8]: 1.143e+07 [ 8, 9]: 1.287e+03 [ 8,10]:-7.200e+01 [ 8,11]:-6.400e+01 [ 8,12]:-8.000e+00 [ 8,13]: 0.000e+00 [ 8,14]: 0.000e+00 [ 8,15]: 0.000e+00 [ 8,16]: 0.000e+00 [ 8,17]: 0.000e+00 [ 8,18]: 0.000e+00 
 | 
			
		||||
[ 9, 1]:-2.217e+03 [ 9, 2]:-1.286e+03 [ 9, 3]:-1.194e+08 [ 9, 4]:-1.309e+00 [ 9, 5]:-1.488e+00 [ 9, 6]:-1.792e+00 [ 9, 7]: 1.637e+03 [ 9, 8]: 1.287e+03 [ 9, 9]: 1.194e+08 [ 9,10]: 1.320e+00 [ 9,11]: 1.188e+01 [ 9,12]: 2.216e+00 [ 9,13]: 0.000e+00 [ 9,14]: 0.000e+00 [ 9,15]: 0.000e+00 [ 9,16]: 0.000e+00 [ 9,17]: 0.000e+00 [ 9,18]: 0.000e+00 
 | 
			
		||||
[10, 1]: 1.471e-01 [10, 2]: 1.484e+02 [10, 3]:-1.310e+00 [10, 4]:-3.297e+01 [10, 5]: 2.599e-04 [10, 6]: 3.789e-04 [10, 7]: 1.200e+02 [10, 8]:-7.200e+01 [10, 9]: 1.320e+00 [10,10]: 3.469e+01 [10,11]:-7.750e+00 [10,12]:-5.000e-01 [10,13]: 0.000e+00 [10,14]: 0.000e+00 [10,15]: 0.000e+00 [10,16]: 0.000e+00 [10,17]: 0.000e+00 [10,18]: 0.000e+00 
 | 
			
		||||
[11, 1]: 2.656e+02 [11, 2]: 1.357e-01 [11, 3]:-1.329e+00 [11, 4]: 2.641e-04 [11, 5]:-3.294e+01 [11, 6]:-2.516e-03 [11, 7]:-4.800e+03 [11, 8]:-6.400e+01 [11, 9]: 1.188e+01 [11,10]:-7.750e+00 [11,11]: 1.300e+02 [11,12]:-5.000e-01 [11,13]: 0.000e+00 [11,14]: 0.000e+00 [11,15]: 0.000e+00 [11,16]: 0.000e+00 [11,17]: 0.000e+00 [11,18]: 0.000e+00 
 | 
			
		||||
[12, 1]:-1.333e+00 [12, 2]:-2.542e+00 [12, 3]:-1.784e+00 [12, 4]: 3.780e-04 [12, 5]:-2.446e-03 [12, 6]:-2.358e+02 [12, 7]:-4.800e+01 [12, 8]:-8.000e+00 [12, 9]: 2.216e+00 [12,10]:-5.000e-01 [12,11]:-5.000e-01 [12,12]: 2.385e+02 [12,13]: 0.000e+00 [12,14]: 0.000e+00 [12,15]: 0.000e+00 [12,16]: 0.000e+00 [12,17]: 0.000e+00 [12,18]: 0.000e+00 
 | 
			
		||||
[13, 1]: 0.000e+00 [13, 2]: 0.000e+00 [13, 3]: 0.000e+00 [13, 4]: 0.000e+00 [13, 5]: 0.000e+00 [13, 6]: 0.000e+00 [13, 7]: 0.000e+00 [13, 8]: 0.000e+00 [13, 9]: 0.000e+00 [13,10]: 0.000e+00 [13,11]: 0.000e+00 [13,12]: 0.000e+00 [13,13]: 4.356e+09 [13,14]: 0.000e+00 [13,15]: 0.000e+00 [13,16]: 0.000e+00 [13,17]: 0.000e+00 [13,18]: 0.000e+00 
 | 
			
		||||
[14, 1]: 0.000e+00 [14, 2]: 0.000e+00 [14, 3]: 0.000e+00 [14, 4]: 0.000e+00 [14, 5]: 0.000e+00 [14, 6]: 0.000e+00 [14, 7]: 0.000e+00 [14, 8]: 0.000e+00 [14, 9]: 0.000e+00 [14,10]: 0.000e+00 [14,11]: 0.000e+00 [14,12]: 0.000e+00 [14,13]: 0.000e+00 [14,14]: 4.593e+09 [14,15]: 0.000e+00 [14,16]: 0.000e+00 [14,17]: 0.000e+00 [14,18]: 0.000e+00 
 | 
			
		||||
[15, 1]: 0.000e+00 [15, 2]: 0.000e+00 [15, 3]: 0.000e+00 [15, 4]: 0.000e+00 [15, 5]: 0.000e+00 [15, 6]: 0.000e+00 [15, 7]: 0.000e+00 [15, 8]: 0.000e+00 [15, 9]: 0.000e+00 [15,10]: 0.000e+00 [15,11]: 0.000e+00 [15,12]: 0.000e+00 [15,13]: 0.000e+00 [15,14]: 0.000e+00 [15,15]: 4.948e+09 [15,16]: 0.000e+00 [15,17]: 0.000e+00 [15,18]: 0.000e+00 
 | 
			
		||||
[16, 1]: 0.000e+00 [16, 2]: 0.000e+00 [16, 3]: 0.000e+00 [16, 4]: 0.000e+00 [16, 5]: 0.000e+00 [16, 6]: 0.000e+00 [16, 7]: 0.000e+00 [16, 8]: 0.000e+00 [16, 9]: 0.000e+00 [16,10]: 0.000e+00 [16,11]: 0.000e+00 [16,12]: 0.000e+00 [16,13]: 0.000e+00 [16,14]: 0.000e+00 [16,15]: 0.000e+00 [16,16]: 1.919e+10 [16,17]: 0.000e+00 [16,18]: 0.000e+00 
 | 
			
		||||
[17, 1]: 0.000e+00 [17, 2]: 0.000e+00 [17, 3]: 0.000e+00 [17, 4]: 0.000e+00 [17, 5]: 0.000e+00 [17, 6]: 0.000e+00 [17, 7]: 0.000e+00 [17, 8]: 0.000e+00 [17, 9]: 0.000e+00 [17,10]: 0.000e+00 [17,11]: 0.000e+00 [17,12]: 0.000e+00 [17,13]: 0.000e+00 [17,14]: 0.000e+00 [17,15]: 0.000e+00 [17,16]: 0.000e+00 [17,17]: 2.147e+10 [17,18]: 0.000e+00 
 | 
			
		||||
[18, 1]: 0.000e+00 [18, 2]: 0.000e+00 [18, 3]: 0.000e+00 [18, 4]: 0.000e+00 [18, 5]: 0.000e+00 [18, 6]: 0.000e+00 [18, 7]: 0.000e+00 [18, 8]: 0.000e+00 [18, 9]: 0.000e+00 [18,10]: 0.000e+00 [18,11]: 0.000e+00 [18,12]: 0.000e+00 [18,13]: 0.000e+00 [18,14]: 0.000e+00 [18,15]: 0.000e+00 [18,16]: 0.000e+00 [18,17]: 0.000e+00 [18,18]: 3.336e+10 
 | 
			
		||||
							
								
								
									
										20
									
								
								data/flexor_ID16/mat_M_6modes_2MDoF.matrix
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										20
									
								
								data/flexor_ID16/mat_M_6modes_2MDoF.matrix
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
 | 
			
		||||
MAT_M: 
 | 
			
		||||
[ 1, 1]: 1.624e-02 [ 1, 2]: 9.999e-10 [ 1, 3]:-3.692e-08 [ 1, 4]:-1.155e-10 [ 1, 5]: 2.049e-04 [ 1, 6]:-2.881e-11 [ 1, 7]: 4.064e-03 [ 1, 8]: 4.955e-08 [ 1, 9]: 7.368e-08 [ 1,10]: 1.379e-10 [ 1,11]:-7.160e-06 [ 1,12]: 6.897e-11 [ 1,13]:-2.028e-05 [ 1,14]: 5.554e-02 [ 1,15]: 3.599e-06 [ 1,16]: 2.900e-06 [ 1,17]: 8.272e-02 [ 1,18]:-2.468e-06 
 | 
			
		||||
[ 2, 1]: 9.999e-10 [ 2, 2]: 1.848e-02 [ 2, 3]:-3.219e-07 [ 2, 4]:-2.074e-04 [ 2, 5]:-1.119e-10 [ 2, 6]:-2.255e-09 [ 2, 7]: 2.195e-08 [ 2, 8]: 4.013e-03 [ 2, 9]: 2.886e-07 [ 2,10]: 9.997e-06 [ 2,11]:-3.644e-10 [ 2,12]:-3.744e-12 [ 2,13]:-1.437e-05 [ 2,14]:-5.095e-06 [ 2,15]: 8.806e-02 [ 2,16]:-1.237e-02 [ 2,17]: 1.500e-07 [ 2,18]: 3.313e-02 
 | 
			
		||||
[ 3, 1]:-3.692e-08 [ 3, 2]:-3.219e-07 [ 3, 3]: 1.804e-02 [ 3, 4]: 7.130e-10 [ 3, 5]:-1.637e-09 [ 3, 6]: 1.340e-09 [ 3, 7]: 3.136e-07 [ 3, 8]: 7.272e-08 [ 3, 9]: 2.993e-03 [ 3,10]: 1.259e-09 [ 3,11]:-5.922e-10 [ 3,12]: 1.317e-09 [ 3,13]: 5.819e-06 [ 3,14]: 3.227e-06 [ 3,15]:-3.103e-06 [ 3,16]: 4.241e-06 [ 3,17]:-9.604e-07 [ 3,18]:-2.639e-06 
 | 
			
		||||
[ 4, 1]:-1.155e-10 [ 4, 2]:-2.074e-04 [ 4, 3]: 7.130e-10 [ 4, 4]: 3.510e-06 [ 4, 5]:-1.359e-12 [ 4, 6]:-5.567e-13 [ 4, 7]: 1.778e-10 [ 4, 8]:-6.847e-06 [ 4, 9]:-7.847e-10 [ 4,10]:-1.254e-09 [ 4,11]: 9.463e-13 [ 4,12]: 1.958e-12 [ 4,13]: 4.641e-08 [ 4,14]: 1.613e-08 [ 4,15]:-2.170e-04 [ 4,16]: 6.874e-05 [ 4,17]:-1.637e-08 [ 4,18]:-5.990e-04 
 | 
			
		||||
[ 5, 1]: 2.049e-04 [ 5, 2]:-1.119e-10 [ 5, 3]:-1.637e-09 [ 5, 4]:-1.359e-12 [ 5, 5]: 3.311e-06 [ 5, 6]: 1.683e-13 [ 5, 7]: 9.441e-06 [ 5, 8]: 3.860e-11 [ 5, 9]: 1.766e-09 [ 5,10]:-2.762e-13 [ 5,11]:-1.297e-09 [ 5,12]: 1.810e-12 [ 5,13]:-6.036e-08 [ 5,14]: 1.813e-04 [ 5,15]: 9.642e-09 [ 5,16]: 2.704e-08 [ 5,17]: 8.113e-04 [ 5,18]:-2.302e-08 
 | 
			
		||||
[ 6, 1]:-2.881e-11 [ 6, 2]:-2.255e-09 [ 6, 3]: 1.340e-09 [ 6, 4]:-5.567e-13 [ 6, 5]: 1.683e-13 [ 6, 6]: 3.708e-07 [ 6, 7]: 8.410e-11 [ 6, 8]: 9.292e-10 [ 6, 9]:-1.086e-09 [ 6,10]: 2.396e-12 [ 6,11]:-5.002e-13 [ 6,12]: 6.502e-08 [ 6,13]: 2.552e-04 [ 6,14]: 9.650e-08 [ 6,15]: 6.459e-09 [ 6,16]:-9.240e-10 [ 6,17]:-5.548e-09 [ 6,18]: 3.141e-08 
 | 
			
		||||
[ 7, 1]: 4.064e-03 [ 7, 2]: 2.195e-08 [ 7, 3]: 3.136e-07 [ 7, 4]: 1.778e-10 [ 7, 5]: 9.441e-06 [ 7, 6]: 8.410e-11 [ 7, 7]: 1.674e-02 [ 7, 8]:-7.211e-08 [ 7, 9]:-3.482e-07 [ 7,10]:-2.155e-10 [ 7,11]:-1.699e-04 [ 7,12]:-6.684e-11 [ 7,13]:-3.188e-05 [ 7,14]: 8.552e-02 [ 7,15]: 4.929e-06 [ 7,16]:-4.308e-06 [ 7,17]:-9.224e-03 [ 7,18]: 1.941e-06 
 | 
			
		||||
[ 8, 1]: 4.955e-08 [ 8, 2]: 4.013e-03 [ 8, 3]: 7.272e-08 [ 8, 4]:-6.847e-06 [ 8, 5]: 3.860e-11 [ 8, 6]: 9.292e-10 [ 8, 7]:-7.211e-08 [ 8, 8]: 1.459e-02 [ 8, 9]:-3.946e-08 [ 8,10]: 1.670e-04 [ 8,11]: 4.772e-10 [ 8,12]: 1.298e-09 [ 8,13]: 2.789e-06 [ 8,14]:-2.877e-06 [ 8,15]: 5.546e-02 [ 8,16]: 7.601e-02 [ 8,17]:-2.596e-06 [ 8,18]:-6.673e-03 
 | 
			
		||||
[ 9, 1]: 7.368e-08 [ 9, 2]: 2.886e-07 [ 9, 3]: 2.993e-03 [ 9, 4]:-7.847e-10 [ 9, 5]: 1.766e-09 [ 9, 6]:-1.086e-09 [ 9, 7]:-3.482e-07 [ 9, 8]:-3.946e-08 [ 9, 9]: 1.708e-02 [ 9,10]:-1.230e-09 [ 9,11]: 4.937e-10 [ 9,12]:-1.568e-09 [ 9,13]:-5.366e-06 [ 9,14]:-4.779e-06 [ 9,15]: 2.951e-06 [ 9,16]:-1.252e-06 [ 9,17]: 5.979e-06 [ 9,18]:-2.257e-06 
 | 
			
		||||
[10, 1]: 1.379e-10 [10, 2]: 9.997e-06 [10, 3]: 1.259e-09 [10, 4]:-1.254e-09 [10, 5]:-2.762e-13 [10, 6]: 2.396e-12 [10, 7]:-2.155e-10 [10, 8]: 1.670e-04 [10, 9]:-1.230e-09 [10,10]: 2.413e-06 [10,11]:-1.085e-13 [10,12]:-1.860e-12 [10,13]: 9.566e-09 [10,14]:-1.039e-08 [10,15]: 1.953e-04 [10,16]: 6.785e-04 [10,17]:-2.458e-08 [10,18]:-7.855e-05 
 | 
			
		||||
[11, 1]:-7.160e-06 [11, 2]:-3.644e-10 [11, 3]:-5.922e-10 [11, 4]: 9.463e-13 [11, 5]:-1.297e-09 [11, 6]:-5.002e-13 [11, 7]:-1.699e-04 [11, 8]: 4.772e-10 [11, 9]: 4.937e-10 [11,10]:-1.085e-13 [11,11]: 2.569e-06 [11,12]:-1.144e-12 [11,13]: 7.355e-08 [11,14]:-2.049e-04 [11,15]:-1.424e-08 [11,16]: 5.036e-08 [11,17]: 4.737e-05 [11,18]:-1.820e-08 
 | 
			
		||||
[12, 1]: 6.897e-11 [12, 2]:-3.744e-12 [12, 3]: 1.317e-09 [12, 4]: 1.958e-12 [12, 5]: 1.810e-12 [12, 6]: 6.502e-08 [12, 7]:-6.684e-11 [12, 8]: 1.298e-09 [12, 9]:-1.568e-09 [12,10]:-1.860e-12 [12,11]:-1.144e-12 [12,12]: 4.129e-07 [12,13]: 2.609e-04 [12,14]: 9.485e-08 [12,15]: 4.034e-08 [12,16]:-2.487e-08 [12,17]: 4.305e-09 [12,18]: 7.568e-09 
 | 
			
		||||
[13, 1]:-2.028e-05 [13, 2]:-1.437e-05 [13, 3]: 5.819e-06 [13, 4]: 4.641e-08 [13, 5]:-6.036e-08 [13, 6]: 2.552e-04 [13, 7]:-3.188e-05 [13, 8]: 2.789e-06 [13, 9]:-5.366e-06 [13,10]: 9.566e-09 [13,11]: 7.355e-08 [13,12]: 2.609e-04 [13,13]: 1.000e+00 [13,14]: 0.000e+00 [13,15]: 0.000e+00 [13,16]: 0.000e+00 [13,17]: 0.000e+00 [13,18]: 0.000e+00 
 | 
			
		||||
[14, 1]: 5.554e-02 [14, 2]:-5.095e-06 [14, 3]: 3.227e-06 [14, 4]: 1.613e-08 [14, 5]: 1.813e-04 [14, 6]: 9.650e-08 [14, 7]: 8.552e-02 [14, 8]:-2.877e-06 [14, 9]:-4.779e-06 [14,10]:-1.039e-08 [14,11]:-2.049e-04 [14,12]: 9.485e-08 [14,13]: 0.000e+00 [14,14]: 1.000e+00 [14,15]: 0.000e+00 [14,16]: 0.000e+00 [14,17]: 0.000e+00 [14,18]: 0.000e+00 
 | 
			
		||||
[15, 1]: 3.599e-06 [15, 2]: 8.806e-02 [15, 3]:-3.103e-06 [15, 4]:-2.170e-04 [15, 5]: 9.642e-09 [15, 6]: 6.459e-09 [15, 7]: 4.929e-06 [15, 8]: 5.546e-02 [15, 9]: 2.951e-06 [15,10]: 1.953e-04 [15,11]:-1.424e-08 [15,12]: 4.034e-08 [15,13]: 0.000e+00 [15,14]: 0.000e+00 [15,15]: 1.000e+00 [15,16]: 0.000e+00 [15,17]: 0.000e+00 [15,18]: 0.000e+00 
 | 
			
		||||
[16, 1]: 2.900e-06 [16, 2]:-1.237e-02 [16, 3]: 4.241e-06 [16, 4]: 6.874e-05 [16, 5]: 2.704e-08 [16, 6]:-9.240e-10 [16, 7]:-4.308e-06 [16, 8]: 7.601e-02 [16, 9]:-1.252e-06 [16,10]: 6.785e-04 [16,11]: 5.036e-08 [16,12]:-2.487e-08 [16,13]: 0.000e+00 [16,14]: 0.000e+00 [16,15]: 0.000e+00 [16,16]: 1.000e+00 [16,17]: 0.000e+00 [16,18]: 0.000e+00 
 | 
			
		||||
[17, 1]: 8.272e-02 [17, 2]: 1.500e-07 [17, 3]:-9.604e-07 [17, 4]:-1.637e-08 [17, 5]: 8.113e-04 [17, 6]:-5.548e-09 [17, 7]:-9.224e-03 [17, 8]:-2.596e-06 [17, 9]: 5.979e-06 [17,10]:-2.458e-08 [17,11]: 4.737e-05 [17,12]: 4.305e-09 [17,13]: 0.000e+00 [17,14]: 0.000e+00 [17,15]: 0.000e+00 [17,16]: 0.000e+00 [17,17]: 1.000e+00 [17,18]: 0.000e+00 
 | 
			
		||||
[18, 1]:-2.468e-06 [18, 2]: 3.313e-02 [18, 3]:-2.639e-06 [18, 4]:-5.990e-04 [18, 5]:-2.302e-08 [18, 6]: 3.141e-08 [18, 7]: 1.941e-06 [18, 8]:-6.673e-03 [18, 9]:-2.257e-06 [18,10]:-7.855e-05 [18,11]:-1.820e-08 [18,12]: 7.568e-09 [18,13]: 0.000e+00 [18,14]: 0.000e+00 [18,15]: 0.000e+00 [18,16]: 0.000e+00 [18,17]: 0.000e+00 [18,18]: 1.000e+00 
 | 
			
		||||
							
								
								
									
										40
									
								
								data/flexor_ID16/out_nodes_3D.txt
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								data/flexor_ID16/out_nodes_3D.txt
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
 | 
			
		||||
 LIST ALL SELECTED NODES.   DSYS=      0
 | 
			
		||||
 | 
			
		||||
 *** ANSYS - ENGINEERING ANALYSIS SYSTEM  RELEASE 2020 R2          20.2     ***
 | 
			
		||||
 DISTRIBUTED ANSYS Academic Research                           
 | 
			
		||||
 | 
			
		||||
 00208316  VERSION=WINDOWS x64   16:37:53  JUL 30, 2020 CP=      3.062
 | 
			
		||||
 | 
			
		||||
 Flex-FV--Modal (B5)                                                           
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    NODE        X             Y             Z           THXY     THYZ     THZX
 | 
			
		||||
   181278   0.0000        0.0000       0.10000E-008     0.00     0.00     0.00
 | 
			
		||||
   181279   0.0000        0.0000      -0.10000E-008     0.00     0.00     0.00
 | 
			
		||||
 | 
			
		||||
 LIST MASTERS ON ALL SELECTED NODES.
 | 
			
		||||
 CURRENT DOF SET= UX   UY   UZ   ROTX ROTY ROTZ
 | 
			
		||||
 | 
			
		||||
 *** ANSYS - ENGINEERING ANALYSIS SYSTEM  RELEASE 2020 R2          20.2     ***
 | 
			
		||||
 DISTRIBUTED ANSYS Academic Research                           
 | 
			
		||||
 | 
			
		||||
 00208316  VERSION=WINDOWS x64   16:37:53  JUL 30, 2020 CP=      3.062
 | 
			
		||||
 | 
			
		||||
 Flex-FV--Modal (B5)                                                           
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
     NODE  LABEL     SUPPORT
 | 
			
		||||
    181278  UX  
 | 
			
		||||
    181278  UY  
 | 
			
		||||
    181278  UZ  
 | 
			
		||||
    181278  ROTX
 | 
			
		||||
    181278  ROTY
 | 
			
		||||
    181278  ROTZ
 | 
			
		||||
    181279  UX  
 | 
			
		||||
    181279  UY  
 | 
			
		||||
    181279  UZ  
 | 
			
		||||
    181279  ROTX
 | 
			
		||||
    181279  ROTY
 | 
			
		||||
    181279  ROTZ
 | 
			
		||||
							
								
								
									
										439
									
								
								index.org
									
									
									
									
									
								
							
							
						
						
									
										439
									
								
								index.org
									
									
									
									
									
								
							@@ -166,15 +166,15 @@ Parameters for the APA95ML:
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  d33 = 3e-10; % Strain constant [m/V]
 | 
			
		||||
  n = 80; % Number of layers per stack
 | 
			
		||||
  eT = 1.6e-8; % Permittivity under constant stress [F/m]
 | 
			
		||||
  eT = 1.6e-7; % Permittivity under constant stress [F/m]
 | 
			
		||||
  sD = 2e-11; % Elastic compliance under constant electric displacement [m2/N]
 | 
			
		||||
  ka = 235e6; % Stack stiffness [N/m]
 | 
			
		||||
  C = 5e-6; % Stack capactiance [F]
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  na = 3; % Number of stacks used as actuator
 | 
			
		||||
  ns = 0; % Number of stacks used as force sensor
 | 
			
		||||
  na = 2; % Number of stacks used as actuator
 | 
			
		||||
  ns = 1; % Number of stacks used as force sensor
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
The ratio of the developed force to applied voltage is $d_{33} n k_a$ in [N/V].
 | 
			
		||||
@@ -185,7 +185,7 @@ We denote this constant by $g_a$ and:
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: 1.88
 | 
			
		||||
: 3.76
 | 
			
		||||
 | 
			
		||||
From cite:fleming14_desig_model_contr_nanop_system (page 123), the relation between relative displacement and generated voltage is:
 | 
			
		||||
\[ V_s = \frac{d_{33}}{\epsilon^T s^D n} \Delta h \]
 | 
			
		||||
@@ -201,7 +201,7 @@ where:
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: 5.8594
 | 
			
		||||
: 1.1719
 | 
			
		||||
 | 
			
		||||
** Identification of the Dynamics
 | 
			
		||||
The flexible element is imported using the =Reduced Order Flexible Solid= simscape block.
 | 
			
		||||
@@ -622,6 +622,47 @@ The two identified dynamics are compared in Figure [[fig:dynamics_act_disp_comp_
 | 
			
		||||
  save('../test-bench-apa/mat/fem_model_5kg.mat', 'G')
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Dynamics from input voltage to output voltage
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  m = 5;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  %% Name of the Simulink File
 | 
			
		||||
  mdl = 'piezo_amplified_3d';
 | 
			
		||||
 | 
			
		||||
  %% Input/Output definition
 | 
			
		||||
  clear io; io_i = 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/Va'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/Vs'], 1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
  G = -linearize(mdl, io);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  freqs = logspace(1, 4, 5000);
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ax1 = subplot(2,1,1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G, freqs, 'Hz'))));
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
  hold off;
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2,1,2);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(squeeze(freqresp(G, freqs, 'Hz')))));
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
  yticks(-360:90:360);
 | 
			
		||||
  xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
  hold off;
 | 
			
		||||
  linkaxes([ax1,ax2],'x');
 | 
			
		||||
  xlim([10, 5e3]);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
* APA300ML
 | 
			
		||||
** Matlab Init                                             :noexport:ignore:
 | 
			
		||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
 | 
			
		||||
@@ -643,6 +684,11 @@ The two identified dynamics are compared in Figure [[fig:dynamics_act_disp_comp_
 | 
			
		||||
 | 
			
		||||
** Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates
 | 
			
		||||
We first extract the stiffness and mass matrices.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  K = extractMatrix('mat_K-48modes-7MDoF.matrix');
 | 
			
		||||
  M = extractMatrix('mat_M-48modes-7MDoF.matrix');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  K = extractMatrix('mat_K-80modes-7MDoF.matrix');
 | 
			
		||||
  M = extractMatrix('mat_M-80modes-7MDoF.matrix');
 | 
			
		||||
@@ -768,9 +814,6 @@ where:
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
: 5.8594
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
** Identification of the Dynamics
 | 
			
		||||
The flexible element is imported using the =Reduced Order Flexible Solid= simscape block.
 | 
			
		||||
 | 
			
		||||
@@ -976,6 +1019,386 @@ The two identified dynamics are compared in Figure [[fig:dynamics_act_disp_comp_
 | 
			
		||||
  xlabel('Real Part'); ylabel('Imaginary Part');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Sensor Fusion
 | 
			
		||||
- [ ] What is the goal of that? Special control properties, lower the sensor noise?
 | 
			
		||||
 | 
			
		||||
Use the relative motion sensor at low frequency and the force sensor at high frequency.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  m = 10;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  %% Name of the Simulink File
 | 
			
		||||
  mdl = 'APA300ML_test_bench';
 | 
			
		||||
 | 
			
		||||
  %% Input/Output definition
 | 
			
		||||
  clear io; io_i = 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/Va'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/Vs'], 1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/y'],  1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
  G = linearize(mdl, io);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  freqs = logspace(1, 5, 1000);
 | 
			
		||||
 | 
			
		||||
  Gresp = squeeze(freqresp(G, freqs, 'Hz'));
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ax1 = subplot(2,1,1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(Gresp(1, :)), '-');
 | 
			
		||||
  plot(freqs, abs(Gresp(2, :)), '-');
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
  hold off;
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2,1,2);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(Gresp(1, :))), '-', ...
 | 
			
		||||
       'DisplayName', 'Force');
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(Gresp(2, :))), '-', ...
 | 
			
		||||
       'DisplayName', 'Displacement');
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
  yticks(-360:90:360);
 | 
			
		||||
  ylim([-390 30]);
 | 
			
		||||
  xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
  hold off;
 | 
			
		||||
  linkaxes([ax1,ax2],'x');
 | 
			
		||||
  xlim([freqs(1), freqs(end)]);
 | 
			
		||||
  legend('location', 'southwest');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Merge around 1kHz
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  freqs = logspace(1, 5, 1000);
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ax1 = subplot(2,1,1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(Gresp(1, :).*squeeze(freqresp(0.0065/s^2, freqs, 'Hz'))'), '-');
 | 
			
		||||
  plot(freqs, abs(Gresp(2, :)), '-');
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
  hold off;
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2,1,2);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(Gresp(1, :).*squeeze(freqresp(1/s^2, freqs, 'Hz'))')), '-', ...
 | 
			
		||||
       'DisplayName', 'Force');
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(Gresp(2, :))), '-', ...
 | 
			
		||||
       'DisplayName', 'Displacement');
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
  yticks(-360:90:360);
 | 
			
		||||
  xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
  hold off;
 | 
			
		||||
  linkaxes([ax1,ax2],'x');
 | 
			
		||||
  xlim([freqs(1), freqs(end)]);
 | 
			
		||||
  legend('location', 'southwest');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
LPF and HPF
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  n = 3; w0 = 2*pi*1e3; G0 = 1/10; G1 = 1e5; Gc = 1/2;
 | 
			
		||||
  W1 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
 | 
			
		||||
 | 
			
		||||
  n = 3; w0 = 2*pi*1e3; G0 = 1e5; G1 = 0.1; Gc = 1/2;
 | 
			
		||||
  W2 = (((1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (G0/Gc)^(1/n))/((1/G1)^(1/n)*(1/w0)*sqrt((1-(G0/Gc)^(2/n))/(1-(Gc/G1)^(2/n)))*s + (1/Gc)^(1/n)))^n;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  P = [W1 -W1;
 | 
			
		||||
       0   W2;
 | 
			
		||||
       1   0];
 | 
			
		||||
      
 | 
			
		||||
  [H2, ~, gamma, ~] = hinfsyn(P, 1, 1,'TOLGAM', 0.001, 'METHOD', 'ric', 'DISPLAY', 'on');
 | 
			
		||||
  H1 = 1 - H2;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  freqs = logspace(1, 5, 1000);
 | 
			
		||||
 | 
			
		||||
  Gresp = squeeze(freqresp(G, freqs, 'Hz'));
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ax1 = subplot(2,1,1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(Gresp(1, :).*squeeze(freqresp(0.0065/s^2*H2, freqs, 'Hz'))'), '-');
 | 
			
		||||
  plot(freqs, abs(Gresp(2, :).*squeeze(freqresp(H1, freqs, 'Hz'))'), '-');
 | 
			
		||||
  plot(freqs, abs(Gresp(2, :).*squeeze(freqresp(H1, freqs, 'Hz'))' + Gresp(1, :).*squeeze(freqresp(0.0065/s^2*H2, freqs, 'Hz'))'), 'k--');
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
  hold off;
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2,1,2);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(Gresp(1, :).*squeeze(freqresp(0.0065/s^2*H2, freqs, 'Hz'))')), '-', ...
 | 
			
		||||
       'DisplayName', 'Force');
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(Gresp(2, :).*squeeze(freqresp(H1, freqs, 'Hz'))')), '-', ...
 | 
			
		||||
       'DisplayName', 'Displacement');
 | 
			
		||||
  plot(freqs, 180/pi*unwrap(angle(Gresp(2, :).*squeeze(freqresp(H1, freqs, 'Hz'))' + Gresp(1, :).*squeeze(freqresp(0.0065/s^2*H2, freqs, 'Hz'))')), 'k--', ...
 | 
			
		||||
       'DisplayName', 'Super Sensor');
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
  yticks(-360:90:360);
 | 
			
		||||
  xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
  hold off;
 | 
			
		||||
  linkaxes([ax1,ax2],'x');
 | 
			
		||||
  xlim([freqs(1), freqs(end)]);
 | 
			
		||||
  legend('location', 'southwest');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  Gss = -zpk(G(1)*0.0065/s^2*H2 + G(2)*H1);
 | 
			
		||||
 | 
			
		||||
  freqs = logspace(1, 5, 1000);
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ax1 = subplot(2,1,1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(Gss, freqs, 'Hz'))'), '-');
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
  hold off;
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2,1,2);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, 180/pi*(angle(squeeze(freqresp(Gss, freqs, 'Hz'))')), '-', ...
 | 
			
		||||
       'DisplayName', 'Force');
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
  yticks(-360:90:360);
 | 
			
		||||
  xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
  hold off;
 | 
			
		||||
  linkaxes([ax1,ax2],'x');
 | 
			
		||||
  xlim([freqs(1), freqs(end)]);
 | 
			
		||||
  legend('location', 'southwest');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Root locus
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  gains = logspace(4, 7, 100);
 | 
			
		||||
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(real(pole(Gss)),  imag(pole(Gss)), 'kx');
 | 
			
		||||
  plot(real(tzero(Gss)),  imag(tzero(Gss)), 'ko');
 | 
			
		||||
  for k = 1:length(gains)
 | 
			
		||||
      cl_poles = pole(feedback(Gss, gains(k)*s));
 | 
			
		||||
      plot(real(cl_poles), imag(cl_poles), 'k.');
 | 
			
		||||
  end
 | 
			
		||||
  hold off;
 | 
			
		||||
  axis square;
 | 
			
		||||
  xlim([-500, 10]); ylim([0, 510]);
 | 
			
		||||
 | 
			
		||||
  xlabel('Real Part'); ylabel('Imaginary Part');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
* Flexible Joint
 | 
			
		||||
** Matlab Init                                             :noexport:ignore:
 | 
			
		||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
 | 
			
		||||
  <<matlab-dir>>
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none :results silent :noweb yes
 | 
			
		||||
  <<matlab-init>>
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  addpath('./src/');
 | 
			
		||||
  addpath('./data/flexor_ID16/');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  open('flexor_ID16.slx');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Import Mass Matrix, Stiffness Matrix, and Interface Nodes Coordinates
 | 
			
		||||
We first extract the stiffness and mass matrices.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  K = extractMatrix('mat_K_6modes_2MDoF.matrix');
 | 
			
		||||
  M = extractMatrix('mat_M_6modes_2MDoF.matrix');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
Then, we extract the coordinates of the interface nodes.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  [int_xyz, int_i, n_xyz, n_i, nodes] = extractNodes('out_nodes_3D.txt');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  save('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
** Output parameters
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  load('./mat/flexor_ID16.mat', 'int_xyz', 'int_i', 'n_xyz', 'n_i', 'nodes', 'M', 'K');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable([length(n_i); length(int_i); size(M,1) - 6*length(int_i); size(M,1)], {'Total number of Nodes', 'Number of interface Nodes', 'Number of Modes', 'Size of M and K matrices'}, {}, ' %.0f ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
| Total number of Nodes     |  2 |
 | 
			
		||||
| Number of interface Nodes |  2 |
 | 
			
		||||
| Number of Modes           |  6 |
 | 
			
		||||
| Size of M and K matrices  | 18 |
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
 | 
			
		||||
  data2orgtable([[1:length(int_i)]', int_i, int_xyz], {}, {'Node i', 'Node Number', 'x [m]', 'y [m]', 'z [m]'}, ' %f ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+caption: Coordinates of the interface nodes
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
| Node i | Node Number | x [m] | y [m] | z [m] |
 | 
			
		||||
|--------+-------------+-------+-------+-------|
 | 
			
		||||
|    1.0 |    181278.0 |   0.0 |   0.0 |   0.0 |
 | 
			
		||||
|    2.0 |    181279.0 |   0.0 |   0.0 |  -0.0 |
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(K(1:10, 1:10), {}, {}, ' %.2e ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+caption: First 10x10 elements of the Stiffness matrix
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|  11200000.0 |       195.0 |       2220.0 |    -0.719 |   -265.0 |      1.59 | -11200000.0 |      -213.0 |      -2220.0 |    0.147 |
 | 
			
		||||
|       195.0 |  11400000.0 |       1290.0 |    -148.0 |   -0.188 |      2.41 |      -212.0 | -11400000.0 |      -1290.0 |    148.0 |
 | 
			
		||||
|      2220.0 |      1290.0 |  119000000.0 |      1.31 |     1.49 |      1.79 |     -2220.0 |     -1290.0 | -119000000.0 |    -1.31 |
 | 
			
		||||
|      -0.719 |      -148.0 |         1.31 |      33.0 | 0.000488 | -0.000977 |       0.141 |       148.0 |        -1.31 |    -33.0 |
 | 
			
		||||
|      -265.0 |      -0.188 |         1.49 |  0.000488 |     33.0 |   0.00293 |       266.0 |       0.154 |        -1.49 |  0.00026 |
 | 
			
		||||
|        1.59 |        2.41 |         1.79 | -0.000977 |  0.00293 |     236.0 |       -1.32 |       -2.55 |        -1.79 | 0.000379 |
 | 
			
		||||
| -11200000.0 |      -212.0 |      -2220.0 |     0.141 |    266.0 |     -1.32 |  11400000.0 |     24600.0 |       1640.0 |    120.0 |
 | 
			
		||||
|      -213.0 | -11400000.0 |      -1290.0 |     148.0 |    0.154 |     -2.55 |     24600.0 |  11400000.0 |       1290.0 |    -72.0 |
 | 
			
		||||
|     -2220.0 |     -1290.0 | -119000000.0 |     -1.31 |    -1.49 |     -1.79 |      1640.0 |      1290.0 |  119000000.0 |     1.32 |
 | 
			
		||||
|       0.147 |       148.0 |        -1.31 |     -33.0 |  0.00026 |  0.000379 |       120.0 |       -72.0 |         1.32 |     34.7 |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no
 | 
			
		||||
  data2orgtable(M(1:10, 1:10), {}, {}, ' %.1g ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+caption: First 10x10 elements of the Mass matrix
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
|   0.02 |   1e-09 | -4e-08 |  -1e-10 | 0.0002 | -3e-11 |  0.004 |  5e-08 |  7e-08 |  1e-10 |
 | 
			
		||||
|  1e-09 |    0.02 | -3e-07 | -0.0002 | -1e-10 | -2e-09 |  2e-08 |  0.004 |  3e-07 |  1e-05 |
 | 
			
		||||
| -4e-08 |  -3e-07 |   0.02 |   7e-10 | -2e-09 |  1e-09 |  3e-07 |  7e-08 |  0.003 |  1e-09 |
 | 
			
		||||
| -1e-10 | -0.0002 |  7e-10 |   4e-06 | -1e-12 | -6e-13 |  2e-10 | -7e-06 | -8e-10 | -1e-09 |
 | 
			
		||||
| 0.0002 |  -1e-10 | -2e-09 |  -1e-12 |  3e-06 |  2e-13 |  9e-06 |  4e-11 |  2e-09 | -3e-13 |
 | 
			
		||||
| -3e-11 |  -2e-09 |  1e-09 |  -6e-13 |  2e-13 |  4e-07 |  8e-11 |  9e-10 | -1e-09 |  2e-12 |
 | 
			
		||||
|  0.004 |   2e-08 |  3e-07 |   2e-10 |  9e-06 |  8e-11 |   0.02 | -7e-08 | -3e-07 | -2e-10 |
 | 
			
		||||
|  5e-08 |   0.004 |  7e-08 |  -7e-06 |  4e-11 |  9e-10 | -7e-08 |   0.01 | -4e-08 | 0.0002 |
 | 
			
		||||
|  7e-08 |   3e-07 |  0.003 |  -8e-10 |  2e-09 | -1e-09 | -3e-07 | -4e-08 |   0.02 | -1e-09 |
 | 
			
		||||
|  1e-10 |   1e-05 |  1e-09 |  -1e-09 | -3e-13 |  2e-12 | -2e-10 | 0.0002 | -1e-09 |  2e-06 |
 | 
			
		||||
 | 
			
		||||
Using =K=, =M= and =int_xyz=, we can use the =Reduced Order Flexible Solid= simscape block.
 | 
			
		||||
 | 
			
		||||
** Flexible Joint Characteristics
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
 | 
			
		||||
  data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6)]', {'Axial Stiffness [N/um]', 'Bending Stiffness [Nm/rad]', 'Bending Stiffness [Nm/rad]', 'Torsion Stiffness [Nm/rad]'}, {'*Caracteristic*', '*Value*'}, ' %0.f ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
| *Caracteristic*            | *Value* |
 | 
			
		||||
|----------------------------+---------|
 | 
			
		||||
| Axial Stiffness [N/um]     |     119 |
 | 
			
		||||
| Bending Stiffness [Nm/rad] |      33 |
 | 
			
		||||
| Bending Stiffness [Nm/rad] |      33 |
 | 
			
		||||
| Torsion Stiffness [Nm/rad] |     236 |
 | 
			
		||||
 | 
			
		||||
** Identification
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  m = 10;
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
The dynamics is identified from the applied force to the measured relative displacement.
 | 
			
		||||
#+begin_src matlab
 | 
			
		||||
  %% Name of the Simulink File
 | 
			
		||||
  mdl = 'flexor_ID16';
 | 
			
		||||
 | 
			
		||||
  %% Input/Output definition
 | 
			
		||||
  clear io; io_i = 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/T'], 1, 'openinput');  io_i = io_i + 1;
 | 
			
		||||
  io(io_i) = linio([mdl, '/D'], 1, 'openoutput'); io_i = io_i + 1;
 | 
			
		||||
 | 
			
		||||
  G = linearize(mdl, io);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports results :results value table replace :tangle no :post addhdr(*this*)
 | 
			
		||||
  data2orgtable([1e-6*K(3,3), K(4,4), K(5,5), K(6,6) ; 1e-6./dcgain(G(3,3)), 1./dcgain(G(4,4)), 1./dcgain(G(5,5)), 1./dcgain(G(6,6))]', {'Axial Stiffness Dz [N/um]', 'Bending Stiffness Rx [Nm/rad]', 'Bending Stiffness Ry [Nm/rad]', 'Torsion Stiffness Rz [Nm/rad]'}, {'*Caracteristic*', '*Value*', '*Identification*'}, ' %0.f ');
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+RESULTS:
 | 
			
		||||
| *Caracteristic*               | *Value* | *Identification* |
 | 
			
		||||
|-------------------------------+---------+------------------|
 | 
			
		||||
| Axial Stiffness Dz [N/um]     |     119 |              119 |
 | 
			
		||||
| Bending Stiffness Rx [Nm/rad] |      33 |               34 |
 | 
			
		||||
| Bending Stiffness Ry [Nm/rad] |      33 |              126 |
 | 
			
		||||
| Torsion Stiffness Rz [Nm/rad] |     236 |              238 |
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  freqs = logspace(0, 5, 1000);
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ax1 = subplot(2,1,1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G(1,1), freqs, 'Hz'))), '-');
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G(2,2), freqs, 'Hz'))), '-');
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G(3,3), freqs, 'Hz'))), '-');
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
  hold off;
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2,1,2);
 | 
			
		||||
  hold on
 | 
			
		||||
  plot(freqs, 180/pi*(angle(squeeze(freqresp(G(1,1), freqs, 'Hz')))), '-');
 | 
			
		||||
  plot(freqs, 180/pi*(angle(squeeze(freqresp(G(2,2), freqs, 'Hz')))), '-');
 | 
			
		||||
  plot(freqs, 180/pi*(angle(squeeze(freqresp(G(3,3), freqs, 'Hz')))), '-');
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
  yticks(-360:90:360);
 | 
			
		||||
  xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
  hold off;
 | 
			
		||||
  linkaxes([ax1,ax2],'x');
 | 
			
		||||
  xlim([freqs(1), freqs(end)]);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
#+begin_src matlab :exports none
 | 
			
		||||
  freqs = logspace(0, 5, 1000);
 | 
			
		||||
 | 
			
		||||
  figure;
 | 
			
		||||
 | 
			
		||||
  ax1 = subplot(2,1,1);
 | 
			
		||||
  hold on;
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G(4,4), freqs, 'Hz'))), '-');
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G(5,5), freqs, 'Hz'))), '-');
 | 
			
		||||
  plot(freqs, abs(squeeze(freqresp(G(6,6), freqs, 'Hz'))), '-');
 | 
			
		||||
  hold off;
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 | 
			
		||||
  ylabel('Amplitude'); set(gca, 'XTickLabel',[]);
 | 
			
		||||
  hold off;
 | 
			
		||||
 | 
			
		||||
  ax2 = subplot(2,1,2);
 | 
			
		||||
  hold on
 | 
			
		||||
  plot(freqs, 180/pi*(angle(squeeze(freqresp(G(4,4), freqs, 'Hz')))), '-');
 | 
			
		||||
  plot(freqs, 180/pi*(angle(squeeze(freqresp(G(5,5), freqs, 'Hz')))), '-');
 | 
			
		||||
  plot(freqs, 180/pi*(angle(squeeze(freqresp(G(6,6), freqs, 'Hz')))), '-');
 | 
			
		||||
  set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
 | 
			
		||||
  yticks(-360:90:360);
 | 
			
		||||
  xlabel('Frequency [Hz]'); ylabel('Phase [deg]');
 | 
			
		||||
  hold off;
 | 
			
		||||
  linkaxes([ax1,ax2],'x');
 | 
			
		||||
  xlim([freqs(1), freqs(end)]);
 | 
			
		||||
#+end_src
 | 
			
		||||
 | 
			
		||||
* Integral Force Feedback with Amplified Piezo
 | 
			
		||||
** Matlab Init                                             :noexport:ignore:
 | 
			
		||||
#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user