@@ -23,6 +23,20 @@ colors = colororder;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				freqs   =   logspace ( 0 ,   3 ,   1000 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   HAC   Plant 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   < < ssec : nass_hac _plant > > 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   plant   dynamics   from   force   inputs   $ \ bm { f } $   to   the   strut   errors   $ \ bm { \ epsilon } _ { \ mathcal { L } } $   were   first   extracted   from   the   multi - body   model   without   implementation   of   the   decentralized   IFF . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   influence   of   spindle   rotation   on   plant   dynamics   was   investigated ,   with   results   presented   in   Figure   ref : fig : nass_undamped _plant _effect _Wz . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   While   rotational   motion   introduces   coupling   effects   at   low   frequencies ,   these   remain   minimal   at   operational   velocities ,   owing   to   the   high   stiffness   characteristics   of   the   nano - hexapod   assembly . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Payload   mass   emerged   as   a   significant   parameter   affecting   system   behavior ,   as   illustrated   in   Figure   ref : fig : nass_undamped _plant _effect _mass . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   As   expected ,   increasing   payload   mass   was   found   to   decrease   resonance   frequencies   while   amplifying   coupling   at   low   frequency . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   These   mass - dependent   dynamic   changes   present   considerable   challenges   for   control   system   design ,   particularly   for   configurations   with   high   payload   masses . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Additional   operational   parameters   were   systematically   evaluated ,   including   the   $ R_y $   tilt   angle ,   $ R_z $   spindle   position ,   and   micro - hexapod   position . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   These   factors   were   found   to   exert   negligible   influence   on   the   plant   dynamics ,   attributable   to   the   effective   mechanical   decoupling   achieved   between   the   plant   and   micro - station   dynamics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   This   decoupling   characteristic   ensures   consistent   performance   across   various   operational   configurations . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   This   also   validates   the   developed   control   kinematics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Identify   the   IFF   plant   dynamics   using   the   Simscape   model 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -49,7 +63,7 @@ clear io; io_i = 1;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / Controller ' ] ,       1 ,   ' input ' ) ;                    io_i   =   io_i   +   1 ;   %   Actuator   Inputs   [ N ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / Tracking   Error ' ] ,   1 ,   ' openoutput ' ,   [ ] ,   ' EdL ' ) ;    io_i   =   io_i   +   1 ;   %   Strut   errors   [ m ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Identify   HAC   Plant   without   using   IFF 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Identify   HAC   Plant   without   using   IFF 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeSample ( ' type ' ,   ' cylindrical ' ,   ' m ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m1   =   linearize ( mdl ,   io ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m1 . InputName    =   { ' f1 ' ,   ' f2 ' ,   ' f3 ' ,   ' f4 ' ,   ' f5 ' ,   ' f6 ' } ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -65,7 +79,7 @@ G_m50 = linearize(mdl, io);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m50 . InputName    =   { ' f1 ' ,   ' f2 ' ,   ' f3 ' ,   ' f4 ' ,   ' f5 ' ,   ' f6 ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m50 . OutputName   =   { ' l1 ' ,   ' l2 ' ,   ' l3 ' ,   ' l4 ' ,   ' l5 ' ,   ' l6 ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Effect   of   Rotation 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Effect   of   Rotation 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeSample ( ' type ' ,   ' cylindrical ' ,   ' m ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeReferences ( . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     ' Rz_type ' ,   ' rotating ' ,   . . . 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -75,19 +89,7 @@ G_m1_Rz = linearize(mdl, io, 0.1);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m1 _Rz . InputName    =   { ' f1 ' ,    ' f2 ' ,    ' f3 ' ,    ' f4 ' ,    ' f5 ' ,    ' f6 ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m1 _Rz . OutputName   =   { ' l1 ' ,   ' l2 ' ,   ' l3 ' ,   ' l4 ' ,   ' l5 ' ,   ' l6 ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Effect   of   rotation :   ref : fig : nass_undamped _plant _effect _Wz 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Add   some   coupling   at   low   frequency ,   but   still   small   at   the   considered   velocity . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     This   is   thanks   to   the   relatively   stiff   nano - hexapod   ( CF   rotating   model ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Effect   of   payload   mass : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Decrease   resonance   frequencies 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Increase   coupling :   ref : fig : nass_undamped _plant _effect _mass 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     = >   control   challenge   for   high   payload   masses 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Other   effects   such   as :   Ry   tilt   angle ,   Rz   spindle   position ,   micro - hexapod   position   are   found   to   have   negligible   effect   on   the   plant   dynamics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     This   is   thanks   to   the   fact   the   the   plant   dynamics   is   well   decoupled   from   the   micro - station   dynamics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Effect   of   rotation   on   the   HAC   plant 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				tiledlayout ( 3 ,   1 ,   ' TileSpacing ' ,   ' Compact ' ,   ' Padding ' ,   ' None ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -137,6 +139,7 @@ yticks([-180:45:180]);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				linkaxes ( [ ax1 , ax2 ] , ' x ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ freqs ( 1 ) ,   freqs ( end ) ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Effect   of   payload ' s   mass   on   the   HAC   plant 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				tiledlayout ( 3 ,   1 ,   ' TileSpacing ' ,   ' Compact ' ,   ' Padding ' ,   ' None ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -193,7 +196,7 @@ xlim([freqs(1), freqs(end)]);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + name :   fig : nass_undamped _plant _effect 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + caption :   Effect   of   the   Spindle ' s   rotational   velocity   on   the   positioning   plant   ( \ subref { fig : nass_undamped _plant _effect _Wz } )   and   effect   of   the   payload ' s   mass   on   the   positioning   plant   ( \ subref { fig : nass_undamped _plant _effect _mass } ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   [ htbp ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   [ h!  tbp ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + begin_figure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : caption   \ subcaption { \ label { fig : nass_undamped _plant _effect _Wz } Effect   of   rotational   velocity   $ \ Omega_z $ } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   { 0.48 \ textwidth } 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -209,16 +212,19 @@ xlim([freqs(1), freqs(end)]);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + end_subfigure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + end_figure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   Decentralized   Integral   Force   Feedback   was   implemented   in   the   multi - body   model ,   and   transfer   functions   from   force   inputs   $ \ bm { f } ^ \ prime $   of   the   damped   plant   to   the   strut   errors   $ \ bm { \ epsilon } _ { \ mathcal { L } } $   were   extracted   from   this   model . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   E ffect  of   IFF   on   the   plant   ref : fig : nass_comp _undamped _damped _plant _m1 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Modes   are   well   damped  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Small   coupling   increase   at   low   frequency  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Benefits   of   using   IFF   ref : fig : nass_hac _plants 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     w ith    added   damping ,   th e  set   of   plant s  to    be   controlled   ( with   payloads    from   1 kg   to   50 kg )   is    mo re  easily   controlled . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Between   10   and   50 Hz ,    th e   plant   dynamics   does   not   vary   a   lot   with   the   frequency ,   whereas   without   active   damping ,   it    woul d  be   impossible   to   design   a   robust   controller   with   bandwidth   above   10 Hz   that   i s  robust   to   the   change   of   payload 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   e ffectiveness   of   IFF   implementation   was   first   evaluated   with   a   $ 1 \ , \ text { kg } $   payload ,   as   demonstrated   in   Figure   ref : fig : nass_comp _undamped _damped _plant _m1 . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  The   results   indicate   successful   damping   of   the   nano - hexapod   resonance   modes ,   though   a   minor   increase   in   low - frequency   coupling   was   observed .  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  This   trade - off   was   considered   acceptable   given   the   overall   improvement   in   system   behavior .  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  The   benef its    of   IFF   implementation   wer e  further   assessed   acros s  the    full   range   of   payload   configurations ,   with   results   presented   in    Figu re  ref : fig : nass_hac _plants . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  For   all    tested    payloads   ( $ 1 \ , \ text { kg } $ ,   $ 25 \ , \ text { kg } $    an d  $ 50 \ , \ text { kg } $ ) ,   decentralized   IFF   significantly   damped   the   nano - hexapod   mode s  and   therefore   simplified   the   system   dynamics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   More   importantly ,   is   the   fact   that   in   the   vicinity   of   the   wanted   high   authority   control   bandwidth   ( i . e .   between   $ 10 \ , \ text { Hz } $   and   $ 50 \ , \ text { Hz } $ ) ,   the   damped   dynamics   ( shown   in   red )   exhibited   minimal   gain   and   phase   variations   with   frequency . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   For   the   undamped   system   ( shown   in   blue ) ,   achieving   robust   control   with   bandwidth   above   10 Hz   while   maintaining   stability   across   different   payload   masses   would   be   practically   unfeasible . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Identify   HAC   Plant   without   using    IFF 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Identify   HAC   Plant   with   IFF 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeReferences ( ) ;   %   No   Spindle   Rotation 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeController ( ' type ' ,   ' iff ' ) ;   %   Implemented   IFF   controller 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				load ( ' nass_K _iff . mat ' ,   ' Kiff ' ) ;   %   Load   designed   IFF   controller 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -246,15 +252,16 @@ if not(isstable(G_hac_m1) && isstable(G_hac_m25) && isstable(G_hac_m50))
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     warning ( ' One   of   HAC   plant   is   not   stable ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				end 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Comparison   of   the   OL   plant   and   the   plant   with   IFF   -   1 kg   payload 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				tiledlayout ( 3 ,   1 ,   ' TileSpacing ' ,   ' Compact ' ,   ' Padding ' ,   ' None ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ax1   =   nexttile ( [ 2 , 1 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_m1 (   1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   colors ( 1 , : ) ,   . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $ ,   OL ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $   -   OL ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_hac _m1 ( 1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   colors ( 2 , : ) ,   . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $ ,   with   IFF ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $   -   IFF ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				for   i   =   1 : 5 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     for   j   =   i + 1 : 6 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         plot ( freqs ,   abs ( squeeze ( freqresp ( G_m1 ( i , j ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 1 , : ) ,   0.2 ] ,   . . . 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -272,7 +279,7 @@ end
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   off ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				set ( gca ,   ' XScale ' ,   ' log ' ) ;   set ( gca ,   ' YScale ' ,   ' log ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' Amplitude   [ m / N ] ' ) ;   set ( gca ,   ' XTickLabel ' , [ ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylim ( [ 1 e -10 ,   2 e -5 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylim ( [ 1 e -10 ,   5 e -5 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg   =   legend ( ' location ' ,   ' southeast ' ,   ' FontSize ' ,   8 ,   ' NumColumns ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg . ItemTokenSize ( 1 )   =   15 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -297,8 +304,8 @@ tiledlayout(3, 1, 'TileSpacing', 'compact', 'Padding', 'None');
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ax1   =   nexttile ( [ 2 , 1 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_m1 (      1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 1 , : ) ,   0.5 ] ,   ' DisplayName ' ,   ' Undamped   -   $ \ epsilon \ mathcal { L } _i / f_i $ ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_hac _m1 ( 1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 2 , : ) ,   0.5 ] ,   ' DisplayName ' ,   ' Damped   -   $ \ epsilon \ mathcal { L } _i / f_i ^ \ prime $ ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_m1 (      1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 1 , : ) ,   0.5 ] ,   ' DisplayName ' ,   ' $ \ epsilon \ mathcal { L } _i / f_i $   -   OL ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_hac _m1 ( 1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 2 , : ) ,   0.5 ] ,   ' DisplayName ' ,   ' $ \ epsilon \ mathcal { L } _i / f_i ^ \ prime $   -   IFF ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				for   i   =   1 : 6 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     plot ( freqs ,   abs ( squeeze ( freqresp ( G_m1 (   i , i ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 1 , : ) ,   0.5 ] ,   ' HandleVisibility ' ,   ' off ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     plot ( freqs ,   abs ( squeeze ( freqresp ( G_m25 ( i , i ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 1 , : ) ,   0.5 ] ,   ' HandleVisibility ' ,   ' off ' ) ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -314,7 +321,7 @@ set(gca, 'XScale', 'log'); set(gca, 'YScale', 'log');
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' Amplitude   [ m / N ] ' ) ;   set ( gca ,   ' XTickLabel ' , [ ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg   =   legend ( ' location ' ,   ' southwest ' ,   ' FontSize ' ,   8 ,   ' NumColumns ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg . ItemTokenSize ( 1 )   =   15 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   ylim ( [ 1 e -8  ,   1 e -4  ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylim ( [ 1 e -10  ,   5 e -5  ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ax2   =   nexttile ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -338,10 +345,32 @@ yticks([-180:45:180]);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				linkaxes ( [ ax1 , ax2 ] , ' x ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   xlim ( [ 1 ,   5 e2 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Effect   of   micro - station   compliance 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Micro - Station   complex   dynamics   has   almost   no   effect   on   the   plant   dynamics   ( Figure   ref : fig : nass_effect _ustation _compliance ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   adds   some   alternating   poles   and   zeros   above   100 Hz ,   which   should   not   be   an   issue   for   control 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + name :   fig : nass_hac _plant 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + caption :   Effect   of   Decentralized   Integral   Force   Feedback   on   the   positioning   plant   for   a   $ 1 \ , \ text { kg } $   sample   mass   ( \ subref { fig : nass_undamped _plant _effect _Wz } ) .   Direct   terms   of   the   positioning   plants   for   all   considered   payloads   are   shown   in   ( \ subref { fig : nass_undamped _plant _effect _mass } ) . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   [ h ! tbp ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + begin_figure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : caption   \ subcaption { \ label { fig : nass_comp _undamped _damped _plant _m1 } Effect   of   IFF   -   $ m   =   1 \ , \ text { kg } $ } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   { 0.48 \ textwidth } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + begin_subfigure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : width   0.95 \ linewidth 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   [ [ file : figs / nass_comp _undamped _damped _plant _m1 . png ] ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + end_subfigure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : caption   \ subcaption { \ label { fig : nass_hac _plants } Effect   of   IFF   on   the   set   of   plants   to   control } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   { 0.48 \ textwidth } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + begin_subfigure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : width   0.95 \ linewidth 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   [ [ file : figs / nass_hac _plants . png ] ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + end_subfigure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + end_figure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   coupling   between   the   nano - hexapod   and   micro - station   was   evaluated   through   comparative   analysis   of   plant   dynamics   under   two   mounting   conditions . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   In   the   first   configuration ,   the   nano - hexapod   was   mounted   on   an   ideally   rigid   support ,   while   in   the   second   configuration ,   it   was   installed   on   the   micro - station   with   finite   compliance . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   As   illustrated   in   Figure   ref : fig : nass_effect _ustation _compliance ,   the   complex   dynamics   of   the   micro - station   were   found   to   have   little   impact   on   the   plant   dynamics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   only   observable   difference   manifests   as   alternating   poles   and   zeros   above   100 Hz ,   a   frequency   range   sufficiently   beyond   the   control   bandwidth   to   avoid   interference   with   system   performance . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   This   finding   confirms   effective   dynamic   decoupling   between   the   nano - hexapod   and   the   supporting   micro - station   structure . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Identify   plant   with   "rigid"   micro - station 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -374,9 +403,9 @@ tiledlayout(3, 1, 'TileSpacing', 'Compact', 'Padding', 'None');
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ax1   =   nexttile ( [ 2 , 1 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_m25 _rigid (   1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   colors ( 1 , : ) ,   . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $ ,   OL ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $   -   Rigid   support ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( G_m25 ( 1 , 1 ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   colors ( 2 , : ) ,   . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $ ,   with   IFF ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				      ' DisplayName ' ,   ' $ \ epsilon_ { \ mathcal { L } i } / f_i $   -   $ \ mu $ - station   support ' ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				for   i   =   1 : 5 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				     for   j   =   i + 1 : 6 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				         plot ( freqs ,   abs ( squeeze ( freqresp ( G_m25 _rigid ( i , j ) ,   freqs ,   ' Hz ' ) ) ) ,   ' color ' ,   [ colors ( 1 , : ) ,   0.2 ] ,   . . . 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -394,7 +423,7 @@ end
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   off ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				set ( gca ,   ' XScale ' ,   ' log ' ) ;   set ( gca ,   ' YScale ' ,   ' log ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' Amplitude   [ m / N ] ' ) ;   set ( gca ,   ' XTickLabel ' , [ ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylim ( [ 1 e -10 ,   2 e -5 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylim ( [ 1 e -10 ,   5 e -5 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg   =   legend ( ' location ' ,   ' southeast ' ,   ' FontSize ' ,   8 ,   ' NumColumns ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg . ItemTokenSize ( 1 )   =   15 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -413,23 +442,21 @@ yticks([-180:45:180]);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				linkaxes ( [ ax1 , ax2 ] , ' x ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ freqs ( 1 ) ,   freqs ( end ) ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Higher   or   lower   n ano- h exapod  s tiffness? 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Effect   of   N ano- H exapod  S tiffness  on   System   Dynamics 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   < < ssec : nass_hac _stiffness > > 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   * Goal * :   confirm   the   analysis   with   simpler   models   ( uniaxial   and   3 DoF )   that   a   nano - hexapod   stiffness   of   $ \ approx   1 \ , N / \ mu   m $   should   give   better   performances   than   a   very   stiff   or   very   soft   nano - hexapod . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   influence   of   nano - hexapod   stiffness   was   investigated   to   validate   earlier   findings   from   simplified   uniaxial   and    three - degree - of - freedom   ( 3 DoF )   models . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   These   models   suggested   that   a   moderate   stiffness   of   approximately   $ 1 \ , N / \ mu   m $   would   provide   better   performance   compared   to   either   very   stiff   or   very   soft   configurations . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   * S tiff  nano - hexapod * : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%      uniaxial   model  :   high   nano - hexapod   stiffness   i nduce   coupling   between   th e  n ano - hexapod   and   the   micro - station   dynamics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     considering   the   complex   dynamics   of   the   micro - station   as   shown   by    the   modal   analysis ,   that    would   result   in   a   complex   system   to   control 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     To   show   that ,   a   nano - hexapod   with   actuator   stiffness   equal   to   100 N / um    is   initialized ,   payload   of   25 kg . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     The   dynamics   from   $ \ bm { f } $   to   $ \ bm { \ epsilon } _ { \ mathcal { L } } $   is   identified   and   compared   to   the   case   where   the   micro - station   is   infinitely   rigid   ( figure   ref : fig : nass_stiff _nano _hexapod _coupling _ustation ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     -   Coupling   induced    by   the   micro - station :   much   more   complex   and   difficult   to   model   /   predict 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     -   Similar    to   w hat   was   predicted   using   the   uniaxial   model 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   * Soft   nano - hexapod * : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     N ano - hexapod   with   stiffness   of   0.01 N / um   is   initialized ,   payload   of   25 kg . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Dynamics   is   identified   with   no   spindle   rotation ,   and   with   spindle   rotation   of   36 deg / s   and   360 deg / s   ( Figure   ref : fig : nass_soft _nano _hexapod _effect _Wz ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     -   Rotation   as   huge   effect   on   the   dynamics :   unstable   for   high   rotational   velocities ,   added   coupling   due   to   gyroscopic   effects ,   and   change   of   resonance   frequencies   as   a   function   of   the   rotational   velocity 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     -   Simple   3 DoF   rotating   model   is   helpful   to   understand   the   complex   effect   of   the   rotation   = >   similar   conclusion 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     -   Say   that   controlling   the   frame   of   the   struts   is   not   adapted   with   a   soft   nano - hexapod ,   but   we   should   rather   control   in   the   frame   matching   the   center   of   mass   of   the   payload ,   but   we   would   still   obtain   large   coupling   and   change   of   dynamics   due   to   gyroscopic   effects . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   For   the   s tiff  nano - hexapod   analysis ,   a   system   with   actuator   stiffness   of   $ 100 \ , N / \ mu   m $   was   simulated   with   a   $ 25 \ , \ text { kg } $   payload . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  The   transfer    f unction   from   $ \ bm { f } $   to   $ \ bm { \ epsilon } _ { \ mathcal { L } } $   was   evaluated   u nder   two   conditions :   mounting   on   an   infinitely   rigid   bas e  and   mounting    on   the   micro - station . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  As   shown   in   Figure   ref : fig : nass_stiff _nano _hexapod _coupling _ustation ,   significant   coupling    was   observed   between   the    nano - hexapod   and    micro - station   dynamics . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  This   coupling   introduces   complex   behavior   that   proves   difficult   to   model   and   predict   accurately ,   corroborating   the   predictions   of    the   simplified   uniaxial   model . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  The   soft   nano - hexapod   configuration    was   evaluated   using   a   stiffness   of   $ 0.01 \ , N / \ mu   m $   with   a   $ 25 \ , \ text { kg } $   payload . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  Dynamic   response    was   c haracterized   at   three   rotational   velocities :   0 ,   36 ,   and   360   deg / s . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Figure   ref : fig : nass_soft _nano _hexapod _effect _Wz   demonstrates   that   rotation   substantially   impacts   system   dynamics ,   manifesting   as   instability   at   high   rotational   velocities ,   increased   coupling   from   gyroscopic   effects ,   and   rotation - dependent   resonance   frequencies . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  The   current   approach   of   controlling   the   motion   in   the   strut   frame   proves   inadequate   for   soft   n ano - hexapods ;    but   even   shifting   control   to   the   payload ' s   center   of   mass   frame   would   not   overcome   the   substantial   coupling   and   dynamic   variations   induced   by   gyroscopic   effects . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Identify   Dynamics   with   a   Stiff   nano - hexapod   ( 100 N / um ) 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -461,7 +488,7 @@ G_m25_pz = linearize(mdl, io);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m25 _pz . InputName    =   { ' f1 ' ,   ' f2 ' ,   ' f3 ' ,   ' f4 ' ,   ' f5 ' ,   ' f6 ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				G_m25 _pz . OutputName   =   { ' l1 ' ,   ' l2 ' ,   ' l3 ' ,   ' l4 ' ,   ' l5 ' ,   ' l6 ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Compare   with   Nano - Hexapod   alone   ( rigid   micro - station ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Compare   with   Nano - Hexapod   alone   ( rigid   micro - station ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeGround ( ' type ' ,   ' rigid ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeGranite ( ' type ' ,   ' rigid ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeTy ( ' type ' ,   ' rigid ' ) ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -625,12 +652,10 @@ linkaxes([ax1,ax2],'x');
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ f ( 1 ) ,   f ( end ) ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Controller   design 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   < < ssec : nass_hac _controller > > 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   In   this   section ,   a   high   authority   controller   is   design   such   that : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   it   is   robust   to   the   change   of   payload   mass   ( i . e .   is   should   be   stable   f or  all   th e  damped   plants   of   Figure   ref : fig : nass_hac _plants ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   it   has   reasonably   high   bandwidth   to   give   good   performances   ( here   10 Hz ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   eqref : eq : nass_robust _hac 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   A   high   authority   controller   was   designed   to   meet   two   key   requirements :   stable   for   all   payload   masses   ( i . e .   for   all   the   damped   plants   of   Figure   ref : fig : nass_hac _plants ) ,   and   achievement   of   sufficient   bandwidth   ( targeted   at   10 Hz )   for   high   performance   operation . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   controller   structure   is   defined   in   Equation   eqref : eq : nass_robust _hac ,   incorporating   an   integrator   term   for   low   frequency   performance ,   a   lead   compensat or  for   phas e  margin   improvement ,   and   a   low - pass   filter   for   robustness   against   high   frequency   modes . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   \ begin { equation } \ label { eq : nass_robust _hac } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     K_ { \ text { HAC } } ( s )   =   g_0   \ cdot   \ underbrace { \ frac { \ omega_c } { s } } _ { \ text { int } }   \ cdot   \ underbrace { \ frac { 1 } { \ sqrt { \ alpha } } \ frac { 1   +   \ frac { s } { \ omega_c / \ sqrt { \ alpha } } } { 1   +   \ frac { s } { \ omega_c \ sqrt { \ alpha } } } } _ { \ text { lead } }   \ cdot   \ underbrace { \ frac { 1 } { 1   +   \ frac { s } { \ omega_0 } } } _ { \ text { LPF } } ,   \ quad   \ left (   \ omega_c   =   2 \ pi10 \ , \ text { rad / s } , \   \ alpha   =   2 , \   \ omega_0   =   2 \ pi80 \ , \ text { rad / s }   \ right ) 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -666,10 +691,9 @@ save('./mat/nass_K_hac.mat', 'Khac');
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   "Decentraliz ed"   Loop   Gain : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Bandwid th   around   10 Hz  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   C haracteristic  L oci: 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Stable   for   all   payloads   with   acceptable   stability   margins 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   controller ' s   performance   was   evaluat ed  through   two   complementary   analyses . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  First ,   the   decentralized   loop   gain ,   shown   in   Figure   ref : fig : nass_hac _loop _gain ,   confirms    the    achievement   of   the   desired   10 Hz   bandwidth .  
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Second ,   the   c haracteristic  l oci  analysis   presented   in   Figure   ref : fig : nass_hac _loci   demonstrates   robustness   for   all   payload   masses ,   with   adequate   stability   margins   maintained   throughout   the   operating   envelope . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   "Diagonal"   loop   gain   for   the   High   Authority   Controller 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -782,144 +806,22 @@ xlim([-1.8, 0.2]); ylim([-1, 1]);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg   =   legend ( ' location ' ,   ' northeast ' ,   ' FontSize ' ,   8 ,   ' NumColumns ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg . ItemTokenSize ( 1 )   =   15 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   TODO   Sensitivity   to   disturbances                                  : noexport : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Compute   transfer   functions   from   spindle   vertical   error   to   sample   vertical   error   with   HAC - IFF 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Compare   without   the   NASS ,   and   with   just   IFF 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Same   for   horizontal 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Initialize   each   Simscape   model   elements 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeGround ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeGranite ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeTy ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeRy ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeRz ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeMicroHexapod ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeSimplifiedNanoHexapod ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeSample ( ' type ' ,   ' cylindrical ' ,   ' m ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Initial   Simscape   Configuration 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeSimscapeConfiguration ( ' gravity ' ,   false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeDisturbances ( ' enable ' ,   false ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeLoggingConfiguration ( ' log ' ,   ' none ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeController ( ' type ' ,   ' open - loop ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeReferences ( ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Input / Output   definition 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				clear   io ;   io_i   =   1 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / Disturbances ' ] ,   1 ,   ' openinput ' ,   [ ] ,   ' Frz_y ' ) ;   io_i   =   io_i   +   1 ;   %   Spindle   Lateral   Vibration   [ N ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / Disturbances ' ] ,   1 ,   ' openinput ' ,   [ ] ,   ' Frz_z ' ) ;   io_i   =   io_i   +   1 ;   %   Spindle   Vertical   Vibration   [ N ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / Disturbances ' ] ,   1 ,   ' openinput ' ,   [ ] ,   ' Fdy_z ' ) ;   io_i   =   io_i   +   1 ;   %   Vertical   Ground   Motion   [ m ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / Disturbances ' ] ,   1 ,   ' openinput ' ,   [ ] ,   ' Dwy ' ) ;     io_i   =   io_i   +   1 ;   %   Vertical   Ground   Motion   [ m ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / Disturbances ' ] ,   1 ,   ' openinput ' ,   [ ] ,   ' Dwz ' ) ;     io_i   =   io_i   +   1 ;   %   Vertical   Ground   Motion   [ m ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / NASS ' ] ,           2 ,   ' output ' ,      [ ] ,   ' y ' ) ;       io_i   =   io_i   +   1 ;   %   Lateral   Displacement   [ m ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				io ( io_i )   =   linio ( [ mdl ,   ' / NASS ' ] ,           2 ,   ' output ' ,      [ ] ,   ' z ' ) ;       io_i   =   io_i   +   1 ;   %   Vertical   Displacement   [ m ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_ol   =   linearize ( mdl ,   io ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_ol . InputName    =   { ' Frz_y ' ,   ' Frz_z ' ,   ' Fdy_z ' ,   ' Dwy ' ,   ' Dwz ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_ol . OutputName    =   { ' Dy ' ,   ' Dz ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeController ( ' type ' ,   ' iff ' ) ;   %   Implemented   IFF   controller 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				load ( ' nass_K _iff . mat ' ,   ' Kiff ' ) ;   %   Load   designed   IFF   controller 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_iff   =   linearize ( mdl ,   io ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_iff . InputName    =   { ' Frz_y ' ,   ' Frz_z ' ,   ' Fdy_z ' ,   ' Dwy ' ,   ' Dwz ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_iff . OutputName    =   { ' Dy ' ,   ' Dz ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				initializeController ( ' type ' ,   ' hac - iff ' ) ;   %   Implemented   IFF   controller 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				load ( ' nass_K _hac . mat ' ,   ' Khac ' ) ;   %   Load   designed   HAC   controller 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_hac _iff   =   linearize ( mdl ,   io ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_hac _iff . InputName    =   { ' Frz_y ' ,   ' Frz_z ' ,   ' Fdy_z ' ,   ' Dwy ' ,   ' Dwz ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				Gd_hac _iff . OutputName    =   { ' Dy ' ,   ' Dz ' } ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				dist   =   load ( ' ustation_disturbance _psd . mat ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Spindle ,   lateral : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_ol (   ' Dy ' ,   ' Frz_y ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_iff ( ' Dy ' ,   ' Frz_y ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_hac _iff ( ' Dy ' ,   ' Frz_y ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   off ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				set ( gca ,   ' XScale ' ,   ' log ' ) ;   set ( gca ,   ' YScale ' ,   ' log ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' Amplitude   $ D_z / F_ { R_z , z } $   [ m / N ] ' ) ;   xlabel ( ' Frequency   [ Hz ] ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xticks ( [ 1 e0 ,   1 e1 ,   1 e2 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ 1 ,   500 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Spindle ,   vertical : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				freqs   =   logspace ( -1 , 3 , 1000 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_ol (   ' Dz ' ,   ' Frz_z ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_iff ( ' Dz ' ,   ' Frz_z ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_hac _iff ( ' Dz ' ,   ' Frz_z ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   off ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				set ( gca ,   ' XScale ' ,   ' log ' ) ;   set ( gca ,   ' YScale ' ,   ' log ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' Amplitude   $ D_z / F_ { R_z , z } $   [ m / N ] ' ) ;   xlabel ( ' Frequency   [ Hz ] ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Ground   motion ,   vertical : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				freqs   =   logspace ( -1 , 3 , 1000 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_ol (   ' Dz ' ,   ' Dwz ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_iff ( ' Dz ' ,   ' Dwz ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_hac _iff ( ' Dz ' ,   ' Dwz ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   off ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				set ( gca ,   ' XScale ' ,   ' log ' ) ;   set ( gca ,   ' YScale ' ,   ' log ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' Amplitude   $ D_z / F_ { R_z , z } $   [ m / N ] ' ) ;   xlabel ( ' Frequency   [ Hz ] ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xticks ( [ 1 e0 ,   1 e1 ,   1 e2 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   xlim ( [ 1 ,   500 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Ground   motion ,   lateral : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_ol (   ' Dy ' ,   ' Dwy ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_iff ( ' Dy ' ,   ' Dwy ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( freqs ,   abs ( squeeze ( freqresp ( Gd_hac _iff ( ' Dy ' ,   ' Dwy ' ) ,   freqs ,   ' Hz ' ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   off ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				set ( gca ,   ' XScale ' ,   ' log ' ) ;   set ( gca ,   ' YScale ' ,   ' log ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' Amplitude   $ D_y / F_ { R_z , z } $   [ m / N ] ' ) ;   xlabel ( ' Frequency   [ Hz ] ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xticks ( [ 1 e0 ,   1 e1 ,   1 e2 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ 1 ,   500 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Noise   Budget : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( dist . gm_dist . f ,   sqrt ( flip ( - cumtrapz ( flip ( dist . gm_dist . f ) ,   flip ( dist . gm_dist . pxx_y . * abs ( squeeze ( freqresp ( Gd_ol (    ' Dy ' ,   ' Dwy ' ) ,   dist . gm_dist . f ,   ' Hz ' ) ) ) . ^ 2 ) ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				plot ( dist . gm_dist . f ,   sqrt ( flip ( - cumtrapz ( flip ( dist . gm_dist . f ) ,   flip ( dist . gm_dist . pxx_y . * abs ( squeeze ( freqresp ( Gd_iff (    ' Dy ' ,   ' Dwy ' ) ,   dist . gm_dist . f ,   ' Hz ' ) ) ) . ^ 2 ) ) ) ) ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   off ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				set ( gca ,   ' XScale ' ,   ' log ' ) ;   set ( gca ,   ' YScale ' ,   ' log ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				ylabel ( ' ASD   [ m / sqrt ( Hz ) ] ' ) ;   xlabel ( ' Frequency   [ Hz ] ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xticks ( [ 1 e0 ,   1 e1 ,   1 e2 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ 1 ,   500 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Tomography   experiment 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   < < ssec : nass_hac _tomography > > 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Va lid ation  of   concept   with   tomography   sca ns   at   the   highest   rotational   velocity   of    $ \ Omega_z   =   360 \ , \ text { deg / s } $ 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Compare   obtained   results   wi th  the   smallest   beam   size   that   is   expected   with   future   beamline   upgrade :   200 nm   ( horizontal   size )   x   100 nm   ( vertical   size ) 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Take   into   account   the   two   main   sources   of   disturbances :   ground   motion ,   spindle   vibrations 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Other   noise   sources   are   not   taken   into   account   here   as   they   will   be   optimized   latter   ( detail   design   phase ) :   measurement   noise ,   electrical   noise   for   DAC   and   voltage   amplifiers ,   . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   Nano   Active   Stabi liz ation  System   concept   was   validated   through   time - domain   simulatio ns   of   scientific   experiments ,   with   particular   focus   on    tomography   scanning   due   to   its   demanding   performance   requirements . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Simulations   were   conducted   at   the    maximum   operational   rotational   velocity   of   $ \ Omega_z   =   360 \ , \ text { deg / s } $   to   evaluate   system   performance   under   the   most   challenging   conditions . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   open - loop   error s  and   t he  clo sed- loop   errors   for   the   tomography   scan   wit h   the   light   sample   $ 1 \ , kg $   are   shown   in   Figure   ref : fig : nass_tomo _1kg _60rpm . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Performance   metric s  were   establis hed   ba sed  on   anticipated   future   beamline   specifications ,   whic h   specify   a   beam   size   of   200 nm   ( horizontal )   ×   100 nm   ( vertical ) . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   primary   requirement   stipulates   that   the   point   of   interest   must   remain   within   these   beam   dimensions   throughout   operation . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   simulation   incorporated   two   principal   disturbance   sources :   ground   motion   and   spindle   vibrations . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Additional   noise   sources ,   including   measurement   noise   and   electrical   noise   from   DAC   and   voltage   amplifiers ,   were   not   included   in   this   analysis   as   these   parameters   will   be   optimized   during   the   detailed   design   phase . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Figure   ref : fig : nass_tomo _1kg _60rpm   presents   a   comparative   analysis   of   positioning   errors   under   both   open - loop   and   closed - loop   conditions   for   a   lightweight   sample   configuration   ( 1 kg ) . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   results   demonstrate   the   system ' s   capability   to   maintain   position   within   the   specified   beam   dimensions ,   validating   the   fundamental   concept   of   the   stabilization   system . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiments 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Sample   is   not   centered   with   the   rotation   axis 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   This   is   done   by   offsetfing   the   micro - hexapod   by   0.9 um 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				P_micro _hexapod   =   [ 0.9 e -6 ;   0 ;   0 ] ;   %   [ m ] 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -980,16 +882,6 @@ initializeSample('type', 'cylindrical', 'm', 50);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				sim ( mdl ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				exp_tomo _cl _m50   =   simout ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   Slower   tomography   for   high   payload   mass 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   initializeReferences ( . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%       ' Rz_type ' ,   ' rotating ' ,   . . . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%       ' Rz_period ' ,   10 ,   . . .   %   36 deg / s 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%       ' Dh_pos ' ,   [ P_micro _hexapod ;   0 ;   0 ;   0 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   initializeSample ( ' type ' ,   ' cylindrical ' ,   ' m ' ,   50 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   set_param ( mdl ,   ' StopTime ' ,   ' 5 ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   sim ( mdl ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   exp_tomo _cl _m50 _slow   =   simout ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   1 kg   payload   -   360 deg / s   -   XY   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				hold   on ; 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -1004,7 +896,7 @@ yticks([-2:1:2]);
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg   =   legend ( ' location ' ,   ' northeast ' ,   ' FontSize ' ,   8 ,   ' NumColumns ' ,   1 ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				leg . ItemTokenSize ( 1 )   =   15 ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   no   payload ,   30 rpm   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   1 kg   payload   -   36 0 deg / s   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				tiledlayout ( 2 ,   1 ,   ' TileSpacing ' ,   ' compact ' ,   ' Padding ' ,   ' None ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -1039,7 +931,7 @@ leg.ItemTokenSize(1) = 15;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + name :   fig : nass_tomo _1kg _60rpm 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + caption :   Position   error   of   the   sample   in   the   XY   ( \ subref { fig : nass_tomo _1kg _60rpm _xy } )   and   YZ   ( \ subref { fig : nass_tomo _1kg _60rpm _yz } )   planes   during   a   simulation   of   a   tomography   experiment   at   $ 360 \ , \ text { deg / s } $ .   1 kg   payload   is   placed   on   top   of   the   nano - hexapod . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   [ htbp ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   [ h!  tbp ] 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + begin_figure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : caption   \ subcaption { \ label { fig : nass_tomo _1kg _60rpm _xy } XY   plane } 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + attr_latex :   : options   { 0.48 \ textwidth } 
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -1055,11 +947,15 @@ leg.ItemTokenSize(1) = 15;
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + end_subfigure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   # + end_figure 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   -   Effect   of   payload   mass   ( Figure   ref : fig : nass_tomography _hac _iff ) : 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%     Worse   performance    for   h igh   masses ,   as   expected   from   the   control   analysis ,   but   still   acceptable   considering   that   the   rotational   veloc ity   of   360 deg / s   i s  only   used   for   light   payload s. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   The   robustness   of   the   NASS   to   payload   mass   variation   was   evaluated   through   additional   tomography   scan   simulations   with   25 kg   and   50 kg   payloads ,   complementing   the   initial   1 kg   test   case . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%  As   illustrated    in   F igure   ref : fig : nass_tomography _hac _iff ,   system   performance   exhibits   some   degradation   with   increasing   payload   mass ,   aligning   w ith   prediction s  from   the   control   analysi s. 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   While   the   positioning   accuracy   for   heavier   payloads   is   outside   the   specified   limits ,   it   remains   within   acceptable   bounds   for   typical   operating   conditions . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   It   should   be   noted   that   the   maximum   rotational   velocity   of   360 deg / s   is   primarily   intended   for   lightweight   payload   applications . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				%   For   higher   mass   configurations ,   rotational   velocities   are   foreseen   to   be   below   36 deg / s . 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   no   payload ,   30 rpm   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   1 kg   payload   -   36 0 deg / s   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				tiledlayout ( 1 ,   1 ,   ' TileSpacing ' ,   ' compact ' ,   ' Padding ' ,   ' None ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -1074,7 +970,7 @@ axis equal
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ -200 ,   200 ] ) ;   ylim ( [ -100 ,   100 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xticks ( [ -200 : 50 : 200 ] ) ;   yticks ( [ -100 : 50 : 100 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   no   payload ,   30 rpm   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   25 kg   payload   -   36 0 deg / s   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				tiledlayout ( 1 ,   1 ,   ' TileSpacing ' ,   ' compact ' ,   ' Padding ' ,   ' None ' ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
	
		
			
				
					
					
						
					 
				
			
			 
			 
			
				@@ -1089,7 +985,7 @@ axis equal
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xlim ( [ -200 ,   200 ] ) ;   ylim ( [ -100 ,   100 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				xticks ( [ -200 : 50 : 200 ] ) ;   yticks ( [ -100 : 50 : 100 ] ) ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   no   payload ,   30 rpm   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				% %   Simulation   of   tomography   experiment   -   50 kg   payload   -   36 0 deg / s   -   YZ   errors 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				figure ; 
 
			
		 
		
	
		
			
				 
				 
			
			 
			 
			
				tiledlayout ( 1 ,   1 ,   ' TileSpacing ' ,   ' compact ' ,   ' Padding ' ,   ' None ' ) ;