diff --git a/micro-station-compliance/data/Measurement1.mat b/micro-station-compliance/data/Measurement1.mat
new file mode 100755
index 0000000..d2d18cb
Binary files /dev/null and b/micro-station-compliance/data/Measurement1.mat differ
diff --git a/micro-station-compliance/data/Measurement10.mat b/micro-station-compliance/data/Measurement10.mat
new file mode 100755
index 0000000..9a45c8b
Binary files /dev/null and b/micro-station-compliance/data/Measurement10.mat differ
diff --git a/micro-station-compliance/data/Measurement2.mat b/micro-station-compliance/data/Measurement2.mat
new file mode 100755
index 0000000..62ea0a2
Binary files /dev/null and b/micro-station-compliance/data/Measurement2.mat differ
diff --git a/micro-station-compliance/data/Measurement3.mat b/micro-station-compliance/data/Measurement3.mat
new file mode 100755
index 0000000..11d2c02
Binary files /dev/null and b/micro-station-compliance/data/Measurement3.mat differ
diff --git a/micro-station-compliance/data/Measurement4.mat b/micro-station-compliance/data/Measurement4.mat
new file mode 100755
index 0000000..2135c21
Binary files /dev/null and b/micro-station-compliance/data/Measurement4.mat differ
diff --git a/micro-station-compliance/data/Measurement5.mat b/micro-station-compliance/data/Measurement5.mat
new file mode 100755
index 0000000..573da7e
Binary files /dev/null and b/micro-station-compliance/data/Measurement5.mat differ
diff --git a/micro-station-compliance/data/Measurement6.mat b/micro-station-compliance/data/Measurement6.mat
new file mode 100755
index 0000000..3bbe95d
Binary files /dev/null and b/micro-station-compliance/data/Measurement6.mat differ
diff --git a/micro-station-compliance/data/Measurement7.mat b/micro-station-compliance/data/Measurement7.mat
new file mode 100755
index 0000000..11f1bb3
Binary files /dev/null and b/micro-station-compliance/data/Measurement7.mat differ
diff --git a/micro-station-compliance/data/Measurement8.mat b/micro-station-compliance/data/Measurement8.mat
new file mode 100755
index 0000000..27b5caa
Binary files /dev/null and b/micro-station-compliance/data/Measurement8.mat differ
diff --git a/micro-station-compliance/data/Measurement9.mat b/micro-station-compliance/data/Measurement9.mat
new file mode 100755
index 0000000..33f0f10
Binary files /dev/null and b/micro-station-compliance/data/Measurement9.mat differ
diff --git a/micro-station-compliance/data/id31_nass_11august2020.m b/micro-station-compliance/data/id31_nass_11august2020.m
new file mode 100755
index 0000000..b14c856
--- /dev/null
+++ b/micro-station-compliance/data/id31_nass_11august2020.m
@@ -0,0 +1,49 @@
+ID31 NASS - 11/08/2020
+
+ch1 to 3: acc 3D 1v/g
+ch4 to 6: acc 3D 1v/g
+ch7 to 9: acc 3D 100m/g
+ch10 to 12: acc 3D 1v/g
+Ch13: hammer 230uV/N
+
+
+
+%% 12/08/2020
+% change hammer tip to red
+% Bandwidth changed to 400Hz
+
+excitation capteur 1 Y
+Meas1
+
+excitation capteur 1 -Z
+Meas2
+
+excitation capteur 2 X
+Meas3
+
+excitation capteur 2 -Z
+Meas4
+
+excitation capteur 3 -Y
+Meas5
+
+
+excitation capteur 3 -Z
+Meas6
+
+excitation capteur 4 -X
+Meas7
+
+excitation capteur 4 -Z
+Meas8
+
+excitation capteur 3 -X on black block RZ
+Meas9
+
+excitation capteur 1 -X on black block RZ
+Meas10
+
+% ---------------------------
+%% vibrometre on TY 0.2mm/s/V
+excitation -Y
+Meas2
diff --git a/micro-station-compliance/data/id31_nass_ty_12august2020/Measurement2.mat b/micro-station-compliance/data/id31_nass_ty_12august2020/Measurement2.mat
new file mode 100755
index 0000000..7b99090
Binary files /dev/null and b/micro-station-compliance/data/id31_nass_ty_12august2020/Measurement2.mat differ
diff --git a/micro-station-compliance/data/id31_nass_ty_12august2020/record/Measurement2.mat b/micro-station-compliance/data/id31_nass_ty_12august2020/record/Measurement2.mat
new file mode 100755
index 0000000..18b6136
Binary files /dev/null and b/micro-station-compliance/data/id31_nass_ty_12august2020/record/Measurement2.mat differ
diff --git a/micro-station-compliance/data/record/Measurement1.mat b/micro-station-compliance/data/record/Measurement1.mat
new file mode 100755
index 0000000..08a494b
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement1.mat differ
diff --git a/micro-station-compliance/data/record/Measurement10.mat b/micro-station-compliance/data/record/Measurement10.mat
new file mode 100755
index 0000000..db3aaff
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement10.mat differ
diff --git a/micro-station-compliance/data/record/Measurement2.mat b/micro-station-compliance/data/record/Measurement2.mat
new file mode 100755
index 0000000..7767eda
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement2.mat differ
diff --git a/micro-station-compliance/data/record/Measurement3.mat b/micro-station-compliance/data/record/Measurement3.mat
new file mode 100755
index 0000000..04a411d
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement3.mat differ
diff --git a/micro-station-compliance/data/record/Measurement4.mat b/micro-station-compliance/data/record/Measurement4.mat
new file mode 100755
index 0000000..b228762
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement4.mat differ
diff --git a/micro-station-compliance/data/record/Measurement5.mat b/micro-station-compliance/data/record/Measurement5.mat
new file mode 100755
index 0000000..31fc676
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement5.mat differ
diff --git a/micro-station-compliance/data/record/Measurement6.mat b/micro-station-compliance/data/record/Measurement6.mat
new file mode 100755
index 0000000..8371fab
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement6.mat differ
diff --git a/micro-station-compliance/data/record/Measurement7.mat b/micro-station-compliance/data/record/Measurement7.mat
new file mode 100755
index 0000000..d7ef120
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement7.mat differ
diff --git a/micro-station-compliance/data/record/Measurement8.mat b/micro-station-compliance/data/record/Measurement8.mat
new file mode 100755
index 0000000..8be524e
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement8.mat differ
diff --git a/micro-station-compliance/data/record/Measurement9.mat b/micro-station-compliance/data/record/Measurement9.mat
new file mode 100755
index 0000000..6bad103
Binary files /dev/null and b/micro-station-compliance/data/record/Measurement9.mat differ
diff --git a/micro-station-compliance/figs/compliance_diagonal_rotations.png b/micro-station-compliance/figs/compliance_diagonal_rotations.png
new file mode 100644
index 0000000..935df7b
Binary files /dev/null and b/micro-station-compliance/figs/compliance_diagonal_rotations.png differ
diff --git a/micro-station-compliance/figs/compliance_diagonal_rotations_comp_model.png b/micro-station-compliance/figs/compliance_diagonal_rotations_comp_model.png
new file mode 100644
index 0000000..9c0b763
Binary files /dev/null and b/micro-station-compliance/figs/compliance_diagonal_rotations_comp_model.png differ
diff --git a/micro-station-compliance/figs/compliance_diagonal_translations.png b/micro-station-compliance/figs/compliance_diagonal_translations.png
new file mode 100644
index 0000000..627d44d
Binary files /dev/null and b/micro-station-compliance/figs/compliance_diagonal_translations.png differ
diff --git a/micro-station-compliance/figs/compliance_diagonal_translations_comp_model.png b/micro-station-compliance/figs/compliance_diagonal_translations_comp_model.png
new file mode 100644
index 0000000..1336762
Binary files /dev/null and b/micro-station-compliance/figs/compliance_diagonal_translations_comp_model.png differ
diff --git a/micro-station-compliance/index.html b/micro-station-compliance/index.html
new file mode 100644
index 0000000..edf0d56
Binary files /dev/null and b/micro-station-compliance/index.html differ
diff --git a/micro-station-compliance/index.org b/micro-station-compliance/index.org
new file mode 100644
index 0000000..ccc09d3
--- /dev/null
+++ b/micro-station-compliance/index.org
@@ -0,0 +1,473 @@
+#+TITLE: Compliance Measurement of the Micro Station
+:DRAWER:
+#+STARTUP: overview
+
+#+LANGUAGE: en
+#+EMAIL: dehaeze.thomas@gmail.com
+#+AUTHOR: Dehaeze Thomas
+
+#+HTML_LINK_HOME: ../index.html
+#+HTML_LINK_UP: ../index.html
+
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+#+HTML_HEAD:
+
+#+HTML_MATHJAX: align: center tagside: right font: TeX
+
+#+PROPERTY: header-args:matlab :session *MATLAB*
+#+PROPERTY: header-args:matlab+ :comments org
+#+PROPERTY: header-args:matlab+ :results none
+#+PROPERTY: header-args:matlab+ :exports both
+#+PROPERTY: header-args:matlab+ :eval no-export
+#+PROPERTY: header-args:matlab+ :output-dir figs
+
+#+PROPERTY: header-args:shell :eval no-export
+:END:
+
+* Setup
+** Position of inertial sensors on top of the micro-hexapod
+Orientation is relative to the frame determined by the X-ray
+| *Num* | *Position* | *Orientation* | *Sensibility* | *Channels* |
+|-------+------------+---------------+---------------+------------|
+| 1 | [0, +A, 0] | [x, y, z] | 1V/g | 1-3 |
+| 2 | [-B, 0, 0] | [x, y, z] | 1V/g | 4-6 |
+| 3 | [0, -A, 0] | [x, y, z] | 0.1V/g | 7-9 |
+| 4 | [+B, 0, 0] | [x, y, z] | 1V/g | 10-12 |
+
+Instrumented Hammer:
+- Channel 13
+- Sensibility: 230 uV/N
+
+| Acc Number | Dir | Channel Number |
+|------------+-----+----------------|
+| 1 | x | 1 |
+| 1 | y | 2 |
+| 1 | z | 3 |
+| 2 | x | 4 |
+| 2 | y | 5 |
+| 2 | z | 6 |
+| 3 | x | 7 |
+| 3 | y | 8 |
+| 3 | z | 9 |
+| 4 | x | 10 |
+| 4 | y | 11 |
+| 4 | z | 12 |
+| Hammer | | 13 |
+
+From the acceleration measurement of the 4 accelerometers, we can compute the translations and rotations:
+| | *Formula* |
+|-------+--------------------------|
+| $D_x$ | (1x + 2x + 3x + 4x)/4 |
+| $D_y$ | (1y + 2y + 3y + 4y)/4 |
+| $D_z$ | (1z + 2z + 3z + 4z)/4 |
+| $R_x$ | (1z - 3z)/A |
+| $R_y$ | (2z - 4z)/B |
+| $R_z$ | (3x - 1x)/A, (4y - 2y)/B |
+
+
+| | *Formula* |
+|-------+-----------------------|
+| $D_x$ | (1 + 4 + 7 + 10)/4 |
+| $D_y$ | (2 + 5 + 8 + 11)/4 |
+| $D_z$ | (3 + 6 + 9 + 12)/4 |
+| $R_x$ | (1 - 9)/A |
+| $R_y$ | (6 - 12)/B |
+| $R_z$ | (7 - 1)/A, (11 - 5)/B |
+
+** Hammer blow position/orientation
+
+| *Num* | *Direction* | *Position* |
+|-------+-------------+------------|
+| 1 | -Y | [0, +A, 0] |
+| 2 | -Z | [0, +A, 0] |
+| 3 | X | [-B, 0, 0] |
+| 4 | -Z | [-B, 0, 0] |
+| 5 | Y | [0, -A, 0] |
+| 6 | -Z | [0, -A, 0] |
+| 7 | -X | [+B, 0, 0] |
+| 8 | -Z | [+B, 0, 0] |
+| 9 | -X | [0, -A, 0] |
+| 10 | -X | [0, +A, 0] |
+
+From hammer blows to pure forces / torques:
+| | *Formula* | Alternative |
+|-------+--------------+-------------|
+| $F_x$ | +3 | -7 |
+| $F_y$ | -1 | +5 |
+| $F_z$ | -(2 + 6)/2 | -(4 + 8)/2 |
+| $M_x$ | A/2*(2 - 6) | |
+| $M_y$ | B/2*(8 - 4) | |
+| $M_z$ | A/2*(10 - 9) | |
+
+* Results
+** Matlab Init :noexport:ignore:
+#+begin_src matlab :tangle no :exports none :results silent :noweb yes :var current_dir=(file-name-directory buffer-file-name)
+ <>
+#+end_src
+
+#+begin_src matlab :exports none :results silent :noweb yes
+ <>
+#+end_src
+
+** Load Data
+#+begin_src matlab
+ m1 = load('data/Measurement1.mat');
+ m2 = load('data/Measurement2.mat');
+ m3 = load('data/Measurement3.mat');
+ m4 = load('data/Measurement4.mat');
+ m5 = load('data/Measurement5.mat');
+ m6 = load('data/Measurement6.mat');
+ m7 = load('data/Measurement7.mat');
+ m8 = load('data/Measurement8.mat');
+ m9 = load('data/Measurement9.mat');
+ m10 = load('data/Measurement10.mat');
+#+end_src
+
+** Compute Transfer Functions
+#+begin_src matlab
+ freqs = m3.FFT1_H1_1_13_X_Val;
+ w = 2*pi*freqs';
+
+ A = 0.14;
+ B = 0.14;
+#+end_src
+
+#+begin_src matlab
+ G = zeros(6,6,length(freqs));
+
+ % Fx
+ G(1,1,:) = (m3.FFT1_H1_1_13_Y_ReIm + m3.FFT1_H1_4_13_Y_ReIm + m3.FFT1_H1_7_13_Y_ReIm + m3.FFT1_H1_10_13_Y_ReIm)./4;
+ G(2,1,:) = (m3.FFT1_H1_2_13_Y_ReIm + m3.FFT1_H1_5_13_Y_ReIm + m3.FFT1_H1_8_13_Y_ReIm + m3.FFT1_H1_11_13_Y_ReIm)./4;
+ G(3,1,:) = (m3.FFT1_H1_3_13_Y_ReIm + m3.FFT1_H1_6_13_Y_ReIm + m3.FFT1_H1_9_13_Y_ReIm + m3.FFT1_H1_12_13_Y_ReIm)./4;
+ G(4,1,:) = (m3.FFT1_H1_1_13_Y_ReIm - m3.FFT1_H1_9_13_Y_ReIm )./A;
+ G(5,1,:) = (m3.FFT1_H1_6_13_Y_ReIm - m3.FFT1_H1_12_13_Y_ReIm)./B;
+ G(6,1,:) = (m3.FFT1_H1_7_13_Y_ReIm - m3.FFT1_H1_1_13_Y_ReIm )./A;
+
+ % Fy
+ G(1,2,:) = -(m1.FFT1_H1_2_13_Y_ReIm + m1.FFT1_H1_5_13_Y_ReIm + m1.FFT1_H1_8_13_Y_ReIm + m1.FFT1_H1_11_13_Y_ReIm)./4;
+ G(2,2,:) = -(m1.FFT1_H1_2_13_Y_ReIm + m1.FFT1_H1_5_13_Y_ReIm + m1.FFT1_H1_8_13_Y_ReIm + m1.FFT1_H1_11_13_Y_ReIm)./4;
+ G(3,2,:) = -(m1.FFT1_H1_3_13_Y_ReIm + m1.FFT1_H1_6_13_Y_ReIm + m1.FFT1_H1_9_13_Y_ReIm + m1.FFT1_H1_12_13_Y_ReIm)./4;
+ G(4,2,:) = -(m1.FFT1_H1_1_13_Y_ReIm - m1.FFT1_H1_9_13_Y_ReIm )./A;
+ G(5,2,:) = -(m1.FFT1_H1_6_13_Y_ReIm - m1.FFT1_H1_12_13_Y_ReIm)./B;
+ G(6,2,:) = -(m1.FFT1_H1_7_13_Y_ReIm - m1.FFT1_H1_1_13_Y_ReIm )./A;
+
+
+ % Fz
+ G(1,3,:) = -1/2./(1./(m2.FFT1_H1_1_13_Y_ReIm + m2.FFT1_H1_4_13_Y_ReIm + m2.FFT1_H1_7_13_Y_ReIm + m2.FFT1_H1_10_13_Y_ReIm) + ...
+ 1./(m6.FFT1_H1_1_13_Y_ReIm + m6.FFT1_H1_4_13_Y_ReIm + m6.FFT1_H1_7_13_Y_ReIm + m6.FFT1_H1_10_13_Y_ReIm));
+ G(2,3,:) = -1/2./(1./(m2.FFT1_H1_2_13_Y_ReIm + m2.FFT1_H1_5_13_Y_ReIm + m2.FFT1_H1_8_13_Y_ReIm + m2.FFT1_H1_11_13_Y_ReIm) + ...
+ 1./(m6.FFT1_H1_2_13_Y_ReIm + m6.FFT1_H1_5_13_Y_ReIm + m6.FFT1_H1_8_13_Y_ReIm + m6.FFT1_H1_11_13_Y_ReIm));
+ G(3,3,:) = -1/2./(1./(m2.FFT1_H1_3_13_Y_ReIm + m2.FFT1_H1_6_13_Y_ReIm + m2.FFT1_H1_9_13_Y_ReIm + m2.FFT1_H1_12_13_Y_ReIm) + ...
+ 1./(m6.FFT1_H1_3_13_Y_ReIm + m6.FFT1_H1_6_13_Y_ReIm + m6.FFT1_H1_9_13_Y_ReIm + m6.FFT1_H1_12_13_Y_ReIm));
+ G(4,3,:) = -2/A./(1./(m2.FFT1_H1_1_13_Y_ReIm - m2.FFT1_H1_9_13_Y_ReIm) + ...
+ 1./(m6.FFT1_H1_1_13_Y_ReIm - m6.FFT1_H1_9_13_Y_ReIm));
+ G(5,3,:) = -2/B./(1./(m2.FFT1_H1_6_13_Y_ReIm - m2.FFT1_H1_12_13_Y_ReIm) + ...
+ 1./(m6.FFT1_H1_6_13_Y_ReIm - m6.FFT1_H1_12_13_Y_ReIm));
+ G(6,3,:) = -2/A./(1./(m2.FFT1_H1_7_13_Y_ReIm - m2.FFT1_H1_1_13_Y_ReIm) + ...
+ 1./(m6.FFT1_H1_7_13_Y_ReIm - m6.FFT1_H1_1_13_Y_ReIm));
+
+ % Mx
+ G(1,4,:) = 1/A/2./(1./(m2.FFT1_H1_1_13_Y_ReIm + m2.FFT1_H1_4_13_Y_ReIm + m2.FFT1_H1_7_13_Y_ReIm + m2.FFT1_H1_10_13_Y_ReIm) - ...
+ 1./(m6.FFT1_H1_1_13_Y_ReIm + m6.FFT1_H1_4_13_Y_ReIm + m6.FFT1_H1_7_13_Y_ReIm + m6.FFT1_H1_10_13_Y_ReIm));
+ G(2,4,:) = 1/A/2./(1./(m2.FFT1_H1_2_13_Y_ReIm + m2.FFT1_H1_5_13_Y_ReIm + m2.FFT1_H1_8_13_Y_ReIm + m2.FFT1_H1_11_13_Y_ReIm) - ...
+ 1./(m6.FFT1_H1_2_13_Y_ReIm + m6.FFT1_H1_5_13_Y_ReIm + m6.FFT1_H1_8_13_Y_ReIm + m6.FFT1_H1_11_13_Y_ReIm));
+ G(3,4,:) = 1/A/2./(1./(m2.FFT1_H1_3_13_Y_ReIm + m2.FFT1_H1_6_13_Y_ReIm + m2.FFT1_H1_9_13_Y_ReIm + m2.FFT1_H1_12_13_Y_ReIm) - ...
+ 1./(m6.FFT1_H1_3_13_Y_ReIm + m6.FFT1_H1_6_13_Y_ReIm + m6.FFT1_H1_9_13_Y_ReIm + m6.FFT1_H1_12_13_Y_ReIm));
+ G(4,4,:) = 1/A^2*2./(1./(m2.FFT1_H1_1_13_Y_ReIm - m2.FFT1_H1_9_13_Y_ReIm) - ...
+ 1./(m6.FFT1_H1_1_13_Y_ReIm - m6.FFT1_H1_9_13_Y_ReIm));
+ G(5,4,:) = 2/A/B./(1./(m2.FFT1_H1_6_13_Y_ReIm - m2.FFT1_H1_12_13_Y_ReIm) - ...
+ 1./(m6.FFT1_H1_6_13_Y_ReIm - m6.FFT1_H1_12_13_Y_ReIm));
+ G(6,4,:) = 1/A^2*2./(1./(m2.FFT1_H1_7_13_Y_ReIm - m2.FFT1_H1_1_13_Y_ReIm) - ...
+ 1./(m6.FFT1_H1_7_13_Y_ReIm - m6.FFT1_H1_1_13_Y_ReIm));
+
+ % My
+ G(1,5,:) = 1/B/2./(1./(m8.FFT1_H1_1_13_Y_ReIm + m8.FFT1_H1_4_13_Y_ReIm + m8.FFT1_H1_7_13_Y_ReIm + m8.FFT1_H1_10_13_Y_ReIm) - ...
+ 1./(m4.FFT1_H1_1_13_Y_ReIm + m4.FFT1_H1_4_13_Y_ReIm + m4.FFT1_H1_7_13_Y_ReIm + m4.FFT1_H1_10_13_Y_ReIm));
+ G(2,5,:) = 1/B/2./(1./(m8.FFT1_H1_2_13_Y_ReIm + m8.FFT1_H1_5_13_Y_ReIm + m8.FFT1_H1_8_13_Y_ReIm + m8.FFT1_H1_11_13_Y_ReIm) - ...
+ 1./(m4.FFT1_H1_2_13_Y_ReIm + m4.FFT1_H1_5_13_Y_ReIm + m4.FFT1_H1_8_13_Y_ReIm + m4.FFT1_H1_11_13_Y_ReIm));
+ G(3,5,:) = 1/B/2./(1./(m8.FFT1_H1_3_13_Y_ReIm + m8.FFT1_H1_6_13_Y_ReIm + m8.FFT1_H1_9_13_Y_ReIm + m8.FFT1_H1_12_13_Y_ReIm) - ...
+ 1./(m4.FFT1_H1_3_13_Y_ReIm + m4.FFT1_H1_6_13_Y_ReIm + m4.FFT1_H1_9_13_Y_ReIm + m4.FFT1_H1_12_13_Y_ReIm));
+ G(4,5,:) = 2/B/A./(1./(m8.FFT1_H1_1_13_Y_ReIm - m8.FFT1_H1_9_13_Y_ReIm) - ...
+ 1./(m4.FFT1_H1_1_13_Y_ReIm - m4.FFT1_H1_9_13_Y_ReIm));
+ G(5,5,:) = 1/B^2*2./(1./(m8.FFT1_H1_6_13_Y_ReIm - m8.FFT1_H1_12_13_Y_ReIm) - ...
+ 1./(m4.FFT1_H1_6_13_Y_ReIm - m4.FFT1_H1_12_13_Y_ReIm));
+ G(6,5,:) = 2/B/A./(1./(m8.FFT1_H1_7_13_Y_ReIm - m8.FFT1_H1_1_13_Y_ReIm) - ...
+ 1./(m4.FFT1_H1_7_13_Y_ReIm - m4.FFT1_H1_1_13_Y_ReIm));
+
+ % Mz
+ G(1,6,:) = 1/A/2./(1./(m10.FFT1_H1_1_13_Y_ReIm + m10.FFT1_H1_4_13_Y_ReIm + m10.FFT1_H1_7_13_Y_ReIm + m10.FFT1_H1_10_13_Y_ReIm) - ...
+ 1./(m9.FFT1_H1_1_13_Y_ReIm + m9.FFT1_H1_4_13_Y_ReIm + m9.FFT1_H1_7_13_Y_ReIm + m9.FFT1_H1_10_13_Y_ReIm));
+ G(2,6,:) = 1/A/2./(1./(m10.FFT1_H1_2_13_Y_ReIm + m10.FFT1_H1_5_13_Y_ReIm + m10.FFT1_H1_8_13_Y_ReIm + m10.FFT1_H1_11_13_Y_ReIm) - ...
+ 1./(m9.FFT1_H1_2_13_Y_ReIm + m9.FFT1_H1_5_13_Y_ReIm + m9.FFT1_H1_8_13_Y_ReIm + m9.FFT1_H1_11_13_Y_ReIm));
+ G(3,6,:) = 1/A/2./(1./(m10.FFT1_H1_3_13_Y_ReIm + m10.FFT1_H1_6_13_Y_ReIm + m10.FFT1_H1_9_13_Y_ReIm + m10.FFT1_H1_12_13_Y_ReIm) - ...
+ 1./(m9.FFT1_H1_3_13_Y_ReIm + m9.FFT1_H1_6_13_Y_ReIm + m9.FFT1_H1_9_13_Y_ReIm + m9.FFT1_H1_12_13_Y_ReIm));
+ G(4,6,:) = 1/A^2*2./(1./(m10.FFT1_H1_1_13_Y_ReIm - m10.FFT1_H1_9_13_Y_ReIm) - ...
+ 1./(m9.FFT1_H1_1_13_Y_ReIm - m9.FFT1_H1_9_13_Y_ReIm));
+ G(5,6,:) = 2*A/B./(1./(m10.FFT1_H1_6_13_Y_ReIm - m10.FFT1_H1_12_13_Y_ReIm) - ...
+ 1./(m9.FFT1_H1_6_13_Y_ReIm - m9.FFT1_H1_12_13_Y_ReIm));
+ G(6,6,:) = 1/A^2*2./(1./(m10.FFT1_H1_7_13_Y_ReIm - m10.FFT1_H1_1_13_Y_ReIm) - ...
+ 1./(m9.FFT1_H1_7_13_Y_ReIm - m9.FFT1_H1_1_13_Y_ReIm));
+#+end_src
+
+** Diagonal Dynamics
+#+begin_src matlab
+ figure;
+ ax1 = subplot(2,1,1);
+ hold on;
+ plot(freqs, abs(squeeze(G(1,1,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(2,2,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(3,3,:))./(-w.^2)), '.')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
+ ylim([1e-9, 2e-6]);
+
+ ax2 = subplot(2,1,2);
+ hold on;
+ plot(freqs, 180/pi*angle(squeeze(G(1,1,:))./(-w.^2)), '.', 'DisplayName', '$D_x/F_x$')
+ plot(freqs, 180/pi*angle(squeeze(G(2,2,:))./(-w.^2)), '.', 'DisplayName', '$D_y/F_y$')
+ plot(freqs, 180/pi*angle(squeeze(G(3,3,:))./(-w.^2)), '.', 'DisplayName', '$D_z/F_z$')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
+ xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
+ ylim([-180, 180]);
+ yticks([-180, -90, 0, 90, 180]);
+ legend('location', 'southwest');
+
+ linkaxes([ax1,ax2],'x');
+ xlim([30, 300]);
+#+end_src
+
+#+begin_src matlab :tangle no :exports results :results file replace
+ exportFig('figs/compliance_diagonal_translations.pdf', 'width', 'full', 'height', 'full');
+#+end_src
+
+#+name: fig:compliance_diagonal_translations
+#+caption: Dynamics from Forces to Translations
+#+RESULTS:
+[[file:figs/compliance_diagonal_translations.png]]
+
+#+begin_src matlab
+ figure;
+ ax1 = subplot(2,1,1);
+ hold on;
+ plot(freqs, abs(squeeze(G(4,4,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(5,5,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(6,6,:))./(-w.^2)), '.')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
+ ylim([1e-9, 2e-6]);
+
+ ax2 = subplot(2,1,2);
+ hold on;
+ plot(freqs, 180/pi*angle(squeeze(G(4,4,:))./(-w.^2)), '.', 'DisplayName', '$R_x/M_x$')
+ plot(freqs, 180/pi*angle(squeeze(G(5,5,:))./(-w.^2)), '.', 'DisplayName', '$R_y/M_y$')
+ plot(freqs, 180/pi*angle(squeeze(G(6,6,:))./(-w.^2)), '.', 'DisplayName', '$R_z/M_z$')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
+ xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
+ ylim([-180, 180]);
+ yticks([-180, -90, 0, 90, 180]);
+ legend('location', 'southwest');
+
+ linkaxes([ax1,ax2],'x');
+ xlim([30, 300]);
+#+end_src
+
+#+begin_src matlab :tangle no :exports results :results file replace
+ exportFig('figs/compliance_diagonal_rotations.pdf', 'width', 'full', 'height', 'full');
+#+end_src
+
+#+name: fig:compliance_diagonal_rotations
+#+caption: Dynamics from Torques to Rotations
+#+RESULTS:
+[[file:figs/compliance_diagonal_rotations.png]]
+
+| | Stiffness | Unit |
+|-----------+-----------+----------|
+| $K_x$ | 1e7 | [N/m] |
+| $K_y$ | 1e7 | [N/m] |
+| $K_z$ | 2e8 | [N/m] |
+| $K_{R_x}$ | ? | [Nm/rad] |
+| $K_{R_y}$ | 1.8e7 | [Nm/rad] |
+| $K_{R_z}$ | 1e7 | [Nm/rad] |
+
+** Compare with Model
+#+begin_src matlab
+ load('./mat/model.mat', 'Gm');
+#+end_src
+
+#+begin_src matlab
+ figure;
+ ax1 = subplot(2,1,1);
+ hold on;
+ plot(freqs, abs(squeeze(G(1,1,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(2,2,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(3,3,:))./(-w.^2)), '.')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, abs(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-')
+ plot(freqs, abs(squeeze(freqresp(Gm(2,2,:), freqs, 'Hz'))), '-')
+ plot(freqs, abs(squeeze(freqresp(Gm(3,3,:), freqs, 'Hz'))), '-')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
+ ylim([1e-9, 2e-6]);
+
+ ax2 = subplot(2,1,2);
+ hold on;
+ plot(freqs, 180/pi*angle(squeeze(G(1,1,:))./(-w.^2)), '.', 'DisplayName', '$D_x/F_x$')
+ plot(freqs, 180/pi*angle(squeeze(G(2,2,:))./(-w.^2)), '.', 'DisplayName', '$D_y/F_y$')
+ plot(freqs, 180/pi*angle(squeeze(G(3,3,:))./(-w.^2)), '.', 'DisplayName', '$D_z/F_z$')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(2,2,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(3,3,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
+ xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
+ ylim([-180, 180]);
+ yticks([-180, -90, 0, 90, 180]);
+ legend('location', 'southwest');
+
+ linkaxes([ax1,ax2],'x');
+ xlim([30, 300]);
+#+end_src
+
+#+begin_src matlab :tangle no :exports results :results file replace
+ exportFig('figs/compliance_diagonal_translations_comp_model.pdf', 'width', 'full', 'height', 'full');
+#+end_src
+
+#+name: fig:compliance_diagonal_translations_comp_model
+#+caption: Dynamics from Forces to Translations
+#+RESULTS:
+[[file:figs/compliance_diagonal_translations_comp_model.png]]
+
+#+begin_src matlab
+ figure;
+ ax1 = subplot(2,1,1);
+ hold on;
+ plot(freqs, abs(squeeze(G(4,4,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(5,5,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(6,6,:))./(-w.^2)), '.')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, abs(squeeze(freqresp(Gm(4,4,:), freqs, 'Hz'))), '-')
+ plot(freqs, abs(squeeze(freqresp(Gm(5,5,:), freqs, 'Hz'))), '-')
+ plot(freqs, abs(squeeze(freqresp(Gm(6,6,:), freqs, 'Hz'))), '-')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ ylabel('Magnitude [rad/Nm]'); set(gca, 'XTickLabel',[]);
+ % ylim([1e-9, 2e-6]);
+
+ ax2 = subplot(2,1,2);
+ hold on;
+ plot(freqs, 180/pi*angle(squeeze(G(4,4,:))./(-w.^2)), '.', 'DisplayName', '$R_x/M_x$')
+ plot(freqs, 180/pi*angle(squeeze(G(5,5,:))./(-w.^2)), '.', 'DisplayName', '$R_y/M_y$')
+ plot(freqs, 180/pi*angle(squeeze(G(6,6,:))./(-w.^2)), '.', 'DisplayName', '$R_z/M_z$')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(4,4,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(5,5,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(6,6,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
+ xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
+ ylim([-180, 180]);
+ yticks([-180, -90, 0, 90, 180]);
+ legend('location', 'southwest');
+
+ linkaxes([ax1,ax2],'x');
+ xlim([30, 300]);
+#+end_src
+
+#+begin_src matlab :tangle no :exports results :results file replace
+ exportFig('figs/compliance_diagonal_rotations_comp_model.pdf', 'width', 'full', 'height', 'full');
+#+end_src
+
+#+name: fig:compliance_diagonal_rotations_comp_model
+#+caption: Dynamics from Torques to Rotations
+#+RESULTS:
+[[file:figs/compliance_diagonal_rotations_comp_model.png]]
+
+| | Stiffness | Unit |
+|-----------+-----------+----------|
+| $K_x$ | 1e7 | [N/m] |
+| $K_y$ | 1e7 | [N/m] |
+| $K_z$ | 2e8 | [N/m] |
+| $K_{R_x}$ | 5e7 | [Nm/rad] |
+| $K_{R_y}$ | 3e7 | [Nm/rad] |
+| $K_{R_z}$ | 2e7 | [Nm/rad] |
+
+** Coupling Dynamics
+#+begin_src matlab
+ figure;
+ ax1 = subplot(2,1,1);
+ hold on;
+ plot(freqs, abs(squeeze(G(1,1,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(2,1,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(3,1,:))./(-w.^2)), '.')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, abs(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-')
+ plot(freqs, abs(squeeze(freqresp(Gm(2,1,:), freqs, 'Hz'))), '-')
+ plot(freqs, abs(squeeze(freqresp(Gm(3,1,:), freqs, 'Hz'))), '-')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
+ ylim([1e-9, 2e-6]);
+
+ ax2 = subplot(2,1,2);
+ hold on;
+ plot(freqs, 180/pi*angle(squeeze(G(1,1,:))./(-w.^2)), '.', 'DisplayName', '$D_x/F_x$')
+ plot(freqs, 180/pi*angle(squeeze(G(2,1,:))./(-w.^2)), '.', 'DisplayName', '$D_y/F_x$')
+ plot(freqs, 180/pi*angle(squeeze(G(3,1,:))./(-w.^2)), '.', 'DisplayName', '$D_z/F_x$')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(1,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(2,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(3,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
+ xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
+ ylim([-180, 180]);
+ yticks([-180, -90, 0, 90, 180]);
+ legend('location', 'southwest');
+
+ linkaxes([ax1,ax2],'x');
+ xlim([30, 300]);
+#+end_src
+
+#+begin_src matlab
+ figure;
+ ax1 = subplot(2,1,1);
+ hold on;
+ plot(freqs, abs(squeeze(G(5,1,:))./(-w.^2)), '.')
+ plot(freqs, abs(squeeze(G(4,2,:))./(-w.^2)), '.')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, abs(squeeze(freqresp(Gm(5,1,:), freqs, 'Hz'))), '-')
+ plot(freqs, abs(squeeze(freqresp(Gm(4,2,:), freqs, 'Hz'))), '-')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
+ ylabel('Magnitude [m/N]'); set(gca, 'XTickLabel',[]);
+ ylim([1e-9, 2e-6]);
+
+ ax2 = subplot(2,1,2);
+ hold on;
+ plot(freqs, 180/pi*angle(squeeze(G(5,1,:))./(-w.^2)), '.', 'DisplayName', '$R_y/F_x$')
+ plot(freqs, 180/pi*angle(squeeze(G(4,2,:))./(-w.^2)), '.', 'DisplayName', '$R_x/F_y$')
+ set(gca,'ColorOrderIndex',1);
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(5,1,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ plot(freqs, 180/pi*angle(squeeze(freqresp(Gm(4,2,:), freqs, 'Hz'))), '-', 'HandleVisibility', 'off')
+ hold off;
+ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'lin');
+ xlabel('Freqency [Hz]'); ylabel('Phase [deg]');
+ ylim([-180, 180]);
+ yticks([-180, -90, 0, 90, 180]);
+ legend('location', 'southwest');
+
+ linkaxes([ax1,ax2],'x');
+ xlim([30, 300]);
+#+end_src
+
diff --git a/micro-station-compliance/mat/model.mat b/micro-station-compliance/mat/model.mat
new file mode 100644
index 0000000..efe4d7b
Binary files /dev/null and b/micro-station-compliance/mat/model.mat differ