From aac2945b89610a0a064322a029f3f0945e9c8f13 Mon Sep 17 00:00:00 2001 From: Thomas Dehaeze Date: Mon, 17 Aug 2020 11:32:51 +0200 Subject: [PATCH] Removed public folder --- public/404.html | 148 - public/android-chrome-192x192.png | Bin 11033 -> 0 bytes public/android-chrome-512x512.png | Bin 31307 -> 0 bytes public/apple-touch-icon.png | Bin 31307 -> 0 bytes .../albertos04_multiv_contr_system/index.html | 176 - .../index.html | 178 - .../du19_multi_actuat_system_contr/index.html | 601 -- public/book/ewins00_modal/index.html | 3891 ------------- .../index.html | 177 - .../index.html | 176 - public/book/index.html | 218 - public/book/index.xml | 135 - .../index.html | 222 - .../index.html | 176 - .../index.html | 1300 ----- .../index.html | 205 - .../skogestad07_multiv_feedb_contr/index.html | 4975 ----------------- public/book/taghirad13_paral/index.html | 2277 -------- public/browserconfig.xml | 9 - public/categories/cat1/index.html | 157 - public/categories/cat1/index.xml | 24 - public/categories/cat1/page/1/index.html | 1 - public/categories/cat2/index.html | 157 - public/categories/cat2/index.xml | 24 - public/categories/cat2/page/1/index.html | 1 - public/categories/index.html | 151 - public/categories/index.xml | 32 - public/favicon-16x16.png | Bin 1806 -> 0 bytes public/favicon-32x32.png | Bin 1806 -> 0 bytes public/favicon.ico | Bin 328299 -> 0 bytes .../fonts/chancery/apple-chancery-webfont.eot | Bin 26058 -> 0 bytes .../fonts/chancery/apple-chancery-webfont.svg | 228 - .../fonts/chancery/apple-chancery-webfont.ttf | Bin 60780 -> 0 bytes .../chancery/apple-chancery-webfont.woff | Bin 30256 -> 0 bytes .../chancery/apple-chancery-webfont.woff2 | Bin 23532 -> 0 bytes public/fonts/iconfont/iconfont.eot | Bin 10420 -> 0 bytes public/fonts/iconfont/iconfont.svg | 60 - public/fonts/iconfont/iconfont.ttf | Bin 10256 -> 0 bytes public/fonts/iconfont/iconfont.woff | Bin 10336 -> 0 bytes public/img/spinner.svg | 49 - public/index.html | 155 - public/index.json | 1 - public/index.xml | 867 --- ...f8c1d99c3dd797297e7e8cbc59a41da450bb334.js | 283 - public/lib/highlight/highlight.pack.js | 2 - public/lib/jquery/jquery-3.2.1.min.js | 4 - public/lib/search/search.js | 108 - public/lib/slideout/slideout-1.0.1.min.js | 1 - public/lib/timeago/timeago-3.0.2.min.js | 1 - .../lib/timeago/timeago.locales-3.0.2.min.js | 1 - public/manifest.json | 18 - public/mstile-150x150.png | Bin 31307 -> 0 bytes public/ox-hugo/alkhatib03_1dof_control.png | Bin 9645 -> 0 bytes public/ox-hugo/alkhatib03_hinf_control.png | Bin 26024 -> 0 bytes public/ox-hugo/bibel92_control_diag.png | Bin 15365 -> 0 bytes public/ox-hugo/bibel92_general_plant.png | Bin 7714 -> 0 bytes public/ox-hugo/bibel92_hinf_weights.png | Bin 42006 -> 0 bytes public/ox-hugo/bibel92_unmodeled_dynamics.png | Bin 11685 -> 0 bytes public/ox-hugo/bibel92_weight_dynamics.png | Bin 20466 -> 0 bytes public/ox-hugo/bryson93_hac_lac.png | Bin 127304 -> 0 bytes .../collette11_comp_isolation_strategies.png | Bin 96182 -> 0 bytes .../devasia07_piezoelectric_tradeoff.png | Bin 14700 -> 0 bytes public/ox-hugo/du19_decoupled_control.png | Bin 44020 -> 0 bytes public/ox-hugo/du19_dual_stage_control.png | Bin 74358 -> 0 bytes public/ox-hugo/du19_dual_stage_loop_gain.png | Bin 88684 -> 0 bytes .../ox-hugo/du19_dual_stage_sensitivity.png | Bin 197561 -> 0 bytes public/ox-hugo/du19_h_inf_diagram.png | Bin 25173 -> 0 bytes public/ox-hugo/du19_open_loop_three_stage.png | Bin 145211 -> 0 bytes .../du19_parallel_control_structure.png | Bin 43753 -> 0 bytes public/ox-hugo/du19_pzt_actuator.png | Bin 124243 -> 0 bytes .../ox-hugo/du19_sensitivity_three_stage.png | Bin 127058 -> 0 bytes public/ox-hugo/du19_single_stage_control.png | Bin 24775 -> 0 bytes public/ox-hugo/du19_three_stage_control.png | Bin 81506 -> 0 bytes public/ox-hugo/du19_three_stage_decoupled.png | Bin 97122 -> 0 bytes .../du19_three_stage_decoupled_loop_gain.png | Bin 136289 -> 0 bytes public/ox-hugo/ewins00_H22_with_residual.png | Bin 98435 -> 0 bytes .../ox-hugo/ewins00_H22_without_residual.png | Bin 123273 -> 0 bytes public/ox-hugo/ewins00_PRF_measured_FRF.png | Bin 200669 -> 0 bytes public/ox-hugo/ewins00_PRF_measured_PRF.png | Bin 217651 -> 0 bytes public/ox-hugo/ewins00_PRF_measured_svd.png | Bin 45676 -> 0 bytes public/ox-hugo/ewins00_PRF_numerical_FRF.png | Bin 173167 -> 0 bytes public/ox-hugo/ewins00_PRF_numerical_PRF.png | Bin 174413 -> 0 bytes public/ox-hugo/ewins00_PRF_numerical_svd.png | Bin 31779 -> 0 bytes public/ox-hugo/ewins00_aliasing.png | Bin 43836 -> 0 bytes .../ox-hugo/ewins00_aliasing_distortion.png | Bin 24084 -> 0 bytes .../ewins00_aliasing_no_distortion.png | Bin 14407 -> 0 bytes public/ox-hugo/ewins00_argand_diagram_a.png | Bin 23296 -> 0 bytes public/ox-hugo/ewins00_argand_diagram_b.png | Bin 26367 -> 0 bytes public/ox-hugo/ewins00_argand_diagram_c.png | Bin 46517 -> 0 bytes .../ewins00_base_excitation_modal_setup.png | Bin 55864 -> 0 bytes public/ox-hugo/ewins00_beam_modes.png | Bin 78881 -> 0 bytes public/ox-hugo/ewins00_bode_accelerance.png | Bin 157092 -> 0 bytes public/ox-hugo/ewins00_bode_mobility.png | Bin 156792 -> 0 bytes public/ox-hugo/ewins00_bode_receptance.png | Bin 164117 -> 0 bytes public/ox-hugo/ewins00_burst_excitation.png | Bin 92068 -> 0 bytes public/ox-hugo/ewins00_calibration_setup.png | Bin 109015 -> 0 bytes public/ox-hugo/ewins00_chirp_excitation.png | Bin 173371 -> 0 bytes .../ewins00_circle_fit_natural_frequency.png | Bin 34029 -> 0 bytes .../ox-hugo/ewins00_coherence_resonance.png | Bin 89092 -> 0 bytes public/ox-hugo/ewins00_composite_raw.png | Bin 202225 -> 0 bytes public/ox-hugo/ewins00_composite_sum.png | Bin 46370 -> 0 bytes .../ewins00_conventional_modal_test_setup.png | Bin 51870 -> 0 bytes public/ox-hugo/ewins00_double_hits.png | Bin 27976 -> 0 bytes public/ox-hugo/ewins00_dry_friction.png | Bin 21412 -> 0 bytes public/ox-hugo/ewins00_frf_damped_system.png | Bin 95868 -> 0 bytes public/ox-hugo/ewins00_frf_feedback_model.png | Bin 64681 -> 0 bytes public/ox-hugo/ewins00_frf_mimo.png | Bin 64885 -> 0 bytes public/ox-hugo/ewins00_frf_siso_model.png | Bin 28955 -> 0 bytes .../ewins00_general_frf_measurement_setup.png | Bin 51111 -> 0 bytes public/ox-hugo/ewins00_hammer_impulse.png | Bin 37586 -> 0 bytes .../ox-hugo/ewins00_impulsive_excitation.png | Bin 94665 -> 0 bytes public/ox-hugo/ewins00_inverse_frf_mixed.png | Bin 29244 -> 0 bytes .../ox-hugo/ewins00_inverse_frf_viscous.png | Bin 27179 -> 0 bytes public/ox-hugo/ewins00_leakage_nok.png | Bin 29840 -> 0 bytes public/ox-hugo/ewins00_leakage_ok.png | Bin 37329 -> 0 bytes .../ox-hugo/ewins00_low_medium_high_modes.png | Bin 124333 -> 0 bytes public/ox-hugo/ewins00_mass_cancellation.png | Bin 97312 -> 0 bytes .../ox-hugo/ewins00_material_histeresis.png | Bin 21682 -> 0 bytes public/ox-hugo/ewins00_mifs.png | Bin 76711 -> 0 bytes .../ewins00_mobility_frf_mdof_point.png | Bin 97994 -> 0 bytes .../ewins00_mobility_frf_mdof_transfer.png | Bin 91973 -> 0 bytes .../ewins00_modal_analysis_schematic.png | Bin 53497 -> 0 bytes public/ox-hugo/ewins00_modal_circle.png | Bin 42588 -> 0 bytes public/ox-hugo/ewins00_modal_circle_bis.png | Bin 54694 -> 0 bytes .../ewins00_nyquist_nonpropdamp_point.png | Bin 36227 -> 0 bytes .../ewins00_nyquist_nonpropdamp_transfer.png | Bin 34865 -> 0 bytes public/ox-hugo/ewins00_nyquist_point.png | Bin 35198 -> 0 bytes .../ewins00_nyquist_receptance_structural.png | Bin 24169 -> 0 bytes .../ewins00_nyquist_receptance_viscous.png | Bin 23386 -> 0 bytes public/ox-hugo/ewins00_nyquist_transfer.png | Bin 37651 -> 0 bytes public/ox-hugo/ewins00_peak_amplitude.png | Bin 49139 -> 0 bytes .../ox-hugo/ewins00_piezo_accelerometer.png | Bin 32429 -> 0 bytes .../ewins00_piezo_force_transducer.png | Bin 40207 -> 0 bytes .../ox-hugo/ewins00_plot_receptance_imag.png | Bin 31849 -> 0 bytes .../ox-hugo/ewins00_plot_receptance_real.png | Bin 33427 -> 0 bytes .../ewins00_random_autocorrelation.png | Bin 17205 -> 0 bytes public/ox-hugo/ewins00_random_psd.png | Bin 18035 -> 0 bytes public/ox-hugo/ewins00_random_time.png | Bin 25430 -> 0 bytes public/ox-hugo/ewins00_real_complex_modes.png | Bin 198529 -> 0 bytes public/ox-hugo/ewins00_residual_with.png | Bin 54930 -> 0 bytes public/ox-hugo/ewins00_residual_without.png | Bin 67955 -> 0 bytes .../ox-hugo/ewins00_rotational_excitation.png | Bin 36257 -> 0 bytes .../ewins00_rotational_measurement.png | Bin 28145 -> 0 bytes public/ox-hugo/ewins00_sdof_model.png | Bin 38390 -> 0 bytes public/ox-hugo/ewins00_sdof_modulus_phase.png | Bin 42684 -> 0 bytes public/ox-hugo/ewins00_sdof_response.png | Bin 72075 -> 0 bytes public/ox-hugo/ewins00_shaker_mount_1.png | Bin 26766 -> 0 bytes public/ox-hugo/ewins00_shaker_mount_2.png | Bin 26333 -> 0 bytes public/ox-hugo/ewins00_shaker_mount_3.png | Bin 39833 -> 0 bytes public/ox-hugo/ewins00_shaker_rod.png | Bin 185426 -> 0 bytes public/ox-hugo/ewins00_static_display.png | Bin 187890 -> 0 bytes public/ox-hugo/ewins00_sweep_distortions.png | Bin 64007 -> 0 bytes .../ewins00_transducer_mounting_response.png | Bin 130870 -> 0 bytes .../ewins00_transducer_mounting_types.png | Bin 60731 -> 0 bytes .../ewins00_transmissibility_plots.png | Bin 107219 -> 0 bytes .../ewins00_vibration_analysis_procedure.png | Bin 14621 -> 0 bytes public/ox-hugo/ewins00_viscous_damper.png | Bin 24821 -> 0 bytes public/ox-hugo/ewins00_windowing_examples.png | Bin 118432 -> 0 bytes public/ox-hugo/ewins00_zoom_bandpass.png | Bin 19075 -> 0 bytes public/ox-hugo/ewins00_zoom_range.png | Bin 24766 -> 0 bytes public/ox-hugo/ewins00_zoom_result.png | Bin 24791 -> 0 bytes .../ox-hugo/fleming10_charge_ampl_piezo.png | Bin 60063 -> 0 bytes public/ox-hugo/fleming10_piezo_model.png | Bin 4505 -> 0 bytes public/ox-hugo/fleming13_drift_stability.png | Bin 43211 -> 0 bytes public/ox-hugo/fleming13_mapping_error.png | Bin 42143 -> 0 bytes .../fleming13_tradeoff_res_bandwidth.png | Bin 31047 -> 0 bytes public/ox-hugo/furutani04_ctrl_arch.png | Bin 40794 -> 0 bytes public/ox-hugo/geng95_control_structure.png | Bin 67819 -> 0 bytes .../ox-hugo/hac_lac_control_architecture.png | Bin 10628 -> 0 bytes .../hauge04_obtained_transmissibility.png | Bin 63684 -> 0 bytes public/ox-hugo/hauge04_stewart_platform.png | Bin 281111 -> 0 bytes public/ox-hugo/hauge04_strut_model.png | Bin 35670 -> 0 bytes public/ox-hugo/hauge05_struts.png | Bin 192731 -> 0 bytes public/ox-hugo/holler12_station.png | Bin 216055 -> 0 bytes ...sensors_characteristics_accelerometers.png | Bin 117175 -> 0 bytes ...rtial_sensors_characteristics_geophone.png | Bin 110214 -> 0 bytes .../ito16_low_high_stiffness_actuators.png | Bin 83784 -> 0 bytes public/ox-hugo/ito16_transmissibility.png | Bin 52322 -> 0 bytes .../ox-hugo/legnani12_generated_isotropy.png | Bin 42802 -> 0 bytes public/ox-hugo/legnani12_isotropy_gen.png | Bin 25532 -> 0 bytes public/ox-hugo/li01_closed_loop_pointing.png | Bin 79673 -> 0 bytes public/ox-hugo/li01_closed_loop_vibration.png | Bin 67447 -> 0 bytes public/ox-hugo/li01_decoupling_conf.png | Bin 4256 -> 0 bytes public/ox-hugo/li01_decoupling_conf_bis.png | Bin 3726 -> 0 bytes .../li01_effect_isolation_loop_closed.png | Bin 66979 -> 0 bytes public/ox-hugo/li01_feedforward_control.png | Bin 19222 -> 0 bytes public/ox-hugo/li01_parallel_control.png | Bin 28289 -> 0 bytes public/ox-hugo/li01_pointing_control.png | Bin 36915 -> 0 bytes .../li01_simultaneous_control_results.png | Bin 72075 -> 0 bytes public/ox-hugo/li01_stewart_platform.png | Bin 224867 -> 0 bytes public/ox-hugo/li01_test_bench.png | Bin 228647 -> 0 bytes .../ox-hugo/li01_vibration_control_plant.png | Bin 84097 -> 0 bytes .../li01_vibration_isolation_control.png | Bin 30653 -> 0 bytes ...01_vibration_isolation_control_results.png | Bin 74714 -> 0 bytes public/ox-hugo/oomen18_next_gen_loop_gain.png | Bin 25731 -> 0 bytes .../position_sensor_characteristics.png | Bin 114449 -> 0 bytes ...sensor_characteristics_relative_sensor.png | Bin 81470 -> 0 bytes ...sition_sensor_interferometer_precision.png | Bin 474176 -> 0 bytes .../ox-hugo/preumont02_force_acc_fb_heavy.png | Bin 26786 -> 0 bytes .../ox-hugo/preumont02_force_acc_fb_light.png | Bin 26041 -> 0 bytes public/ox-hugo/preumont07_flexible_joints.png | Bin 49642 -> 0 bytes .../preumont07_iff_effect_stiffness.png | Bin 16270 -> 0 bytes .../ox-hugo/preumont07_stewart_platform.png | Bin 208739 -> 0 bytes public/ox-hugo/preumont18_alternating_p_z.png | Bin 22347 -> 0 bytes public/ox-hugo/preumont18_bridge_circuit.png | Bin 19748 -> 0 bytes public/ox-hugo/preumont18_cas_plot.png | Bin 12501 -> 0 bytes .../preumont18_classical_feedback_small.png | Bin 9538 -> 0 bytes .../preumont18_collocated_control_frf.png | Bin 24998 -> 0 bytes public/ox-hugo/preumont18_collocated_zero.png | Bin 13427 -> 0 bytes public/ox-hugo/preumont18_design_steps.png | Bin 50377 -> 0 bytes ...eumont18_electro_mechanical_transducer.png | Bin 27259 -> 0 bytes .../preumont18_feedforward_adaptative.png | Bin 7505 -> 0 bytes public/ox-hugo/preumont18_general_plant.png | Bin 10452 -> 0 bytes public/ox-hugo/preumont18_geophone.png | Bin 16850 -> 0 bytes public/ox-hugo/preumont18_hac_lac_control.png | Bin 17402 -> 0 bytes public/ox-hugo/preumont18_neglected_modes.png | Bin 37408 -> 0 bytes .../preumont18_piezo_admittance_curve.png | Bin 14452 -> 0 bytes public/ox-hugo/preumont18_piezo_discrete.png | Bin 9322 -> 0 bytes public/ox-hugo/preumont18_piezo_stack.png | Bin 4370 -> 0 bytes .../preumont18_piezo_stack_admittance.png | Bin 12188 -> 0 bytes .../preumont18_proof_mass_actuator.png | Bin 16468 -> 0 bytes public/ox-hugo/preumont18_proof_mass_tf.png | Bin 14600 -> 0 bytes public/ox-hugo/preumont18_smart_materials.png | Bin 93674 -> 0 bytes .../preumont18_voice_coil_schematic.png | Bin 28918 -> 0 bytes .../schmidt14_high_low_freq_regions.png | Bin 379320 -> 0 bytes .../skogestad07_additive_uncertainty.png | Bin 9393 -> 0 bytes .../skogestad07_block_diagonal_scalings.png | Bin 17783 -> 0 bytes .../ox-hugo/skogestad07_cascade_control.png | Bin 11085 -> 0 bytes ...skogestad07_cascade_control_two_layers.png | Bin 19788 -> 0 bytes .../skogestad07_cascade_extra_input.png | Bin 9069 -> 0 bytes .../skogestad07_cascade_extra_meas.png | Bin 8116 -> 0 bytes ...kogestad07_classical_feedback_2dof_alt.png | Bin 8126 -> 0 bytes ...estad07_classical_feedback_2dof_simple.png | Bin 2931 -> 0 bytes .../skogestad07_classical_feedback_alt.png | Bin 8322 -> 0 bytes .../skogestad07_classical_feedback_bis.png | Bin 7592 -> 0 bytes .../skogestad07_classical_feedback_meas.png | Bin 9242 -> 0 bytes .../skogestad07_classical_feedback_sep.png | Bin 9553 -> 0 bytes .../skogestad07_classical_feedback_small.png | Bin 6766 -> 0 bytes ...ogestad07_classical_feedback_stability.png | Bin 6926 -> 0 bytes .../skogestad07_coprime_uncertainty.png | Bin 14337 -> 0 bytes .../skogestad07_coprime_uncertainty_bis.png | Bin 15104 -> 0 bytes .../skogestad07_coprime_uncertainty_hinf.png | Bin 17773 -> 0 bytes ...estad07_decentralized_diagonal_control.png | Bin 13952 -> 0 bytes .../skogestad07_design_trade_off_mimo_gk.png | Bin 21412 -> 0 bytes .../ox-hugo/skogestad07_dk_iter_d_scale.png | Bin 23800 -> 0 bytes public/ox-hugo/skogestad07_dk_iter_mu.png | Bin 23254 -> 0 bytes .../ox-hugo/skogestad07_general_control.png | Bin 5211 -> 0 bytes .../skogestad07_general_control_Mdelta.png | Bin 3003 -> 0 bytes ...skogestad07_general_control_Mdelta_bis.png | Bin 3003 -> 0 bytes .../skogestad07_general_control_Ndelta.png | Bin 3765 -> 0 bytes .../skogestad07_general_control_delta.png | Bin 5373 -> 0 bytes .../skogestad07_general_control_names.png | Bin 12214 -> 0 bytes .../skogestad07_general_control_names_bis.png | Bin 12214 -> 0 bytes .../skogestad07_general_plant_weights.png | Bin 13714 -> 0 bytes .../ox-hugo/skogestad07_hinf_signal_based.png | Bin 18571 -> 0 bytes ...gestad07_hinf_signal_based_uncertainty.png | Bin 22585 -> 0 bytes .../skogestad07_hinf_synthesis_2dof.png | Bin 13735 -> 0 bytes .../skogestad07_input_output_uncertainty.png | Bin 12940 -> 0 bytes .../ox-hugo/skogestad07_input_uncertainty.png | Bin 9539 -> 0 bytes .../skogestad07_input_uncertainty_hinf.png | Bin 9414 -> 0 bytes .../skogestad07_input_uncertainty_set.png | Bin 9539 -> 0 bytes ...estad07_input_uncertainty_set_feedback.png | Bin 12166 -> 0 bytes ..._input_uncertainty_set_feedback_weight.png | Bin 15725 -> 0 bytes ...ut_uncertainty_set_feedback_weight_bis.png | Bin 14004 -> 0 bytes .../skogestad07_inv_additive_uncertainty.png | Bin 10080 -> 0 bytes .../skogestad07_inv_input_uncertainty.png | Bin 9909 -> 0 bytes .../skogestad07_inv_output_uncertainty.png | Bin 10406 -> 0 bytes .../skogestad07_inverse_uncertainty_set.png | Bin 13564 -> 0 bytes .../skogestad07_lag_delay_uncertainty.png | Bin 13062 -> 0 bytes public/ox-hugo/skogestad07_lqg_integral.png | Bin 12160 -> 0 bytes .../ox-hugo/skogestad07_lqg_kalman_filter.png | Bin 23234 -> 0 bytes public/ox-hugo/skogestad07_lqg_separation.png | Bin 9120 -> 0 bytes .../skogestad07_margin_requirements.png | Bin 58575 -> 0 bytes ...tad07_mixed_sensitivity_dist_rejection.png | Bin 20325 -> 0 bytes ...estad07_mixed_sensitivity_ref_tracking.png | Bin 17298 -> 0 bytes .../skogestad07_mixed_sensitivity_s_t.png | Bin 17383 -> 0 bytes .../skogestad07_mu_plot_optimal_k3.png | Bin 17293 -> 0 bytes .../skogestad07_mu_plots_distillation.png | Bin 15092 -> 0 bytes .../skogestad07_neglected_first_order_lag.png | Bin 14390 -> 0 bytes .../skogestad07_neglected_time_delay.png | Bin 23898 -> 0 bytes ...gestad07_nyquist_performance_condition.png | Bin 12635 -> 0 bytes .../skogestad07_nyquist_uncertainty.png | Bin 13642 -> 0 bytes .../skogestad07_optimize_control_a.png | Bin 4737 -> 0 bytes .../skogestad07_optimize_control_b.png | Bin 7804 -> 0 bytes .../skogestad07_optimize_control_c.png | Bin 6002 -> 0 bytes .../skogestad07_output_uncertainty.png | Bin 9867 -> 0 bytes .../ox-hugo/skogestad07_partial_control.png | Bin 13742 -> 0 bytes public/ox-hugo/skogestad07_perturb_s_k3.png | Bin 20492 -> 0 bytes public/ox-hugo/skogestad07_shaped_plant.png | Bin 8010 -> 0 bytes ...ad07_shapping_practical_implementation.png | Bin 10684 -> 0 bytes .../ox-hugo/skogestad07_system_hierarchy.png | Bin 36866 -> 0 bytes ...skogestad07_uncertainty_disc_generated.png | Bin 10668 -> 0 bytes .../skogestad07_uncertainty_region.png | Bin 12039 -> 0 bytes ...skogestad07_uncertainty_state_a_matrix.png | Bin 12550 -> 0 bytes .../skogestad07_uncertainty_weight.png | Bin 76901 -> 0 bytes .../skogestad07_weight_anti_windup.png | Bin 7469 -> 0 bytes .../skogestad07_weight_first_order.png | Bin 15854 -> 0 bytes .../skogestad07_weights_distillation.png | Bin 14481 -> 0 bytes public/ox-hugo/spanos95_iff_plant.png | Bin 54672 -> 0 bytes public/ox-hugo/spanos95_results.png | Bin 59650 -> 0 bytes public/ox-hugo/spanos95_stewart_platform.png | Bin 428430 -> 0 bytes public/ox-hugo/stankevic17_station.png | Bin 191062 -> 0 bytes .../taghira13_cascade_force_inner_loop_F.png | Bin 25264 -> 0 bytes ...taghira13_cascade_force_inner_loop_tau.png | Bin 26513 -> 0 bytes ...ghira13_cascade_force_inner_loop_tau_q.png | Bin 24032 -> 0 bytes .../taghira13_cascade_force_outer_loop.png | Bin 24763 -> 0 bytes ...taghira13_cascade_force_outer_loop_tau.png | Bin 26628 -> 0 bytes ...ghira13_cascade_force_outer_loop_tau_q.png | Bin 26993 -> 0 bytes .../taghira13_direct_force_control.png | Bin 35029 -> 0 bytes .../ox-hugo/taghira13_impedance_control.png | Bin 35170 -> 0 bytes ..._adaptative_inverse_control_task_space.png | Bin 29079 -> 0 bytes ...taghirad13_angular_momentum_rigid_body.png | Bin 43753 -> 0 bytes public/ox-hugo/taghirad13_cascade_control.png | Bin 27920 -> 0 bytes ...taghirad13_consecutive_transformations.png | Bin 21751 -> 0 bytes ...3_decentralized_pd_control_joint_space.png | Bin 23553 -> 0 bytes ...13_decentralized_pd_control_task_space.png | Bin 13569 -> 0 bytes ...hirad13_feedforward_control_task_space.png | Bin 21711 -> 0 bytes ...d13_feedforward_pd_control_joint_space.png | Bin 20044 -> 0 bytes .../taghirad13_free_body_diagram_stewart.png | Bin 75003 -> 0 bytes public/ox-hugo/taghirad13_general_motion.png | Bin 13845 -> 0 bytes ...rad13_general_topology_motion_feedback.png | Bin 18067 -> 0 bytes ...3_general_topology_motion_feedback_bis.png | Bin 28377 -> 0 bytes ...eneral_topology_motion_feedback_quater.png | Bin 24801 -> 0 bytes ...3_general_topology_motion_feedback_ter.png | Bin 22713 -> 0 bytes .../taghirad13_impedance_control_rlc.png | Bin 18654 -> 0 bytes ...3_inverse_dynamics_control_joint_space.png | Bin 20621 -> 0 bytes ...13_inverse_dynamics_control_task_space.png | Bin 19131 -> 0 bytes .../taghirad13_mass_property_rigid_body.png | Bin 47085 -> 0 bytes public/ox-hugo/taghirad13_pitch-roll-yaw.png | Bin 42520 -> 0 bytes .../ox-hugo/taghirad13_rigid_body_motion.png | Bin 27079 -> 0 bytes ...d13_robust_inverse_dynamics_task_space.png | Bin 20469 -> 0 bytes public/ox-hugo/taghirad13_rotation_matrix.png | Bin 19927 -> 0 bytes .../taghirad13_screw_axis_representation.png | Bin 27223 -> 0 bytes public/ox-hugo/taghirad13_stewart36.png | Bin 41322 -> 0 bytes .../taghirad13_stewart_forward_dynamics.png | Bin 22588 -> 0 bytes .../taghirad13_stewart_inverse_dynamics.png | Bin 86485 -> 0 bytes .../ox-hugo/taghirad13_stewart_schematic.png | Bin 34643 -> 0 bytes .../taghirad13_stewart_static_forces.png | Bin 16646 -> 0 bytes public/ox-hugo/wang16_force_feedback.png | Bin 35880 -> 0 bytes public/ox-hugo/wang16_stewart_platform.png | Bin 352644 -> 0 bytes public/ox-hugo/yang19_control_arch.png | Bin 12120 -> 0 bytes public/ox-hugo/yang19_flexible_joints.png | Bin 85949 -> 0 bytes public/ox-hugo/yang19_results.png | Bin 69773 -> 0 bytes public/ox-hugo/yang19_stewart_platform.png | Bin 90406 -> 0 bytes public/ox-hugo/zhang11_platform.png | Bin 246550 -> 0 bytes .../index.html | 426 -- public/paper/bibel92_guidel_h/index.html | 352 -- .../bryson93_contr_spacec_aircr/index.html | 242 - .../index.html | 203 - .../index.html | 205 - .../index.html | 278 - public/paper/collette14_vibrat/index.html | 317 -- .../index.html | 210 - .../dasgupta00_stewar_platf_manip/index.html | 251 - .../index.html | 220 - .../index.html | 309 - public/paper/fleming12_estim/index.html | 205 - .../index.html | 409 -- .../index.html | 205 - .../index.html | 225 - .../index.html | 203 - .../index.html | 225 - .../index.html | 213 - public/paper/hanieh03_activ_stewar/index.html | 217 - .../index.html | 377 -- .../index.html | 241 - .../index.html | 203 - public/paper/index.html | 398 -- public/paper/index.xml | 439 -- .../index.html | 284 - .../index.html | 203 - .../index.html | 221 - .../index.html | 462 -- .../index.html | 207 - .../index.html | 213 - .../index.html | 225 - .../index.html | 241 - .../index.html | 248 - .../index.html | 265 - .../schellekens98_desig_precis/index.html | 203 - .../index.html | 203 - .../index.html | 259 - .../index.html | 224 - .../index.html | 204 - .../index.html | 228 - .../index.html | 211 - .../index.html | 248 - .../index.html | 340 -- public/paper/zhang11_six_dof/index.html | 222 - public/robots.txt | 2 - ...47958dc936e1c95c28a76ac80319bca9708ed1.css | 1 - ...4454558b3f3cfcb28a151e820757f148c14a35.css | 1 - public/search/index.html | 176 - public/sitemap.xml | 550 -- public/sitemap.xsl | 115 - public/tags/index.html | 152 - public/tags/index.xml | 32 - public/tags/tag1/index.html | 157 - public/tags/tag1/index.xml | 24 - public/tags/tag1/page/1/index.html | 1 - public/tags/tag2/index.html | 157 - public/tags/tag2/index.xml | 24 - public/tags/tag2/page/1/index.html | 1 - public/websites/control_bootcamp/index.html | 208 - .../index.html | 238 - public/websites/index.html | 168 - public/websites/index.xml | 38 - public/websites/page/1/index.html | 1 - public/zettels/active_damping/index.html | 201 - public/zettels/actuators/index.html | 324 -- .../zettels/complementary_filters/index.html | 204 - public/zettels/cubic_architecture/index.html | 206 - public/zettels/electronics/index.html | 204 - public/zettels/flexible_joints/index.html | 210 - public/zettels/force_sensors/index.html | 219 - public/zettels/h_infinity_control/index.html | 212 - public/zettels/hac_hac/index.html | 217 - public/zettels/index.html | 284 - public/zettels/index.xml | 284 - public/zettels/inertial_sensors/index.html | 273 - public/zettels/metrology/index.html | 204 - public/zettels/motion_control/index.html | 204 - .../zettels/multivariable_control/index.html | 208 - .../index.html | 206 - public/zettels/position_sensors/index.html | 551 -- .../zettels/positioning_stations/index.html | 206 - .../zettels/precision_engineering/index.html | 205 - public/zettels/reference_books/index.html | 209 - public/zettels/sensor_fusion/index.html | 208 - public/zettels/stewart_platforms/index.html | 223 - .../zettels/system_identification/index.html | 204 - public/zettels/test/index.html | 269 - public/zettels/vibration_isolation/index.html | 218 - 433 files changed, 36672 deletions(-) delete mode 100644 public/404.html delete mode 100644 public/android-chrome-192x192.png delete mode 100644 public/android-chrome-512x512.png delete mode 100644 public/apple-touch-icon.png delete mode 100644 public/book/albertos04_multiv_contr_system/index.html delete mode 100644 public/book/du10_model_contr_vibrat_mechan_system/index.html delete mode 100644 public/book/du19_multi_actuat_system_contr/index.html delete mode 100644 public/book/ewins00_modal/index.html delete mode 100644 public/book/fleming14_desig_model_contr_nanop_system/index.html delete mode 100644 public/book/horowitz15_art_of_elect_third_edition/index.html delete mode 100644 public/book/index.html delete mode 100644 public/book/index.xml delete mode 100644 public/book/leach14_fundam_princ_engin_nanom/index.html delete mode 100644 public/book/leach18_basic_precis_engin_edition/index.html delete mode 100644 public/book/preumont18_vibrat_contr_activ_struc_fourt_edition/index.html delete mode 100644 public/book/schmidt14_desig_high_perfor_mechat_revis_edition/index.html delete mode 100644 public/book/skogestad07_multiv_feedb_contr/index.html delete mode 100644 public/book/taghirad13_paral/index.html delete mode 100644 public/browserconfig.xml delete mode 100644 public/categories/cat1/index.html delete mode 100644 public/categories/cat1/index.xml delete mode 100644 public/categories/cat1/page/1/index.html delete mode 100644 public/categories/cat2/index.html delete mode 100644 public/categories/cat2/index.xml delete mode 100644 public/categories/cat2/page/1/index.html delete mode 100644 public/categories/index.html delete mode 100644 public/categories/index.xml delete mode 100644 public/favicon-16x16.png delete mode 100644 public/favicon-32x32.png delete mode 100644 public/favicon.ico delete mode 100644 public/fonts/chancery/apple-chancery-webfont.eot delete mode 100644 public/fonts/chancery/apple-chancery-webfont.svg delete mode 100644 public/fonts/chancery/apple-chancery-webfont.ttf delete mode 100644 public/fonts/chancery/apple-chancery-webfont.woff delete mode 100644 public/fonts/chancery/apple-chancery-webfont.woff2 delete mode 100644 public/fonts/iconfont/iconfont.eot delete mode 100644 public/fonts/iconfont/iconfont.svg delete mode 100644 public/fonts/iconfont/iconfont.ttf delete mode 100644 public/fonts/iconfont/iconfont.woff delete mode 100644 public/img/spinner.svg delete mode 100644 public/index.html delete mode 100644 public/index.json delete mode 100644 public/index.xml delete mode 100644 public/js/main.4bada4f824623eea2eb7cfd5cf8c1d99c3dd797297e7e8cbc59a41da450bb334.js delete mode 100644 public/lib/highlight/highlight.pack.js delete mode 100644 public/lib/jquery/jquery-3.2.1.min.js delete mode 100644 public/lib/search/search.js delete mode 100644 public/lib/slideout/slideout-1.0.1.min.js delete mode 100644 public/lib/timeago/timeago-3.0.2.min.js delete mode 100644 public/lib/timeago/timeago.locales-3.0.2.min.js delete mode 100644 public/manifest.json delete mode 100644 public/mstile-150x150.png delete mode 100644 public/ox-hugo/alkhatib03_1dof_control.png delete mode 100644 public/ox-hugo/alkhatib03_hinf_control.png delete mode 100644 public/ox-hugo/bibel92_control_diag.png delete mode 100644 public/ox-hugo/bibel92_general_plant.png delete mode 100644 public/ox-hugo/bibel92_hinf_weights.png delete mode 100644 public/ox-hugo/bibel92_unmodeled_dynamics.png delete mode 100644 public/ox-hugo/bibel92_weight_dynamics.png delete mode 100644 public/ox-hugo/bryson93_hac_lac.png delete mode 100644 public/ox-hugo/collette11_comp_isolation_strategies.png delete mode 100644 public/ox-hugo/devasia07_piezoelectric_tradeoff.png delete mode 100644 public/ox-hugo/du19_decoupled_control.png delete mode 100644 public/ox-hugo/du19_dual_stage_control.png delete mode 100644 public/ox-hugo/du19_dual_stage_loop_gain.png delete mode 100644 public/ox-hugo/du19_dual_stage_sensitivity.png delete mode 100644 public/ox-hugo/du19_h_inf_diagram.png delete mode 100644 public/ox-hugo/du19_open_loop_three_stage.png delete mode 100644 public/ox-hugo/du19_parallel_control_structure.png delete mode 100644 public/ox-hugo/du19_pzt_actuator.png delete mode 100644 public/ox-hugo/du19_sensitivity_three_stage.png delete mode 100644 public/ox-hugo/du19_single_stage_control.png delete mode 100644 public/ox-hugo/du19_three_stage_control.png delete mode 100644 public/ox-hugo/du19_three_stage_decoupled.png delete mode 100644 public/ox-hugo/du19_three_stage_decoupled_loop_gain.png delete mode 100644 public/ox-hugo/ewins00_H22_with_residual.png delete mode 100644 public/ox-hugo/ewins00_H22_without_residual.png delete mode 100644 public/ox-hugo/ewins00_PRF_measured_FRF.png delete mode 100644 public/ox-hugo/ewins00_PRF_measured_PRF.png delete mode 100644 public/ox-hugo/ewins00_PRF_measured_svd.png delete mode 100644 public/ox-hugo/ewins00_PRF_numerical_FRF.png delete mode 100644 public/ox-hugo/ewins00_PRF_numerical_PRF.png delete mode 100644 public/ox-hugo/ewins00_PRF_numerical_svd.png delete mode 100644 public/ox-hugo/ewins00_aliasing.png delete mode 100644 public/ox-hugo/ewins00_aliasing_distortion.png delete mode 100644 public/ox-hugo/ewins00_aliasing_no_distortion.png delete mode 100644 public/ox-hugo/ewins00_argand_diagram_a.png delete mode 100644 public/ox-hugo/ewins00_argand_diagram_b.png delete mode 100644 public/ox-hugo/ewins00_argand_diagram_c.png delete mode 100644 public/ox-hugo/ewins00_base_excitation_modal_setup.png delete mode 100644 public/ox-hugo/ewins00_beam_modes.png delete mode 100644 public/ox-hugo/ewins00_bode_accelerance.png delete mode 100644 public/ox-hugo/ewins00_bode_mobility.png delete mode 100644 public/ox-hugo/ewins00_bode_receptance.png delete mode 100644 public/ox-hugo/ewins00_burst_excitation.png delete mode 100644 public/ox-hugo/ewins00_calibration_setup.png delete mode 100644 public/ox-hugo/ewins00_chirp_excitation.png delete mode 100644 public/ox-hugo/ewins00_circle_fit_natural_frequency.png delete mode 100644 public/ox-hugo/ewins00_coherence_resonance.png delete mode 100644 public/ox-hugo/ewins00_composite_raw.png delete mode 100644 public/ox-hugo/ewins00_composite_sum.png delete mode 100644 public/ox-hugo/ewins00_conventional_modal_test_setup.png delete mode 100644 public/ox-hugo/ewins00_double_hits.png delete mode 100644 public/ox-hugo/ewins00_dry_friction.png delete mode 100644 public/ox-hugo/ewins00_frf_damped_system.png delete mode 100644 public/ox-hugo/ewins00_frf_feedback_model.png delete mode 100644 public/ox-hugo/ewins00_frf_mimo.png delete mode 100644 public/ox-hugo/ewins00_frf_siso_model.png delete mode 100644 public/ox-hugo/ewins00_general_frf_measurement_setup.png delete mode 100644 public/ox-hugo/ewins00_hammer_impulse.png delete mode 100644 public/ox-hugo/ewins00_impulsive_excitation.png delete mode 100644 public/ox-hugo/ewins00_inverse_frf_mixed.png delete mode 100644 public/ox-hugo/ewins00_inverse_frf_viscous.png delete mode 100644 public/ox-hugo/ewins00_leakage_nok.png delete mode 100644 public/ox-hugo/ewins00_leakage_ok.png delete mode 100644 public/ox-hugo/ewins00_low_medium_high_modes.png delete mode 100644 public/ox-hugo/ewins00_mass_cancellation.png delete mode 100644 public/ox-hugo/ewins00_material_histeresis.png delete mode 100644 public/ox-hugo/ewins00_mifs.png delete mode 100644 public/ox-hugo/ewins00_mobility_frf_mdof_point.png delete mode 100644 public/ox-hugo/ewins00_mobility_frf_mdof_transfer.png delete mode 100644 public/ox-hugo/ewins00_modal_analysis_schematic.png delete mode 100644 public/ox-hugo/ewins00_modal_circle.png delete mode 100644 public/ox-hugo/ewins00_modal_circle_bis.png delete mode 100644 public/ox-hugo/ewins00_nyquist_nonpropdamp_point.png delete mode 100644 public/ox-hugo/ewins00_nyquist_nonpropdamp_transfer.png delete mode 100644 public/ox-hugo/ewins00_nyquist_point.png delete mode 100644 public/ox-hugo/ewins00_nyquist_receptance_structural.png delete mode 100644 public/ox-hugo/ewins00_nyquist_receptance_viscous.png delete mode 100644 public/ox-hugo/ewins00_nyquist_transfer.png delete mode 100644 public/ox-hugo/ewins00_peak_amplitude.png delete mode 100644 public/ox-hugo/ewins00_piezo_accelerometer.png delete mode 100644 public/ox-hugo/ewins00_piezo_force_transducer.png delete mode 100644 public/ox-hugo/ewins00_plot_receptance_imag.png delete mode 100644 public/ox-hugo/ewins00_plot_receptance_real.png delete mode 100644 public/ox-hugo/ewins00_random_autocorrelation.png delete mode 100644 public/ox-hugo/ewins00_random_psd.png delete mode 100644 public/ox-hugo/ewins00_random_time.png delete mode 100644 public/ox-hugo/ewins00_real_complex_modes.png delete mode 100644 public/ox-hugo/ewins00_residual_with.png delete mode 100644 public/ox-hugo/ewins00_residual_without.png delete mode 100644 public/ox-hugo/ewins00_rotational_excitation.png delete mode 100644 public/ox-hugo/ewins00_rotational_measurement.png delete mode 100644 public/ox-hugo/ewins00_sdof_model.png delete mode 100644 public/ox-hugo/ewins00_sdof_modulus_phase.png delete mode 100644 public/ox-hugo/ewins00_sdof_response.png delete mode 100644 public/ox-hugo/ewins00_shaker_mount_1.png delete mode 100644 public/ox-hugo/ewins00_shaker_mount_2.png delete mode 100644 public/ox-hugo/ewins00_shaker_mount_3.png delete mode 100644 public/ox-hugo/ewins00_shaker_rod.png delete mode 100644 public/ox-hugo/ewins00_static_display.png delete mode 100644 public/ox-hugo/ewins00_sweep_distortions.png delete mode 100644 public/ox-hugo/ewins00_transducer_mounting_response.png delete mode 100644 public/ox-hugo/ewins00_transducer_mounting_types.png delete mode 100644 public/ox-hugo/ewins00_transmissibility_plots.png delete mode 100644 public/ox-hugo/ewins00_vibration_analysis_procedure.png delete mode 100644 public/ox-hugo/ewins00_viscous_damper.png delete mode 100644 public/ox-hugo/ewins00_windowing_examples.png delete mode 100644 public/ox-hugo/ewins00_zoom_bandpass.png delete mode 100644 public/ox-hugo/ewins00_zoom_range.png delete mode 100644 public/ox-hugo/ewins00_zoom_result.png delete mode 100644 public/ox-hugo/fleming10_charge_ampl_piezo.png delete mode 100644 public/ox-hugo/fleming10_piezo_model.png delete mode 100644 public/ox-hugo/fleming13_drift_stability.png delete mode 100644 public/ox-hugo/fleming13_mapping_error.png delete mode 100644 public/ox-hugo/fleming13_tradeoff_res_bandwidth.png delete mode 100644 public/ox-hugo/furutani04_ctrl_arch.png delete mode 100644 public/ox-hugo/geng95_control_structure.png delete mode 100644 public/ox-hugo/hac_lac_control_architecture.png delete mode 100644 public/ox-hugo/hauge04_obtained_transmissibility.png delete mode 100644 public/ox-hugo/hauge04_stewart_platform.png delete mode 100644 public/ox-hugo/hauge04_strut_model.png delete mode 100644 public/ox-hugo/hauge05_struts.png delete mode 100644 public/ox-hugo/holler12_station.png delete mode 100644 public/ox-hugo/inertial_sensors_characteristics_accelerometers.png delete mode 100644 public/ox-hugo/inertial_sensors_characteristics_geophone.png delete mode 100644 public/ox-hugo/ito16_low_high_stiffness_actuators.png delete mode 100644 public/ox-hugo/ito16_transmissibility.png delete mode 100644 public/ox-hugo/legnani12_generated_isotropy.png delete mode 100644 public/ox-hugo/legnani12_isotropy_gen.png delete mode 100644 public/ox-hugo/li01_closed_loop_pointing.png delete mode 100644 public/ox-hugo/li01_closed_loop_vibration.png delete mode 100644 public/ox-hugo/li01_decoupling_conf.png delete mode 100644 public/ox-hugo/li01_decoupling_conf_bis.png delete mode 100644 public/ox-hugo/li01_effect_isolation_loop_closed.png delete mode 100644 public/ox-hugo/li01_feedforward_control.png delete mode 100644 public/ox-hugo/li01_parallel_control.png delete mode 100644 public/ox-hugo/li01_pointing_control.png delete mode 100644 public/ox-hugo/li01_simultaneous_control_results.png delete mode 100644 public/ox-hugo/li01_stewart_platform.png delete mode 100644 public/ox-hugo/li01_test_bench.png delete mode 100644 public/ox-hugo/li01_vibration_control_plant.png delete mode 100644 public/ox-hugo/li01_vibration_isolation_control.png delete mode 100644 public/ox-hugo/li01_vibration_isolation_control_results.png delete mode 100644 public/ox-hugo/oomen18_next_gen_loop_gain.png delete mode 100644 public/ox-hugo/position_sensor_characteristics.png delete mode 100644 public/ox-hugo/position_sensor_characteristics_relative_sensor.png delete mode 100644 public/ox-hugo/position_sensor_interferometer_precision.png delete mode 100644 public/ox-hugo/preumont02_force_acc_fb_heavy.png delete mode 100644 public/ox-hugo/preumont02_force_acc_fb_light.png delete mode 100644 public/ox-hugo/preumont07_flexible_joints.png delete mode 100644 public/ox-hugo/preumont07_iff_effect_stiffness.png delete mode 100644 public/ox-hugo/preumont07_stewart_platform.png delete mode 100644 public/ox-hugo/preumont18_alternating_p_z.png delete mode 100644 public/ox-hugo/preumont18_bridge_circuit.png delete mode 100644 public/ox-hugo/preumont18_cas_plot.png delete mode 100644 public/ox-hugo/preumont18_classical_feedback_small.png delete mode 100644 public/ox-hugo/preumont18_collocated_control_frf.png delete mode 100644 public/ox-hugo/preumont18_collocated_zero.png delete mode 100644 public/ox-hugo/preumont18_design_steps.png delete mode 100644 public/ox-hugo/preumont18_electro_mechanical_transducer.png delete mode 100644 public/ox-hugo/preumont18_feedforward_adaptative.png delete mode 100644 public/ox-hugo/preumont18_general_plant.png delete mode 100644 public/ox-hugo/preumont18_geophone.png delete mode 100644 public/ox-hugo/preumont18_hac_lac_control.png delete mode 100644 public/ox-hugo/preumont18_neglected_modes.png delete mode 100644 public/ox-hugo/preumont18_piezo_admittance_curve.png delete mode 100644 public/ox-hugo/preumont18_piezo_discrete.png delete mode 100644 public/ox-hugo/preumont18_piezo_stack.png delete mode 100644 public/ox-hugo/preumont18_piezo_stack_admittance.png delete mode 100644 public/ox-hugo/preumont18_proof_mass_actuator.png delete mode 100644 public/ox-hugo/preumont18_proof_mass_tf.png delete mode 100644 public/ox-hugo/preumont18_smart_materials.png delete mode 100644 public/ox-hugo/preumont18_voice_coil_schematic.png delete mode 100644 public/ox-hugo/schmidt14_high_low_freq_regions.png delete mode 100644 public/ox-hugo/skogestad07_additive_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_block_diagonal_scalings.png delete mode 100644 public/ox-hugo/skogestad07_cascade_control.png delete mode 100644 public/ox-hugo/skogestad07_cascade_control_two_layers.png delete mode 100644 public/ox-hugo/skogestad07_cascade_extra_input.png delete mode 100644 public/ox-hugo/skogestad07_cascade_extra_meas.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_2dof_alt.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_2dof_simple.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_alt.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_bis.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_meas.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_sep.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_small.png delete mode 100644 public/ox-hugo/skogestad07_classical_feedback_stability.png delete mode 100644 public/ox-hugo/skogestad07_coprime_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_coprime_uncertainty_bis.png delete mode 100644 public/ox-hugo/skogestad07_coprime_uncertainty_hinf.png delete mode 100644 public/ox-hugo/skogestad07_decentralized_diagonal_control.png delete mode 100644 public/ox-hugo/skogestad07_design_trade_off_mimo_gk.png delete mode 100644 public/ox-hugo/skogestad07_dk_iter_d_scale.png delete mode 100644 public/ox-hugo/skogestad07_dk_iter_mu.png delete mode 100644 public/ox-hugo/skogestad07_general_control.png delete mode 100644 public/ox-hugo/skogestad07_general_control_Mdelta.png delete mode 100644 public/ox-hugo/skogestad07_general_control_Mdelta_bis.png delete mode 100644 public/ox-hugo/skogestad07_general_control_Ndelta.png delete mode 100644 public/ox-hugo/skogestad07_general_control_delta.png delete mode 100644 public/ox-hugo/skogestad07_general_control_names.png delete mode 100644 public/ox-hugo/skogestad07_general_control_names_bis.png delete mode 100644 public/ox-hugo/skogestad07_general_plant_weights.png delete mode 100644 public/ox-hugo/skogestad07_hinf_signal_based.png delete mode 100644 public/ox-hugo/skogestad07_hinf_signal_based_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_hinf_synthesis_2dof.png delete mode 100644 public/ox-hugo/skogestad07_input_output_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_input_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_input_uncertainty_hinf.png delete mode 100644 public/ox-hugo/skogestad07_input_uncertainty_set.png delete mode 100644 public/ox-hugo/skogestad07_input_uncertainty_set_feedback.png delete mode 100644 public/ox-hugo/skogestad07_input_uncertainty_set_feedback_weight.png delete mode 100644 public/ox-hugo/skogestad07_input_uncertainty_set_feedback_weight_bis.png delete mode 100644 public/ox-hugo/skogestad07_inv_additive_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_inv_input_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_inv_output_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_inverse_uncertainty_set.png delete mode 100644 public/ox-hugo/skogestad07_lag_delay_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_lqg_integral.png delete mode 100644 public/ox-hugo/skogestad07_lqg_kalman_filter.png delete mode 100644 public/ox-hugo/skogestad07_lqg_separation.png delete mode 100644 public/ox-hugo/skogestad07_margin_requirements.png delete mode 100644 public/ox-hugo/skogestad07_mixed_sensitivity_dist_rejection.png delete mode 100644 public/ox-hugo/skogestad07_mixed_sensitivity_ref_tracking.png delete mode 100644 public/ox-hugo/skogestad07_mixed_sensitivity_s_t.png delete mode 100644 public/ox-hugo/skogestad07_mu_plot_optimal_k3.png delete mode 100644 public/ox-hugo/skogestad07_mu_plots_distillation.png delete mode 100644 public/ox-hugo/skogestad07_neglected_first_order_lag.png delete mode 100644 public/ox-hugo/skogestad07_neglected_time_delay.png delete mode 100644 public/ox-hugo/skogestad07_nyquist_performance_condition.png delete mode 100644 public/ox-hugo/skogestad07_nyquist_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_optimize_control_a.png delete mode 100644 public/ox-hugo/skogestad07_optimize_control_b.png delete mode 100644 public/ox-hugo/skogestad07_optimize_control_c.png delete mode 100644 public/ox-hugo/skogestad07_output_uncertainty.png delete mode 100644 public/ox-hugo/skogestad07_partial_control.png delete mode 100644 public/ox-hugo/skogestad07_perturb_s_k3.png delete mode 100644 public/ox-hugo/skogestad07_shaped_plant.png delete mode 100644 public/ox-hugo/skogestad07_shapping_practical_implementation.png delete mode 100644 public/ox-hugo/skogestad07_system_hierarchy.png delete mode 100644 public/ox-hugo/skogestad07_uncertainty_disc_generated.png delete mode 100644 public/ox-hugo/skogestad07_uncertainty_region.png delete mode 100644 public/ox-hugo/skogestad07_uncertainty_state_a_matrix.png delete mode 100644 public/ox-hugo/skogestad07_uncertainty_weight.png delete mode 100644 public/ox-hugo/skogestad07_weight_anti_windup.png delete mode 100644 public/ox-hugo/skogestad07_weight_first_order.png delete mode 100644 public/ox-hugo/skogestad07_weights_distillation.png delete mode 100644 public/ox-hugo/spanos95_iff_plant.png delete mode 100644 public/ox-hugo/spanos95_results.png delete mode 100644 public/ox-hugo/spanos95_stewart_platform.png delete mode 100644 public/ox-hugo/stankevic17_station.png delete mode 100644 public/ox-hugo/taghira13_cascade_force_inner_loop_F.png delete mode 100644 public/ox-hugo/taghira13_cascade_force_inner_loop_tau.png delete mode 100644 public/ox-hugo/taghira13_cascade_force_inner_loop_tau_q.png delete mode 100644 public/ox-hugo/taghira13_cascade_force_outer_loop.png delete mode 100644 public/ox-hugo/taghira13_cascade_force_outer_loop_tau.png delete mode 100644 public/ox-hugo/taghira13_cascade_force_outer_loop_tau_q.png delete mode 100644 public/ox-hugo/taghira13_direct_force_control.png delete mode 100644 public/ox-hugo/taghira13_impedance_control.png delete mode 100644 public/ox-hugo/taghirad13_adaptative_inverse_control_task_space.png delete mode 100644 public/ox-hugo/taghirad13_angular_momentum_rigid_body.png delete mode 100644 public/ox-hugo/taghirad13_cascade_control.png delete mode 100644 public/ox-hugo/taghirad13_consecutive_transformations.png delete mode 100644 public/ox-hugo/taghirad13_decentralized_pd_control_joint_space.png delete mode 100644 public/ox-hugo/taghirad13_decentralized_pd_control_task_space.png delete mode 100644 public/ox-hugo/taghirad13_feedforward_control_task_space.png delete mode 100644 public/ox-hugo/taghirad13_feedforward_pd_control_joint_space.png delete mode 100644 public/ox-hugo/taghirad13_free_body_diagram_stewart.png delete mode 100644 public/ox-hugo/taghirad13_general_motion.png delete mode 100644 public/ox-hugo/taghirad13_general_topology_motion_feedback.png delete mode 100644 public/ox-hugo/taghirad13_general_topology_motion_feedback_bis.png delete mode 100644 public/ox-hugo/taghirad13_general_topology_motion_feedback_quater.png delete mode 100644 public/ox-hugo/taghirad13_general_topology_motion_feedback_ter.png delete mode 100644 public/ox-hugo/taghirad13_impedance_control_rlc.png delete mode 100644 public/ox-hugo/taghirad13_inverse_dynamics_control_joint_space.png delete mode 100644 public/ox-hugo/taghirad13_inverse_dynamics_control_task_space.png delete mode 100644 public/ox-hugo/taghirad13_mass_property_rigid_body.png delete mode 100644 public/ox-hugo/taghirad13_pitch-roll-yaw.png delete mode 100644 public/ox-hugo/taghirad13_rigid_body_motion.png delete mode 100644 public/ox-hugo/taghirad13_robust_inverse_dynamics_task_space.png delete mode 100644 public/ox-hugo/taghirad13_rotation_matrix.png delete mode 100644 public/ox-hugo/taghirad13_screw_axis_representation.png delete mode 100644 public/ox-hugo/taghirad13_stewart36.png delete mode 100644 public/ox-hugo/taghirad13_stewart_forward_dynamics.png delete mode 100644 public/ox-hugo/taghirad13_stewart_inverse_dynamics.png delete mode 100644 public/ox-hugo/taghirad13_stewart_schematic.png delete mode 100644 public/ox-hugo/taghirad13_stewart_static_forces.png delete mode 100644 public/ox-hugo/wang16_force_feedback.png delete mode 100644 public/ox-hugo/wang16_stewart_platform.png delete mode 100644 public/ox-hugo/yang19_control_arch.png delete mode 100644 public/ox-hugo/yang19_flexible_joints.png delete mode 100644 public/ox-hugo/yang19_results.png delete mode 100644 public/ox-hugo/yang19_stewart_platform.png delete mode 100644 public/ox-hugo/zhang11_platform.png delete mode 100644 public/paper/alkhatib03_activ_struc_vibrat_contr/index.html delete mode 100644 public/paper/bibel92_guidel_h/index.html delete mode 100644 public/paper/bryson93_contr_spacec_aircr/index.html delete mode 100644 public/paper/butler11_posit_contr_lithog_equip/index.html delete mode 100644 public/paper/chen00_ident_decoup_contr_flexur_joint_hexap/index.html delete mode 100644 public/paper/collette11_review_activ_vibrat_isolat_strat/index.html delete mode 100644 public/paper/collette14_vibrat/index.html delete mode 100644 public/paper/collette15_sensor_fusion_method_high_perfor/index.html delete mode 100644 public/paper/dasgupta00_stewar_platf_manip/index.html delete mode 100644 public/paper/devasia07_survey_contr_issues_nanop/index.html delete mode 100644 public/paper/fleming10_nanop_system_with_force_feedb/index.html delete mode 100644 public/paper/fleming12_estim/index.html delete mode 100644 public/paper/fleming13_review_nanom_resol_posit_sensor/index.html delete mode 100644 public/paper/furqan17_studies_stewar_platf_manip/index.html delete mode 100644 public/paper/furutani04_nanom_cuttin_machin_using_stewar/index.html delete mode 100644 public/paper/gao15_measur_techn_precis_posit/index.html delete mode 100644 public/paper/garg07_implem_chall_multiv_contr/index.html delete mode 100644 public/paper/geng95_intel_contr_system_multip_degree/index.html delete mode 100644 public/paper/hanieh03_activ_stewar/index.html delete mode 100644 public/paper/hauge04_sensor_contr_space_based_six/index.html delete mode 100644 public/paper/holler12_instr_x_ray_nano_imagin/index.html delete mode 100644 public/paper/holterman05_activ_dampin_based_decoup_colloc_contr/index.html delete mode 100644 public/paper/index.html delete mode 100644 public/paper/index.xml delete mode 100644 public/paper/ito16_compar_class_high_precis_actuat/index.html delete mode 100644 public/paper/jiao18_dynam_model_exper_analy_stewar/index.html delete mode 100644 public/paper/legnani12_new_isotr_decoup_paral_manip/index.html delete mode 100644 public/paper/li01_simul_fault_vibrat_isolat_point/index.html delete mode 100644 public/paper/li01_simul_vibrat_isolat_point_contr/index.html delete mode 100644 public/paper/oomen18_advan_motion_contr_precis_mechat/index.html delete mode 100644 public/paper/poel10_explor_activ_hard_mount_vibrat/index.html delete mode 100644 public/paper/preumont02_force_feedb_versus_accel_feedb/index.html delete mode 100644 public/paper/preumont07_six_axis_singl_stage_activ/index.html delete mode 100644 public/paper/saxena12_advan_inter_model_contr_techn/index.html delete mode 100644 public/paper/schellekens98_desig_precis/index.html delete mode 100644 public/paper/sebastian12_nanop_with_multip_sensor/index.html delete mode 100644 public/paper/spanos95_soft_activ_vibrat_isolat/index.html delete mode 100644 public/paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/index.html delete mode 100644 public/paper/tang18_decen_vibrat_contr_voice_coil/index.html delete mode 100644 public/paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/index.html delete mode 100644 public/paper/wang12_autom_marker_full_field_hard/index.html delete mode 100644 public/paper/wang16_inves_activ_vibrat_isolat_stewar/index.html delete mode 100644 public/paper/yang19_dynam_model_decoup_contr_flexib/index.html delete mode 100644 public/paper/zhang11_six_dof/index.html delete mode 100644 public/robots.txt delete mode 100644 public/sass/main.min.47a894bd6354cc46903f62433747958dc936e1c95c28a76ac80319bca9708ed1.css delete mode 100644 public/sass/main.min.b66aec177f21b809a7d8b8a0de4454558b3f3cfcb28a151e820757f148c14a35.css delete mode 100644 public/search/index.html delete mode 100644 public/sitemap.xml delete mode 100644 public/sitemap.xsl delete mode 100644 public/tags/index.html delete mode 100644 public/tags/index.xml delete mode 100644 public/tags/tag1/index.html delete mode 100644 public/tags/tag1/index.xml delete mode 100644 public/tags/tag1/page/1/index.html delete mode 100644 public/tags/tag2/index.html delete mode 100644 public/tags/tag2/index.xml delete mode 100644 public/tags/tag2/page/1/index.html delete mode 100644 public/websites/control_bootcamp/index.html delete mode 100644 public/websites/data_driven_dynamical_systems_with_machine_learning/index.html delete mode 100644 public/websites/index.html delete mode 100644 public/websites/index.xml delete mode 100644 public/websites/page/1/index.html delete mode 100644 public/zettels/active_damping/index.html delete mode 100644 public/zettels/actuators/index.html delete mode 100644 public/zettels/complementary_filters/index.html delete mode 100644 public/zettels/cubic_architecture/index.html delete mode 100644 public/zettels/electronics/index.html delete mode 100644 public/zettels/flexible_joints/index.html delete mode 100644 public/zettels/force_sensors/index.html delete mode 100644 public/zettels/h_infinity_control/index.html delete mode 100644 public/zettels/hac_hac/index.html delete mode 100644 public/zettels/index.html delete mode 100644 public/zettels/index.xml delete mode 100644 public/zettels/inertial_sensors/index.html delete mode 100644 public/zettels/metrology/index.html delete mode 100644 public/zettels/motion_control/index.html delete mode 100644 public/zettels/multivariable_control/index.html delete mode 100644 public/zettels/nano_active_stabilization_system/index.html delete mode 100644 public/zettels/position_sensors/index.html delete mode 100644 public/zettels/positioning_stations/index.html delete mode 100644 public/zettels/precision_engineering/index.html delete mode 100644 public/zettels/reference_books/index.html delete mode 100644 public/zettels/sensor_fusion/index.html delete mode 100644 public/zettels/stewart_platforms/index.html delete mode 100644 public/zettels/system_identification/index.html delete mode 100644 public/zettels/test/index.html delete mode 100644 public/zettels/vibration_isolation/index.html diff --git a/public/404.html b/public/404.html deleted file mode 100644 index 171d525..0000000 --- a/public/404.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - 404 page not found - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-

-

/* 404 page not found. */

- -
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png deleted file mode 100644 index cb1ca539bd146a61fab895896bb3440cb9c394b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11033 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 diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png deleted file mode 100644 index 8f66b2a2f52972d0ed7dc3c938a5be878493ca6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31307 zcmd3Ogcy1PrHTUxri`;PDZzWX;^ zp9hiSFJ|`a*|F9dJ}E0oKSv`$gFqn9Wo0B)ArN@*Pk0C_GWd4xF?kEVA-agms-c2E zKB%VQ;OA$KGTJT>2<_m%FE|;5PGayOvFlqc*Y^(QuI@(8W)OFGcUCKV8y6EJM>AFj zXN%NBK@tdr5+W-prsk2hzvynLrap&!yrsz2pR4GFFpl~W5!b6ONxitBfD4C-M-+)U z2bFQRad&qPThkq;`C&jugBexsh~?v#;PVUxbJZWFbezi+cL!GuO^CQ0oLdV5M@J(c z`UR5*7w(qcFCk!yqf!O`fB6>zT{)&GD!PpZYxEUb3o&^eeb3_FyM3pNUU<>6zLy*L zrj`B=?r3lX?R#<0IKt#;CmHdV7(0pzWi_{yZSB8whhGtCa(5;dH?z>8X3y_UV@=ex4^ zlP_I=Q+t)1=A%Yk?lmct!ESc1DBFvE2uSFVT@LK?TtzB+E7{i#r5hd`ezHE=AFFXc z|J9;@^xdyjgZfG;)Y_|4T%9Zns_vo{Udbm}v{0h|fAgJAB+~MKkezf>}=);!UqN*FU)k#+Rr#FpVV@4@T zsuIVy@Doj#(+#M^ukG7RgYWaXZ4RRjtSbZ;M#o`2pHiaLG8}L%;$GyqW4zj4J%>_g1L*b2>U6-9shY@`4}spoY&_7({i zwa7*;WR+oB3*9I_Lkv_vHqC!qol76m8gDx)=$X3n?&Y3B>v5=6MQQJx31dkW^XtND zN$)^YTFG3oMF9>WXB!>cKM(SnZGHhTa`8tzd`K{p5_6{e3^2pj9(tB%#RR@5lpG3+ zshPwNA5?QUqs?rlH7kZ)crv`#H>qGHha&qTM#9VE9p++mSisZ`JFzvyvPL%Kx>v({ z#b?;3Y-$kfO$EC6;<~E)PdOXY-oI@GFpAHPC5tpXq%Gc(DZHCpqDu@38Y$J`S}~RA z+e49`lbTI$agDn98kxXuqoMOBg0X9Ks+uXdT*^SPb28^@#CuiLYW{S$mz8CYS@1oB z>1!f#Uv^sI(@k|71Cig*k-}oInfyFW`kK5WbWio{8|%^)t$o5-*r;!l^Zo7)t*5nR zjAKe?F{6V?h$fS`c=N+RZ+j8JGa(voM|cF9bP|`I_vX}=8kc{9F6j) zWk1-_L;P4OcdU2=(sgu<7QOco+e$AXrzp6R=o^ zS`srB^D$f>D0@nLigRg$T?yBT9DMJSpHm>8!ZNkqJZ<_)>l&2VZjU3K!txY~620l8 zKi|1|6hD#_?n9`2a^M557xA!`oex^Gf4J|MuTVHA2RJqKN)R)wY_V{*%518djzCOMHP#YUIskZ*yD>Ra78 zl3bw53?~EcWoci={Bf;_-=hiEqVs&I#B(;@>N&N?>znnbelvKwjUL+(*~rE(n2E0* z#gQN<5mR71V~5#4+SJG1`-_50eysP|C8vCWeJpDnO;+H1LB{fl!ft8akyhveMMK9Y z+|F3P^D9$^*O|bycKEq6oT!iejSz3ya%G(#)zC#%d@Qax1F4aqL(gvA)$`4*;tv&u z_pNK2QF+|c>;`7k2s!ElEu84MOJ18BR}LoWAu{OrkZucwAGD#NyFW7BN$rQhhxab| z?F}KaSi(1*0&HnRZT`kL%}suP=8ri_j<>q%ae7U1!if6D5+En|AWSO>K5SsXckvv?oY?x9u>s5L8H)A!iSQN|x zkL<@zIzOw`WsXwY1H&G(*-li`&(uwRsoh~7B)_EQv))@OwL8} zse6C;kv;k1eGl7MfxFiV{;qC8Rpy^(fdT0BbZsq%8&~#b=^^1LC3AES zm%kp)W_+8fHWjfJ?`g9pHdS5c^jx2R36HNKGa(qvAa8|jWknTNVLN?i6WK}XOJvbH zxv1UkvmDOE7WRY#c|@W9qS2+XcAu|22u9v10wzx^RJEHp&^oLCkXV(U^dk~=e#;>?aUFiCvbgaCR zK10UocTe8kR(Eh2R6ThNjJTfBOX{V}ll}G$n|HTmAIdLD&s74`7C!h{>%dm>c=)f@=%?Q>ZZZ`m$Cko(Mx>wN&}A80ty-+SkN_(&@@J@Y6Ne3J_`_ zPkI;r)y+bQFii3Arx%&Fyrs%8AFAoqN~DVMt3pA&WT*$^5=0`@Hh9t%PhI5{zZB*grkM(%${G zK+60h>R-8OZB$*Z<(KQzLL4G%RV+2Mi?~adNhE}UvNsjK2ExTPboel!%ac&@7((u$ zMLxIjz{Q@SKQ7fsJoNa8kGV69>^yzpP7QBRDF3qc|?z zRv%SI0s1eSMm=&;=ve3w3Q4)A0m42P^e-N?2A&fgkG+Hv)022inGxP)_NUEG?{rYq zpZXR8bzElTA2G7mJ70N4_`+bAotXF#vHj$*%^yCkC9UI|UwS9nzO+lSyroIGVl?(UXT2T zwhygj{<*&U@Rw@ucMcj=!{UFwbcbZ7rF+|_R#~03-X<5jU?i$CbmhgzId%2ygk!Gl z9dnk=M370RoE#?6E9=XLi29r61sg4yX%l7In38R@aV3*o|D9L0T~I+tnje4;e}BiO zaJ}+%MuaaD%mEq9;kT)d@wJn@Y*S5@bhUsOqFDRQ8Xo&orERy=DQxXYNxzIx7mH`* zqK!<#BsB^~%1Yb2?KH36^~OpK1M%aL{QLOX=nDhVzL=&xZE4~J$Dlcvoe<9zETQVs zfBD_RmBjE12`}T>RQBm5{51cthH)f$3^PfT&B)8o*ep+}+Q4(IeNb6bQ{WpEM4jFW z2#yoUl5>F!qs{sL|J4!z)GM{Ut*VlaDX9+TkT3?je`5|Wco^zB^S zN%u$*VhJb$lM>&FW3Ej-w9+IEfUz@oKDXXyu>N?RlyCuhtiP@N)D_34%qqecSG4>* zh!cI?CPx(-V^RB(M3WL%$ z>tQp0Cm*s?3tvFv%DEo_e2ls-ve)59Zh7=7;mH`Zx!MO;3Ij(oOUJd+cMy5P#|f+F z3tapoe%O6#rQ#9Co05ArQloB%qfA7J@XxRpZ7FGl5jE~nK~gM>V*KekA7NLKebsMH zigT{Nisg4#T}5_n@4uc_xgDCDr52by$U74ajI^{z?B-3G-{&nK9yOS?GV)lRhA&X> zIC(>sP8QNffG>KOGhHjF^2^NQe)Cce^Q zM2I2i#1hnWtF*VaW4eiirWdFV=vUu^`m{Uf>{PM>zqAeb1_E!igYvAdPWv%1vhtu=u;S2F0BA3HPYC^^w@S4 zsz>vAy|CZFzTuU;T34TMzao0qP*QGHbcdRp9%|y?uo+p7!QgZTe=+Bm_AGeHaIV_f zhNFA;m2R3eUe;I`#^wuWVvWI(FvTJNq^{QB?F0{76}T79je~kz49_^xt_|-0jGCvm zLlK^l-kKwSdj8`k8J%Pw-GIkGTIBc3-(oW{4_#+elE&aq#>@C}kcz07%TNpS)uPP1Xqp&*6 zCh{6)o^0O+|8zR*@ga0|lP*)6_!<7d&-u7XMWN5p?YFgtG%=QmWsfHgf0<7?cL z?>O@ZcB72y1Y}x)|lk>u%&ZC;ZYXWee;ZTaVNy&%%%co4% zlcnQUkS5uMc@trgoGE-91ah=>6x{X-16x<@!tOTtS&p$~Ykg+#CQ*a_>q0fu*MmQL{2!>|pAm_~EgSbQO$;1x2VMWmQSCdY&H^jn z(g}v4ftK4fXroa2y&7qGKFB|rkUQT?h;WO5QE@>i-T0#YYzkWW|| zZ;?OhW2qH$rhV2Q+Ukk1po02&!-Z!l!8x3h2rqMD<Z(By;bQu_Hqv<{`^=b2 zPwq2z3Lr%6`cD}xE&9OUzyO1Z^|wSkd-w3DA=~_9!<)o?%W!^IskoUdS8LKfQmm*# z|K2gQVooOJ%EjncH@m}iZ@#83ofH8Jejhi0M8Aj8{RCVI-kG-kp2K|}Jih=e#Xzqt zhnT3x>&)~64|A8(8?rC`;3DLI1A=pAm4*~AD%N`o6`O>A*2occCGzK;`}3ORV4H|C zX+FYUAfFn-(a`}#I1#z+MTV;px3oxKQPZ<$+tsxNwXk*$YfeKG_?0tMO1O7){U zgDJr@arl!895&)4qbJKAhHqi0@Jx8Q@*Iz_a?@uWE$Queos!kd6fvJLkej}%y{Ue8-Earf>cNt#USVhQrSkLuwSh9d5p|?ISE$_$|p~3*CfG)PH*go>GRWt7f5; z@77J4rCFa1Y?P|?TfNs`_ggy|^GMwd1OjLGBEAl6bcobWl}C@|Z#zbPg(2e-ftC4m ztPB$Z_OP<7F}gF-L1$O)ukc!Mn{qTS^S^@egDCi|rB%yr$pFg*rOnsv6~<5KG_j1~ z@w`^rwVFqPGX=z+V&?HYMpa=r!tCEn(_%yM)Cqj*ILl}D<>~YPj`uUb`M#^Ls(~uc z|A_*{Y4tZUOZ&Q1uItMmW_mHgu_1(U|{ux{H}G?e;yp6`>|-aiR7`C|)^z z|LA|8*`3?pI$5xxA6At#asYum9?QPz-RKrA$xbf(s0LtA3)soSD`FtBS9N{~; zPLT2f^?DEbejSnM*zu`OM`t^8Mkl7KO#NX==4RHZ=}gU&zY7KR0+FkaCie9&Q&sia z>LCZq8UtgO`i7P!xA{fKMnR&1F>?2cFa3yMyl=x5KLye2_%0c16eg@3?nxQ0Y-sCo zQ=uW+)S)*;^Q<|fGM?PE5v)8o$Wtj_mU8rs5BinDebwt$S6x=%u#=&#GoL&@yV!LQ^)v&L_O1XLyAw?b3ZE|iMY_ih zo3vBzoJlkvO@2rEDm6V*4Tv9G5j3*q0tdyXg`Kl|~W_wMmThF8LjQ zqX4P(Mcs!X`^+Y_8ZA(?&i&Rnh53Q(y0fdK{0nHdt z>%{Bc(j1m+LlffY#2a&8#G9>x_JZ^6)o!Bn{%ZR!`r@-MkMZZvCFL}h1RM_gp?jP? zUlTp1wc)L_;^4~4zQJo_I|xt*Y0fW1B?$~y&8`DtvGS=^YZ)R%Q|Bt;o+C5zo5uCg%0kMe>d7lL#o2)t`W?-M;+zu zy%MaZ<}TPOhQ)8CkRbUQOCncGYxs%M1J(lBS{6nu)I9++nhIuQLE(`zdp$2R$@==1 zGfl~8EzN#}>Y{T}&j{V03)ldR>nREiGAwvA8kmZiP~D=VKTp*k;%l)tr2hU5^QR@; zasRUWjn~4&c6S=!FZg!ZtUZH z6k)yz*hC{Sz#c{f+{OUk%kshWD*S-Ks@^`VbXVcLV zQ7+x%B{3m560eR=gW|RNC|^0&4@Ty-EfTvf-gS$Yse1s}^uZ@rh2P@i&Ign|!H!5Y zNGQ2(9~gpdyNQ!I>eKJ;V(Ku>(%&iwYrB)b5)aDPeokEP{-_@)@{|(^ z!{C4*b>;kad2ejN`r%CHIk-7AG!0>}+NYz^!EO5M#E}1Aok1=gncHb2mz9Z3M(sXI zgz6)$`SLRNubDmoro7X(c*es8k4>p0B1oT|-Epy4x;iahm_|l!skAIauqM@A9xcXq zu~N6;afhy>OQ*p>%+4)xc>KloVGxB}OR0neAwUWOZ+P+ft)`v8oJw6)L5Tfh(06qP zEon;9J3md9JycU{L2|=^$6l3X-(}^eb&0w`qjY+rQT!>uYs3$ZtKCjnq$=v~ALh0A z2Ib8#YD-h5{j}W{S2rQtBkD#0DSdaOF75v8!F{lSikZhHvEMX1B0qB!H6XLN-o{={ zyFWHQ^>T7-Xj%Fk3XruzGQqK4DEtXk-FyVa)#THU?0w6gqnY97xAp}9MGl}4ylB6F z7REF*6(&Egs%;UARw4ywf=#9=kGv_F7Xm|EML~(K`(e9aRO)#+7J>(^c*O|uv7M?! za`$g4^V5CzJ}DYTz|gPoEC&xxHq%zt8p<3Ge5N~a0D13$Scn$ zj2AWOF_R9M?E4MV-~I*>I30%A$zPI!%o)^wNIkT(oZzL@Y^0-LQ-b^vEuiXrlry5s zkI|Yz#G^B95E_vXH5@H&q{y{L6zt-p;!1(ab0@F!-d}jh`7}9g`*JcK0{h$}%QsWa>rj3AQH=-fi#s z#DIKaff8vISq{BFfKk2$cyEo4itLD_OMU$0$%RHb2=cl~o%)~XZwhpcWfyoYDi5x| z<~*(~J-y-gNLAf?2Dys$zF;Mbet7!Tt_P(Bj@0?*Fnja7_BM{C*d-hZAM)UMbl}oD z|9&B^9~zdhQ-fBl^(}_BN?Liqz*z&WGAA}&3cWLE@gK&Pxa=|^4eo-g8Q}~1dNuU0 zc-6GKZEGz8@a*J}PaeCM6~D*`I-r<14eRyTK6O?9JVfiQ-B$S9nW53A=Ci+7#Z||V zXaN%*wmX3@TNkzO^w`L@_FO=Xw-u$-*>!g6cyq3{%{BQe1Vi68mmtc{En&v3JX)OS z6u!W6JFR*BN3xlSy^v!tj9hkaSOp3u9uB?R<~$;h&-c-RC#r4)imJc-@U z6e|8#3ou3$j~^0CtfE|GiTwFGV{xVT!(MIH&#Va8i_ULv^wwH!y~GcFV_M&LLeXOi zAbcVJ`sp&vI^F~g-7am5l~^jt5Xl_OXHsOVQC{7Wme|=U;`!>LISCRu8kCax0UCJ$ zln|q=$;wnj4LcX!Lti5SW-_02+yagMFGM-gdbyYtV>;b$w+&HMs1(YAsU(rW?ygZq zPNo#iixWFWE5E8AGjr)$aqU{!4H-I=O6m$RuR^$B;hC&+&1#*Bj%IE3)6_T33r#H} zOQsN+H_hhV78#v5VAwBlxtHO6@|XKOW&($8L6#Axytnzd^(g~R~eMOyd$ z8>@irxY1yRCHOcPN(ij|3?I@~>DFV%zkK*p(0IoYd1~F&+?wdedXLfXZN6O9y$`S6 zxP`qeyRSig={|jXZ&8%s97$o+eIDo$NkNQ2wv~^o!Q*PQ_Yv7vXfk|!_pi=tVk_k< zeI6ECi^81}Jm7f(c?bzM%*T_!s6 zS7+i^;!`q_Q`DgHxsQBpnja$HDsKk-R`{t9*TAkQbbxj!L>akd&ZR%MI+iKZFXtPK zU^@4~>M*~-rSzxpe=#$7d3oN zRSwhRb-q$)<#312s5`um?d*LR&yh`i3JlW#SY`r!^`zS_q~6w=QQTE-Iu@1cRrUI7k0jN7NsL{x4TWkQnHN*bX4=Kdm{6bNT++{C!(WG|i7JL6x*}X%o8k$lrj9rCt>+f%*(S%ZqlHA`=w=stB}p z+4?X4I(s9gOYz$+f6SiIwlJc4jUMnH;|##~L&7r@UJivIZub|)QbzEIb0bQq&nU&P z*^RXjrOc#^uEq%Xyu7rfp*B$^m-S6sL-(E&Y$%MNyy9}IEhou6B^jXT77Y8EO8%*j zFiOglXy_vT@x-I~b=g7p$!|9`Ubmc*u8;O%F9Qijt?=1HZDL7_`i`?!h;S(wZypZ2 zc~3cBo!tIp@HicMcnzH$h7M~xU3n?%FP*jd`m2 zk+(WL%dh+^Xty5TIT4`z#|M`r_swl^WIUQ}k5M4dCY!7}t*o1x=8f9pI-9fB5tjMs z1+)2=8k21l|1yIw<#+gl1gg>pp*`l0FI?Y4tR%u7l$WjXHdNYN*oNBeG_msYIi026 zZX9@QE(ZNM-guT)P}|8LP-;J%p`QTS@{4Kf7hmhB`B`6#t#Hjr-qIyK`^L_JOwQ(5 zKRE~;4)AOV(4fuq`0IGWR9uCqs*Dd&V%25$JNp=FX6$`UhzRGd$4TnKDhKLh$Kg%a zHFpZ~jw2C9DU(#+QIWE&sZa-ZwVakJlpBz6UR$nzI=6Gxc)?}Oe;MHzCR)`)-r#z2 zv+Q#<@#qEmAKC)6fc><6wx1-8lCZf<1?=PYG`+!;*j^~wir(7~D2Xlg=qPeN-X|Ac zALAIAYRPQ7xA!fBLu7t95S#=p7{!L8svEgGRTa3QdI*XZXmC4^Jm&0y6;Alh0P$n{cyzHHw2@6_m!Y2EDF|4BOxX!$X;())Yn@_Wk!arq3* zs_PjofZ+q{$&I7cb;^v>sgwh=As)^*fp58^76GGrYhxRYb2Z!#+BwJJwUgDt3lzhh z?Pu3Eb=qkj=3P`CJzV|r@QT=of{qh1FHEJYqQ@Q7pQq2!C$XiCK&2@W-@++RP1Z!h zLLcP-@@*2)C#tCX@Qc`|p@u}7$i86?a5^CAaCrN^!bEGph+$&|lNdx;&Is#lGVq^lD&PLtA?u8KuH0GDf3v;AOP0cq-$ATtFK)*lOn8(VTq@lhW%Uz zNnWJd$}J9kAw47JXE)A(41^7^0!SfU|X)^P0<7B zHI|(1i+cJmBqzZ170Af?0CW&ri%Fj*^dK_FtK4YI>gtNrN`-?{MvQdwiQ}?tklrcJ2J5ZoAoAiwrs`q#@pqSP5NkpMU(-z7C?bCGIl%f$rP^r?$m0 zVLt(+=G_N9ho`2~G_Gl!a8yrz;i0*`EPaUS-_o>lg_ zL_zSg^E?o7`VEk!Hk|d+zfveOCCgD7I#Aqbl-`WU30Z;2Rze(I|9VXmD{fU<6)H2( z+)U$%{|YEbaMt7cv>av&sAffh`eju=9vV-=N;iRgfE^QxVLSHcn*R6Lmq`jMcPW-T zhq3EWh%5o*AYIWu%m(m`l4Fn{Y;ky62C0z?V^OBQtAvg(rf{RyFcNKxZS;dX`rt25 zJa(>vd#Jt~y6JDgQUtA|1%Pf_{e5cseDCd=bA8D>Fz)0E{`)19)Ipw-ey*VTkPQoY zXC%?&D*Nn#A%lD_NH|wPY-0NnJ0VqYd0et}fLPy_J;WjgMMu+%YLB#)t^vM%4{Wn(%<@A_?pElg-zfI4bUIEG`@Hi)3h3%O zm~GT91S$_)R8ZNb*=~zQ%zh-OBC|_Z{09`*%#E2lWrJ*>f0QghxI2lKOaJmqCVmJ* z&Kf)O7W>0^=@Jd2IAkJdCWM z;Gny|QL)+`>U(--r^t($lhjNMk{R`^x%IA4~3MF`sMp^DxD4PPxr2-}|VOX59YnJV!a%@=sXF*mHgZ z6<{)D*p>HCmNVevJk|BOe`)#f7zFxf6p7a zmy6(3G*+Mw=+AuuwA@N=!h)AI9Z&&?SCa!sw>amXFl?f0qs5G!MiT-Ee!bGU zPv7(X#cxY~6uxXDwQNs(h^_wt>pT2i*cWC0YgbdWAm)wX9YTw z{$kMbk_a40O&W|;Wy0pBd8BcXob`w$h^nC}uBk3*KqOAC$BbG0+xEWO%H3kkwd;FY z08SULT}y&~itYXeRfA>Fg6!?28k#WrYj-w$$im)5;6Mw%bHlo@Krn`uOA{G|uRE@R zLx~htK1&md$wUTJp+BPM9NrJB7T|RK8?>Y?`fQmU$YNl|kt25^UbG$+)VXabgKj>@ zcEmh~1s?}khK(K{y$;rlBVQT?Yfv`~*ofA9-`xBBf(Qpa4_p_{LThN>NS|KWHzWJ_ zCBVkA2B7u7kJk>N_1+El*0*{^Qyk?Jw(rVk=cCLtaltWYe z&$95MIf(*r+uB>#N<-#W#jbR@Y_wAv&G$w)pBd-0rB^yf?npqZj?Qv`IgO(zo0lM4 zn*9~LQKR1uQZJy^m^CyEg{Shnm=_@fP!7|bQgz4Pg*dh)i6LbQi;q4N%$nc-;2Dan zv-iZLoHilguZ<7(KSl+SZw7y92S~Z4ebRzNjsa|baeIH$1x++BR#yvbq#b++V{$Sq zv~`jPRuwIZ`s{lOUB3|5tvY`n%l8^I{<^EgD%u8k(IQnK?io#5`x?hY`HU(bXAqrg z1bGBSgh9O$@J~MP0+9ml5&zM6rQhKLz8H3PjrAC->I^x+0c?TH{9lC9gcM9w8c!47 zs`|ufNaNwEnN~v_DKXP6O#mB+_SKem597aZS2AY50-Lh)EqcyEAY50EE$*X~pSU2! z)K+MBC>5VPvX>*yDv@28ga%nkRw(0^BAL|Vu|4)``Qud%ga+a=0YqKgfEnyvGASvh zK4)N5IM6ZlN*dWU#Rfxw1iTUNI*=T{40=~gorWJXgDx+P1$=wEydm&MnE+K#EG}Uu zAf0Wuu2)|3sLl^UgG6MUeHc5x|AY%03V{4owt5M*WhDaLoyzUx-br?KBLa$2b=Gw* z@kUL$CCB{A#p9Ea7Ka#kPt^H3`}z-QV;}>-jauL~qzO(2^lEnJ6ktySXLs8_;`(hp z<#bNc{>vRS=mF)}L*x+8VwW_zvc8CSO}mZ&?V473eD~Iu-i?rZ&F~Yk^uSqOdoyM8T8lxu#^GTIH&uj0Fttb>F29@X>+q@BN1U*{2dBqe<_dqoUq9*0rG{3JSFq z1sgDej)5+C>RpRMQ4+<2@ex@_q_`~4R`BdYZTrRSBLKt!U0Hs4SOLyFAnn7R8QERlbWyIk3UD|GKNJSS zf+ysnC(eWf-=Kn8147wRAfTmVm)-#^QcG?t3c8d~8j}0dGu;wQ+Xejyz`=ZP4Ovv_ zR*(9ib-I9gZ@+`6Ln9L?o~;riPfuGFO@#*j=Z|N?QMyV6j*jf`69VocGAcyHC}l*; zf{!c)<$6ssPxv7j$kG7(u{tKQ-}9V_XC=KYiM{3KDFV1cC82wV?bih!9r4E~O4RzT ze_U}~OZDw!D4X2h6(4D*Z~8Zy)5Q008#7hYuY|s;4nupa?1UzR$9FqMeEGcvudQvk z2}&M`v0AIq0Sx6-mtEVih&l1{ZpHcRYXr7I!rFtX{gs4)H{&q{6VRUDIUt-~O z#sM)~qPDgN5DFHk$F(NhPTEiq=Cn-oLwkwM@Oyiqy;70uNI1aiDM z481SkTF!?D&I?$Eh=v%u-qcKTX=%vS@m+i$f=^XRD2QakbD)}UZZ&4y)Jwojj(k#) z(zl&m4u}%ysVEWV=UJBk4)N~PM5EX7;ynkkU)P-m9>im3MEZ>&H|eK0UI`lRf4{~= zXBRZ5!c!-hxpL+MtLbEATHEyxg01r$k!q*9vYO~~acF@xM zMFLtjme+DKMP+Gb3?&tz6~ki`$%RJ06rObfq_km~LO_e6m>;DgR%iN+tGxH2R)NVqro)U+lVQsR0 zh!6-6?fB~Hm~31+em4+MG3)un$h1cU=hWN@WXjKo^29~0o8c;ANriLyS5 zl?Cgu2I=PnD?k9sW;y8`ysM_n7`RH@f24msfit#n4@b$*x=%Yz3{UkMEx^%tyUVL& zHPOB)wRMQJ(004qwHpvNG%|Dup)^G7P$m-MLSzhi)VI!hsCE-3f4ibKu8pqRYoS#M zhLil6T6K?CO2Su|d$0WnUm&&r&Nr~rZ8mfp8>Sv=D6abQWKnzChWjl%3?My)o=#vl zNcow+z@TEBjtyMuO|Q{#rh6uk@^~@pmo(_`Apr?Q57bSFD=td{N=WgF zOQ=gQJ;AMq*rQF0B8-83a%FL)l6* zebwbpWUFFf1gA=_g>)7+ma4DK-zjx@n&4%rocV4_v(Gu@KC@ZkZ(mHNvEYDCczDdF zT&NejAj*xtfIz;)lHB^7$evXdyL|Cib@9`}TTuc$lYKKELe4m~wltORpXz+fk;fDE zg_hO1UYew5GP0A)JpfohQim(QZ4fDK+OHf?0Ek2Nc^ZP$9GvJa0~;qAI@^FG>*968 zZsLx`uExmpjk&C;`-san$fHh`>~iV=Re%m>rg8TG9K%qYFP zR&K762X4?eR2JN97-%Ih&2ov3r>WmpY=5?Gym2XQu0?PcZc(4)^#?-OV=9$8fc=Uq z`!!8J9>y?*(Go+owouI{db=esq`BkUaS-7&GvY%v6P3gOld#9Pj?p@=9Y#B1C-Lq* z@80VmRd&JKKcDlL?xSIt1cCNwe+{H8ULJ{P&ot;Oc&p`!V-iJWLno1?V?=e7m61>D1|yHW0mcKptV6H=9J6fq%ih_=h*qDrZId)_*=i5oDpA3%;3C>=He@Yi?8 zV4NZcrhw0lV$Ov#Yd!fQ8h=~L(>~vgr{nVgkmdx;PsL+!b$V|EjhDoJmrbx^sLES1y8I{p1nt_ym7o233 z#zvpo&~HCLp85?3>&;CYOD<)!y#@D}jq$9M*WwBp>diN?Nj7Pp=$U9S&e#S_$%4|v z!-hg&M-(qMPFfIv;C{cAK1273Z;!M&3;wSN;B`kDr3sYmtX)VQ?CU1(T#$iOJCe+( zI~eE9>tCNj#TA3()}O#e7UUDj6edjbdRQ~A*3NA?XJDbq72xG}M&2V8%znARAb35Q zy72>raN&4pdN+m)oYq`(q*W-B^mF6tHI>ex6d*Zq&8FawVlvOAV##pxKQ5?kcqy`9 zYC_gk20(+1Po86(M;tBF;OqsUNVkKm7DJWD8!ZkU+7?yLM9V3N5?QT9-m~eeIplw7t04@kIC7C&S{CLVw3BshLBGb z!nX?oWgxu^0wdItX^GP-Ny{rlJ?Vp*lz_2PfZm$bm6IpRpIFhgYQ&%M| zZ|l`!bR(dY?!}5!{(jym{N|zpbtSo-zQG=A5fkRbx}g2}m~_02#PYihMrA6}H# zRzh=bAWEiJP6CXe0{EzAbYiW)wRQ$T*Q>pQZA$g6 zN*+hRvEatj9p2B{TiDe7!!B5ppYQDb8m>*7VgVbd!m#np+X`9V+mdndUbg+k=IDgT z(K&AFBhZVkENr+hpThxbgA>#N7UU_Zl?Tda9{_axJ3I@=W2?gI+f}N9&bl-_W2WN$ zntp+P4>VB8vqj&ht?4rKE7qV6#q|ICy#NLy(1<_EaFFlWJvZ(^>~ek-0y>Dtz$_1^ z9Z9fc@T`n_QU7Gw7|zH}u{!-iL>_|eylrYMdY(_sTiQUEF}8e;Y%}!RGwG1Qy5A(- zr2K#4lYNUb-%tlG9RTXhs)=5I<-mBCu(bReq~&=sAVVA=WHw2E%N*DW;ZwEtonbkB z`-VF7?caa$F=0&(d0=VUzFi>Nc}Ngo4um1LIX1Oi+iM;)=4-H|^gtts5MglT);rD8 zpP87mGpf^o7=-XJ9b!@+3VVUOZv3hss#yOIhc~yUPH&CsO z1YQoWShD%IHde?dm?UzDwa4wbIPHDyqC(|bR=WN^BWvTGoB-taHp4G}LqiR|&cK2- zzRnz3qz74uX+wNWISN6u36S`{*?&sa``S14ftb2fX(|&t{@Kp`xi7k<Zb@a10v~1C^7vhf*a$-mU-(KUxAEu>uK|_}x>gx_e z^U3wtV*neDWCrJ0-TVN=)W~um%BLlTS()TEd4z?hQp((2+cKoY5r(1D(^P;sZC^*I zi^h?NDW6Bnk5WHfV|2Qka!iRp;@loet%>arcWGcx(R}!R*28*;@cO*#r(ppI&*0Rgl zOOPCC0K+$hHQbh6J;(Sn-ibBsOYkhNK?zV8F^zxkJ-bqDAI(*sR=Kwx_!z32$<4xS znjSI_E2HIP+Ipm{PEN;V0RbxU$EzR~M%uPr+Y}Pib6|iF4o;Aw0N(9CF<*?| zPtswiw11DJrBP!`K+3)2Kdkko`_yU@!gI?izLD$Y0Yo@$E2D33=-@bed#Rz3P;T5u zD{eGFCvP~OgTgKfVSZ$nzGRU-JESezcjfc3Mrfo3eN~df2HfWC+g{m&OIKgJb`?X}u6R5bCVpTsbj30X=|z z`TC|6h0oKO80Q`{Gtv;MsMXgE-eS)4nV}@pS4?lc@?oE3LHE1tuNFz+Hq)_3ws6T4 zgTerMoUIDfK-(pZAY=e>3LJoH=vm%-(CQy*3n!H7hNO zS5%m_*fvNxU6G-9_nxd11qcezqHw_zW^MJmNhoN7xu407j-xQQyeF`nUQ7K7prMqu zTJ&(m4-YOYClD=6qep~#9*ajDR9C#9eA3h!pdrltMC{2(wvL&V*%P-ZTG!fEa*%ez z#DYPM5=213wN(pv$azInJJMC z@;UBj6AKaYr9F8V9SOVr3-aS0g?Ey~Z=DZ{|J4fLX_lWyD3rf##zniKsHRG0T~`n2O)%146U%KW`&2339DYa<^j z1s7m>5Xe3jugGmZ8Lx0PYQXj3%cFsKIqBH2-hWktSs<2)e$a>lt_-sr_tAikHpn9H$(=E%gxjFQ`9i); zzME37I$SzokMKU2Tw0qYRVuj7-NS>U1B!AM_AS8QB0U4{>7bC0(O|@qb}yAUWm&(z zPC2AEz*h#K8<-yy=%wnB>sW3H8ACSSNv+KwzoLD^8Up=XGie1KbaXsit{KI(0cX=^ zDWBJ~=1Wp6{4RHogO&N=IG%F?qv}XtGRB&R%$z*-p6sJ)*D!1WXPY9uj@2K%_Y!hjF+dQDq~0$Zv1KnVIsYb65d{Oke;5p9@E zWgI6}GNw^8;NTxo)@-?Yh|SSq(?>AWA44$`o-fXCtoz{SYpQyrK+q|dBEvGE;YAST zWM=x#Vp|f%g%|}m-7Ox{UyBb`N`(cY%z&z$kdO65Ibo8FK(jxhU@Bqx7(O&N^-H+g z`#GE}hziiL1%HShNkR`hB>Ij1>Nwo#JsUxCY6M*3{GRpb{)hrSRRF`pZk2EAZKEK% z-bz2)36*uGblmlDyJ=DS86B$M=h&Jprt%PisO+yzaEPPUkyM>Fimq#of+)Wf%53CW zzWp#p0z~N&}43~;|K-@t=~x&9)3-3FdlqFbgChhbB0NPB8>)s$j8;S zc?#M$cJEZbg(#u$f=Y(2~mi0e;Rd(QA}g#YGk(eGOsH)&Ai^yPXFC^yM7c77_>nqc_U^l?%h?|3YoAve+Jr0=alH z0UG#m76j2aBi9UKEi>;q9!YpW4KJ-Ln1YjPLXNlpp-)k#x;9yc;QY{FL>x}*x@=;= zEUPzsM2*4af&al!q~}*Es?7RK*H>>?5mQyxZ=Og+e7>_%K+`1S-70a~=lt^aFCBjX zQxl*BHdjyge>B>#d`9z`+?eRr(*qx6Ac~PwyC69ER-nC2nHjUR@iwN6hb5?Aty&` zIhpjM_U10sR-~wxc6a!lYN0;19x^!ig>Gf5<6Vu``Jzr_lKo<yK#y5a~H>NI11r$Em& z2oh#-2MM1~u%R&(#`WF~Ag`y1R~a7Z&`a&B3;bawda%W0{cs%x>(06H(ykdWwj>;Z5dE*2`M)IrD5$pdvRh_Ys8M2pN4Ee+us~-e^*0+|1!0|g%Bl6tjo0$ANe7J51N9ug=ZKBWT z&%8O4vr+x@$O{w*0%d3^Vk~PkPd<@3%P^DUT~I3IKgl5?FL5XXBt3RZPv6mTFCln$ zv(;XI1AIh$S$Qnb`&)pcES^bOXzCNRFKI=^sKn>Be;taaJ;5!U3LchBzA`i6ul`#) zvDJ8$?qC@~p>rPD`=!?AOdcypeJi$zMgsF25rl$ue%LDn=pBNMjgSLdQq&3GlmX=o zT4*bq6Td1W!E;d|1X_)}%C#wrD^D*H#2_Mcg|Aa|D}Nmek5@0Hi<*YbJAPUX6gU=E z+0NUB=$<`KCJMDj?x&)YccUFmeK`%YAYX0$rX0VKnVNVLbfym_45Wa$-)8pg$|y;a zcJm#2DYXuf74^9X$oFCD^qJlN3ofdjkPv?@@Wmv!?`R_j*4)%%GNkQ1U@c0tUPBo@ z!QUTp(u41E@JaVe?1H1iDM@hV*g)dYi1mL@ffCZDtk*9f>8rpb;2%u2mNdsgz*G>| zy~FJvFGQC*wvJnAr6H1OP(Q$g{je;kwG{D-hoUPZsbk>w99hk~pbNenEZfSX3^64)39?dMtoQA6Yn7|XWUV`kd+VH94v&FU?ZTZ9MByup>diHL|qrZ@jq48|t zL%~NEpH~z92p%s?w*B^P)SuK)c&3aFDV(QmLQfs5O2Ha0c1?taU3_CmmPJyTy9`&0 zl#4*?JxkWB6;u5VmO~Av+o$(MlSj*ff)8ZXf5&p%VI-H!3xu@lv~&&SgS%@rjcTtu ztt+uU8A|7&jRT@OM|dFG9(+~Ey+-{78^72Win^!EYYH6$G`+UG)2Ol= z5(E;We+E9Wwbl;_cC)xBvLA=_nY~XLrNZUQ2O>5cu1*p6UR;r7K7)wk9N*n@3YjiO zVe=42U1XPRX^Ujl*b!zKSqVxcA_dZkC5?e4a6!R8^e)T3Te(s`{8|Moj9+y~0L?bM zY$=YdA+<8jRep|)0(QH>N0E^pd5d?VgswSTTN&qK%$WRfdG81f#04nqHkVbSioSq@dhrUUu6@{gYKtD zjm_IEO+C&2BWiu0UY4R;)!m=g)%d!3B zhY!2MC~+I#ip9?OpvHfi798sJ5ylwAo#D!Jv`&EHk#q1DR-NEM!OGM6__l_%z(Q+ zO#AmVr8Ox$`1(!i*{2hfC#Q;gRcq@OjhFe9m8O!c4ZfcFRGia+qH%96$t5rJ4=I3?=0r2=ur34$$=!CGCr4Fzi^4r?1X0=6mmsFk7`G zrRjg;GweJvvn5K3o7Vs@(PY+sCsiNKQvAGgB+6`Gp#?mSDxiMq>g;w zoM3lri1$t2ye05`t51R=p=S_Z3G7Qmq-89aYpM}?xhzOEM7{0y0%NgKmEM9@&yn{>S=HSK%HOaW+EA*Mkr(4H-4G*fz zkqROjqMXb)+zh_kyGtQsK!Rt15?qS>%)4xWocHgd4wQOeL?0!ZIEHU0o7lR zoI3x~>VTc5f2)DGky*Ryfz-i<6(ke8!u{Q=fY1qmh=O{Pfv+o$WEIno3ZL>gZr>bq zxOc%*+V(0#f4FB3I>uOxO-!Wz=r!@u~MZX&o%J)?9gxkytI8*v0s~c~%et zL=lP#p&+t2nP47Rc0+ggQgcBiBr>;Ia~SQ%XXMwxfcW*C66_6+NCJe4xtA~YauEVq zxj^yWENjJbE;jgQ%v$~TkF$Z%ovla`VV`>PELRK^@lP|f){ofyaIm=dG(P_Q9XylK zzVq^?QMeijf@7+RE{t(P2{It2>MJ>eZEFXWINo1XV900+@RKE8B%Rxb0I)$W@2{IMwb{{iB%~QSlSO_hp38Lk1H12dTpv=gLuM}# z7?k#;>U7XiIA^9vcffROBtD*IyU_~^&hIf9*7p9^^ZrKqZO92J(2~jXAc?734r&G~ z(?z{Xki}v5gn0Z5H!9&B5@+Rt1E1TMc$N&nB(H+T9b=k z0AQ0y$d$19m9DO=+16B9-*2yt)2-tJM<-@)rqmYOpMTXDgN|1MuR+e41_NW>!Lv>q z5dZ?Nn%57lOfIDkp3J^k4|D4gs4@r3f(; zGqqjJf7dr$jXsfQ)o4A~fo<5(H3GclNk$0l>&fR8UQrw;q6p`L6#*UuCWp+|W1{FE z1N)A)qO7t$NG4f&O#+7{wq>oIR*t>tO69jb>s}X$n+YQz$I$(^l+Uu|`_Mw;urzcj zw^;#IVlR8tu~`BwpV$#=mvi-~OB2|;CcXaNyW@UnX~95_)8tZy?&_1TF=%=hrk?O{ zQ-Dcc0H63-Wy)C6@BzuP#9u7Xfi8u8KJQiO_LjdTpH7-CNl~w(`o5p{>c5==-fPJ3 zKj;S()V*x`ghR*>S5;(k;vI+tcRvBIL+ka4+N>*Uw6YR5tFvm9En#U)h~Am^MSJ^i z_I0~ksGp8h=uhjat?JA8T3@%7;!~O7A1ltjr=e%Nc-2Q7aMD~-x^}$k)^y!6ZIup+ zoZN-wU0lT0`l>thIGrGwYs>_^>qv}=_51Xe)q}4VmHU6p8lfIE%=9d9U6FUC4Hh%+ zUwqP~ustn_$ zitL$-|NLK#qOL)%9tn6lwB=j-x7wuYklXe$Bkswv`E2?nB;8-Gvw^8Fuitdnt34wC(xYSy1O! zScQKbX~?U9=U)SH(9d5telo4W>e0w^Imp)Ku4_~^TtX@K7%VEW4OJ`bFFo3fJRG5f zH1~dep#!@+2KI`#^7`*~2<3K({IX4mBbHSH@?a|wte{+UeI>VSd6161$Ncq7?>cxd6t*b_<-@J&$^D_Ju3J@Ntt|FcF z>l+P@gH>+C7sZ=39WVRR(rZ&j$7)8qo)AJr(;M~=c0V*DPBqmTdkjG3Bfj_8qckz+ zP32Z`e)tSiAv+@ul?bXmG#mSIazL5=WQAAVCoCSDyC}b!A+F$~YQS+^%Oj%M`8wrWwI+7$Kt;KU<-Fv^TQ(Q+=NADVpn$`!Vwz z--cXuXO$nublg<|Y&Ew~m4Q9iWcssgmVq}Ycb_eS*bKyk!nfl0iJL$%YgMDK1Mvb> z5}2Tc$ju3_C%VFCGIR%U>cn504Ztd3MuP&#*hP@WK#`{-I+r^R`~w2WM>2)d7T`kz z1U6Dc6fMF?l0F)~2TZu;vrRW1SQOw0w#Q#Y;_CZ{r?rLBSDAQ}WV z?EX?uz+4Q@9sGjIG)RGxC_{AiqEPC#yna!u4|%}abqVnMBoY?Q@f71+Fi^NVJIzQ( zzxaz-fo|jmzdKQ(xbwU3jhOT=^Ok;$C_QfIVTmKSRs>q$kZGO1uw-+{_lvh^iRYt% zq9*gG85TuTl+;3UaSbc|t0yoE7h7FBso8}-(oDch>S#g?3nFKeS%TGReCYeq-tm94 z94~dnb{4puUVWa-v{Xq!{(XVWs{%ulRN{aIKs({!(|@d^(H>RNnfk z(KR-o477muu;x45?mSVGB&qo)2qC&2hdFIM<;p4nbwF*fG*OuUbaIe zwb4wDjG5jClm^L)Td~Mo#)C_}22qTmFvAv`#&-GQ5TLzP5yr)ntXRiLGVw(D7^kVO zX-pSX1$M%5G8gIBZ6Recq3L0LNgMzco9s)S<*Hs{DWHy7XY?6J zF#C8!VLfi4Zm3|F#&rOD=c@aQIy~N3IbCkwlYfQa)|i0b$BH;yz_&jvR=Avm;N}gS zd5Jw+_Br{bVnoE*A>J?$J&<@Xn%ze97Q3gw0v-)3@}6{tr?g*>Dy_@*J}6dbRmDwG zw&QA8{_Y=s-*l>g1ggxYU|0eWgeu6{4%I}5+>`P68TE78{?NtN*L z9-oHMh|WjCRI0KI`gbtIRbvaLKOhiI01QQtYlteAJ$gEKoXm~LzTk-eeF%w=cL)K> z_X;?kwNs;y>VDu4E^S~QFU<%hH_6)C`rBcqI;kKdi%*NXQ~=y6@0qyO-o0$Zmyk4Q zq5zqVOU3c}uk+|=rK}o(RN!i&R)a@VtnDv5-W*x*PwK@ks?< zXy)F$W>qRXe_CP5iu(m!s-#KXITpy&ZQiUIsJ@g=uGa>)0j&>P zc5s_A_sR*H`Uo@lm|q?ce>^cg9WFeF)QQ@rZ3F`9Yi~q^LdG;u11ieIxLK`?2q8%M zo37*(HOlSMV)2ri(?wAD_F4>FruKyvaKby_hZcafc3QLM<{v;Tea62kLp_j%U#8vn z;VE|$sII{mNY4EXP)~x)99}_+Z)J|sAGkXHHrM+I?!9O<{7EBN_>+$nGQ9^V%R!YQ z$V!Mp-mnD#Hf2@*JcjUb86^Nm&W$7b^~j--v20vkW=}B2SB;AKKi=z;nC1gCq^ykT zQx)D7Ljdh#{F#SVMnOZO=Q3XX#IK;sFDW1lediZ9_c}SyV0*4l0Qnj?TzvB$ZN7!k zslv@N*8M;{PSIS&wTX+kFZ%Q0$W+IPPKZK;IO|7Wx#TTTlo?Uml%3JQgKElK-~*L# zY%1J<@72QJUOXtiBv1P5FHpGJyR3L~EH3NKxqn%f;NaE;DyOH{Y~VrTna`#?qKNzJ zz&S<=y;b**TlP0-h~mY15ZWxR<Sp3Nmx^2%g-DINA3+oQ#yK*Qy$r((^b9Vy31KeU*ZUMd-DpLZ6+QfQ8cQFdfh% z&=cxcU-t!`9x?-HkGWaWUr9+a#8-IP8gz||MA^}z@M z{+#$T4!Npzol|}jbsU({ufJVr8!&?)*_AK^lcTkI+nn#Ub4G(#w|wyDIu3mU1LIrS zuW18**Pe4LyZc+odf15ZfSGClGxgTxQ``-I^_%q5i3Nqw){3?pM+CdQEAq*TvhI}c^wo7(7 z%bYx~XX&O~by_;+Iqc>X@lu!uLm(N)UbXFU^{}*OadV!*pqowQCtL0?cf;ZSBbC*` z*Zw!L(O(B>O;_ieTpD{t{g&*!%(@Jan}pM}_fM7QDsADmvmC4?_8;@za-r|g;bi~a zfvTV7iWPt)9$|o2>r_feSDn7gL^Ruc9V3RUzk>3%k57nB;;oJgiu)p);BHb?47{vD zE6d;}9-mxz?#HJltLLWKCXYkU^>Wi2`1Bc&Ob%D-K2uDkqGPh+uc1Nb1$0MSIY0X! zsEt4(v`YO?`tiv<{`_$VoZ_GDy-ZxnavUn@Bo@4K5}_f2Vqy*Jer5S#rKntp3`mLb z@$O5*I$gi!{O1NWy;UQe{9T5EKboT+w4ykHCa^GZeHeH{yA&ILIAZslG!rLZb7|&q zyhhNRmGergtt}zZFqxM%cq(Y)WlXqqwZi~^o(j{5xz+%0{IwcFXK@78I>D0H)7x%Z zlrL@cq_WXAYAeZCyGKXa%tTrgf?DBvB!6Bmn2WPVXX zIAr6N$9b%z&C2pYc63f(307l>)?m512FiUsl>IS?Udm8iiXE9jy6xJRH$UeKoPp z2&#=ogTxgxXB5hYlaPbu5(mJ}OygGMKi3NloTfi_&rG*U9Ms7F!W~WCrF1saDB|5= z`R$I&lV%z<>v&*4{5}rk$$xEz3Mc#ifg7o_s?4APts#c|o3`fc?<8o-(5l<}N|sW* z42!pbOtK^o7X+|#>(v&*zM%Su0GfNg*2o}R`M|gc?zr8K=b7((4U?%+0#b{lP|tnG z^EuwrJAU+(55P>=mNFLN!ph39h8k>4*X*huJ{6m)V@bVU;{RoHg7i~D; zo-q#IHCg?=SP+=i8w`y+4Wf|^$a2}fHwrI#1{4`;l0LF4yS_J6LULmQQDZ=LIpRBX zvNa$(G5)fo?%VL!*cWdb%aHrA<5T;z#SPlXD;$NQ9BFnBy{JLjcj)tB2DwLXn~L~V z2cE%qrxw?Z!|utsfX0P2|6n2adXnXRk*7&&!5fG*md=NC$x2_U1du76`9pbdSy#-< zMs~ZvYUa~74F9Ywo_N5rdV%u0wheJA#X2Wj^VXg!#;5Kvb39*m94U}yrJ)*WsgM#r z8C*1Ic&8I%mC<8>m;1!^^0%d-mlnonyw`{&cKRoWyhv9*I#`5v+BBtWKKJ^s;2)Z-RQFRAm;JV_X88y66Z(yG=wV3|sPk#=&6Bg^ z^u-D3-}&$<8k+>e&SP;7BE*tM;=DRUBAq?65;n|4gvMFQ3ZOx+w{H1~XrxW$VSQfl0@yaLBFEB~Vo+t9zqMk72O~hJEAXAPO69*&9i}kSn zJm&_SqR)OG-U3|FVTg5rSWrQgK4;Z{Lje%BBeeMJK4RS6%ziA)P+vqc0li>n&t!97 z<^1mr0iG%t)#rOtYzu&Ay$t_M)qV)uNF4skxjGwP|Lvb9mgGnQ1as0S#7yo;E@p=q zHP3kDrL3zozUQ{K8Q31V|mM2%P%xITG5}mP%}7O zCS??S<`rNAGAAGCg+TFL~zLl6gI(ulBNi`^o@BHCMX%j%s zvsVA4vh)w|eab1*>$+;>Af#H86K5HnnQy!Q5OE|Gwlh(x$l&8ypDk;S(+una@-FTV z%9}^yETrrB+)9WBlxJ3@)hPwq)5 zrjshClCqSsPILcO(_4&+N+SY{Z1$-kld=xagoH>!Y4snqcT7DgccSF=-zOLnp1+gu zC_+$Mm5~a2j)QL}RjC&a34WnphUOEChVbmoX9c8vM<)>fa?cx8HZ+Z!dp(?y6g!E( zS7Iu0U|}e;lTb1uUC;Vl7E;tXOTp1qyJzy<22rfn>TRaWnDu^K)dGRK{FGbFf>SluiKjNvhxUI$A29~TE{a3PV%N8(oRwy4e20%>|2(I!J&Dv zh#&0GL(_5}3B{V^02ZzbyT%fojldmtT9$F@19gD=2)?xH zYs{%)>UH^oW%i1drcRep$9M1PuYi`8we;qGo)^2+ z58yTQxv>ZP{T)2u@~X${ozqw`*(f9aYCON#Hi;m&)2-rP&UVl!=?Zwux=;-fJ z0rV4W5a09$fHpz8XX8c|BF;{(3nsrd#w!8Yr&y+Kx<7u!OWb~c(UyAiaLDg+b%5+l zY0Gak!99JDLnF2)Af28jdl60gNyK^v0W?W^P(`5PGVrw2xjVlnt zpRhF-z1x#4)w+@VG4Y|reXO8*RHBuMvv-B;4b{c$`ewj+NZ`iyof1>* z3;76%oX+FvL1A3iWZJUXGS=Dmj~47y?i!iR&evNX2=U34LFr*H`aciU^0$g{6hgKa zr1?v?&FE9FURq_;9tf*zlJ1UFDE=O|(`>viY5cX#Y6J?lm_x`JAt(hM$1971)r`C# z&&=-&qRH1}V0RNcyUbBr?AI^T&T_b})i3)w7j-)_@5WeuGG3rQ5rxGi5OxvU`m5RW zKo)d0ss~MhApSl*L&91u>no@RpnPoO6!9xGlf!mG!8z7@wM{Tu9A~eCS~Rsp_QN+*LCc6=B;A?1?&{rV1D834^Gf@dCofkHyd*OXx6qg+;-M2Jk3#W6T7y)X~(#`_%KquK1jH`UnR562OCTZ zo5w`r-)jAVqV&Yb<2{ zqZw4^@MjTc{u^2o4j&V-Ep^Vjr-{k;L>Hc_P`sji^&i-RzDi68*+_iryM+Kh?9tLF zb*Lp?SOzG`v-}Y9eF}Wvzg#t`pFtx)>gdS_+<@HNt>qi6ETw#`kN3nR<}O%!d zb(q-f`|o0qXBsvQ=ou#r56#hcmQmVqyJHjds-1-o z%^{XD13UL3GtGy5a3SWAubdp44n|Ym3m?5HbHn)WNcsnULmWokt%8n>tY5%gJ z85vM|8t}2g$x6$*AO95P&N3CBIvvYe;WSY-+7l&Sf#(Codi^#6%`hlXLvi86!g4ZeljJiZF0^^pQS&nO+#6Bz*O3$Hd^Wo*bVcFg0;>h7yHmxB&pJWaqFy4Q}{W)*z~_{zs^`5yqj)IE9!))F#Nk^qG>v z{EB@Tc1lVO~0)G!N&q>_tS>aWbdZ|5e} zqf#5;pj>3(@mc+6_Y+ymN!HL-7L1mk%h1v!t0QOx&RU>O z{|{d6xPh&CDQucS6B8{zSGQ0b*ecEb zl<*WqI7vlf6Pe5(**s+Q4pCO_a`Y4s63x(|q5_4sC#j-^YK(hGUF)h$TCB19MXJT0 tH|>&}HKRMH&UjS*zcw%q!TI_x;3$bkI`CdL5;T5>$V)3rl}ng@{2wtKmWBWT diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png deleted file mode 100644 index 8f66b2a2f52972d0ed7dc3c938a5be878493ca6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31307 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 diff --git a/public/book/albertos04_multiv_contr_system/index.html b/public/book/albertos04_multiv_contr_system/index.html deleted file mode 100644 index c399e14..0000000 --- a/public/book/albertos04_multiv_contr_system/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - Multivariable control systems: an engineering approach - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
Multivariable Control
-
Reference
-
(Albertos & Antonio, 2004)
-
Author(s)
-
Albertos, P., & Antonio, S.
-
Year
-
2004
-
-

Bibliography

-

Albertos, P., & Antonio, S., Multivariable control systems: an engineering approach (2004), : Springer-Verlag.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/du10_model_contr_vibrat_mechan_system/index.html b/public/book/du10_model_contr_vibrat_mechan_system/index.html deleted file mode 100644 index 6485220..0000000 --- a/public/book/du10_model_contr_vibrat_mechan_system/index.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - Modeling and control of vibration in mechanical systems - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/du19_multi_actuat_system_contr/index.html b/public/book/du19_multi_actuat_system_contr/index.html deleted file mode 100644 index d51a5d3..0000000 --- a/public/book/du19_multi_actuat_system_contr/index.html +++ /dev/null @@ -1,601 +0,0 @@ - - - - - - Multi-stage actuation systems and control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

Tags -:

-
-
Reference
-
(Chunling Du & Chee Khiang Pang, 2019)
-
Author(s)
-
Du, C., & Pang, C. K.
-
Year
-
2019
-
-

Mechanical Actuation Systems

-

Introduction

-

When high bandwidth, high position accuracy and long stroke are required simultaneously: dual-stage systems composed of a coarse (or primary) actuator and a fine actuator working together are used.

-

Popular choices for coarse actuator are:

-
    -
  • DC motor
  • -
  • Voice coil motor (VCM)
  • -
  • Permanent magnet stepper motor
  • -
  • Permanent magnet linear synchronous motor
  • -
-

As fine actuators, most of the time piezoelectric actuator are used.

-

In order to overcome fine actuator stringent stroke limitation and increase control bandwidth, three-stage actuation systems are necessary in practical applications.

-

Actuators

-

Primary Actuator

-

Without loss of generality, the VCM actuator is used as the primary actuator. -When current passes through the coil, a force is produced which accelerates the actuator radially. -The produced force is a function of the current \(i_c\): -\[ f_m = k_t i_c \] -where \(k_t\) is a linearized nominal value called the torque constant.

-

The resonance of the actuator is mainly due to the flexibility of the pivot bearing, arm, suspension.

-

Then the bandwidth of the control loop is low and the resonances are not a limiting factor of the control design, the actuator model can be considered as follows: -\[ P_v(s) = \frac{k_{vcm}}{s^2} \]

-

When the bandwidth is high, the actuator resonances have to be considered in the control design since the flexible resonance modes will reduce the system stability and affect the control performance. Then the actuator model becomes -\[ P_v(s) = \frac{k_{vcm}}{s^2} P_r(s) \] -which includes the resonance model -\[ P_r(s) = \Pi_{i=1}^{N} P_{ri}(s) \] -and the resonance \(P_{ri}(s)\) can be represented as one of the following forms

-

\begin{align*} -P_{ri}(s) &= \frac{\omega_i^2}{s^2 + 2 \xi_i \omega_i s + \omega_i^2} \\\
-P_{ri}(s) &= \frac{b_{1i} \omega_i s + b_{0i} \omega_i^2}{s^2 + 2 \xi_i \omega_i s + \omega_i^2} \\\
-P_{ri}(s) &= \frac{b_{2i} s^2 + b_{1i} \omega_i s + b_{0i} \omega_i^2}{s^2 + 2 \xi_i \omega_i s + \omega_i^2} -\end{align*}

-

Secondary Actuators

-

We here consider two types of secondary actuators: the PZT milliactuator (figure 1) and the microactuator.

-

-
- Figure 1: A PZT-actuator suspension
-

Figure 1: A PZT-actuator suspension

-
-
- -

There are three popular types of micro-actuators: electrostatic moving-slider microactuator, PZT slider-driven microactuator and thermal microactuator. -There characteristics are shown on table 1.

-

-
- Table 1: - Performance comparison of microactuators -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Elect.PZTThermal
TF\(\frac{K}{s^2 + 2\xi\omega s + \omega^2}\)\(\frac{K}{s^2 + 2\xi\omega s + \omega^2}\)\(\frac{K}{\tau s + 1}\)
\(\tau\)\(<\SI{0.1}{ms}\)\(<\SI{0.05}{ms}\)\(>\SI{0.1}{ms}\)
\(omega\)\(1-\SI{2}{kHz}\)\(20-\SI{25}{kHz}\)\(>\SI{15}{kHz}\)
-

Single-Stage Actuation Systems

-

A typical closed-loop control system is shown on figure 2, where \(P_v(s)\) and \(C(z)\) represent the actuator system and its controller.

-

-
- Figure 2: Block diagram of a single-stage actuation system
-

Figure 2: Block diagram of a single-stage actuation system

-
-
- -

Dual-Stage Actuation Systems

-

Dual-stage actuation mechanism for the hard disk drives consists of a VCM actuator and a secondary actuator placed between the VCM and the sensor head. -The VCM is used as the primary stage to provide long track seeking but with poor accuracy and slow response time, while the secondary stage actuator is used to provide higher positioning accuracy and faster response but with a stroke limit.

-

-
- Figure 3: Block diagram of dual-stage actuation system
-

Figure 3: Block diagram of dual-stage actuation system

-
-
- -

Three-Stage Actuation Systems

-

Due to the limited allowed stroke of the microactuator, the control bandwidth has to be restricted and that limits the dual-stage disturbance rejection capability.

-

A three-stage actuation system is therefore introduced to further increase the bandwidth.

-

Typically, a VCM actuator is used as the primary actuator, PZT milliactuator as the second stage actuator and a third actuator more collocated is used.

-

High-Precision Positioning Control of Dual-Stage Actuation Systems

-

Introduction

-

The sensitivity function of the closed-loop system has provided a straightforward view of its disturbance rejection capability. -It is demanded that the sensitivity function magnitude in the low-frequency range be sufficiently low, while its hump in high-frequency range stays low enough. -In view of this, the controller design for dual-stage actuation systems adopts a weighting function to shape the sensitivity function.

-

Control Schemes

-

A popular control scheme for dual-stage actuation system is the decoupled structure as shown in figure 4.

-
    -
  • \(C_v(z)\) and \(C_p(z)\) are the controllers respectively, for the primary VCM actuator \(P_v(s)\) and the secondary actuator \(P_p(s)\).
  • -
  • \(\hat{P}_p(z)\) is an approximation of \(P_p\) to estimate \(y_p\).
  • -
  • \(d_1\) and \(d_2\) denote internal disturbances
  • -
  • \(n\) is the measurement noise
  • -
  • \(d_u\) stands for external vibration
  • -
-

-
- Figure 4: Decoupled control structure for the dual-stage actuation system
-

Figure 4: Decoupled control structure for the dual-stage actuation system

-
-
- -

The open-loop transfer function from \(pes\) to \(y\) is -\[ G(z) = P_p(z) C_p(z) + P_v(z) C_v(z) + P_v(z) C_v(z) \hat{P}_p(z) C_p(z) \] -And the overall sensitivity function of the closed loop system from \(r\) to \(pes\) is -\[ S(z) = \frac{1}{1 + G(z)} \] -which is approximately -\[ S(z) = \frac{1}{[1 + P_p(z) C_p(z)] [1 + P_v(z)C_v(z)]} \] -since within a certain bandwidth -\[ \hat{P}_p(z) \approx P_p(z) \]

-

The sensitivity functions of the VCM loop and the secondary actuator loop are

-

\begin{equation} -S_v(z) = \frac{1}{1 + P_v(z) C_v(z)}, \quad S_p(z) = \frac{1}{1 + P_p(z) C_p(z)} -\end{equation}

-

And we obtain that the dual-stage sensitivity function \(S(z)\) is the product of \(S_v(z)\) and \(S_p(z)\). -Thus, the dual-stage system control design can be decoupled into two independent controller designs.

-

Another type of control scheme is the parallel structure as shown in figure 5. -The open-loop transfer function from \(pes\) to \(y\) is -\[ G(z) = P_p(z) C_p(z) + P_v(z) C_v(z) \]

-

The overall sensitivity function of the closed-loop system from \(r\) to \(pes\) is -\[ S(z) = \frac{1}{1 + G(z)} = \frac{1}{1 + P_p(z) C_p(z) + P_v(z) C_v(z)} \]

-

-
- Figure 5: Parallel control structure for the dual-stage actuator system
-

Figure 5: Parallel control structure for the dual-stage actuator system

-
-
- -

Because of the limited displacement range of the secondary actuator, the control efforts for the two actuators should be distributed properly when designing respective controllers to meet the required performance, make the actuators not conflict with each other, as well as prevent the saturation of the secondary actuator.

-

Controller Design Method in the Continuous-Time Domain

-

\(\mathcal{H}_\infty\) loop shaping method is used to design the controllers for the primary and secondary actuators. -The structure of the \(\mathcal{H}_\infty\) loop shaping method is plotted in figure 6 where \(W(s)\) is a weighting function relevant to the designed control system performance such as the sensitivity function.

-

For a plant model \(P(s)\), a controller \(C(s)\) is to be designed such that the closed-loop system is stable and

-

\begin{equation} -\|T_{zw}\|_\infty < 1 -\end{equation}

-

is satisfied, where \(T_{zw}\) is the transfer function from \(w\) to \(z\): \(T_{zw} = S(s) W(s)\).

-

-
- Figure 6: Block diagram for \(\mathcal{H}_\infty\) loop shaping method to design the controller \(C(s)\) with the weighting function \(W(s)\)
-

Figure 6: Block diagram for \(\mathcal{H}_\infty\) loop shaping method to design the controller \(C(s)\) with the weighting function \(W(s)\)

-
-
- -

Equation 1 means that \(S(s)\) can be shaped similarly to the inverse of the chosen weighting function \(W(s)\). -One form of \(W(s)\) is taken as

-

\begin{equation} -W(s) = \frac{\frac{1}{M}s^2 + 2\xi\omega\frac{1}{\sqrt{M}}s + \omega^2}{s^2 + 2\omega\sqrt{\epsilon}s + \omega^2\epsilon} -\end{equation}

-

where \(\omega\) is the desired bandwidth, \(\epsilon\) is used to determine the desired low frequency level of sensitivity magnitude and \(\xi\) is the damping ratio.

-

The controller can then be synthesis using the linear matrix inequality (LMI) approach.

-

The primary and secondary actuator control loops are designed separately for the dual-stage control systems. -But when designing their respective controllers, certain performances are required for the two actuators, so that control efforts for the two actuators are distributed properly and the actuators don’t conflict with each other’s control authority. -As seen in figure 7, the VCM primary actuator open loop has a higher gain at low frequencies, and the secondary actuator open loop has a higher gain in the high-frequency range.

-

-
- Figure 7: Frequency responses of \(G_v(s) = C_v(s)P_v(s)\) (solid line) and \(G_p(s) = C_p(s) P_p(s)\) (dotted line)
-

Figure 7: Frequency responses of \(G_v(s) = C_v(s)P_v(s)\) (solid line) and \(G_p(s) = C_p(s) P_p(s)\) (dotted line)

-
-
- -

The sensitivity functions are shown in figure 8, where the hump of \(S_v\) is arranged within the bandwidth of \(S_p\) and the hump of \(S_p\) is lowered as much as possible. -This needs to decrease the bandwidth of the primary actuator loop and increase the bandwidth of the secondary actuator loop.

-

-
- Figure 8: Frequency response of \(S_v(s)\) and \(S_p(s)\)
-

Figure 8: Frequency response of \(S_v(s)\) and \(S_p(s)\)

-
-
- -

A basic requirement of the dual-stage actuation control system is to make the individual primary and secondary loops stable. -It also required that the primary actuator path has a higher gain than the secondary actuator path at low frequency range and the secondary actuator path has a higher gain than the primary actuator path in high-frequency range. -These can be achieve by choosing appropriate weighting function for the controllers design.

-

Conclusion

-

The controller design has been discussed for high-precision positioning control of the dual-stage actuation systems. -The \(\mathcal{H}_\infty\) loop shaping method has been applied and the design method has been presented. -With the weighting functions, the desired sensitivity function can achieved. -Such a design method can produce robust controllers with more disturbance rejection in the low frequency range and less disturbance amplification in the high-frequency range.

-

Modeling and Control of a Three-Stage Actuation System

-

Introduction

-

In view of the additional bandwidth requirement which is limited by stroke constraint and saturation of secondary actuators, three-stage actuation systems are thereby proposed to meet the demand of a higher bandwidth. -In this section, a specific three-stage actuation system is presented and a controller strategy is proposed, which is based on a decoupled master-slave dual-stage control structure combined with a third stage actuation in parallel format.

-

Actuator and Vibration Modeling

-

A VCM actuator is used as the first-stage actuator denoted by \(P_v(s)\), a PZT milliactuator as the second-stage actuator denoted by \(P_p(s)\), and a thermal microactuator denoted by \(P_m(s)\).

-

Control Strategy and Controller Design

-

Figure 9 shows the control structure for the three-stage actuation system.

-

The control scheme is based on the decoupled master-slave dual-stage control and the third stage microactuator is added in parallel with the dual-stage control system. -The parallel format is advantageous to the overall control bandwidth enhancement, especially for the microactuator having limited stroke which restricts the bandwidth of its own loop. -The reason why the decoupled control structure is adopted here is that its overall sensitivity function is the product of those of the two individual loops, and the VCM and the PTZ controllers can be designed separately.

-

-
- Figure 9: Control system for the three-stage actuation system
-

Figure 9: Control system for the three-stage actuation system

-
-
- -

The open-loop transfer function of the three-stage actuation system is derived as

-

\begin{equation} -G(z) = G_v(z) + G_p(z) + G_v(z) G_p(z) + G_m(z) -\end{equation}

-

with

-

\begin{align*} -G_v(z) &= P_v(z) C_v(z) \\\
-G_p(z) &= P_p(z) C_p(z) \\\
-G_m(z) &= P_m(z) C_m(z) -\end{align*}

-

The overall sensitivity function is given by

-

\begin{equation} -S(z) = \frac{1}{1 + G(z)} -\end{equation}

-

The VCM actuator \(P_v(s)\) works in a low bandwidth below \(\SI{1}{kHz}\). -The PZT actuated milliactuator \(P_p(s)\) works under a reasonably high bandwidth up to \(\SI{3}{kHz}\). -The third-stage actuator \(P_m(s)\) is used to further push the bandwidth as high as possible.

-

The control performances of both the VCM and the PZT actuators are limited by their dominant resonance modes. -The open-loop frequency responses of the three stages are shown on figure 10.

-

-
- Figure 10: Frequency response of the open-loop transfer function
-

Figure 10: Frequency response of the open-loop transfer function

-
-
- -

The obtained sensitivity function is shown on figure 11.

-

-
- Figure 11: Sensitivity function of the VCM single stage, the dual-stage and the three-stage loops
-

Figure 11: Sensitivity function of the VCM single stage, the dual-stage and the three-stage loops

-
-
- -

Performance Evaluation

-

External vibration from the system working environment is much higher than the internal disturbance, especially for ultra-high precision positioning systems. -In the presence of external vibration, the actuators control effort is dominantly determined by the external vibration. -But because the actuator input is constrained, the external vibration level has to be limited. -Otherwise, saturation will occur in the control loop and the control system performance will be degraded.

-

Therefore, the stroke specification of the actuators, especially milliactuator and microactuators, is very important for achievable control performance. -Higher stroke actuators have stronger abilities to make sure that the control performances are not degraded in the presence of external vibrations.

-

For the three-stage control architecture as shown on figure 9, the position error is -\[ e = -S(P_v d_1 + d_2 + d_e) + S n \] -The control signals and positions of the actuators are given by

-

\begin{align*} -u_p &= C_p e,\ y_p = P_p C_p e \\\
-u_m &= C_m e,\ y_m = P_m C_m e \\\
-u_v &= C_v ( 1 + \hat{P}_pC_p ) e,\ y_v = P_v ( u_v + d_1 ) -\end{align*}

-

The controller design for the microactuators with input constraints must take into account both external vibration requirements and actuators’ stroke, based on which an appropriate bandwidth should be decided when designing the control system. -Higher bandwidth/higher level of disturbance generally means high stroke needed.

-

Different Configurations of the Control System

-

A decoupled control structure can be used for the three-stage actuation system (see figure 12).

-

The overall sensitivity function is -\[ S(z) = \approx S_v(z) S_p(z) S_m(z) \] -with \(S_v(z)\) and \(S_p(z)\) are defined in equation 1 and -\[ S_m(z) = \frac{1}{1 + P_m(z) C_m(z)} \]

-

Denote the dual-stage open-loop transfer function as \(G_d\) -\[ G_d(z) = G_v(z) + G_p(z) + G_v(z) G_p(z) \]

-

The open-loop transfer function of the overall system is -\[ G(z) = G_d(z) + G_m(z) + G_d(z) G_m(z) \]

-

-
- Figure 12: Decoupled control structure for the three-stage actuation system
-

Figure 12: Decoupled control structure for the three-stage actuation system

-
-
- -

The control signals and the positions of the three actuators are

-

\begin{align*} -u_p &= C_p(1 + \hat{P}_m C_m) e, \ y_p = P_p u_p \\\
-u_m &= C_m e, \ y_m = P_m M_m e \\\
-u_v &= C_v(1 + \hat{P}_p C_p) (1 + \hat{P}_m C_m) e, \ y_v = P_v u_v -\end{align*}

-

The decoupled configuration makes the low frequency gain much higher, and consequently there is much better rejection capability at low frequency compared to the parallel architecture (see figure 13).

-

-
- Figure 13: Frequency responses of the open-loop transfer functions for the three-stages parallel and decoupled structure
-

Figure 13: Frequency responses of the open-loop transfer functions for the three-stages parallel and decoupled structure

-
-
- -

Conclusion

-

The relationship among the external vibration, the microactuator stroke, and the achievable control bandwidth has been discussed for being considered in the controller design. -The discussion suggests that in addition to the traditional wisdom of just increasing the resonant frequency, adding more stroke to the microactuator will give more freedom to the loop shaping for the control system design.

-

Dual-Stage System Control Considering Secondary Actuator Stroke Limitation

-

Introduction

-

More Freedom Loop Shaping for Microactuator Controller Design

-

Dual-Stage System Control Design for 5 kHz Bandwidth

-

Evaluation with the Consideration of External Vibration and Microactuator Stroke

-

Conclusion

-

Saturation Control for Microactuators in Dual-Stage Actuation Systems

-

Introduction

-

Modeling and Feedback Control

-

Anti-Windup Compensation Design

-

Simulation and Experimental Results

-

Conclusion

-

Time Delay and Sampling Rate Effect on Control Performance of Dual-Stage Actuation Systems

-

Introduction

-

Modeling of Time Delay

-

Dual-Stage Actuation System Modeling with Time Delay for Controller Design

-

Controller Design with Time Delay for the Dual-Stage Actuation Systems

-

Time Delay Effect on Dual-Stage System Control Performance

-

Sampling Rate Effect on Dual-Stage System Control Performance

-

Conclusion

-

PZT Hysteresis Modeling and Compensation

-

Introduction

-

Modeling of Hysteresis

-

PI Model

-

GPI Model

-

Inverse GPI Model

-

Application of GPI Model to a PZT-Actuated Structure

-

Modeling of the Hysteresis in the PZT-Actuated Structure

-

Hysteresis Compensator Design

-

Experimental Verification

-

Conclusion

-

Seeking Control of Dual-Stage Actuation Systems with Trajectory Optimization

-

Introduction

-

Current Profile of VCM Primary Actuator

-

PTOS Method

-

A General Form of VCM Current Profiles

-

Control System Structure for the Dual-Stage Actuation System

-

Design of VCM Current Profile a[sub(v)] and Dual-Stage Reference Trajectory r[sub(d)]

-

Seeking within PZT Milliactuator Stroke

-

Seeking over PZT Milliactuator Stroke

-

Conclusion

-

High-Frequency Vibration Control Using PZT Active Damping

-

Introduction

-

Singular Perturbation Method-Based Controller Design

-

Singular Perturbation Control Topology

-

Identification of Fast Dynamics Using PZT as a Sensor

-

Design of Controllers

-
Fast Subsystem Estimator G[sub(v)][sup(*)]
-
Fast Controller C[sub(v)]
-
Slow Controller C[sub(v)]
-

Simulation and Experimental Results

-
Frequency Responses
-
Time Responses
-

H[sub(2)] Controller Design

-

Design of Csub(d) with H[sub(2)] Method and Notch Filters

-

Design of Mixed H[sub(2)]/H[sub(∞)] Controller Csub(d)

-

Application Results

-

System Modeling

-

H[sub(2)] Active Damping Control

-

Mixed H[sub(2)]/H[sub(∞)] Active Damping Control

-

Experimental Results

-

Conclusion

-

Self-Sensing Actuation of Dual-Stage Systems

-

Introduction

-

Estimation of PZT Secondary Actuator’s Displacement y[sub(p)][sup(*)]

-

Self-Sensing Actuation and Bridge Circuit

-

PZT Displacement Estimation Circuit H[sub(B)]

-

Design of Controllers

-

VCM Controller and Controller C[sub(D)]

-

PZT Controller

-

Performance Evaluation

-

Effectiveness of C[sub(D)]

-

Position Errors

-

Conclusion

-

Modeling and Control of a MEMS Micro X–Y Stage Media Platform

-

Introduction

-

MEMS Micro X–Y Stage

-

Design and Simulation of Micro X–Y Stage

-
Static
-
Dynamic
-

Modeling of Micro X–Y Stage

-

Fabrication of the MEMS Micro X–Y Stage

-

Capacitive Self-Sensing Actuation

-

Design of CSSA Bridge Circuit

-

Experimental Verification

-

Robust Decoupling Controller Design

-

Choice of Pre-Shaping Filters

-

Controller Synthesis

-

Frequency Responses

-

Time Responses

-

Robustness Analysis

-

Conclusion

-

Conclusions

-

Many secondary actuators have been developed in addition to primary actuators in the field of mechanical actuation systems. -The aim is to provide high performance such as high precision and fast response. -Several types of secondary actuators have been introduced such as PZT milliactuator, electrostatic microactuator, PZT microactuator, and thermal microactuator. -Comparison of these secondary actuators has been made, and these secondary actuators have made dual and multi-stage actuation mechanisms possible.

-

Three-stage actuation systems have been proposed for the demand of wider bandwidth, to overcome the limitation by stroke constraint and saturation of secondary actuators. -After the characteristics of the three-stage systems have been developed and the models have been identified, the control strategy and algorithm have been developed to deal with vibrations and meet different requirements. -Particularly, for the three-stage actuation systems, the presented control strategies make it easy to further push the bandwidth and meet the performance requirement. -The control of the thermal microactuator based dual-stage system has been discussed in detail, including linearization and controller design method.

-

The developed advanced algorithms applied in the multi-stage systems include \(\mathcal{H}_\infty\) loop shaping, anti-windup compensation, \(\mathcal{H}_2\) control method, -and mixed \(\mathcal{H}_2/\mathcal{H}_\infty\) control method. -Typical problems of the milli and micro-actuators as the secondary actuators have been considered and appropriate solutions have been presented such as saturation compensation, hysteresis modeling and compensation, stroke limitation, and PZT self-sensing scheme. -Time delay and sampling rate effect on the control performance have been analyzed to help select appropriate sampling rate and design suitable controllers.

-

Specific usage of PZT elements has been produced for system performance improvement. -Using PZT elements as a sensor to deal with high-frequency vibration beyond the bandwidth has been proposed and systematic controller design methods have been developed. -As a more advanced concept, PZT elements being used as actuator and sensor simultaneously has also been addressed in this book with detailed scheme and controller design methodology for effective utilization.

-

Bibliography

-

Du, C., & Pang, C. K., Multi-stage actuation systems and control (2019), Boca Raton, FL: CRC Press.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/ewins00_modal/index.html b/public/book/ewins00_modal/index.html deleted file mode 100644 index f5d8ae2..0000000 --- a/public/book/ewins00_modal/index.html +++ /dev/null @@ -1,3891 +0,0 @@ - - - - - - Modal testing: theory, practice and application - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
System Identification, Reference Books
-
Reference
-
(Ewins, 2000)
-
Author(s)
-
Ewins, D.
-
Year
-
2000
-
-

Overview

-

Introduction to Modal Testing

-

The major objectives of modal testing are:

-
    -
  • Determining the nature and extent of vibration response levels in operation
  • -
  • Verifying theoretical models and predictions of the vibrations
  • -
  • Measurement of the essential materials properties under dynamic loading, such as damping capacity, friction and fatigue endurance
  • -
-

For many applications, vibrations is directly related to performance and it is important that the vibration levels are anticipated and brought under satisfactory control.

-

The two major vibration measurement objectives corresponds to two types of test:

-
    -
  1. Free vibration: responses are measured during operation of the machine
  2. -
  3. Forced vibrations: the structure is vibrated with a known excitation, often out of its normal service environment. This type of testing is generally made under more closely-controlled conditions than the first one, and yields to more accurate information
  4. -
-

Modal Testing means “the processes involved in testing components or structure with the objective of obtaining a mathematical description of their dynamic of vibration behavior”. -The form of “mathematical description” can vary from one application to the other: it can be an estimate of natural frequency and damping factor in one case and a full mass-spring-dashpot model for the next.

-

Applications of modal testing

-

We must remember that no single test or analysis procedure is best for all cases and so it is very important that a clear objective is defined before any industrial test is undertaken so that the optimum methods may be used.

-

The different objectives can be:

-
    -
  1. -

    Measurement of a structure’s vibration properties in order to compare these with a theoretical model (finite element model for instance). -This is usually used to validate a model. What is required for the test are:

    -
      -
    • accurate estimates of natural frequencies
    • -
    • descriptions of the mode shapes
    • -
    -

    At this stage, accurate mode shape data are not essential. It is generally not possible to “predict” the damping in each mode of vibration from a theoretical model.

    -
  2. -
  3. -

    Adjust or correct the theoretical model in order to bring its modal properties closer into line with the measured results. -A correlation technique can be used: the two sets of data are combined, quantitatively, in order to identify specifically the causes of the discrepancies between predicted and measured properties. This however, requires precise description of the mode shapes (the eigenvectors) from the modal analysis.

    -
  4. -
  5. -

    Sub-structuring process: use modal testing in order to produce a mathematical model of a component which may be incorporated into a structural assembly. -Here, as it is a fully quantitative model that is sought, accurate data are required for natural frequencies, modal damping factors and mode shapes. -Also, all modes must be included simultaneously as out-of-range modes will influence the structure’s behavior in a given frequency range of interest for the complete assembly. This application is altogether more demanding than the previous ones.

    -
  6. -
  7. -

    Predicting the effects of modifications to the original structure, as tested. -For this application and the sub-structuring process, one need information about rotational degrees-of-freedom, i.e. moments and rotational displacements. -These are generally ignore in experimental-based studies as they are much more difficult to measure.

    -
  8. -
  9. -

    Force Determination. There are a number of situations where knowledge of the dynamic forces causing vibration is required but where direct measurement of these forces is not practical. -For these cases, one solution is offered by a process whereby measurements of the response caused by the forces are combined with a mathematical description of the transfer functions of the structure in order to deduce the forces. -This process can be very sensitive to the accuracy of the model used, and it is often essential that the model itself be derived from measurements

    -
  10. -
-

Usually, the normal procedure for modal testing is:

-
    -
  1. Measure
  2. -
  3. Analyze the measured data
  4. -
  5. Derive a mathematical model of the structure
  6. -
-

However, there are some cases where this is not the optimum procedure. -The last step is usually taken in order to reduce a vast quantity of actual measurements to a small and efficient data set usually referred to as the “modal model”. -This reduction process has an additional benefit of eliminating small inconsistencies which will inevitably occur in measured data.

-

Philosophy of Modal Testing

-

One of the major requirements to apply modal testing is a thorough integration with an high level of understanding of three components:

-
    -
  1. Theoretical basis of vibration
  2. -
  3. Accurate measurement of vibration
  4. -
  5. Realistic and detailed data analysis
  6. -
-

For instance, there are many features of a frequency response function that can be assessed rapidly understanding some theoretical basis. -This could prevent the wasted effort of analyzing incorrect measurements.

-

Then, for the practical side, there are many choices of test methods: harmonic, random, transient excitation. -The experimenter should be aware of the limitations and implications of the various techniques used in the measurement phases.

-

Next, we consider the analysis stage where the measured data (Frequency Response Functions or FRF) are subjected to a range of curve-fitting procedures in an attempt to find the mathematical model which provides the closest description of the actually-observed behavior. -There are many approached, and one should be aware of the alternatives in order to choose the optimal one.

-

Often, an analysis may be conducted on each measured curve individually. -Then, there is a further step in the process: modeling. -This is the final stage where all the measured and processed data are combined to yield the most compact and efficient mathematical model of the test structure.

-

However, the averaging process is a valid and valuable technique only is provided that the data contain random vibrations. -Data with systematic trends, such as those causes by poor testing practices or non-linearities, should no be averaged in the same way.

-

Summary of Theory

-

It is very important that a clear distinction is made between free vibrations and forced vibration analysis.

-

For the SDOF system, a free vibration analysis yields its natural frequency and damping factor, where a forced response analysis (assuming a harmonic excitation), leads to the definition of the frequency response function. -These two types of results are referred to as modal properties and frequency response characteristics.

-

Next, we consider the more general class of systems which have more than one degree-of-freedom. -For these, it is customary that the spatial properties (the values of the mass, stiffness, and damper elements) be expressed as matrices. -Those used are the mass matrix \(M\), the stiffness matrix \(K\), the viscous damping matrix \(C\) and the structural or hysteretic damping matrix \(D\).

-

There are three phases in the vibration analysis of such systems:

-
    -
  1. -

    Setting up the governing equations of motion, which means determining the elements of the above matrices

    -
  2. -
  3. -

    Free vibration analysis using the equations of motion. -This analysis produces first a set of \(N\) natural frequencies and damping factors, and secondly a matching set of \(N\) “mode shape” vectors, each one of these being associated with a specific natural frequency and damping factor. -The complete free vibration solution is conveniently contained in two matrices \(h^2\) and \(\phi\), which are again referred to as “modal properties”, or sometimes, as the eigenvalue and eigenvector matrices. -One element from the diagonal eigenvalue matrix \(\lambda_r^2\) contains both the natural frequency and the damping factor for the \(r^{\text{th}}\) normal mode of vibration of the system while the corresponding column \(\phi_r\) describes the shape of that same mode of vibration

    -
  4. -
  5. -

    Forced response analysis, and in particular harmonic excitation. -By solving the equations of motion when harmonic forcing is applied, we are able to describe the complete solution by a single matrix, known as the frequency response matrix \(H(\omega)\). -Thus, element \(H_{jk}(\omega)\) represents the harmonic response, \(X_j\) in one of the DOF \(j\) caused by a single harmonic force \(F_k\) applied in the DOF \(k\). -The particular relevance of these specific response characteristics is the fact that they are the quantities which are the most likely to be able to measure in practice. -However, the same expressions can be drastically simplified if we use the modal properties instead of the spatial properties and it is possible to write an expressing for any FRF, \(H_{jk}(\omega)\), which has the general form

    -

    \begin{equation*} -H_{jk}(\omega) = \frac{X_j}{F_k} = \sum_{r=1}^{N}\frac{{}_rA_{jk}}{\lambda_r^2 - \omega^2} \label{eq:frf_modal} -\end{equation*}

    -

    where \(\lambda_r^2\) is the eigenvalue of the \(r^{\text{th}}\) mode, \({}_rA_{jk}\) (the modal constant) is constructed from \(\phi_{jk}\) which is the \(j^{\text{th}}\) element of the \(r^{\text{th}}\) eigenvector \(\phi_r\) and \(N\) is the number of degrees-of-freedom (or modes). -This expression forms the foundation of modal analysis: it shows a direct connection between the modal properties of a system and its response characteristics.

    -
  6. -
-

Thus, we find that by making a thorough study of the theory of structural vibration, we are able to “predict” what we might expect to find if we make FRF measurements on actual hardware. -Indeed, we shall see later how these predictions can be quite detailed, to the point where it is possible to comment on the likely quality of measured data.

-

Summary of measurement methods

-

The main measurement technique studied are those which will permit to make direct measurements of the various FRF properties of the test structure.

-

The type of test best suited to FRF measurement is shown in figure fig:modal_analysis_schematic.

-

-
- Figure 1: Basic components of FRF measurement system
-

Figure 1: Basic components of FRF measurement system

-
-
- -

Essentially, there are three aspect of the measurement process which demand particular attention in order to ensure the acquisition of the high-quality data which are required for the next stage (data analysis). These are:

-
    -
  1. The mechanical aspect of supporting and correctly exciting the structure
  2. -
  3. The correct transduction of the quantities to be measured (force input and motion response)
  4. -
  5. The signal processing which is appropriate to the type of test used
  6. -
-
Mechanical Aspect
-

We here encounter questions as how the testpiece should be suspended, or supported and how it should be excited. -Usually, one of three options is chosen for the support:

-
    -
  • Free or unrestrained: usually means suspended on very soft springs, this has the advantage that free boundaries are easy to simulate
  • -
  • Grounded: requires rigid clamping at certain points
  • -
  • In situ: the testpiece is connected to some structure representing a non-rigid attachment
  • -
-

The mechanics of the excitation are achieve either by connection a vibration generator or shaker, or by using some form of transient input, such as a hammer blow or sudden release from a deformed position. -Both approaches have advantages and disadvantages and it can be very important to choose the best one in each case.

-
Transducers
-

Transducers are very important elements in the system as it is essential that accurate measurements be made of both the input to the structure and of its response. -Nowadays, piezoelectric transducers are widely used to detect both force and acceleration and the major problems associated with them are to ensure that they interfere as little as possible with the test structure and that their performance is adequate for the ranges of frequency and amplitude of the test.

-
Signal Processing
-

The FRF parameters to be measured can be obtained directly by applying an harmonic excitation and then measuring the resulting harmonic response. -This type of test is often referred to as sinewave testing and it requires the attachment of a shaker to the structure. -The frequency range is covered by sweeping the frequency continuously or by step.

-

Alternative excitation procedures are now widely used. -Transient (including burst signals) periodic, pseudo-random or random excitation signals often replace the signal wave approach and are made practical by the existence of complex signal processing analyser which are capable of resolving the frequency content of both input and response signals using Fourier analysis.

-

In modal testing applications of vibrations measurements, accuracy of the measured data is of paramount importance. -This is so because this data are generally to be submitted to a range of analysis procedures, in order to extract the results. -Some of these analysis processes are themselves quite complex and can seldom be regarded as insensitive to the accuracy of the input data.

-

Summary of Modal Analysis Processes

-

The third skill required for modal testing is concerned with the analysis of the measured FRF data. -This is quite separate from the signals processing which may be necessary to convert raw measurements into frequency response.

-

It is a procedure whereby the measured mobilities are analyzed in such a way as to find a theoretical model which most closely resembles the behavior of the actual testpiece. -This process itself falls into two stages:

-
    -
  1. Identify the appropriate type of model
  2. -
  3. Determine the appropriate parameters of the chosen model
  4. -
-

Most of the effort goes into this second stage, which is widely referred to as “modal parameter extraction”, or simply as “modal analysis”.

-

We have seen that we can predict the form of the FRF plots for a multi degree-of-freedom system, and that these are directly related to the modal properties of that system. -The great majority of the modal analysis effort involves curve-fitting an expression such as equation eq:frf_modal to the measured FRF and thereby finding the appropriate modal parameters.

-

A completely general curve-fitting approach is possible but generally inefficient. -Mathematically, we can take an equation of the form -\[ H(\omega) = \sum_{r=1}^N \frac{A_r}{\lambda_r^2 - \omega^2} \] -and curve fit a set of measured values \(H_m(\omega_1), H_m(\omega_2), \dots\) to this expression so that we obtain estimates for the coefficients \(A_1, A_2, \dots, \lambda_1^2, \lambda_2^2, \dots\). -These coefficients are closely related to the modal properties of the system. -However, although such approaches are made, they are inefficient and neither exploit the particular properties of resonant systems nor take due account of the unequal quality of the various measured points in the data set, both of which can have a significant influence on the overall analysis process. -Thus there is no single modal analysis method, but rater a selection, each being the most appropriate in differing conditions.

-

One of the most widespread and useful approaches is known as the single-degree-of-freedom curve-fit, or often as the circle fit procedure. -This method uses the fact that at frequencies close to a natural frequency, the FRF can often be approximated to that of a single degree-of-freedom system plus a constant offset term (which approximately accounts for the existence of other modes). -This assumption allows us to use the circular nature of a modulus/phase polar plot of the frequency response function of a SDOF system (see figure fig:sdof_modulus_phase). -This process can be repeated for each resonance individually until the whole curve has been analyzed. -At this stage, a theoretical regeneration of the FRF is possible using the set of coefficients extracted.

-

-
- Figure 2: Curve fit to resonant FRF data
-

Figure 2: Curve fit to resonant FRF data

-
-
- -

These simple methods can be used for many of the cases encountered in practice but they become inadequate and inaccurate when the structure has mode which are close. -Under these conditions, it becomes necessary to use a more complex process which accepts the simultaneous influence of more than one mode. -These methods are referred to as MDOF curve-fits and are naturally more complicated and require more computation effort but, provided the data are accurate, they have the capability of producing more accurate estimates for the modal properties.

-

Some of more detailed considerations include: compensating for slightly non-linear behavior, simultaneously analyzing more than one FRF and curve-fitting to actual time histories.

-

Review of Test Procedures and Levels

-

The overall objective of the test is to determine a set of modal properties for a structure. -These consist of natural frequencies, damping factors and mode shapes. -The procedure consists of three steps:

-
    -
  1. Measure an appropriate set of mobilities, or FRF
  2. -
  3. Analyze these using appropriate curve-fitting procedures
  4. -
  5. Combine the results of the curve-fits to construct the required model
  6. -
-

Using our knowledge of the theoretical relationship between FRF functions and modal properties, it is possible to show that an “appropriate” set of FRFs to measure consists in most cases of just one row or one column in the FRF matrix \(H(\omega)\). -In practice this either means exciting the structure at one point and measuring responses at all points or measuring the response at one point while the excitation is applied separately at each point in turn. -This last option is most conveniently achieve using a hammer.

-

Even though the same overall procedure is always followed, there will be a different level of detail required for each different application.

-

Theoretical Basis

-

Introduction

-

Theoretical foundations of modal testing are of paramount importance to its successful implementation.

-

The three phases through a typical theoretical vibration analysis progresses are shown on figure fig:vibration_analysis_procedure. -Generally, we start with a description of the structure’s physical characteristics (mass, stiffness and damping properties), this is referred to as the Spatial model.

-

-
- Figure 3: Theoretical route to vibration analysis
-

Figure 3: Theoretical route to vibration analysis

-
-
- -

Then, it is customary to perform a theoretical modal analysis of the spatial model which leads to a description of the structure’s behavior as a set of vibration modes: the modal model.

-
-
-

This model is defined a set of natural frequencies with corresponding modal damping factors and vibration mode shapes. -This solution describes the various ways in which the structure is capable of vibrating naturally (without any external forces or excitations), and so these are called the natural or normal modes of the structure.

-
-

The third stage is generally that in which we have the greatest interest; namely, the analysis of exactly how the structure will respond under given excitation conditions. -It is convenient to present an analysis of the structure’s response to a “standard” excitation (from which the solution for any particular case can be constructed) and to describe this as the response model. -The standard excitation chosen is a unit-amplitude sinusoidal force applied to each point on the structure individually, and at every frequency within a specified range. -Thus our response model will consist of a set of frequency response functions.

-
-
-

As indicated in figure fig:vibration_analysis_procedure, it is also possible to do an analysis in the reverse directly: from a description of the response properties (FRFs), we can deduce modal properties and the spatial properties: this is the experimental route to vibration analysis.

-
-

Single Degree of Freedom System Theory

-

Although very few practical structures could realistically be modeled by a SDOF system, the properties of such a system are very important because those for a more complex MDOF system can always be represented as a linear superposition of a number of SDOF characteristics.

-
-
-

Three classes of system model will be described:

-
    -
  • Undamped
  • -
  • Viscously-damped
  • -
  • Hysteretically (or structurally) damped
  • -
-
-

The basic model for the SDOF system is shown in figure fig:sdof_model where \(f(t)\) and \(x(t)\) are general time-varying force and displacement response quantities. -The spatial model consists of a mass \(m\), a spring \(k\) and (when damped) either a viscous dashpot \(c\) or hysteretic damper \(d\).

-

-
- Figure 4: Single degree-of-freedom system
-

Figure 4: Single degree-of-freedom system

-
-
- -

Undamped Systems

-

The governing equation of motion is

-

\begin{equation} -m \ddot{x} + k = 0 -\end{equation}

-

The trial solution \(x(t) = X e^{i\omega t}\) leads to -\[ k - m \omega^2 = 0 \]

-

Hence the modal model consists of a single solution (mode of vibration) with a natural frequency -\[ \omega_0 = \sqrt{k/m} \]

-

Turning next to a frequency response analysis, we consider an excitation of the form -\[ f(t) = F e^{i\omega t} \] -and assume a solution of the form -\[ x(t) = X e^{i\omega t} \] -where \(F\) and \(X\) are complex. -Now the equation of motion is

-

\begin{equation} -(k - m \omega^2) X e^{i\omega t} = F e^{i\omega t} -\end{equation}

-

from which we extract the required response model in the form of a frequency response function.

-
-
-

\begin{equation} -\alpha(\omega) = \frac{X}{F} = \frac{1}{x - \omega^2 m} \label{eq:receptance} -\end{equation}

-
-

This particular form of FRF, where the response parameter is displacement (as opposed to velocity of acceleration) is called a receptance.

-

Viscous Damping

-

If we add a viscous dashpot \(c\), the equation of motion becomes

-

\begin{equation} -m \ddot{x} + c \dot{x} + k x = 0 -\end{equation}

-

and we must now use a more general trial solution -\[ x(t) = X e^{st} \] -where \(s\) is complex. -We obtain the condition -\[ ms^2 + cs + k = 0 \] -which leads to

-

\begin{align} -s_{1, 2} &= -\frac{c}{2 m} \pm \frac{\sqrt{c^2 - 4 k m}}{2 m} \\\
-&= - \bar{\omega}_0 \xi \pm i \bar{\omega}_0 \sqrt{1 - \xi^2} \nonumber -\end{align}

-

where -\[ \bar{\omega}_0^2 = \frac{k}{m};\quad \xi = \frac{c}{c_0} = \frac{c}{2 \sqrt{km}} \]

-

This implies a modal solution of the form -\[ x(t) = X e^{-\bar{\omega}_0 \xi t} e^{i (\bar{\omega}_0 \sqrt{1 - \xi^2})t} = X e^{-a t} e^{i \omega_0^\prime t} \] -which is a single mode of vibration with a complex natural frequency having two part:

-
    -
  • An imaginary or oscillatory part
  • -
  • A real or decay part
  • -
-

The physical significance of these two parts is illustrated in the typical free response plot shown in figure fig:sdof_response

-

-
- Figure 5: Oscillatory and decay part
-

Figure 5: Oscillatory and decay part

-
-
- -

Lastly, we consider the forced response when \(f(t) = F e^{i\omega t}\) and, as before, we assume \(x(t) = Xe^{i\omega t}\): -\[ \left( -\omega^2 m + i \omega c + k \right) X e^{i\omega t} = F e^{i \omega t} \] -gives a receptance FRF of the form

-
-
-

\begin{equation} -\alpha(\omega) = \frac{1}{(k - \omega^2 m) + i \omega c} -\end{equation}

-

which is now complex, containing both magnitude and phase information:

-

\begin{subequations} -\begin{align} -\frac{|X|}{|F|} &= \frac{1}{\sqrt{(k - \omega^2 m)^2 + (\omega c)^2}} \\\
-\angle{X} - \angle{F} &= \text{tg}^{-1} \left( \frac{\omega c}{k - \omega^2 m} \right) -\end{align} -\end{subequations}

-
-

Structural Damping

-

All structures exhibit a degree of damping due to the hysteresis properties of the material(s) from which they are made.

-

A typical example of this effect is shown in the force displacement plot in figure fig:material_histeresis in which the area contained by the loop represents the energy lost in one cycle of vibration between the extremities shown. -The maximum energy stored corresponds to the elastic energy of the structure at the point of maximum deflection. -The damping effect of such a component can conveniently be defined by the ratio of these two: -\[ \tcmbox{\text{damping capacity} = \frac{\text{energy lost per cycle}}{\text{maximum energy stored}}} \]

-

-
- Table 1: - Force-deflection characteristics -
- - - - - - - - - - - - - - - - - - - - -
Material hysteresis Dry friction Viscous damper
height=2cmheight=2cmheight=2cm
-

Another common source of energy dissipation in practical structures, is the friction which exist in joints between components of the structure. -It may be described very roughly by the simple dry friction model shown in figure fig:dry_friction.

-

The mathematical model of the viscous damper which we have used can be compared with these more physical effects by plotting the corresponding force-displacement diagram for it, and this is shown in figure fig:viscous_damper. -Because the relationship is linear between force and velocity, it is necessary to suppose harmonic motion, at frequency \(\omega\), in order to construct a force-displacement diagram. -The resulting diagram shows the nature of the approximation provided by the viscous damper model and the concept of the effective or equivalent viscous damping coefficient for any of the actual phenomena as being which provides the same energy loss per cycle as the real thing.

-
-
-

The problem which arises with the viscous damping model is that it has a frequency-dependence in the amount of energy loss per cycle whereas the dry friction mechanism is clearly unaffected by the frequency of loading and experiments suggests that the hysteresis effect is similarly independent of frequency. -Thus, we find a problem in obtaining a single equivalent viscous dashpot model which will be valid over a range of frequencies, such as will be necessary to represent the damping of a MDOF system over all, or at least several, of its modes of vibration.

-
-

An alternative theoretical damping model is provided by the hysteretic or structural damper which not only has the advantage that the energy lost per cycle is independent of the frequency, but also provides a much simpler analysis for MDOF systems. -However, it presents difficulties to a rigorous free vibration analysis and its application is generally focused on the forced response analysis. -In this case, we can write an equation of motion: -\[ (-\omega^2 m + k + i d) X e^{i\omega t} = F e^{i \omega t} \]

-
-
-

\begin{equation} -\alpha(\omega) = \frac{1/k}{1 - \left(\omega/\bar{\omega}_0\right)^2 + i \eta} -\end{equation}

-

where \(\eta\) is the structural damping loss factor and replaces the critical damping ratio used for the viscous damping model.

-
-

Presentation and Properties of FRF data for SDOF system

-

Alternative Forms of FRF

-

So far we have defined our receptance frequency response function \(\alpha(\omega)\) as the ratio between a harmonic displacement response and the harmonic force eq:receptance. -This ratio is complex: we can look at its amplitude ratio \(|\alpha(\omega)|\) and its phase angle \(\theta_\alpha(\omega)\).

-

We could have selected the response velocity \(v(t)\) as the output quantity and defined an alternative frequency response function eq:mobility. -Similarly we could use the acceleration parameter so we could define a third FRF parameter eq:inertance.

-
-
-

\begin{equation} -\text{mobility} = Y(\omega) = \frac{V}{F} = i \omega \alpha(\omega) \label{eq:mobility} -\end{equation}

-
-
-
-

\begin{equation} -\text{inertance} = A(\omega) = \frac{A}{F} = - \omega^2 \alpha(\omega) \label{eq:inertance} -\end{equation}

-
-

Table tab:frf_alternatives gives details of all six of the FRF parameters and of the names used for them.

-

Inverse response can also be defined. For instance, the dynamic stiffness is defined as the force over the displacement.

-
-
-

\begin{equation} -\frac{\text{force}}{\text{displacement}} = (k - \omega^2 m) + (i \omega c) \label{eq:dynamic_stiffness} -\end{equation}

-
-

It should be noted that that the use of displacement as the response is greatly encouraged as the other options can lead to confusion when used in MDOF system.

-

-
- Table 2: - Definition of Frequency Response Functions -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Standard FRFInverse FRF: FIR
Disp.ReceptanceDynamic Stiffness
Admittance
Dynamic compliance
Dynamic flexibility
Vel.MobilityMechanical Impedance
Acc.AcceleranceApparent Mass
Inertance
-

Graphical Displays of FRF Data

-

FRF data are complex and thus there are three quantities (frequency and two parts of the complex function) to display. -Any simple plot can only show two of the three quantities and so there are different possibilities available for the presentation of such data:

-
    -
  1. Modulus of FRF vs Frequency and Phase of FRF vs Frequency: the Bode plot
  2. -
  3. Real Part of FRF vs Frequency and Imaginary Part of FRF vs Frequency
  4. -
  5. Real Part of reciprocal FRF vs Frequency and Imaginary part of reciprocal FRF vs Frequency
  6. -
  7. Real part of FRF vs Imaginary part of FRF: the Nyquist plot
  8. -
-
Bode Plot
-

Bode plot are usually displayed using logarithmic scales as shown on figure fig:bode_plots.

-

-
- Table 3: - FRF plots for undamped SDOF system -
- - - - - - - - - - - - - - - - - - - - -
Receptance FRF Mobility FRF Accelerance FRF
width=\linewidthwidth=\linewidthwidth=\linewidth
-

Each plot can be divided into three regimes:

-
    -
  • a low frequency straight line characteristic
  • -
  • a high frequency straight line characteristic
  • -
  • the resonant region with its abrupt magnitude and phase variations
  • -
-
Real part and Imaginary part of FRF
-

Real and imaginary part of a receptance FRF of a damped SDOF system is shown on figure fig:plot_receptance_real_imag. -This type of display is not widely used as we cannot use logarithmic axes (as we have to show positive and negative values).

-

-
- Table 4: - Plot of real and imaginary part for the receptance of a damped SDOF -
- - - - - - - - - - - - - - - - - -
Real part Imaginary part
width=\linewidthwidth=\linewidth
-
Real part and Imaginary part of reciprocal FRF
-

It can be seen from the expression of the inverse receptance eq:dynamic_stiffness that the Real part depends entirely on the mass and stiffness properties while the Imaginary part is a only function of the damping.

-

Figure fig:inverse_frf_mixed shows an example of a plot of a system with a combination of both viscous and structural damping. The imaginary part is a straight line whose slope is given by the viscous damping rate \(c\) and whose intercept at \(\omega = 0\) is provided by the structural damping coefficient \(d\).

-

-
- Table 5: - Inverse FRF plot for the system -
- - - - - - - - - - - - - - - - - -
Mixed Viscous
width=\linewidthwidth=\linewidth
-
Real part vs Imaginary part of FRF
-

Figure fig:nyquist_receptance shows Nyquist type FRF plots of a viscously damped SDOF system. -The missing information (in this case, the frequency) must be added by identifying the values of frequency corresponding to particular points on the curve.

-

-
- Table 6: - Nyquist FRF plots of the mobility for a SDOF system -
- - - - - - - - - - - - - - - - - -
Viscous damping Structural damping
width=\linewidthwidth=\linewidth
-

The Nyquist plot has the particularity of distorting the plot so as to focus on the resonance area. -This makes the Nyquist plot very effective for modal testing applications.

-

Undamped MDOF Systems

-

Free Vibration Solution - The modal Properties

-

For an undamped MDOF system, with \(N\) degrees of freedom, the governing equations of motion can be written in matrix form eq:undamped_mdof.

-
-
-

\begin{equation} -[M] \{\ddot{x}(t)\} + [K] \{x(t)\} = \{f(t)\} \label{eq:undamped_mdof} -\end{equation}

-

where \([M]\) and \([K]\) are \(N\times N\) mass and stiffness matrices, and \(\{x(t)\}\) and \(\{f(t)\}\) are \(N\times 1\) vectors of time-varying displacements and forces.

-
-

We shall consider first the free vibration solution by taking \(f(t) = 0\). -In this case, we assume that a solution exists of the form \(\{x(t)\} = \{X\} e^{i \omega t}\) where \(\{X\}\) is an \(N \times 1\) vector of time-independent amplitudes. -Substitution of this condition into eq:undamped_mdof leads to

-

\begin{equation} -\left( [K] - \omega^2 [M] \right) \{X\} e^{i\omega t} = \{0\} -\end{equation}

-

for which the non trivial solutions are those which satisfy -\[ \det \left| [K] - \omega^2 [M] \right| = 0 \] -from which we can find \(N\) values of \(\omega^2\) corresponding to the undamped system’s natural frequencies.

-

Substituting any of these back into eq:free_eom_mdof yields a corresponding set of relative values for \(\{X\}\): \(\{\psi\}_r\) the so-called mode shape corresponding to that natural frequency.

-
-
-

The complete solution can be expressed in two \(N \times N\) eigen matrices.

-

\[ \begin{bmatrix} -\omega_1^2 & & 0 \\\
-& \ddots & \\\
-0 & & \omega_n^2 -\end{bmatrix}; \quad \Psi = \begin{bmatrix} -& & \\\
-\{\psi_1\} & \dots & \{\psi_n\} \\\
-& & -\end{bmatrix} \]

-

where \(\bar{\omega}_r^2\) is the \(r^\text{th}\) eigenvalue squared and \(\{\psi\}_r\) is a description of the corresponding mode shape

-
-

Various numerical procedures are available which take the system matrices \([M]\) and \([K]\) (the Spatial Model), and convert them to the two eigen matrices \([\bar{\omega}_r^2]\) and \([\Psi]\) which constitute the Modal Model.

-

It is important to realize that whereas the eigenvalue matrix is unique, the eigenvector matrix is not. -Indeed, the natural frequencies are fixed quantities, and the mode shapes are subject to an indeterminate scaling factor.

-

Orthogonality Properties

-
-
-

The modal model possesses some very important properties known as the orthogonality properties:

-

\begin{subequations} -\begin{align} -[\Psi]^T[M][\Psi] &= [m_r]\\\
-[\Psi]^T[K][\Psi] &= [k_r] -\end{align} -\end{subequations}

-

from which \([\bar{\omega}_r^2] = [m_r]^{-1} [k_r]\) where \(m_r\) and \(k_r\) are often referred to as the modal mass and modal stiffness of mode \(r\).

-
-

Now, because the eigenvector matrix is subject to an arbitrary scaling factor, the values of \(m_r\) and \(k_r\) are not unique.

-

Among the many scaling or normalization processes, the mass-normalization has the most relevance.

-
-
-

The mass-mormalized eigenvectors are written as \([\Phi]\) and have the particular property that

-

\begin{subequations} -\begin{align} -[\Phi]^T[M][\Phi] &= [I]\\\
-[\Phi]^T[K][\Phi] &= [\bar{\omega}_r^2] -\end{align} -\end{subequations}

-
-

The relationship between the mass-normalized mode shape for mode \(r\) \(\{\Phi\}_r\) and its more general form \(\{\Psi\}_r\) is simply

-

\begin{equation} -\{\Phi\}_r = \frac{1}{\sqrt{m_r}} \{\Psi\}_r -\end{equation}

- -

The modal mass is based on the mode shape vector for mode \(r\) and the system mass matrix. -As mentioned, there is no unique value for the modal mass as it is directly related to the scaling method which has been used to determine the mode shape eigenvector \(\{\Psi\}_r\). -However, the ratio between any modal stiffness and its associated modal mass is unique and is equal to the corresponding eigenvalue. -The modal mass is generally used to convert the original mode shape vector \(\{\Psi\}_r\) to the more useful mass-normalized mode shape vector \(\{\Phi\}_r\).

-
-
-

Using the mass-normalized mode shape vectors, we can see how to derive quantities which provide us with information about the effective mass (or stiffness) at any point on the structure (any DOF \(j\)). -The effective mass at DOF \(j\) for mode \(r\) is define as -\[ (m_{jj})_r = \frac{1}{(\phi_{jr})^2}, \text{ which as units of mass} \] -and the effective stiffness at DOF \(j\) for mode \(r\) -\[ (k_{jj})_r = \frac{\bar{\omega}_r^2}{(\phi_{jr}^2)} \]

-
-

It can be seen that since the mass-normalized eigenvectors are unique, these effective mass and stiffness properties are also unique and represent a useful description of the behavior of the structure point by point, and mode by mode.

-
-
-

The other quantities which are sometimes referred to as unique properties of each mode are the generalized mass and generalized stiffness. -The generalized mass (or stiffness) of the \(r^{\text{th}}\) mode is defined as the effective mass (or stiffness) at the DOF with the largest amplitude of response. -This quantity serves to provide a comparison of the relative strength of each mode of the structure.

-
-

Repeated Roots or Multiple Modes

-

There are situations where two (or more) different modes will have the same natural frequency. -This occurs frequently in structures which exhibit a degree of symmetry (especially axi-symmetry). -In these cases, there is no guarantee that the corresponding eigenvectors are orthogonal. -However, linear combinations of these vectors can always be found such that orthogonality is observed between the mode shapes. -It should be noted, that free vibration at that frequency is possible not only in each of the two vectors thus defined, but also in a deformation pattern which is given by any linear combination of these two vectors.

-

Force Response Solution - The FRF Characteristics

-

Let’s consider the case where the structure is excited sinusoidally by a set of forces all at the same frequency \(\omega\), but with individual amplitudes and phases: \(\{f(t)\} = \{F\} e^{i\omega t}\).

-

Assuming solutions of the form \(\{x(t)\} = \{X\} e^{i \omega t}\), equation of motion then becomes -\[ \left( [K] - \omega^2 [M] \right) \{X\}e^{i\omega t} = \{F\}e^{i\omega t} \] -That can be written in the following form: -\[ \{X\} = \left( [K] - \omega^2 [M] \right)^{-1} \{F\} \]

-
-
-

We define the \(N \times N\) receptance FRF matrix as -\[ [\alpha(\omega)] = \left( [K] - \omega^2 [M] \right)^{-1} \]

-

It constitutes the Response Model of the system.

-

The general element in the receptance FRF matrix \(\alpha_{jk}(\omega)\) is defined as follows -\[ \alpha_{jk}(\omega) = \frac{X_j}{F_k}, \quad F_m = 0, m = 1 \dots N \neq k \]

-
-

It is possible to determine values for the elements of \([\alpha(\omega)]\) at any frequency of interest by computing the inverse system matrix \([K] - \omega^2[M]\) at each frequency. -This has several disadvantages:

-
    -
  • it becomes costly for large-order systems
  • -
  • it is inefficient if only a few of the individual FRF are required
  • -
  • it provides no insight into the form of the various FRF properties
  • -
-

An alternative means of deriving the FRF parameters is used which makes use of the modal properties instead of the spatial properties. -\[ [K] - \omega^2 [M] = [\alpha(\omega)]^{-1} \] -Pre-multiply both sides by \([\Phi]^T\) and post-multiply both sides by \([\Phi]\) to obtain -\[ [\Phi]^T ([K] - \omega^2 [M]) [\Phi] = [\Phi]^T [\alpha(\omega)]^{-1} [\Phi] \] -which leads to eq:receptance_modal.

-
-
-

\begin{equation} -[\alpha(\omega)] = [\Phi] \left[ \bar{\omega}_r^2 - \omega^2 \right]^{-1} [\Phi]^T \label{eq:receptance_modal} -\end{equation}

-

Equation eq:receptance_modal permits us to compute any individual FRF parameters \(\alpha_{jk}(\omega)\) using the following formula

-

\begin{subequations} -\begin{align} -\alpha_{jk}(\omega) &= \sum_{r=1}^N \frac{\phi_{jr} \phi_{kr}}{\bar{\omega}_r^2 - \omega^2}\\\
-&= \sum_{r=1}^N \frac{\psi_{jr} \psi_{kr}}{m_r (\bar{\omega}_r^2 - \omega^2)}\\\
-&= \sum_{r=1}^N \frac{{}_rA_{jk}}{\bar{\omega}_r^2 - \omega^2} -\end{align} -\end{subequations}

-

where \({}_rA_{jk}\) is called the modal constant.

-
-
-
-

It is clear from equation eq:receptance_modal that the receptance matrix \([\alpha(\omega)]\) is symmetric and this will be recognized as the principle of reciprocity.

-

This principle of reciprocity applies to many structural characteristics.

-

Its implications in this situation are that

-

\begin{equation} -\alpha_{jk} = X_j/F_k = \alpha_{kj} = X_k/F_j \label{eq:principle_reciprocity} -\end{equation}

-
-

MDOF Systems with Proportional Damping

-

General Concept and Features of Proportional Damping

-

The modes of a structure with proportional damping are almost identical to those of the undamped version of the model. -Specifically, the mode shapes are identical and the natural frequencies are very similar.

-

The equations of motion for an MDOF system with viscous damping is

-

\begin{equation} -[M]\{\ddot{x}\} + [C]\{\dot{x}\} + [K]\{x\} = \{f\} -\end{equation}

-

Let’s first study the special case where the damping matrix is directly proportional to the stiffness matrix: -\[ [C] = \beta [K] \] -In this case, we have that -\[ [\Psi]^T [C] [\Psi] = \beta [k_r] = [c_r] \] -where the diagonal elements \(c_{jj}\) represent the modal damping of the various modes of the system. -The fact that this matrix is also diagonal means that the undamped system mode shapes are also those of the damped system, and this is a particular feature of this type of damping.

-

For the forced response analysis, we obtain -\[ [\alpha(\omega)] = [ K + i \omega C - \omega^2 M ]^{-1} \] -or

-

\begin{equation} -\alpha_{jk}(\omega) = \sum_{r=1}^N \frac{\psi_{jr}\psi_{kr}}{(k_r - \omega^2 m_r) + i \omega c_r} -\end{equation}

-

General Forms of Proportional Damping

-

If the damping matrix is proportional to the mass matrix, exactly the same type of result is obtained. -A usual definition of proportional damping is that the damping matrix \([C]\) should be of the form

-

\begin{equation} -\tcmbox{[C] = \beta [K] + \gamma [M]} -\end{equation}

-

In this case, the damped system will have eigenvalues and eigenvectors as follows

-

\begin{align*} -&\omega_r^\prime = \bar{\omega}_r \sqrt{1 - \xi_r^2} ; \quad \xi_r = \frac{\beta \bar{\omega}_r}{2} + \frac{\gamma}{2 \bar{\omega}_r}\\\
-&[\Psi_\text{damped}] = [\Psi_\text{undamped}] -\end{align*}

-

Distributions of damping of this type are sometimes, tough not always, found to be plausible from a practical standpoint. -The actual damping mechanisms are usually to be found in parallel with stiffness elements (for internal material of hysteresis damping) or with mass elements (for friction damping).

-

Identical treatment can be made of an MDOF system with proportional hysteretic damping. -If the general system equations of motion are expressed as -\[ [M]\{\ddot{x}\} + [K + iD]\{x\} = \{f\} \] -and the hysteretic damping matrix \([D]\) has the form

-

\begin{equation} -[D] = \beta [K] + \gamma [M] -\end{equation}

-

then, we find that the mode shapes for the damped system are again identical to those of the undamped system and that the eigenvalues take the complex form: -\[ \lambda_r^2 = \bar{\omega}_r^2 (1 + i \eta_r); \quad \bar{\omega}_r^2 = \frac{k_r}{m_r}; \quad \eta_r = \beta + \frac{\gamma}{\bar{\omega}_r^2} \] -and the general FRF is written as

-

\begin{equation} -\alpha_{jk}(\omega) = \sum_{r=1}^N \frac{\psi_{jr}\psi_{kr}}{(k_r - \omega^2 m_r) + i \eta_r k_r} -\end{equation}

-

MDOF Systems with Structural (Hysteretic) Damping

-

Free Vibration Solution - Complex Modal Properties

-

We start by writing the general equation of motion for an MDOF system with hysteretic damping and harmonic excitation: -\[ [M] \{\ddot{x}\} + [K]\{x\} +i[D]\{x\} = \{F\}e^{i\omega t} \]

-

We consider first the case where there is no excitation and assume a solution of the form -\[ \{x\} = \{X\} e^{i \lambda t} \] -where \(\lambda\) is complex.

-

We then obtain complex eigenvalues and eigenvectors.

-

We choose to write the \(r^\text{th}\) eigenvalue as -\[ \lambda_r^2 = \omega_r^2(1 + i \eta_r) \] -where \(\omega_r\) is the natural frequency and \(\eta_r\) is the damping loss factor for that mode. -The natural frequency \(\omega_r\) is not necessarily equal to the natural frequency of the undamped system \(\bar{\omega}_r\) although they are very close in practice.

-

The eigensolution can be seen to possess the same type of orthogonality properties as those demonstrated earlier for the undamped system: -\[ [\Psi]^T[M][\Psi] = [m_r] ; \quad [\Psi]^T[K + iD][\Psi] = [k_r] \]

-

The modal mass and stiffness parameters are now complex but still obey the relationship -\[ \lambda_r^2 = \frac{k_r}{m_r} \] -and we define the mass-normalized eigenvectors -\[ \{\phi\}_r = \frac{1}{\sqrt{m_r}} \{\psi\}_r \]

-

Forced Response Solution - FRF Characteristics

-

For the forced vibration analysis in the case of harmonic excitation and response, we obtain

-

\begin{equation} -\{X\} = \left( [K] + i[D] - \omega^2[M] \right)^{-1} \{F\} -\end{equation}

-

By multiplying both sides of the equation by the eigenvectors, we can write

-

\begin{equation} -[\alpha(\omega)] = [\Phi] [\lambda_r^2 - \omega^2]^{-1} [\Phi]^T -\end{equation}

-

From this full matrix equation, we have:

-

\begin{align*} -\alpha_{jk}(\omega) &= \sum_{r=1}^N \frac{\phi_{jr} \phi_{kr}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2}\\\
-&= \sum_{r=1}^N \frac{\psi_{jr} \psi_{kr}}{m_r\left(\omega_r^2 - \omega^2 + i \eta_r \omega_r^2\right)}\\\
-&= \sum_{r=1}^N \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2}\\\
-\end{align*}

-

Excitation by a general Force Vector

-
Operating deflection shape (ODS)
-

Having derived an expression for the general term in the frequency response function matrix \(\alpha_{jk}(\omega)\), it is appropriate to consider next the analysis of a situation where the system is excited simultaneously at several points.

-

The general behavior for this case is governed by equation eq:force_response_eom with solution eq:force_response_eom_solution. -However, a more explicit form of the solution is

-

\begin{equation} -\{X\} = \sum_{r=1}^N \frac{\{\phi\}_r^T \{F\} \{\phi\}_r}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} -\end{equation}

-

This equation permits the calculation of one or more individual responses to an excitation of several simultaneous harmonic forces (all of which must have the same frequency but may vary in magnitude and phase). -The resulting vector of responses is sometimes referred to as force vibration mode, or more commonly, as an Operating Deflection Shape (ODS).

-
Pure mode excitation 1 - Damped system normal modes
-

It is possible to choose the vector of individual forces such that the response of the structure is entirely controlled by a single normal mode of the structure.

-
-
-

The normal modes are the characteristic modes of the structure in its actual (damped) state. -While it is possible to talk of the modes “that the structure would have if the damping could be removed”, these are not the “normal” modes of the structures. -The properties of the normal modes of the undamped system are of interest because in most cases of test-analysis comparison, the analytical model will be undamped and so there is a desired to be able to extract the test structures “undamped” modes from the test data in order to do a direct comparison between prediction and measurement.

-
-

We are seeking an excitation vector \(\{F\}\) such that the response \(\{X\}\) consists of a single modal component so that all terms in eq:ods but one is zero. -This can be attained if \(\{F\}\) is chosen such that -\[ \{\phi_r\}^T \{F\}_s = 0, \ r \neq s \]

-
Pure mode excitation 2 - Associated undamped system normal modes
-

We here consider an excitation vector of mono-phased forces. -We basically impose that all forces have the same frequency and phase. -What is of interest in this case it to see that there exist conditions under which it is possible to obtain a similarly mono-phase response.

-

Let the force and response vectors be represented by

-

\begin{align*} -\{f\} &= \{\hat{F}\} e^{i\omega t} \\\
-\{x\} &= \{\hat{X}\} e^{i(\omega t - \theta)} -\end{align*}

-

where both \(\{\hat{F}\}\) and \(\{\hat{X}\}\) are vectors of real quantities. -Substituting these into the equation of motion leads to a complex equation which can be split into real and imaginary parts to give

-

\begin{align*} -\left( (-\omega^2 [M] + [K]) \cos \theta + [D] \sin \theta \right) \{\hat{X}\} &= \{\hat{F}\} \\\
-\left( (-\omega^2 [M] + [K]) \sin \theta - [D] \cos \theta \right) \{\hat{X}\} &= \{0\} -\end{align*}

-

We can show that if we consider that the phase lag between all the forces and all the responses is exactly \(\SI{90}{\degree}\), the equation reduces to -\[ (-\omega^2 [M] + [K])\{\hat{X}\} = 0 \] -which is clearly the equation to be solved to find the undamped system natural frequencies and the mode shapes.

-

Thus we have the important results that it is always possible to find a set of mono-phased forces which will cause a mono-phased set of responses and, moreover, if these two sets are separated by exactly \(\SI{90}{\degree}\), then the frequency at which the system is vibrating is identical to one of its undamped natural frequencies and the displacement shape is the corresponding undamped mode shape.

-

This most important result is the basic for many of the multi-shaker test procedures used to isolate the undamped modes of the structures for comparison with theoretical predictions. -The physics of the technique are quite simple: the force vector is chosen so that it exactly balances all the damping forces.

-
Postscript
-

It is often observed that the analysis for hysteretic damping is less than rigorous when applied to the free vibration situation, as we have done above. -However, it is an admissible model of damping for describing harmonic forced vibration and this is the objective of most of our studies. -Moreover, it is always possible to express each of the receptance expression either as a ratio of two polynomials or as a series of simple terms. -Each of the terms in the series may be identified with one of the modes we have defined in the earlier free vibration analysis for the system. -Thus, whether or not the solution is strictly valid for a free vibration analysis, we can usefully and confidently consider each of the uncoupled terms or modes as being a genuine characteristic of the system. -As will be seen in the next section, the analysis required for the general case of viscous damping, which is more rigorous, is considerably more complicated than that used here which is, in effect, a very simple extension of the undamped case.

-

MDOF systems with Viscous Damping

-

Free vibration solution - Complex modal properties

-

The general equation of motion for an MDOF system with viscous damping is

-

\begin{equation} -[M] \{\ddot{x}\} + [C]\{\dot{x}\} + [K]\{x\} = \{f\} -\end{equation}

-

We first consider the case with no excitation, and consider solutions of the form -\[ \{x\} = \{X\} e^{st} \]

-

Substituting this into the equation of motion gives -\[ \left( s^2 [M] + s[C] + [K] \right) \{X\} = \{0\} \]

-

There are now \(2N\) eigenvalues \(s_r\) (as opposed to \(N\) values of \(\lambda_r^2\) before) but these now occur in complex conjugate pairs. -The eigenvectors also occur as complex conjugates. -The eigensolution can thus be described as -\[ s_r, s_r^*, \quad \{\psi\}_r, \{\psi\}_r^*;\quad r = 1, N \]

-

Each eigenvalue \(s_r\) is expressed in the form -\[ s_r = \omega_r \left( -\xi_r + i\sqrt{1 - \xi_r^2} \right) \] -where \(\omega_r\) is the natural frequency and \(\xi_r\) is the critical damping ratio for that mode.

-

Orthogonality equations can also be derived:

-

\begin{subequations} -\begin{align} -(s_r + s_q) \{\psi\}_q^T [M] \{\psi\}_r + \{\psi\}_q^T [C] \{\psi\}_r &= 0 \\\
-s_r s_q \{\psi\}_q^T [M] \{\psi\}_r - \{\psi\}_q^T [K] \{\psi\}_r &= 0 -\end{align} -\end{subequations}

-

When the modes \(r\) and \(q\) are a complex conjugate pair: -\[ s_r = \omega_r \left( -\xi_r - i\sqrt{1 - \xi_r^2} \right); \quad \{\psi\}_q = \{\psi\}_r^* \]

-

From equations eq:viscous_damping_orthogonality, we can obtain

-

\begin{subequations} -\begin{align} -2 \omega_r \xi_r &= \frac{\{\psi\}_r^H [C] \{\psi\}_r}{\{\psi\}_r^H [M] \{\psi\}_r} = \frac{c_r}{m_r} \\\
-\omega_r^2 &= \frac{\{\psi\}_r^H [K] \{\psi\}_r}{\{\psi\}_r^H [M] \{\psi\}_r} = \frac{k_r}{m_r} -\end{align} -\end{subequations}

-

Forced response solution

-

Assuming a harmonic response \(\{x(t)\} = \{X\} e^{i\omega t}\), we can write the forced response solution directly as -\[ \{X\} = \big( [K] - \omega^2 [M] + i\omega [C] \big)^{-1} \{F\} \] -but this expression is not particularly convenient for numerical applications.

-

We then seek a similar series expansion that was found for the undamped, proportionally-damped and hysteretically damped systems.

-

The obtain result is -\[ \alpha_{jk}(\omega) = \sum_{r=1}^N \frac{({}_rR_{jk}) + i (\omega/\omega_r)({}_rS_{jk})}{\omega_r^2 - \omega^2 + 2 i \omega \omega_r \xi_r} \] -where the coefficients \(R\) and \(S\) are obtained from:

-

\begin{align*} -\{{}_rR_k\} &= 2 \left( \xi_r \text{Re}\{{}_rG_k\} - \text{Im}\{{}_rG_k\} \sqrt{1 - \xi_r^2} \right)\\\
-\{{}_rS_k\} &= 2 \text{Re}\{{}_rG_k\}\\\
-\{{}_rG_k\} &= (\theta_{kr}/a_r) \{\theta\}_r -\end{align*}

-

The main difference with the result obtained with the proportional damping is in the frequency dependence of the numerator in case of viscous damping.

-

Complex Modes

-

Real and Complex modes, stationary and traveling waves

-

We saw that we can obtain complex eigenvalues whose real part represents the decay and imaginary part the oscillatory component. -We can also obtain complex eigenvectors which means that the mode shapes are complex.

-
-
-

A complex mode is one in which each part of the structure has not only its own magnitude of vibration but also its own phase. -As a result, each part of a structure which is vibrating in a complex mode will reach its own maximum deflection at a different instant in the vibration cycle to that of its neighbors.

-
-
-
-

A real mode is one in which the phase angles are all identically \(\SI{0}{\degree}\) or \(\SI{180}{\degree}\) and which there has the property that all parts in the structure do reach their own maxima at the same time. -Equally, in a real mode, all parts of the structure pass through their zero deflection position at the same instant so that there are two moments in each vibration cycle when the structure is completely un-deformed.

-
-

While the real mode has the appearance of a standing wave, the complex mode is better described as exhibiting traveling waves (illustrated on figure fig:real_complex_modes).

-

-
- Figure 6: Real and complex mode shapes displays
-

Figure 6: Real and complex mode shapes displays

-
-
- -

Another method of displaying modal complexity is by plotting the elements of the eigenvector on an Argand diagram, such as the ones shown in figure fig:argand_diagram. -Note that the almost-real mode shape does not necessarily have vector elements with near \(\SI{0}{\degree}\) or near \(\SI{180}{\degree}\) phase, what matters are the relative phases between the different elements.

-

-
- Table 7: - Complex mode shapes plotted on Argand diagrams -
- - - - - - - - - - - - - - - - - - - - -
Almost-real mode Complex Mode Measure of complexity
width=\linewidthwidth=\linewidthwidth=\linewidth
-

Measurement of modal complexity

-

There exist few indicators of the modal complexity. -The first one, a simple and crude one, called MCF1 consists of summing all the phase differences between every combination of two eigenvector elements: -\[ \text{MCF1} = \sum_{j=1}^N \sum_{k=1 \neq j}^N (\theta_{rj} - \theta_{rk}) \]

-

The second measure is shown on figure fig:argand_diagram_c where a polygon is drawn around the extremities of the individual vectors. -The obtained area of this polygon is then compared with the area of the circle which is based on the length of the largest vector element. The resulting ratio is used as an indication of the complexity of the mode, and is defined as MCF2.

-

Origins of complex modes

-

Complex modes occur in practice for variety of physical reasons as well as poor measurement or analysis:

-
    -
  • The types of modes which are referred to as operating deflection shapes will frequently exhibit the relative phases differences between responses of adjacent parts of the structure which indicate a complex mode.
  • -
  • Complex normal modes can exist even in simple structures which contain rotating components that are prone to gyroscopic forces.
  • -
  • However, normal modes of non-rotating linear structures can be complex only if the damping is distributed in a non-proportional way. -This situation can arise quite readily in practice because while the internal (hysteresis) damping of most structural elements is distributed in a way which is essentially proportional to the stiffness distribution, the majority of the damping in real structures is generally found to be concentrated at the joints between components of a structural assembly and this does not usually result in a proportional distribution.
  • -
  • Another ingredient is found to be necessary to generate significant complexity in a structure’s mode and that is the requirement that two or mode of its modes are close. -Close modes are those whose natural frequencies are separated by an amount which is less than the prevailing damping in either or both modes.
  • -
-

Characteristics of MDOF FRF data

-

A note about natural frequencies

-

The basic definition derives from the undamped system’s eigenvalues which yield the frequencies at which free vibration of the system can take place. -These undamped system natural frequencies are given by the square roots of the eigenvalues and are identified by the symbol \(\bar{\omega}_r\). -This occurs in expressions for both free and forced vibration response: -\[ x(t) = \sum_{r=1}^N x_r e^{i\bar{\omega}_r t}; \quad \alpha(\omega) = \sum_{r=1}^N \frac{A_r}{\bar{\omega}_r^2 - \omega^2} \]

-

For damped systems, two alternative characteristics frequency are defined:

-
    -
  • \(\omega_r^\prime\) for free vibration
  • -
  • \(\omega_r\) for forced vibration
  • -
-

The former constitutes the oscillatory part of the free vibration characteristic which, being complex, contains an exponential decay term as well: -\[ x(t) = \sum_{r=1}^N x_r e^{-a_r t} e^{i \omega_r^\prime t} \] -where \(\omega_r^\prime\) may not be identical to \(\bar{\omega}_r\) depending on the type and distribution of the damping.

-

The second definition comes from the general form of the FRF expression: -\[ \alpha(\omega) = \sum_{r=1}^N \frac{C_r}{\omega_r^2 - \omega^2 + i D_r} \] -Here \(C_r\) may be complex whereas \(D_r\) is real. -\(\omega_r\) is in general different to both \(\bar{\omega}_r\) and \(\omega_r^\prime\).

-

Table tab:frf_natural_frequencies summarizes all the different cases.

-

-
- Table 8: - FRF Formulae and Natural Frequencies -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CaseCDFree \(\omega_r^\prime\)Forced \(\omega_r\)
Undamped\(\mathbb{R}\)0\(\bar{\omega}_r\)\(\bar{\omega}_r\)
Prop. Hyst.\(\mathbb{R}\)\(\mathbb{R}\)\(\bar{\omega}_r\)\(\bar{\omega}_r\)
Prop. Visc.\(\mathbb{R}\)\(\mathbb{R}\) (\(\omega\))\(\omega_r\sqrt{1-\xi_r^2}\)\(\bar{\omega}_r\)
Gen. Hyst.\(\mathbb{C}\)\(\mathbb{R}\)\(\omega_r\)\(\omega_r\)
Gen. Visc.\(\mathbb{C}\) (\(\omega\))\(\mathbb{R}\) (\(\omega\))\(\omega_r\sqrt{1-\xi_r^2}\)\(\omega_r\)
-

Mobility and Impedance FRF Parameters

-

As well as for SDOF systems, there are three main forms of FRF: using displacement (receptance), velocity (mobility) or acceleration (inertance) response. -There exist a further three formats for FRF data, these being the inverses of the standard receptance, mobility and inertance: the dynamic stiffness, mechanical impedance and apparent mass, respectively.

-

However, for MDOF systems it is usually not feasible to measure the inverse properties. -In general, we can determine the response of a structure to an excitation using the equation -\[ {\dot{X}} = [Y(\omega)] \{F\} \] -Equally, we can write the inverse equation using impedance instead of mobilities: -\[ \{F\} = [Z(\omega)] \{V\} \]

-

The problem arises because the general element in the mobility matrix \(Y_{ik}(\omega)\) is not simply related to its counterpart in the impedance matrix \(Z_{ik}(\omega)\) as was the case for SDOF systems (\(Y_{ik}(\omega) = Z_{jk}^{-1}(\omega)\)).

-

The reason for this is that -\[ Y_{kj}(\omega) = \left( \frac{V_k}{F_j} \right)_{F_l = 0}; \quad Z_{jk}(\omega) = \left( \frac{F_j}{V_k} \right)_{V_l = 0}; \ l \neq k \]

-

Thus, the measure of impedance property demands that all DOFs expect one are grounded which is almost impossible in practice. -The only types of FRF which we can expect to measure directly are the mobilities.

-

Display for Undamped System FRF data

-
Construction of FRF plots for 2DOF system
-

We can envisage the form which the total FRF curve will take as it is simply the summation of all the individual terms. -However, the exact shape of the curve also depends on the phase of each term. -Then the addition of various components is made to determine the complete receptance expression, the signs of the various terms are obviously of considerable importance.

-

Let’s consider an example with two modes. -We write \(\alpha_{11}\) the point FRF and \(\alpha_{21}\) the transfer FRF:

-

\begin{align*} -\alpha_{11}(\omega) &= \frac{0.5}{\omega_1^2 - \omega^2} + \frac{0.5}{\omega_2^2 - \omega^2} \\\
-\alpha_{21}(\omega) &= \frac{0.5}{\omega_1^2 - \omega^2} - \frac{0.5}{\omega_2^2 - \omega^2} -\end{align*}

-

It can be seen that the only difference between the point and transfer receptance is in the sign of the modal constant of the second mode.

-

Consider the first point mobility (figure fig:mobility_frf_mdof_point), between the two resonances, the two components have opposite signs so that they are substractive rather than additive, and indeed, at the point where they cross, their sum is zero. -On a logarithmic plot, this produces the antiresonance characteristic which reflects that of the resonance.

-

-
- Table 9: - Mobility FRF plot for undamped 2DOF system -
- - - - - - - - - - - - - - - - - -
Point FRF Transfer FRF
width=\linewidthwidth=\linewidth
-

For the plot in figure fig:mobility_frf_mdof_transfer, between the two resonances, the two components have the same sign and they add up, no antiresonance is present.

-
FRF modulus plots for MDOF systems
-

The same principle may be extended to any number of DOF. -The fundamental rule is that if two consecutive modes have the same sign for the modal constants, then there will be an antiresonance at some frequency between the natural frequency of the two modes. -If they have apposite signs, there will not be an antiresonance.

-

Display of FRF Data for Damped systems

-
Bode plots
-

The resonances and antiresonances are blunted by the inclusion of damping, and the phase angles are no longer exactly \(\SI{0}{\degree}\) or \(\SI{180}{\degree}\), but the general appearance of the plot is a natural extension of that for the system without damping. -Figure fig:frf_damped_system shows a plot for the same mobility as appears in figure fig:mobility_frf_mdof_point but here for a system with added damping.

-

Most mobility plots have this general form as long as the modes are relatively well-separated.

-

This condition is satisfied unless the separation between adjacent natural frequencies is of the same order as, or less than, the modal damping factors, in which case it becomes difficult to distinguish the individual modes.

-

-
- Figure 7: Mobility plot of a damped system
-

Figure 7: Mobility plot of a damped system

-
-
- -
Nyquist diagrams
-

Each of the frequency response of a MDOF system in the Nyquist plot is composed of a number of SDOF components.

-

Figure fig:nyquist_point shows the result of plotting the point receptance \(\alpha_{11}\) for the 2DOF system described above.

-

The plot for the transfer receptance \(\alpha_{21}\) is presented in figure fig:nyquist_transfer where it may be seen that the opposing signs of the modal constants of the two modes have caused one of the modal circle to be in the upper half of the complex plane.

-

-
- Table 10: - Nyquist FRF plot for proportionally-damped system -
- - - - - - - - - - - - - - - - - -
Point receptance Transfer receptance
width=\linewidthwidth=\linewidth
-

In the two figures fig:nyquist_nonpropdamp_point and fig:nyquist_nonpropdamp_transfer, we show corresponding data for non-proportional damping. -In this case, a relative phase has been introduced between the first and second elements of the eigenvectors: of \(\SI{30}{\degree}\) in mode 1 and of \(\SI{150}{\degree}\) in mode 2. -Now we find that the individual modal circles are no longer “upright” but are rotated by an amount dictated by the complexity of the modal constants.

-

-
- Table 11: - Nyquist FRF plot for non-proportionally-damped system -
- - - - - - - - - - - - - - - - - -
Point receptance Transfer receptance
width=\linewidthwidth=\linewidth
-

Non-Sinusoidal vibration and FRF properties

-

With receptance and other FRF data, we have a means of computing the response of a MDOF system to an excitation which consists of a set of harmonic forces of different amplitudes and phases but all of the same frequency. -In the general case we can simply write -\[ \{X\} e^{i\omega t} = [\alpha(\omega)] \{F\} e^{i\omega t} \]

-

Periodic vibration

-
Periodic signals as Fourier series
-

Let’s first consider the case of periodic vibration, in which the excitation (and thus the response) is not simply sinusoidal although it has a property of periodicity.

-

The easiest way of computing the responses in such a case is by mean of the Fourier Series.

-

The basic principle of Fourier analysis is that any periodic function can be represented by a series of sinudoids of suitable frequencies, amplitudes and phases based on the fundamental period \(T\):

-

\begin{equation} -\tcmbox{f_0(t) = \sum_{n=1}^\infty {}_0F_n e^{i\omega_n t}; \quad \omega_n = \frac{2 \pi n}{T}} -\end{equation}

-

Once a frequency decomposition of the forcing function has been obtained, we may use the corresponding FRF data, computed at the specific frequencies present in the forcing spectrum, in order to compute the corresponding frequency components of the responses of interest:

-

\begin{equation} -\tcmbox{x_j(t) = \sum_{n=1}^\infty \alpha_{j0}(\omega_n) {}_0F_ne^{i\omega_n t}; \quad \omega_n = \frac{2 \pi n}{T}} -\end{equation}

-
To derive FRF from periodic vibration signals
-

It is possible to determine a system’s FRF properties from excitation and response measurements when the vibration is periodic. -To do this, it is necessary to determine the Fourier Series components of both the input force signal and of the relevant output response signal. -Both these series will contain components at the same set of discrete frequencies; these being integer multiples of \(2\pi/T\).

-

One these two series are available, the FRF can be defined at the same set of frequency points by computing the ratio of the response component to the input component.

-

Transient vibration

-
Analysis via Fourier transform
-

For most transient cases, the input function \(f(t)\) will satisfy the Dirichlet condition and so its Fourier Transform \(F(\omega)\) can be computed from eq:fourier_transform.

-

\begin{equation} -F(\omega) = \frac{1}{2 \pi} \int_{-\infty}^\infty f(t) e^{i\omega t} dt -\end{equation}

-

Now, at any frequency \(\omega\), the corresponding Fourier Transform of the response \(X(\omega)\) can be determined from

-

\begin{equation} -\tcmbox{X(\omega) = H(\omega) F(\omega)} -\end{equation}

-

where \(H(\omega)\) represents the appropriate version of the FRF for the particular input and output parameters considered.

-

We may then derive an expression for the response itself \(x(t)\) from the Inverse Fourier Transform of \(X(\omega)\)

-

\begin{equation} -\tcmbox{x(t) = \int_{-\infty}^\infty \left(H(\omega) F(\omega)\right)e^{i\omega t}d\omega} -\end{equation}

-
Response via time domain
-

This alternative analysis is referred to as convolution and is based on the ability to compute the response of a system to a simple unit impulse.

-

Let consider a unit impulse excitation applied at \(t = t^\prime\) with infinite magnitude and that lasts for an infinitesimal period of time although the area underneath it is equal to unity. -The response of a system to such an excitation at \(t>t^\prime\) is defined as the system’s unit Impulse Response Function (IRF) and has a direct relationship to the Frequency Response Function.

-

The IRF is written has -\[ h(t - t^\prime) \]

-

If we now consider a more general transient excitation, we see that it is possible to represent this as the superposition of several impulses, each of magnitude \(f(t^\prime)dt^\prime\) and occurring at different instants in time. -The response of a system at time \(t\) to just one of these incremental impulses at time \(t^\prime\) is -\[ \delta x (t) = h(t - t^\prime) f(t^\prime) dt^\prime \] -and the total response of the system will be given by superimposing or integrating all the incremental responses as follows -\[ x(t) = \int_{-\infty}^\infty h(t-t^\prime) f(t^\prime) dt^\prime; \quad h(t-t^\prime) = 0, \ t \leq t^\prime \]

-

There is a very close relationship between \(H(\omega)\) and \(h(t - t^\prime)\). -Let’s use the Fourier Transform approach to compute the response of a system to a unit impulse. -Thus, let \(f(t) = \delta(0)\) and determine its Fourier Transform \(F(\omega)\): -\[ F(\omega) = \frac{1}{2 \pi} \int_{-\infty}^\infty \delta(0) e^{i\omega t} dt = \frac{1}{2\pi} \] -Then -\[ x(t) = \frac{1}{2\pi} \int_{-\infty}^{\infty} H(\omega) e^{i\omega t} d\omega \triangleq h(t) \]

-

Thus, we find that the Impulse and Frequency Response Functions constitute a Fourier Transform pair.

-
To derive FRF from transient vibration signals
-

In order to obtain the structure’s FRF properties using a transient vibration test, the calculation of the Fourier transforms of both the excitation and the response signals is required. -Then, the ratio of these two function can be computed

-

\begin{equation} -H(\omega) = \frac{X(\omega)}{F(\omega)} -\end{equation}

-

This can be done provided that the time period of the measurement both excitation and response signals are effectively zero at the start and the end of the sample.

-

Random vibration

-
Random signals in time and frequency domains
-

We here consider both excitation and response described by random processes. -Neither excitation nor response signals can be subjected to a valid Fourier Transform calculation as they violate the Dirichlet condition.

-

It is necessary to introduce the Correlation Function and the Spectral Densities.

-
-
-

The Autocorrelation Function \(R_{ff}(\tau)\) of a random vibration parameter \(f(t)\), is defined as the expected value of the product \(f(t) f(t + \tau)\) computed along the time axis. -This will always be a real and even function of time, and is written

-

\begin{equation} -R_{ff}(\tau) = E[f(t) f(t + \tau)] \label{eq:autocorrelation} -\end{equation}

-
-

This correlation function, unlike the original quantity \(f(t)\) does satisfy the requirements for Fourier transformation and thus we can obtain its Fourier Transform by the usual equation.

-

The resulting parameter we shall call a Spectral Density, in this case the Auto or Power Spectral Density (PSD) \(S_{ff}(\omega)\).

-
-
-

\begin{equation} -S_{ff}(\omega) = \frac{1}{2\pi} \int_{-\infty}^\infty R_{ff}(\tau) e^{-i \omega \tau} d\tau \label{eq:powerspectraldensity} -\end{equation}

-
-

The Spectral Density is a real and even function of frequency, and does in fact provides a description of the frequency composition of the original function \(f(t)\). -It has units of \(f^2/\omega\).

-

Examples of random signals, autocorrelation function and power spectral density are shown on figure fig:random_signals.

-

-
- Table 12: - Random signals -
- - - - - - - - - - - - - - - - - - - - -
Time history Autocorrelation Function Power Spectral Density
width=\linewidthwidth=\linewidthwidth=\linewidth
-

A similar concept can be applied to a pair of functions such as \(f(t)\) and \(x(t)\) to produce cross correlation and cross spectral density functions.

-
-
-

The cross correlation function \(R_{xf}(\tau)\) between functions \(f(t)\) and \(x(t)\) is defined as

-

\begin{equation} -R_{xf}(\tau) = E[x(t) f(t + \tau)] \label{eq:crosscorelation} -\end{equation}

-
-
-
-

The Cross Spectral Density (CSD) is defined as the Fourier Transform of the Cross Correlation function:

-

\begin{equation} -S_{xf}(\omega) = \frac{1}{2\pi} \int_{-\infty}^\infty R_{xf}(\tau) e^{-i \omega \tau} d\tau \label{eq:cross_spectral_density} -\end{equation}

-
-

Cross correlation functions are real, but not always even, functions of time, and cross spectral densities, unlike auto spectral densities, are generally complex functions of frequency with the particular conjugate property that -\[ S_{xf}(\omega) = S_{fx}^*(\omega) \]

-

The analysis to obtain the input/output relationships for systems undergoing random vibrations is based on the general excitation/response relationship in the time domain: -\[ x(t) = \int_{-\infty}^\infty h(t - t^\prime) f(t^\prime) dt^\prime \]

-

Using this property, it is possible to derive an expression for $x(t) and for \(x(t - \tau)\) and thus to calculate the response autocorrelation \(R_{xx}(\tau)\) -\[ R_{xx}(\tau) = E[x(t) x(t + \tau)] \]

-

This equation can be manipulated to describe the response autocorrelation in terms of the corresponding property of the excitation \(R_{ff}\), but the result is complicated. -However, the same equation can be transform to the frequency domain

-

\begin{equation} -\tcmbox{ S_{xx}(\omega) = \left| H(\omega) \right|^2 S_{ff}(\omega) } -\end{equation}

-

Although very convenient, equation eq:psd_input_output does not provide a complete description of the random vibration conditions. -Further, it is clear that is could not be used to determine the FRF from measurement of excitation and response because it contains only the modulus of \(H(\omega)\), the phase information begin omitted from this formula.

-

A second equation is required and this may be obtain by a similar analysis, two alternative formulas can be obtained eq:cross_relation_alternatives.

-
-
-

\begin{subequations} -\begin{align} -S_{fx}(\omega) &= H(\omega) S_{ff}(\omega) \\\
-S_{xx}(\omega) &= H(\omega) S_{xf}(\omega) -\end{align} -\end{subequations}

-
-
To derive FRF from random vibration signals
-

The pair of equations eq:cross_relation_alternatives provides the basic of determining a system’s FRF properties from the measurements and analysis of a random vibration test. -Using either of them, we have a simple formula for determining the FRF from estimates of the relevant spectral densities eq:frf_estimates_spectral_densities.

-
-
-

\begin{subequations} -\begin{align} -H(\omega) &= \frac{S_{fx}(\omega)}{S_{ff}(\omega)} = H_1(\omega)\label{eq:H1} \\\
-H(\omega) &= \frac{S_{xx}(\omega)}{S_{xf}(\omega)} = H_2(\omega)\label{eq:H2} -\end{align} -\end{subequations}

-
-

The existence of two equations presents an opportunity to check the quality of calculations made using measured data.

-
Instrumental variable model for FRF
-

There are difficulties to implement some of the above formulae in practice because of noise and other limitations concerned with the data acquisition and processing.

-

One technique involves three quantities, rather than two, in the definition of the output/input ratio. -The system considered can best be described with reference to figure fig:frf_determination which shows first in fig:frf_siso_model the traditional single-input single-output model upon which the previous formulae are based. -Then in fig:frf_feedback_model is given a more detailed and representative model of the system which is used in a modal test.

-

-
- Table 13: - System for FRF determination -
- - - - - - - - - - - - - - - - - -
Basic SISO model SISO model with feedback
width=\linewidthwidth=\linewidth
-

In this configuration, it can be seen that there are two feedback mechanisms which apply. -We then introduce an alternative formula which is available for the determination of the system FRF from measurements of the input and output quantities eq:H3.

-
-
-

\begin{equation} -H(\omega) = \frac{S_{x^\prime v}(\omega)}{S_{f^\prime v(\omega)}} = H_3(\omega) -\end{equation}

-

where \(v\) is a third signal in the system.

-
-
Derivation of FRF from MIMO data
-

A diagram for the general n-input case is shown in figure fig:frf_mimo.

-

We obtain two alternative formulas:

-

\begin{subequations} -\begin{align} -\left[ H_{xf}(\omega) \right]_{n \times n} &= \left[ S_{x^\prime v}(\omega) \right]_{n \times n} \left[ S_{f^\prime v}(\omega) \right]_{n \times n}^{-1} \\\
-\left[ H_{xf}(\omega) \right]_{n \times n} &= \left[ S_{f^\prime f^\prime}(\omega) \right]_{n \times n}^{-1} \left[ S_{x^\prime f^\prime}(\omega) \right]_{n \times n} -\end{align} -\end{subequations}

-

In practical application of both of these formulae, care must be taken to ensure the non-singularity of the spectral density matrix which is to be inverted, and it is in this respect that the former version may be found to be more reliable.

-

-
- Figure 8: System for FRF determination via MIMO model
-

Figure 8: System for FRF determination via MIMO model

-
-
- -

Complete and Incomplete models

-

Some definitions

-

Most of the preceding theory has been concerned with complete models; that is, the analysis has been presented for an \(N\) degree-of-freedom system with the implicit assumption that all the mass, stiffness and damping properties are known and that all the elements in the eigenmatrices and the FRF matrix are available. -While this is a valid approach for a theoretical study, it is less generally applicable for experimentally-based investigations where it is not usually possible to measure all the DOFs, or to examine all the modes possessed by a structure. -Because of this limitation, it is necessary to extend our analysis to examine the implications of having access to something less than a complete set of data, or model, and this leads us to the concept of a reduced or incomplete type of model.

-
-
-

There are different types of incomplete models:

-
    -
  1. There is the model which is reduced in size (from \(N\) to \(n\)) by simply deleting information about certain degrees-of-freedom. -This process leads to a reduced model which retains full accuracy for the DOFs which are retained, but which looses access to those which have been deleted. -The process can be applied only to the modal and response models and results in a modal model described by an \(N\times N\) eigenvalue matrix but by an eigenvector matrix which is only \(n\times N\). -The corresponding response model is an incomplete FRF matrix of size \(n \times n\), although all the elements of that reduced matrix are themselves fully accurate.
  2. -
  3. Another type of reduced model is one in which the number of modes is reduced as well (from \(N\) to \(m\)), so that the eigenvalue matrix is only \(m \times m\) in size. -A consequence of this is that the elements in the reduced \(n \times n\) FRF matrix in this case are only approximate.
  4. -
  5. Another type of model reduction can be achieved by condensation from \(N\) to \(n\) DOFs. -This is a process in which a number of DOFs are again eliminated from the complete description but an attempt is made to include the effects of the masses and stiffnesses which are thereby eliminated in the retained DOFs. -This is the condensation process which is applied in the Guyan and other reduction techniques used to contain the size of otherwise very large finite element models. -In such a condensed model, the spatial, modal and response models are all reduced to \(n \times n\) matrices, and it must be noted that the properties of each are approximate in every respect.
  6. -
-
-

Incomplete Response models

-

There are two ways in which a model can be incomplete: by the omission of some modes, and/or by the omission of some degrees-of-freedom.

-
Omission of some DOFs
-

Consider first the complete FRF matrix which is \(N \times N\): -\[ \left[ H(\omega) \right]_{N \times N} \] -and then suppose that we decide to limit our description of the system to include certain DOFs only. -Our reduced response model is now -\[ \left[ H^R(\omega) \right]_{n \times n} \]

-

Now it is clear that we have not altered the basic system, and it still has the same number of degrees-of-freedom even though we have foregone our ability to describe the system’s behavior at all of them. -In this case, the elements which remain in the reduced FRF matrix are identical to the corresponding elements in the full \(N \times N\) matrix.

-

At this point, it is appropriate to mention the consequences of this type of reduction on the impedance type of FRF data. -The impedance matrix which corresponds to the reduced model defined by \([H^R]\) will be denoted as \([Z^R]\) and it is clear that -\[ [Z^R(\omega)] = [H^R(\omega)]^{-1} \]

-

It is also clear that the elements in the reduced impedance matrix such as \(Z_{jk}^R\) are not the same quantities as the corresponding elements in the full impedance matrix, and indeed, a completely different impedance matrix applied to each specific reduction: -\[ H_{ij}^R(\omega) = H_{ij}(\omega); \quad Z_{ij}(\omega) \neq Z_{ij}(\omega) \]

-

We can also consider the implications of this form of reduction on the other types of model, namely the modal model and the spatial model. -For the modal model, elimination of the data pertaining to some of the DOFs results in a smaller eigenvector matrix, which then becomes rectangular of order \(n \times N\). -The corresponding eigenvalue matrix is still \(N \times N\) because we still have all \(N\) modes included.

-

For the spatial model, it is more difficult to effect a reduction of this type. -It is clearly not realistic simply to remove the rows and columns corresponding to eliminated DOFs from the mass and stiffness matrices as this would represent a drastic change to the system. -It is possible, however, to reduce these spatial matrices by a number of methods which have the effect of redistributing the mass and stiffness properties which relate to the redundant DOFs among those which are retained. -In this way, the total mass of the structure, and its correct-stiffness properties can be largely retained. -The Guyan reduction procedure is perhaps the best known of this type. -Such reduced spatial properties will be denoted as -\[ \left[M^R\right], \ \left[K^R\right] \]

-
Omission of some modes
-

Let’s consider the other form of reduction in which only \(m\) of the \(N\) modes of the system are included. -Frequently, this is a necessary approach in that many of the high-frequency modes will be of little interest and almost certainly very difficult to measure. -Consider first the FRF matrix and include initially all the DOFs but suppose that each element in the matrix is computed using only \(m\) of the \(N\) terms in the summation -\[ \tilde{H}_{jk}(\omega) = \sum_{r=1}^{m\leq N} \frac{{{}_rA_{jk}}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} \] -In full, we can write the FRF matrix as -\[ \left[\tilde{H}(\omega)\right]_{N\times N} = \left[\Phi\right]_{N \times m} \left[\lambda_r^2 - \omega^2\right]_{m \times m}^{-1} \left[\Phi\right]_{m \times N}^T \]

-
Combination of both reduction
-

Of course, both types of reduction can be combined, the resulting matrix obtained would be -\[ \left[ \hat{H}^R(\omega) \right]_{n \times n} \] -However, \([\hat{H}^R(\omega)]\) will in general be rank deficient, and thus is will not be possible to obtain the impedance matrix by numerical inversion. -In order to overcome this problem, it is often convenient to add a constant or residual term to each FRF: -\[ [H(\omega)] = [\hat{H}(\omega)] + [R] \]

-

Incomplete modal and spatial models

-

It has been shown that the orthogonality properties of the modal model provide a direct link between the modal and the spatial model: -\[ [\Phi]^T [M] [\Phi] = [I]; \quad [\Phi]^T [K] [\Phi] = [\omega_r^2] \] -Which can be inverted to yield

-

\begin{subequations} -\begin{align} -[M] &= [\Phi]^{-T}[\Phi]^{-1}\\\
-[K] &= [\Phi]^{-T}[\omega_r^2][\Phi]^{-1} -\end{align} -\end{subequations}

-

If the modal model is incomplete, then we can note the implications for the orthogonality properties.

-

First, if we have a modal incompleteness (\(m<N\) modes included), then we can write:

-

\begin{subequations} -\begin{align} -[\Phi]_{m\times N}^T [M] [\Phi]_{N\times m} &= [I]_{m\times m}\\\
-[\Phi]_{m\times N}^T [K] [\phi]_{N\times m} &= [\omega_r^2]_{m\times m} -\end{align} -\end{subequations}

-

However, if we have spatial incompleteness (only \(n<N\) DOFs included), then we cannot express any orthogonality properties at all because the eigenvector matrix is not commutable with the system mass and stiffness matrices.

-

In both reduced-model cases, it is not possible to use equation eq:spatial_model_from_modal to re-construct the system mass and stiffness matrices. -First of all because the eigen matrices are generally singular and even if it is not, the obtained mass and stiffness matrices produced have no physical significance and should not be used.

-

Sensitivity of models

-

Introduction

-
-
-

The sensitivity of a model describe the rates of change of some of the key properties, such as the natural frequencies and mode shapes, with small changes in some of the modal parameters, such as individual masses of stiffnesses.

-
-

The model sensitivities are required for various purposes:

-
    -
  • they help to locate errors in models
  • -
  • the are useful in guiding design optimization procedures
  • -
  • they are used in the course of curve-fitting for the purposes of testing the reliability of the modal analysis processes
  • -
- -

The most commonly used sensitivities are those which describe the rates of change of the modal parameters with the individual mass and stiffness elements in the spatial model. -These quantities are defined as follows: -\[ \frac{\partial \omega_r}{\partial p} \text{ and } \frac{\partial \{\phi\}_r}{\partial p} \] -where \(p\) represents any variable of interest

-
SDOF system
-

It is useful to approach the general expressions for these parameters via a simple example based on an undamped SDOF system. -We can introduce the concept of sensitivity through the basic SDOF system comprising mass \(m\) and spring \(k\). -We can define the basic sensitivities of the system’s natural frequency \(\omega_0\): -\[ \frac{\partial \omega_0}{\partial m} \text{ and } \frac{\partial \omega_0}{\partial k} \]

-

We can show that: -\[ \frac{\partial \omega_0^2}{\partial m} = \frac{-\sqrt{k}}{m^2} ; \quad \frac{\partial \omega_0}{\partial k} = \frac{1}{2 \sqrt{km}} \]

-
MDOF systems - eigenvalue sensitivity
-

We can differentiate the following equation of motion of a MDOF system with respect to an arbitrary variable \(p\) that might be an individual mass \(m_i\) of stiffness \(k_j\). -\[ \left( [K] - \omega_r^2 [M] \right) \{\phi\}_r = \{0\} \]

-

We then obtain -\[ \frac{\partial \omega_r^2}{\partial p} = \{\phi\}_r^T \left( \frac{\partial [K]}{\partial p} - \omega_r^2 \frac{\partial [M]}{\partial p} \right) \{\phi\}_r \]

-
MDOF systems - eigenvector sensitivity
-

A similar analysis can be made for the eigenvector sensitivity terms.

-

FRF sensitivities

-

It may be seen it is also possible to derive FRF sensitivities.

-

If we consider first the simple SDOF system with a receptance FRF \(\alpha(\omega)\) -\[ \alpha(\omega) = \frac{1}{k + i \omega c - \omega^2 m} \] -We can differentiate this with respect to \(m\) and \(k\).

-

The same can be done with the more general case for \(MDOF\) system as follows: -\[ \frac{\partial [\alpha(\omega)]}{\partial p} = [\alpha(\omega)] \left( \frac{\partial [K]}{\partial p} + i \omega \frac{\partial [C]}{\partial p} - \omega^2\frac{\partial [M]}{\partial p} \right) [\alpha(\omega)] \]

- -

There exists the possibility of deriving certain sensitivity parameters directly from FRF data such as can be measured in a modal test. -Essentially, it is possible to derive expressions for the eigenvalue sensitivities to selected individual mass and stiffness parameters by analyzing the point FRF properties at the selected DOFs.

-

FRF Measurement Techniques

-

Introduction and Test Planning

-

Introduction

-

There are two types of vibration measurement:

-
    -
  • those in which just the response level is measured
  • -
  • those in which both input and response output parameters are measured
  • -
-

Recalling the basic relationship: -\[ \tcmbox{ \text{response} = \text{properties} \times \text{input} } \]

-

We can see that only when two of the three terms in this equation have been measured, we can defined completely what is going on in the vibration of the test object. -If we measure only the response, then we are unable to say whether a particularly large response level is due to a strong excitation or to a resonance of the structure.

-

For the second type of vibration measurement, both the excitation and the response are measured simultaneously so that basic equation can be used to deduce the system properties.

-

Our interest will first be on the mobility measurements or FRF measurements where the excitation is applied at a single point. -In that case, FRF data are directly obtained by “dividing” the measured responses by the measured excitation force.

-

Responses obtained using several simultaneous excitations yield Operation Deflection Shapes (ODSs) from which it is necessary to extract the required FRF data by sometimes complicated analysis procedures. -These are referred to as MIMO tests.

-

Test Planning

-

It is clear that there will need to be an extensive test planning phase before full-scale measurements are made an decisions taken concerning the methods of excitation, signal processing and data analysis, as well as the proper selection of which data to measure, where to excite the structure and how to prepare and support it for those measurements.

-

Checking the quality of the measured data

-
Signal Quality
-

It is sometimes found that the dynamic range of the measured quantities is extreme, especially when the frequency range being covered is wide. -What often happens is that there is a very large component of signal in one frequency range that dictates the gain settings on amplifiers and analysers such that lower-level components are difficult to measure accurately.

-
Signal fidelity
-

This arise when the signals obtained do not truly represent the quantity which is to be measured. -For example, large motion perpendicular to the measurement axis can contaminate the measurement and gives misleading indications.

-

One should verify that the labeling and the connection of transducers are correct. -This can be check by looking at the pattern of resonances visible on the FRF curves:

-
    -
  • for excitation and response at the same DOF, resonances and anti-resonances must alternate
  • -
  • excitation and response points which are well separated on the test structure will tend to possess fewer anti-resonances
  • -
-
Measurement repeatability
-

One essential check for any modal test is the repeatability of the measurements. -Certain FRF should be re-measured from time to time, just to check that neither the structure nor the measurement system have experienced any significant changes.

-
Measurement reliability
-

We here seek to establish that the measured data are independent of the measuring system. -One should measure the same quantity (usually an FRF) with a slightly different setup, or procedure such as a different excitation signal. -These checks are very important to demonstrate the underlying validity of the measurement method being used.

-
Measured data consistency, including reciprocity
-

The various FRF data measured on a given structure should exhibit consistency, by which is meant that the underlying natural frequencies, damping factors and mode shapes visible in the FRF data must all derive from a common modal model.

-

The reciprocity expected to exist between FRFs such as \(H_{jk}\) and \(H_{kj}\) should be checked and found to be at an acceptable level.

-

Basic Measurement System

-

The experimental setup used for mobility measurement contains three major items:

-
    -
  1. An excitation mechanism. This contains a source for the excitation signal (sinusoidal, periodic, random, transient), a power amplifier and a exciter (usually a shaker or an hammer)
  2. -
  3. A transduction system. For the most part, piezoelectric transducer are used, although lasers and strain gauges are convenient because of their minimal interference with the test object. Conditioning amplifiers are used depending of the transducer used
  4. -
  5. An analyzer
  6. -
-

A typical layout for the measurement system is shown on figure fig:general_frf_measurement_setup.

-

-
- Figure 9: General layout of FRF measurement system
-

Figure 9: General layout of FRF measurement system

-
-
- -

Structure preparation

-
Free supports
-

By “free” is meant that the test object is not attached to ground at any of its coordinates and is, in effect, freely suspended in space. -In this condition, the structure will exhibit rigid body modes which are determined solely by its mass and inertia properties and in which there is no bending or flexing at all. -Six rigid body modes are then obtained with a natural frequency of \(\SI{0}{Hz}\). -Mass and inertial properties can then be measured with such a support.

-

However, in practice it is not feasible to provide a truly free support. -Approximate to the free condition can be achieved by supporting the testpiece on very soft springs such that the frequency of the rigid body mode are less than \(\SI{10}{%}\) of that of the lowest resonance frequency.

-
Grounded supports
-

The other type of support is referred to as “grounded” because it attempts to fix selected points on the structure to ground. -In practice, it is very difficult to attach the test structure to a base structure which is sufficiently rigid to provide the necessary grounding.

-

The safest procedure is to measure the mobility FRF of the base structure itself over the frequency range for the test and to establish that this is a much lower mobility than the corresponding levels for the test structure at the point of attachment. -If this condition is satisfied for all the coordinates to be grounded, then the base structure can reasonably be assumed to be grounded.

-
Loaded boundaries
-

A compromise procedure can be applied in which the test object is connected at certain coordinates to another simple component of known mobility, such as a specific mass. -The effects of the added component is then removed analytically.

-

Excitation of the structure

-

Devices for exciting the structure can be divided into two type:

-
    -
  • Contacting: these involves the connection of an exciter of some form which remains attached to the structure throughout the test.
  • -
  • Non-contacting: devices which are either out of contact throughout the vibration (such as provided by a voice coil) or which are only in contact for a short period (such as a hammer)
  • -
-

Exciters are often limited at very low frequencies by the stroke rather than by the force generated.

-

Electromagnetic Exciters

-

The most common type of exciter is the electromagnetic shaker in which a magnetic force is applied is applied on the structure without any physical contact.

-

The frequency and amplitude of the excitation are controlled independently of each other, which gives flexibility.

-

However, we need a direct measurement of the force applied to the structure (we cannot rely on the current going through the coil).

-

The shakers are usually stiff in the orthogonal directions to the excitation. -This can modify the response of the system in those directions. -In order to avoid that, a drive rod which is stiff in one direction and flexible in the other five directions is attached between the shaker and the structure as shown on figure fig:shaker_rod. -Typical size for the rod are \(5\) to \(\SI{10}{mm}\) long and \(\SI{1}{mm}\) in diameter, if the rod is longer, it may introduce the effect of its own resonances.

-

-
- Figure 10: Exciter attachment and drive rod assembly
-

Figure 10: Exciter attachment and drive rod assembly

-
-
- -

The support of shaker is also of primary importance.

-

The setup shown on figure fig:shaker_mount_1 presents the most satisfactory arrangement in which the shaker is fixed to ground while the test structure is supported by a soft spring.

-

Figure fig:shaker_mount_2 shows an alternative configuration in which the shaker itself is supported. -It may be necessary to add an additional inertia mass to the shaker in order to generate sufficient excitation forces at low frequencies.

-

Figure fig:shaker_mount_3 shows an unsatisfactory setup. Indeed, the response measured at \(A\) would not be due solely to force applied at \(B\), but would also be caused by the forces applied at \(C\).

-

-
- Table 14: - Various mounting arrangement of exciter -
- - - - - - - - - - - - - - - - - - - - -
Ideal Configuration Suspended Configuration Unsatisfactory
width=\linewidthwidth=\linewidthwidth=\linewidth
-

Hammer or Impactor Excitation

-

Although this type of test places greater demands on the analysis phase of the measurement process, it is a relatively simple means of exciting the structure.

-

A set of different tips and heads are used to extend the frequency and force level ranges for testing a variety of different structure. -A load cell (or force transducer) which detects the magnitude of the force felt by the impactor is included.

-

The magnitude of the impact is determined by the mass of the hammer head and its velocity when it hits the structure.

-

The frequency range which is effectively excited is controlled by the stiffness of the contacting surface and the mass of the impactor head: there is a resonance at a frequency given by \(\sqrt{\frac{\text{contact stiffness}}{\text{impactor mass}}}\) above which it is difficult to deliver energy into the test structure.

-

When the hammer tip impacts the test structure, this will experience a force pulse as shown on figure fig:hammer_impulse. -A pulse of this type (half-sine shape) has a frequency content of the form illustrated on figure fig:hammer_impulse.

-

-
- Figure 11: Typical impact force pulse and spectrum
-

Figure 11: Typical impact force pulse and spectrum

-
-
- -

The stiffer the materials, the shorter will be the duration of the pulse and the higher will be the frequency range covered by the impact. -Similarly, the lighter the impactor mass, the higher the effective frequency range.

-

Generally, as soft a tip as possible will be used in order to inject all the input energy into the frequency range of interest: using a stiffer tip than necessary will result in energy being input to vibrations outside the range of interest at the expense of those inside of that range.

-

One of the difficulties of applying excitation using a hammer is ensuring that each impact is essentially the same as the previous ones, not much in magnitude as in position and orientation relative to the normal of the surface.

-

Transducers and Amplifiers

-

The piezoelectric type of transducer is by far the most popular and widely used transducer in modal tests.

-

Three types of piezoelectric transducers are available for mobility measurements:

-
    -
  • Force gauges
  • -
  • Accelerometers
  • -
  • Impedance heads: simply a combination of force and acceleration sensitive elements in a single unit
  • -
-

The basic principle of operation makes use of the fact that an element of piezoelectric material generates an electric charge across its end faces when subjected to a mechanical stress. -By suitable design, such a material may be incorporated into a device which induces in it a stress proportional to the physical quantity to be measured.

-

Force Transducers

-

The force transducer is the simplest type of piezoelectric transducer. -The transmitter force \(F\) is applied directly across the crystal, which thus generates a corresponding charge \(q\), proportional to \(F\) (figure fig:piezo_force_transducer).

-

-
- Figure 12: Force transducer
-

Figure 12: Force transducer

-
-
- -

There exists an undesirable possibility of a cross sensitivity, i.e. an electrical output when there is zero force \(F\) but, say, a transverse or shear loading.

-

Accelerometers

-

In an accelerometer, transduction is indirect and is achieved using a seismic mass (figure fig:piezo_accelerometer). -In this configuration, the force exerted on the crystals is the inertia force of the seismic mass (\(m\ddot{z}\)). -Thus, so long as the body and the seismic mass move together, the output of the transducer will be proportional to the acceleration of its body \(x\).

-

-
- Figure 13: Compression-type of piezoelectric accelerometer
-

Figure 13: Compression-type of piezoelectric accelerometer

-
-
- -

Analysis of a simple dynamical model for this device shows that the ratio \(\ddot{x}/\ddot{z}\) is effectively unity over a wide range of frequency from zero upwards until the first resonant frequency of the transducer.

-

There is also a problem of cross or transverse sensitivity of accelerometers which can result from imperfections in the crystal geometry and from interaction through the casing.

-

Selection of accelerometers

-

Accelerometer sensitivities vary between \(1\) and \(\SI{10000}{pC/g}\). -In general, we require as high a sensitivity as possible, however, the heavier the transducer, the lower is the transducer’s resonant frequency and thus the maximum working frequency. -For accurate measurements, especially on complex structures which are liable to vibrate simultaneously in several directions, transducers with low transverse sensitivity (less than \(\SI{1}{%}\)) should be selected.

-

Conditioning Amplifiers

-

One of the advantages of the piezoelectric transducer is that it is an active device and does not require a power supply in order to function. -However, this means that it cannot measure truly static quantities and so there is a low frequency limit below which measurements are not practical. -This limit is usually determined not simply by the properties of the transducer itself, but also by those of the amplifiers used to boost the small electric charge that is generated by the crystals.

-

Two types of amplifier are available for this role that both have very high input impedance:

-
    -
  • Voltage amplifiers
  • -
  • Charge amplifiers
  • -
-

Voltage amplifiers tend to be simpler and to have a better signal/noise characteristic than charge amplifiers. -However, they cannot be used at such low frequencies as the charge amplifiers and the overall gain is affected by the length and properties of the transducer cable whereas that for a charge amplifier it is effectively independent of the cable.

-

Attachment of transducers

-

The correct installation of transducers, especially accelerometers is important.

-

There are various means of fixing the transducers to the surface of the test structure, some more convenient than others. -Some of these methods are illustrated in figure fig:transducer_mounting_types.

-

Shown on figure fig:transducer_mounting_response are typical high frequency limits for each type of attachment.

-

-
- Table 15: - Accelerometer attachment characteristics -
- - - - - - - - - - - - - - - - - -
Attachment methods Frequency response characteristics
width=\linewidthwidth=\linewidth
-

Location of transducers

-

Another problem which may require the removal of the transducer to another location is the possibility that it is positioned at or very close to a node of one or more of the structure’s modes. -In that case, it will be very difficult to make an effective measurement of that particular mode.

-

Most modal test require a point mobility measurement as one of the measured FRF. -This is hard to achieve as both force and response transducer should be at the same point on the structure. -Three possibilities exist:

-
    -
  1. Use an impedance head
  2. -
  3. Place the force and acceleration transducers in line but on opposite sides of the structure
  4. -
  5. Place the accelerometer alongside, as close as possible as the force gauge
  6. -
-

The third option is the most practical but is the one that presents the problem. -Particular care is required to ensure that the measurement is really representative of a point mobility: the accelerometer should be as close as possible as the force gauge.

-

Digital Signal Processing

-

Objective

-

The task of the spectrum analyser is to estimate the Fourier transform or Spectral densities of signals.

-

We here relate the two most relevant versions of the fundamental Fourier transformation between the time and frequency domains.

-

In its simplest form, this states that a function \(x(t)\), periodic in time \(T\), can be written as an infinite series:

-

\begin{equation} -x(t) = \frac{a_0}{2} + \sum_{n=1}^\infty \left( a_n \cos\frac{2 \pi n t}{T} + b_n \sin\frac{2 \pi n t}{T} \right) -\end{equation}

-

where \(a_i\) and \(b_i\) can be computed from knowledge of \(x(t)\) via the relationships:

-

\begin{subequations} -\begin{align} -a_n &= \frac{2}{T} \int_0^T x(t) \cos \left(\frac{2 \pi n t }{T} \right) \\\
-b_n &= \frac{2}{T} \int_0^T x(t) \sin \left(\frac{2 \pi n t }{T} \right) -\end{align} -\end{subequations}

-

In the situation where \(x(t)\) is discretised and of finite duration, so that it is defined only at a set of \(N\) particular values of time (\(t_k; k = 1, \dots, N\)), we can write a finite Fourier series for \(k = 1, \dots, N\):

-

\begin{align*} -x_k &= x(t_k) \\\
-&= \frac{a_0}{2} + \sum_{n=1}^{N/2} \left( a_n \cos\left(\frac{2 \pi n t_k}{T}\right) + b_n \sin\left(\frac{2 \pi n t_k}{T}\right) \right) -\end{align*}

-

The coefficients \(a_i\) and \(b_i\) are the Fourier or Spectral coefficients for the function \(x(t)\) and they are often displayed in modulus and phase form:

-

\begin{subequations} -\begin{align} -x_n &= \sqrt{a_n^2 + b_n^2} \\\
-\phi_n &= t g^{-1} \left( \frac{-b_n}{a_n} \right) -\end{align} -\end{subequations}

-

Basics of the DFT

-

In each case, the input signal is digitized and recorded as a set of \(N\) discrete values, evenly spaced in the period \(T\) during which the measurement is made.

-

There is a basic relationship between the sample length \(T\), the number of discrete values \(N\), the sampling rate \(\omega_s\) and the range and resolution of the frequency spectrum.

-

The range of the spectrum is \([0, \omega_\text{max}]\) (\(\omega_\text{max}\) is called the Nyquist frequency), and the resolution of lines in the spectrum is \(\Delta_\omega\):

-

\begin{subequations} -\begin{align} -\omega_{\text{max}} &= \frac{\omega_s}{2} = \frac{1}{2} \left( \frac{2\pi N}{T} \right) \\\
-\Delta_\omega &= \frac{\omega_s}{N} = \frac{2\pi}{T} -\end{align} -\end{subequations}

-

Various algorithms can be used to determine the spectral composition of the sampled signal, however, the most widely used is the Fast Fourier Transform. -That however requires \(N\) to be an integral power of \(2\).

-

Aliasing

-

Aliasing originates from the discretisation of the originally continuous time history. -With this discretisation process, the existence of very high frequencies in the original signal may well be misinterpreted if the sampling rate is too slow. -These high frequencies will be indistinguishable from genuine low frequency components as shown on figure fig:aliasing.

-

-
- Figure 14: The phenomenon of aliasing. On top: Low-frequency signal, On the bottom: High frequency signal
-

Figure 14: The phenomenon of aliasing. On top: Low-frequency signal, On the bottom: High frequency signal

-
-
- -

A signal of frequency \(\omega\) and one of frequency \(\omega_s-\omega\) are indistinguishable and this causes a distortion of the spectrum measured via the DFT.

-

As a result, the part of the signal which has frequency components above \(\omega_s/2\) will appear reflected or aliased in the range \([0, \omega_s/2]\). -This is illustrated on figure fig:effect_aliasing.

-

-
- Table 16: - Alias distortion of spectrum by DFT -
- - - - - - - - - - - - - - - - - -
True spectrum of signal Indicated spectrum from DFT
width=\linewidthwidth=\linewidth
-

The solution of the problem is to use an anti-aliasing filter which subjects the original time signal to a low-pass, sharp cut-off filter. -Because the filters used are inevitably less than perfect, and have a finite cut-off rate, it remains necessary to reject the spectral measurement in a frequency range approaching the Nyquist frequency \(\omega_s/2\). -Typically, the cut-off rate is set to \(0.5 \times \omega_s/2\) for simple filters and \(0.8 \times \omega_s/2\) for more advance filters. -As a results, frequencies near \(\omega_s/2\) may still be contaminated by the imperfected anti-aliasing.

-

Leakage

-

Leakage is a problem which is a direct consequence of the need to take only a finite length of time history coupled with the assumption of periodicity.

-

-
- Table 17: - Sample length and leakage of spectrum -
- - - - - - - - - - - - - - - - - -
Ideal signal Awkward signal
width=\linewidthwidth=\linewidth
-

The problem is illustrated on figure fig:leakage. -In the first case (figure fig:leakage_ok), the signal is perfectly periodic and the resulting spectrum is just a single line at the frequency of the sine wave. -In the second case (figure fig:leakage_nok), the periodicity assumption is not strictly valid as there is a discontinuity at each end of the sample. -As a result, the spectrum produced for this case does not indicate the single frequency which the original time signal possessed. -Energy has “leaked” into a number of the spectral lines close to the true frequency and the spectrum is spread over several lines.

-

Leakage is a serious problem in many applications, ways of avoiding its effects are:

-
    -
  • Changing the duration of the measurement sample length to match the periodicity of the signal. -This can only work if the signal is periodic and if the period can be determined
  • -
  • Increasing the duration of the measurement period \(T\) so that the separation between the spectral lines (the frequency resolution) is finer. -Although this will not totally remove the leakage effect
  • -
  • Adding zeroes to the end of the measured sample (“zero padding”), thereby partially achieving the preceding result but without requiring more data
  • -
  • Modifying the sampled signal obtained in such a way as to reduce the severity of the leakage effect. This effect is referred to as windowing
  • -
-

Windowing

-

Windowing involves the imposition of a prescribed profile on the time signal prior to performing the Fourier transform.

-

The profiles, or “windows” are generally depicted as a time function \(w(t)\) as shown in figure fig:windowing_examples.

-

-
- Figure 15: Different types of window. (a) Boxcar, (b) Hanning, (c) Cosine-taper, (d) Exponential
-

Figure 15: Different types of window. (a) Boxcar, (b) Hanning, (c) Cosine-taper, (d) Exponential

-
-
- -

The analyzed signal is then \(x^\prime(t) = x(t) w(t)\). -The result of using a window is seen in the third column of figure fig:windowing_examples.

-

The Hanning and Cosine Taper windows are typically used for continuous signals, such as are produced by steady periodic or random vibration, while the Exponential window is used for transient vibration applications where much of the important information is concentrated in the initial part of the time record.

-

In all cases, a re-scaling is required to compensated for the attenuation of the signals by the application of the window. -However, if both response and excitation signals are subjected to the same window, and the results are used only to compute an FRF ratio, then the re-scaling is not necessary.

-

Filtering

-

The process of filtering has a direct parallel with windowing. -Common filters are: low-pass, high-pass, band-limited, narrow-band, notch.

-

Improving Resolution

-

-
Increasing transform size
-

An immediate solution to this problem would be to use a larger transform. -However, this may not be possible in practice.

-
Zero padding
-

It may be possible to achieve the same resolution increase by adding a series of zeros to the short sample of the actual signal. -Care must be taken in such a procedure are it will smooth the resulting spectrum but no additional information is included. -This can be misleading in some cases. -For instance where two peaks are close and result in only one peak in the smooth data.

-
Zoom
-

The common solution to the need for finer frequency resolution is to zoom on the frequency range of interest and to concentrate all the spectral lines into a narrow band between \(\omega_\text{min}\) and \(\omega_\text{max}\).

-

There are various ways of achieving this result. -The easiest way is to use a frequency shifting process coupled with a controlled aliasing device.

-

Suppose the signal to be analyzed \(x(t)\) has a spectrum \(X(\omega)\) has shown on figure fig:zoom_range, and that we are interested in a detailed analysis between \(\omega_1\) and \(\omega_2\).

-

If we apply a band-pass filter to the signal, as shown on figure fig:zoom_bandpass, and perform a DFT between \(0\) and \((\omega_2 - \omega_1)\), then because of the aliasing phenomenon described earlier, the frequency components between \(\omega_1\) and \(\omega_2\) will appear between \(0\) and \((\omega_2 - \omega_1)\) with the advantage of a finer resolution (see figure fig:zoom_result).

-

-
- Table 18: - Controlled aliasing for frequency zoom -
- - - - - - - - - - - - - - - - - -
Spectrum of the signal Band-pass filter
width=\linewidthwidth=\linewidth
-

-
- Figure 16: Effective frequency translation for zoom
-

Figure 16: Effective frequency translation for zoom

-
-
- -

When using zoom the measure FRF in a narrow frequency range, it is important to ensure that there is as little vibration energy as possible outside the frequency range of interest.

-

Averaging

-

When analyzing random vibrations signals, it is not sufficient to compute Fourier transforms (strictly, they do not exist for a random process) and we must instead obtain estimates for the spectral densities and correlation functions which are used to characterize this type of signal.

-

Although these properties are computed from the Fourier transforms, there are additional considerations concerning their accuracy and statistical reliability which must be given due attention.

-

Generally, it is necessary to perform an averaging process, involving several individual time records, or samples, before a result is obtained which can be used with confidence. -The two major considerations which determine the number of average required are:

-
    -
  • the statistical reliability
  • -
  • the removal of spurious random noise from the signals
  • -
-

An indication of the requirements from a statistical standpoint may be provided by the “statistical degrees of freedom” \(\kappa\) which is provided by

-

\begin{equation} -\kappa = 2 B T_t -\end{equation}

-

where \(B\) is the frequency bandwidth and \(T_t\) is the total time encompassing all data. -\(T_t = mT\) for \(m\) samples each of \(T\) duration.

-

As a guide, this quantity \(\kappa\) should be a minimum of \(10\) and should approach \(100\) for reasonably reliable estimates.

-

An other way to average is to apply the DFT on overlapping data. -This is called overlap averaging. -It is clear that \(100\) averages performed in this way cannot have the same statistical properties as would \(100\) completely independent samples. -Nevertheless, the procedure is more effective than if all the data points are only used once. -This manifests by producing smoother spectra.

-

Use of different excitation signals

-

There are three different classes of signals used for the excitation signals:

-
    -
  • Periodic: stepped sine, slow sine sweep, periodic, pseudo random, periodic random
  • -
  • Transient: burst sine, burst random, chirp, impulse
  • -
  • Random: true random, white noise, narrow-band random
  • -
-

All of these are in widespread use, each having its own particular merits and drawbacks.

-

Stepped-Sine testing

-

Stepped-sine testing comes from the classical method of measuring the FRF where a discrete sinusoidal with a fixed amplitude and frequency is used.

-

In order to encompass a frequency range of interest, the command signal frequency is stepped from one discrete value to another in such a way as to provide the necessary density of points in the FRF plot. -In this technique, it is necessary to ensure that steady-state conditions have been attained before the measurements are made and this means delaying the start of the measurement process for a short while after a new frequency has been selected as there will be a transient response. -The extent of the unwanted transient response will depend on:

-
    -
  • the proximity of the excitation frequency to the natural frequency of the structure
  • -
  • the abruptness of the changeover from the previous command signal to the new one
  • -
  • the lightness of the damping of the nearby structural modes
  • -
-

In practice, this is only in the vicinity of a lightly damped resonance that the necessary delay becomes significant and extra attention is needed.

-

One of the advantages is the facility of taking measurements where it is required. -For instance, the typical FRF curve has large region of relatively slow changes of level with frequency (away from resonances and anti-resonances) and in these regions it is sufficient to take measurements at relatively widely spaced frequency points.

-

Slow Sine Sweep testing

-

This is the traditional method of FRF measurement and involves the use of a sweep oscillator to provide a sinusoidal command signal with a frequency that varies slowly in the range of interest. -It is necessary to check that progress through the frequency range is sufficiently slow to check that steady-state response conditions are attained. -If excessive sweep rate is used, then distortions of the FRF plot are introduced as shown on figure fig:sweep_distortions.

-

-
- Figure 17: FRF measurements by sine sweep test
-

Figure 17: FRF measurements by sine sweep test

-
-
- -

One way of checking the suitability of a sweep rate is to make the measurement twice, once sweeping up and the second time sweeping down through the frequency range. -If both curves obtained are the same, the sweep rate is not excessive.

-

Periodic Excitation

-

This is very similar to a sine wave test methods, however the input signal contains not one but many frequencies of interest.

-

The method of computing the FRF is quite simple: the discrete Fourier transform is computed for both the force and response signals and the ratio of these transforms gives the FRF.

-

Two types of periodic signals are used:

-
    -
  • Deterministic: all the components are mixed with ordered amplitude and phase relationships (e.g. a square wave)
  • -
  • Pseudo-random: generation of a random mixture of amplitudes and phases for the various frequency components
  • -
-

The sequence is generated for a duration which equals the period of one sample in the analysis process, and is output repeatedly for several successive cycles. -A particular advantage of this type of excitation is its exact periodicity in the analyser bandwidth, resulting in zero leakage errors and therefore requiring no windows to be applied before its spectral analysis.

-

One should not that when there is no need to use a window of any form, as it is the case for periodic signals, then it is very important not to use one.

-

Random Excitation

-
FRF estimates using random excitation
-

True random excitation are generally applied to the structure using a shaker.

-

For a such a random excitation, a different approach is required in order to determine the FRF.

-

The principle upon which the FRF is determined using random excitation relies on the following equations

-

\begin{subequations} -\begin{align} -S_{xx}(\omega) &= |H(\omega)|^2 S_{ff}(\omega)\\\
-S_{fx}(\omega) &= H(\omega) S_{ff}(\omega)\\\
-S_{xx}(\omega) &= H(\omega) S_{xf}(\omega) -\end{align} -\end{subequations}

-

where

-
    -
  • \(S_{xx}(\omega)\) and \(S_{ff}(\omega)\) are the autospectra of the response and excitation signals
  • -
  • \(S_{xf}(\omega)\) is the cross spectrum between these two signals
  • -
  • \(H(\omega)\) is the FRF linking the quantities \(x\) and \(f\)
  • -
-

Such parameters can never be measured exactly with only a finite length of data. -However, we have the possibility of providing a cross check on the results by using the fact that the FRF can be estimated using two sets of data:

-

\begin{subequations} -\begin{align} -H_1(\omega) &= \frac{S_{fx}(\omega)}{S_{ff}(\omega)} \\\
-H_2(\omega) &= \frac{S_{xx}(\omega)}{S_{xf}(\omega)} -\end{align} -\end{subequations}

-

We now introduce a quantity \(\gamma^2\) which is called the coherence and which is defined as -\[ \gamma^2 = \frac{H_1(\omega)}{H_2(\omega)}; \quad 0 \le \gamma^2 \le 1 \]

-

Clearly, if all is well with the measurement, the coherence should be unity and we shall be looking for this condition in our test to reassure us that the measurements have been well made. -Small values of the coherence means that the FRF estimate obtained is unreliable and one should determine its cause.

-
Noisy Data
-

There are several situations in which an imperfect measurement might be made, and a low coherence recorded. -There may well be noise on one or other of the two signals which could degrade the measured spectra:

-
    -
  • Near resonance: this is likely to influence the force signal so that \(S_{ff}(\omega)\) becomes vulnerable and \(H_1(\omega)\) will suffer the most, \(H_2(\omega)\) might be a better indicator in that case
  • -
  • Near anti-resonance: it is the response signal which will suffer, making \(S_{xx}(\omega)\) liable to errors and this is the opposite for \(H_1(\omega)\) and \(H_2(\omega)\)
  • -
-

This is shown by the following equations:

-

\begin{subequations} -\begin{align} -H_1(\omega) &= \frac{S_{fx}(\omega)}{S_{ff}(\omega) + S_{nn}(\omega)} \\\
-H_2(\omega) &= \frac{S_{xx}(\omega) + S_{mm}(\omega)}{S_{xf}(\omega)} -\end{align} -\end{subequations}

-

where \(S_{mm}(\omega)\) and \(S_{nn}(\omega)\) are the autospectra of the noise on the output and input, \(m(t)\) and \(n(t)\) respectively.

-

One suggestion which has been made is to define the FRF as the geometric mean of the two standard estimates:

-

\begin{equation} -H_v(\omega) = \sqrt{H_1(\omega) H_2(\omega)} -\end{equation}

-

Low coherence can arise when more than one excitation is applied to the structure. -Another possibility is that the structure is not completely linear. -Here again, the measured response cannot be completely attributed to the measured excitation.

-
Noise-free FRF estimates
-

A third estimator for the FRF can be defined in cases of random excitation, which is called the instrumental variable estimate, or \(H_3(\omega)\).

-

This formula for the FRF is only possible if more than the usual two channels are being measured simultaneously. -The formula is of interest because it does provide an estimate for the FRF which is unbiased by noise on either the force or the response transducer signals. -The formula is:

-

\begin{equation} -H_3(\omega) = \frac{S_{xv}(\omega)}{S_{fv}(\omega)} -\end{equation}

-

where \(v(t)\) is a third signal in the system, such as the voltage supplied to the exciter, and it exploits the fact that noise on either input (force) or output (response) channels does not contaminate cross-spectral density estimates in the way that auto spectra are affected.

-
Leakage
-

It is known that a low coherence can arise in a measurement where the frequency resolution of the analyzer is not fine enough to describe adequately the very rapidly changing functions such as are encountered near resonance and anti-resonance on lightly-damped structures.

-

This is known as a bias error and leakage is often the most likely source of low coherence on lightly-damped structures as shown on figure fig:coherence_resonance.

-

-
- Figure 18: Coherence \(\gamma^2\) and FRF estimate \(H_1(\omega)\) for a lightly damped structure
-

Figure 18: Coherence \(\gamma^2\) and FRF estimate \(H_1(\omega)\) for a lightly damped structure

-
-
- -

It can be shown that near resonance, \(H_2(\omega)\) is a much more accurate representation of the true FRF than \(H_1(\omega)\). -When this situation is encountered, the best solution is usually to make a zoom measurement as explained previously.

-
Postscript
-

It is sometimes though that a poor coherence can be eliminated by taking many averages, but this is only possible if the reason for the low coherence is random noise which can be averaged out over a period of time. -If the reason if more systematic than that, the averaging will not help.

-

Lastly, mention should be made here of a type of excitation referred to as “periodic random” which is, in fact, a combination of pseudo-random and “true” random. -In this process, a pseudo-random (or periodic) excitation is generated and after a few cycles, a measurement of the input and the now steady-state response is made. -Then, a different pseudo-random sequence is generated, the procedure repeated and the result treated as the second sample in what will develop to be an ensemble of random samples. -The advantage over the simple random excitation is that due to the essential periodic nature of each of the pseudo-random samples, there are no leakage or bias errors in any of the measurements. -However, the cost is an increase in the measurement time as one has to wait for the steady response condition.

-

Transient excitation

-

There are three types of excitation to be included in this section because they all share the same principle for their signals processing. -They are:

-
    -
  1. Burst excitation: a short section of signal
  2. -
  3. Rapid sine sweep (chirp) excitation
  4. -
  5. Impact excitation from a hammer blow
  6. -
-

The first and second of these generally require an attached shaker, but the last one can be implemented with a hammer.

-

The principle which all these signals share is that the excitation and the consequent response are completely contained within the single sample of measurement which is made. -In practice, it is common to repeat the transient even more than once and to average the results to get the final result. -How they differ is in the exact form of the transient excitation signal and in the nature of the repeated application.

-

In the burst type of signal, we have an excitation which is applied and analyzed as if it were a continuous signal, taking the successive samples for averaging one immediately after the other. -For the chirp and impulse excitations, each individual sample is collected and processed before making the next one, and averaged.

-
Burst excitation signals
-

Burst excitation signals consist of short sections of an underlying continuous signal (which may be a sine wave, a sine sweep or a random signal), followed by a period of zero output, resulting in a response which shows a transient build-up followed by a decay (see figure fig:burst_excitation).

-

-
- Figure 19: Example of burst excitation and response signals
-

Figure 19: Example of burst excitation and response signals

-
-
- -

The duration of the burst is under the control of the operator and it is selected so as to provide the ideal signal processing conditions, which are essentially that the response signal has just died away by the end of the measurement period. -If this condition has not been attained (burst too long), then leakage error will result. -If it has been reached well before the end of the period (burst too short), then the signal quality will be poor.

-

The final measurement will be the result of averaging several samples. -In the case of the burst sine excitation, each sample would be expected to be identical so that the averaging serves only to remove noise on the signals. -In the case of burst random, however, each individual burst will be different to the other and so in this case there is an element of averaging randomly varying behavior, a feature which is believed in some cases to enhance the measurement in the presence of weak non-linearities in the test structure.

-
Chirp excitation
-

The chirp consist of a short duration signal which has the form shown in figure fig:chirp_excitation.

-

The frequency content of the chirp can be precisely chosen by the starting and finishing frequencies of the sweep.

-

-
- Figure 20: Example of chirp excitation and response signals
-

Figure 20: Example of chirp excitation and response signals

-
-
- -
Impulsive excitation
-

The hammer blow produces an input and response as shown in the figure fig:impulsive_excitation.

-

This and the chirp excitation are very similar in the analysis point of view, the main difference is that the chirp offers the possibility of greater control of both amplitude and frequency content of the input and also permits the input of a greater amount of vibration energy.

-

-
- Figure 21: Example of impulsive excitation and response signals
-

Figure 21: Example of impulsive excitation and response signals

-
-
- -

The frequency content of the hammer blow is dictated by the materials involved and is rather more difficult to control. -However, it should be recorded that in the region below the first cut-off frequency induced by the elasticity of the hammer tip structure contact, the spectrum of the force signal tends to be very flat.

-

On some structures, the movement of the structure in response to the hammer blow can be such that it returns and rebounds on the hammer tip before the user has had time to move that out of the way. -In such cases, the spectrum of the excitation is seen to have “holes” in it at certain frequencies (figure fig:double_hits).

-

-
- Figure 22: Double hits time domain and frequency content
-

Figure 22: Double hits time domain and frequency content

-
-
- -

In order to perform the required Fourier analysis of all these cases of transient signals, an assumption is made that the data obtained from a single event can be regarded as representing one period of a quasi-periodic process. -This means that if exactly the same input was applied \(T\) seconds after the first one, then exactly the same response would be observed.

-

This can be difficult to obtain especially for lightly damped structures as the signal will take long time to die away. -In that case, one solution is to lengthen the period \(T\), but often this is not easily changeable. -A window applied to the raw data provides a more practical solution. -It is recommended to apply an exponential window to both signals. -By choosing an appropriate exponential decay rate, the modified signal can be made to have effectively died away by the end of the prescribed measurement period, thereby satisfying the signal processing needs.

-

However, one should be cautious when using such windowing as complex modes can be extracted from data treated this way.

-

An alternative to this problem is to use the zoom facility. -One of the consequences of using a zoom is that the frequency band is reduced by a proportionate amount. -However, by making a number (equal to the zoom factor) of separate measurements, each one for a different zoom band, it is possible to construct and FRF over the entire frequency range of interest with both the advantage of it being a window-free measurement and having a much finer frequency resolution.

-

One the pseudo-periodicity is established, a discrete Fourier series description can be obtained of both the input and response signals. -The FRF can be computed from -\[ H(\omega_k) = \frac{X(\omega_k)}{F(\omega_k)} \]

-

Alternately, the force signals can be treated in the same way as for random excitation, and the formulae for \(H_1(\omega)\) and \(H_2(\omega)\) are used. -However, care must be exercise when interpreting the results since the coherence function has different significance here.

-

One of the parameters indicated by the coherence is the statistical reliability of an estimate based on a number of averages of a random process. -In the case of an FRF estimate obtained by treating the signals from a succession of nominally identical impacts as a random process, we must note that, strictly, each such sample is a deterministic, and not probabilistic, calculation and should contain no statistical uncertainty.

-

Thus, the main source for low coherence in this instance can only be leakage errors, non-linearity or high noise levels, not the same situation as for random excitation.

-

Another feature usually employed in transient testing is that of making a whole series of repeat measurements under nominally identical conditions and then averaging FRF estimates. -The idea behind this is that any one measurement is likely to be contaminated by noise, especially in the frequency regions away from resonance where the response levels are likely to be quite low. -While this averaging technique does indeed enhance the resulting plots, it may well be that several tens of samples need to be acquired before a smooth FRF plot is obtained and this will diminish somewhat any advantage of speed which is a potential attraction to the method.

-

Calibration

-

For all measurement processes, it is necessary to calibrate the equipment which is used. -In the case of FRF measurements, there are two levels of calibration which should be made:

-
    -
  • The first of these is a periodic absolute calibration of individual transducers (of force and response) to check that their sensitivities are sensibly the same as those specified by the manufacturer. -Any marked deviation could indicate internal damage
  • -
  • The second type of calibration is one which can and should be carried out during each test, preferably twice, once at the outset and again at the end. -This type of calibration is one which provides the overall sensitivity of the complete instrumentation system without examining the performance of the individual elements.
  • -
-

The first type of calibration is quite difficult to make accurately as it requires independent measurement of the quantity of interest. -The use of another transducer of the same type is not satisfactory as it is not strictly an independent measure. -Optical devices can be used for the calibration of displacement sensors.

-

One of the reasons why the absolute type of calibration has not been further developed for this particular application is the availability of a different type of calibration which is particularly attractive and convenient. -The parameters measured in a modal analysis are usually ratios between response and force levels, and so what is required is the ability to calibrate the whole measurement system. -The voltage measured are related to the physical quantities (force and acceleration) by the sensitivities of the respective transducers:

-

\begin{subequations} -\begin{align} -v_f &= E_f f \\\
-v_{\ddot{x}} &= E_{\ddot{x}} \ddot{x} -\end{align} -\end{subequations}

-

As mentioned, the difficulty is to determine the individual values for \(E_f\) and \(E_{\ddot{x}}\). -In practice, we only ever use the measured voltages as a ratio to obtain the FRF -\[ \frac{\ddot{x}}{f} = \frac{v_{\ddot{x}}}{v_f} \frac{E_f}{E_{\ddot{x}}} = E \frac{v_{\ddot{x}}}{v_f} \] -and so what is required is the ratio of the two sensitivities:

-

\begin{equation} -E = \frac{E_f}{E_{\ddot{x}}} -\end{equation}

-

The overall sensitivity can be more readily obtained by a calibration process because we can easily make an independent measurement of the quantity now being measured: the ratio of response to force. -Suppose the response parameter is acceleration, then the FRF obtained is inertance which has the units of \(1/\text{mass}\), a quantity which can readily be independently measured by other means.

-

Figure fig:calibration_setup shows a typical calibration setup.

-

-
- Figure 23: Mass calibration procedure, measurement setup
-

Figure 23: Mass calibration procedure, measurement setup

-
-
- -

A calibration procedure of this type has the distinct advantage that it is very easy to perform and can be carried out with all the measurement equipment. -Thus, frequent checks on the overall calibration factors are strongly recommended, ideally as the beginning and end of each test.

-

Mass Cancellation

-

It is very important the ensure that the force is measured directly at the point at which it is applied to the structure, rather than deducing its magnitude from the current flowing in the shaker coil or other similar indirect processes. -This is because near resonance, the actual applied force becomes very small and is thus very prone to inaccuracy.

-

This same argument applies on a lesser scale as we examine the detail around the attachment to the structure, as shown in figure fig:mass_cancellation.

-

-
- Figure 24: Added mass to be cancelled (crossed area)
-

Figure 24: Added mass to be cancelled (crossed area)

-
-
- -

Here, we see part of the structure, an accelerometer and a force transducer. -The dashed line shows the plane at which the force is actually measured. -Now, assuming that the extra material (shown by the cross hatching) behaves as a rigid mass \(m^*\), we can state that the force actually applied to the structure \(f_t\) is different from that measured by the transducer \(f_m\) by an amount dependent on the acceleration level at the drive point \(\ddot{m}\) according to

-

\begin{equation} -f_t = f_m - m^* \ddot{x} -\end{equation}

-

Physically, what is happening is that some of the measured force is being “used” to move the additional mass so that the force actually applied to the structure is the measured force minus the inertia force of the extra mass.

-

Now, the frequency response quantity we actually require is \(A_t(\omega)\) although we have measurements of \(\ddot{X}\) and \(F_m\) only, yielding to \(A_m(\omega)\). -If we express it in its real and imaginary parts, we obtain:

-

\begin{align*} -\text{Re}(F_t) &= \text{Re}(F_m) - m^* \text{Re}(\ddot{X}) \\\
-\text{Im}(F_t) &= \text{Im}(F_m) - m^* \text{Im}(\ddot{X}) -\end{align*}

-

And

-

\begin{align*} -\text{Re}(1/A_t) &= \text{Re}(1/A_m) - m^* \\\
-\text{Im}(1/A_t) &= \text{Im}(1/A_m) -\end{align*}

-

Mass cancellation is important when the mass to be cancelled (\(m^*\)) is of the same order as the apparent mass of the modes of the structure under test, and this latter is a quantity which varies from point to point on the structure. -If we are near an anti-node of a particular mode, then the apparent mass (and stiffness) will tend to be relatively small and here mass cancellation may be important.

-

One important feature of mass cancellation is that it can only be applied to point measurements (where the excitation and response are both considered at the same point). -This arises because the procedure described above corrects the measured force for the influence of the additional mass at the drive point.

-

It should be noted that the transducer’s inertia is also effective not only in the direction of the excitation but also laterally and in rotation even though they cannot easily be compensated for.

-

Rotational FRF measurement

-

Significance of rotational FRF data

-

\(\SI{50}{%}\) of all DOFs are rotations (as opposed to translations) and \(\SI{75}{%}\) of all frequency response functions involve rotation DOFs. -However, it is relatively rate the find reference to methods for measurements of rotational DOFs. -This situation arises from a considerable difficulty which is encountered when trying to measure either rotational responses or excitations and also when trying to apply rotational excitation.

-

Measurement of Rotational FRFs using two or more transducers

-

There are two problems to be tackled:

-
    -
  1. measurement of rotational responses
  2. -
  3. generation of measurement of rotation excitation
  4. -
-

The first of these is less difficult and techniques usually use a pair a matched conventional accelerometers placed at a short distance apart on the structure to be measured as shown on figure fig:rotational_measurement.

-

-
- Figure 25: Measurement of rotational response
-

Figure 25: Measurement of rotational response

-
-
- -

The principle of operation is that by measuring both accelerometer signals, the responses \(x_0\) and \(\theta_0\) can be deduced by taking the mean and difference of \(x_A\) and \(x_B\):

-

\begin{subequations} -\begin{align} -x_0 &= 0.5(x_A + x_B) \\\
-\theta_0 &= (x_A - x_B)/l \label{eq:rotational_diff} -\end{align} -\end{subequations}

-

This approach permits us to measure half of the possible FRFs: all those which are of the \(X/F\) and \(\Theta/F\) type. -The others can only be measured directly by applying a moment excitation.

-

Figure fig:rotational_excitation shows a device to simulate a moment excitation. -First, a single applied excitation force \(F_1\) corresponds to a simultaneous force \(F_0 = F_1\) and a moment \(M_0 = -F_1 l_1\). -Then, the same excitation force is applied at the second position that gives a force \(F_0 = F_2\) and moment \(M_0 = F_2 l_2\). -By adding and subtracting the responses produced by these two separate excitations conditions, we can deduce the translational and rotational responses to the translational force and the rotational moment separately, thus enabling the measurement of all four types of FRF: \(X/F\), \(\Theta/F\), \(X/M\) and \(\Theta/M\).

-

-
- Figure 26: Application of moment excitation
-

Figure 26: Application of moment excitation

-
-
- -

Then, the full \(6 \times 6\) mobility matrix can be measured, however this procedure is quite demanding.

-

Other methods for measuring rotational effects include specially developed rotational accelerometers and shakers.

-

However, there is a major problem that is encountered when measuring rotational FRF: the translational components of the structure’s movement tends to overshadow those due to the rotational motions. -For example, the magnitude of the difference in equation eq:rotational_diff is often of the order of \(\SI{1}{%}\) of the two individual values which is similar to the transverse sensitivity of the accelerometers: potential errors in rotations are thus enormous.

-

Multi-point excitation methods

-

Multi-point excitation in general

-

Multi-excitation methods for modal testing, called MIMO test methods, have been developed for FRF data which possesses a high degree of consistency. -There are other benefits:

-
    -
  • the excitation of large structure with multiple points does more closely simulates their vibration environment in service than the single point excitation test
  • -
  • the facility of detecting and identifying double or repeated modes
  • -
  • the need to complete some tests in a very minimum of on-structure time
  • -
-

Although the majority of modal tests are still performed using single-point excitation procedure, multi-point excitation is today well developed and is largely used for aerospace structures.

-

The practical implementation of the different methods currently used are briefly discussed.

-

Appropriation or Normal mode testing

-

We here seek establish vibration in a pure mode of vibration by careful selection of the locations and magnitudes of a set of sinusoidal excitation forces.

-

This works for undamped system’s natural frequencies, and in that case the force and response vectors are exactly in quadrature: -\[ i\{X\} = [H_\text{Re}(\omega) + i H_\text{Im}(\omega)] \{F\} \]

-

It follows that this equation is valid only if \(\det |H_{\text{Re}}(\omega)| = 0\) and this condition provides the basis of a method to locate the undamped system natural frequencies from measured FRF data.

-

Multi-phase stepped-sine (MPSS) testing

-

We here excite a MDOF system at a single sinusoidal frequency \(a\) by a set of \(p\) excitation forces \(\{F\}e^{i\omega t}\) such that there is a set of steady-state responses \(\{X\}e^{i\omega t}\). -The two vectors are related by the system’s FRF properties as:

-

\begin{equation} -\{X\}_{n\times 1} = [H(\omega)]_{n\times p} \{F\}_{p\times 1} -\end{equation}

-

However, it is not possible to derive the FRF matrix from the single equation eq:mpss_equation, because there will be insufficient data in the two vectors (one of length \(p\), the other of length \(n\)) to define completely the \(n\times p\) FRF matrix.

-

What is required is to make a series of \(p^\prime\) measurements of the same basic type using different excitation vectors \(\{F\}_i\) that should be chosen such that the forcing matrix \([F]_{p\times p^\prime} = [\{F\}_1, \dots, \{F\}_p]\) is non-singular. -This can be assured if:

-
    -
  • there are at least as many vectors as there are forces: \(p^\prime > p\)
  • -
  • the individual force vectors are linearly independent of each other
  • -
-

A second matrix is also constructed containing the response vectors \([X]_{n\times p^\prime} = [\{X\}_1, \dots, \{X\}_{p^\prime}]\). -Now, these two collections of measured data can be used to determine the required FRF matrix:

-

\begin{equation} -[H(\omega)]_{n\times p} = [X]_{n\times p^\prime} [F]_{p^\prime \times p}^+ -\end{equation}

-

where \(+\) denotes the generalized inverse of the forcing matrix.

-

Multi-point random (MPR) testing

-
Concept
-

In this method, advantage is taken of the incoherence of several uncorrelated random excitations which are applied simultaneously at several points. -Then, the need to repeat the test several times, as was necessary for the MPSS method, is avoided.

-

The purpose of this methods is to obtain the FRF data in an optimal way and to reduce the probability of introducing systematic errors to the FRF measurements.

-

Let’s consider the simplest form of a multi excitation as that of a system excited by two simultaneous forces \(f_1(t)\) and \(f_2(t)\) where the response \(x_i(t)\) is of particular interest. -We can derive expressions for the required FRF parameters functions of the auto and cross spectral densities between of three parameters of interest:

-

\begin{subequations} -\begin{align} -H_{i1}(\omega) &= \frac{S_{1i}S_{22} - S_{2i}S_{12}}{S_{11}S_{22} - S_{12}S_{21}}\\\
-H_{i1}(\omega) &= \frac{S_{2i}S_{11} - S_{1i}S_{21}}{S_{11}S_{22} - S_{12}S_{21}} -\end{align} -\end{subequations}

-

These expressions can be used provided that \(S_{11}S_{22}\neq |S_{12}|^2\) which is equivalent of that the two excitation forces must not be fully correlated.

-
General formulation
-

In practice, the method is applied using different numbers of exciters, and several response points simultaneously. -We have that

-

\begin{equation} -[H_{xf}(\omega)]_{n\times p} = [S_{xf}(\omega)]_{n\times p} [S_{ff}(\omega)]_{p\times p}^{-1} -\end{equation}

-

where it can be seen that the matrix of spectral densities for the forces \([S_{ff}(\omega)]_{p\times p}\) must be non singular. -Thus, care must be taken in practice to ensure this condition, noting that it is the applied forces and not the signal sources which must meet the requirement.

-

In practice, this is difficult to obtain as even if the input signals to the exciters’ amplifiers are uncorrelated, the forces applied to the structure will certainly not be. This is particularly true near the resonances as the dynamic response is dominated by the one mode which is independent of the actual force pattern.

-
Coherence in MPR measurements
-

In a similar way in which we defined coherence for the SISO system, we can make use of the same concepts for a MIMO system. -During a MIMO test, we basically measure three matrices: -\[ [S_{ff}(\omega)]; \ [S_{xx}(\omega)]; \ [S_{fx}(\omega)] \] -Then, we can derive an estimate for the FRF matrix: -\[ H_1(\omega)^T = [S_{ff}(\omega)]^{-1} [S_{fx}(\omega)] \] -and then compute an estimate for the autospectrum of the response from:

-

\begin{align*} -[\tilde{S}_{xx}(\omega)] &= [H_1^*(\omega)] [S_{fx}(\omega)] \\\
-&= [S_{xf}(\omega)] [S_{ff}(\omega)]^{-1} [S_{fx}(\omega)] -\end{align*}

-

Now, by comparing the estimated response spectrum \([\tilde{S}_{xx}(\omega)]\) with the actual measurement \([S_{xx}(\omega)]\), we obtain a formula for the multiple coherence between the two parameters \(\{f(t)\}\) and \(\{x(t)\}\):

-

\begin{equation*} -\tcmbox{[\gamma^2(\omega)] = [S_{xx}(\omega)]^{-1} [S_{xf}(\omega)] [S_{ff}(\omega)]^{-1} [S_{fx}(\omega)]} -\end{equation*}

-

Multiple-reference impact tests

-

This class of hammer excitation is referred to as Multi-reference Impact Tests (MRIT). -Typically, three response references are measured (often, the \(x\), \(y\) and \(z\) components at the response measurement location) every time a hammer blow is applied to the structure.

-

FRF data collected by performing a test in this way will be the equivalent of exciting the structure at three points simultaneously while measuring the response at each of the \(n\) points of interest. -Thus, in the same sense that a multiple-input test is a multi-reference measurement (measuring several columns of the FRF matrix), so too is the MRIT since it provides a multi-reference measurement including several rows of the same FRF matrix.

- -

Introduction

-

Introduction to the concept of modal analysis

-

This section describes some of the many procedures that are used for Modal Analysis and attempts to explain their various advantages and limitations. -These methods generally consists of curve-fitting a theoretical expression for an individual FRF to the actual measured data.

-
-
-
    -
  1. part of single FRF curve
  2. -
  3. complete curve encompassing several resonances
  4. -
  5. a set of many FRF plots all on the same structure
  6. -
-
-

In every case, the task is basically to find the coefficients in a theoretical expression for the FRF which then most closely matches the measured data.

-

This phase of the modal test procedure is often referred to as modal parameter extraction or modal analysis.

-

Types of modal analysis

-

A majority of current curve-fitting methods operate on the response characteristics in the frequency domain, but there are other procedures which perform a curve-fit in the time domain. These latter methods are based on the fact that the Impulse Response Function is another characteristic function of the system.

-

Modal analysis methods can be classified into a series of different groups.

-
-
-

It depends on the domain in which the analysis is performed:

-
    -
  • frequency domain of FRFs
  • -
  • Time domain of IRFs
  • -
-
-
-
-

Next, it is appropriate to consider the frequency range over which each individual analysis will be performed. -Either a single mode is to be extracted at a time, or several:

-
    -
  • SDOF methods
  • -
  • MDOF methods
  • -
-
-
-
-

A further classification relates to the number of FRFs which are to be included in a single analysis:

-
    -
  • SISO: the FRF are measured individually
  • -
  • SIMO: a set of FRF are measured simultaneously at several response points but under the same single-point excitation. -This describes the FRFs in a column or row of the FRF matrix
  • -
  • MIMO: the responses at several points are measured simultaneously while the structure is excited at several points, also simultaneously
  • -
-
-

Difficulties due to damping

-

Many of the problems encounter in practice are related to the difficulties associated with the reliable modeling of damping effects. -In practice, we are obliged to make certain assumptions about what model is to be used for the damping effects. -Sometimes, significant errors can be obtained in the modal parameter estimates (and not only in the damping parameters), as a result of a conflict between the assumed damping behavior and that which actually occurs in reality.

-

Another difficulty is that of real modes and complex modes. -In practice, all modes of practical structures are expected to be complex, although in the majority of cases, such complexity will be very small, and often quite negligible.

-

Difficulties of model order

-

One problem is determining how many modes are there in the measured FRF.

-

This question is one of the most difficult to resolve in many practical situations where a combination of finite resolution and noise in the measured data combined to make the issue very unclear.

-

Many modern modal analysis curve-fitters are capable of fitting any FRF of almost any order, however, it might fit fictitious modes introduced in the analysis process. -Correct differentiation between genuine and fictitious modes remains a critical task in many modal tests.

-

Preliminary checks of FRF data

-

Visual Checks

-

Before starting the modal analysis of any measured FRF data, it is always important to do a few simple checks in order to ensure that no obvious error is present in the data. -Most of the checks are made using a log log plot of the modulus of the measured FRF.

-
Low-frequency asymptotes
-

If the structure is grounded, then we should clearly see a stiffness-like characteristic, appearing as asymptotic to a stiffness line at the lowest frequencies (below the first resonance) and the magnitude of this should correspond to that of the static stiffness of the structure at the point in question.

-

If the structure has been tested in a free condition, then we should expect to see a mass-line asymptote where its magnitude may be deduced from purely rigid-body considerations.

-

Deviations from this expected behavior may be caused by the frequency range of measurement not extending low enough to see the asymptotic trend, or they may indicate that the required support conditions have not in fact been achieved.

-
High-frequency asymptotes
-

In the upper end of the frequency range, is it sometimes found (especially on point mobility measurements), that the curve becomes asymptotic to a mass line or, more usually to a stiffness line. -Such situation can result in considerable difficulties for the modal analysis process and reflects a situation where the excitation is being applied at a point of very high mass of flexibility. -Then, modal parameters are difficult to extracts as they are overwhelmed by the dominant local effects.

-
Incidence of anti-resonances
-

For a point FRF, there must be antiresonance after each resonances, while for transfer FRFs between two points well-separated on the structure, we should expect more minima than antiresonances.

-

A second check to be made is that the resonance peaks and the antiresonances exhibit the same sharpness on a log-log plot:

-
    -
  • Frequency resolution limitation will cause blunt resonances
  • -
  • Inadequate vibration levels results in poor definition of the antiresonance regions
  • -
-
Overall shape of FRF skeleton
-

The relative position of the resonance, antiresonances and ambient levels of the FRF curve can give information on the validity of the data. -This will be further explained.

-
Nyquist plot inspection
-

When plotting the FRF data in a Nyquist format, we expect that each resonance traces out at least part of a circular arc, the extent of which depends largely on the interaction between adjacent modes. -For a system with well-separated modes, it is to be expected that each resonance will generate the major part of a circle, but when modal interference increases, only small segments will be identifiable. -However, within these bounds, the Nyquist plot should ideally exhibit a smooth curve, and failure to do so may be an indication of a poor measurement technique.

-

Assessment of multiple-FRF data set using SVD

-

When several FRFs are acquired (either from SIMO or MIMO data), the Singular Value Decomposition has proved to be a very useful tool to check the quality, reliability and order of the data.

-

The set of FRF which are to be assessed is stored in a series of vectors \(\{H_{jk}(\omega)\}\) each of which contains the values for one FRF at all measured frequencies \(\omega = \omega_1, \dots, \omega_L\). -These vectors are assembled into a matrix -\[ [A]_{L\times np} = [\{H_{11}(\omega)\}_{L\times 1} \{H_{21}(\omega)\}_{L\times 1} \dots \{H_{np}(\omega)\}_{L\times 1} ] \] -where \(n\) and \(p\) represent the number of measured DOFs and the number of excitation points. -\(L\) represents the number of frequencies at which the FRF data are defined.

-
-
-

\begin{equation} -[A]_{L\times np} = [U]_{L\times L} [\Sigma]_{L\times np} [V]_{np\times np}^T -\end{equation}

-
-
-
-
    -
  • The singular values \(\sigma_1, \dots, \sigma_w\) describes the amplitude information
  • -
  • Number of non-zero singular values represents the order of the system (i.e. the number of independent modes of vibration which effectively contribute to the measured FRFs)
  • -
  • The columns of \([U]\) represent the frequency distribution of these amplitudes
  • -
  • The columns of \([V]\) represent their spatial distribution
  • -
-
-
-
-

From the SVD, we can compute a new matrix \([P]_{L\times np}\) which is referred to as the Principal Response Function (PRF) matrix. -Each column of the PRF contains a response function corresponding to one of the original FRFs:

-

\begin{equation} -[U]_{L\times L} [\Sigma]_{L\times np} = [P]_{L\times np} -\end{equation}

-

Then, each PRF is, simply, a particular combination of the original FRFs, and thus each FRF contains all the essential information included in those FRFs (eigenvalues for instance).

-
-

On example of this form of pre-processing is shown on figure fig:PRF_numerical for a numerically-simulation test data, and another in figure fig:PRF_measured for the case of real measured test data.

-

The second plot fig:PRF_numerical_svd helps to determine the true order of the system because the number of non-zero singular values is equal to this parameter. -The third plot fig:PRF_numerical_PRF shows the genuine modes distinct from the computational modes.

-
-
-

It can be seen that the PRFs tend to tall into two groups:

-
    -
  • The most prominent are a set of response function, each of which has a small number of dominant peaks. -It represents the physical modes of the system.
  • -
  • The lower group shows less distinct and clear-cut behavior. -It represents the noise or computational modes present in the data.
  • -
-

The two groups are usually separated by a clear gap (depending of the noise present in the data):

-
    -
  • If such gap is present, then is will be possible to extract the properties of the \(m\) modes which are active in the measured responses over the frequency range covered.
  • -
  • If not, then it may be impossible to perform a successful modal parameter extraction.
  • -
-
-

-
- Table 19: - FRF and PRF characteristics for numerical model -
- - - - - - - - - - - - - - - - - - - - -
FRF Singular Values PRF
width=\linewidthwidth=\linewidthwidth=\linewidth
-

-
- Table 20: - FRF and PRF characteristics for measured model -
- - - - - - - - - - - - - - - - - - - - -
FRF Singular Values PRF
width=\linewidthwidth=\linewidthwidth=\linewidth
-

Mode Indicator Functions (MIFs)

-
General
-

The Mode Indicator Functions are usually used on \(n\times p\) FRF matrix where \(n\) is a relatively large number of measurement DOFs and \(p\) is the number of excitation DOFs, typically 3 or 4.

-

In these methods, the frequency dependent FRF matrix is subjected to an eigenvalue or singular value decomposition analysis which thus yields a small number (3 or 4) of eigen or singular values, these also being frequency dependent.

-

These methods are used to determine the number of modes present in a given frequency range, to identify repeated natural frequencies and to pre process the FRF data prior to modal analysis.

-
Complex mode indicator function (CMIF)
-

The Complex Mode Indicator Function is defined simply by the SVD of the FRF (sub) matrix.

-
-
-

This decomposition, is defined as

-

\begin{align*} -[H(\omega)]_{n\times p} &= [U(\omega)]_{n\times n} [\Sigma(\omega)]_{n\times p} [V(\omega)]_{p\times p}^H\\\
-[CMIF(\omega)]_{p\times p} &= [\Sigma(\omega)]_{p\times n}^T [\Sigma(\omega)]_{n\times p} -\end{align*}

-
-

The actual mode indicator values are provided by the squares of the singular values and are usually plotted as a function of frequency in logarithmic form as shown in figure fig:mifs:

-
    -
  • Natural frequencies are indicated by large values of the first CMIF (the highest of the singular values)
  • -
  • double or multiple modes by simultaneously large values of two or more CMIF.
  • -
-

Associated with the CMIF values at each natural frequency \(\omega_r\) are two vectors:

-
    -
  • the left singular vector \(\{U(\omega_r)\}_1\) which approximates the mode shape of that mode
  • -
  • the right singular vector \(\{V(\omega_r)\}_1\) which represents the approximate force pattern necessary to generate a response on that mode only
  • -
-

-
- Figure 27: Complex Mode Indicator Function (CMIF)
-

Figure 27: Complex Mode Indicator Function (CMIF)

-
-
- -
-
-

In addition to identifying all the significant natural frequencies, the CMIF can also be used to generate a set of enhanced FRFs from the formula:

-

\begin{equation} -[EFRF(\omega)]_{n\times p} = [H(\omega)]_{n\times p} [V(\omega)]_{p\times p} -\end{equation}

-

There is one non-trivial EFRF for each mode, the result of which is an almost SDOF characteristic response function which is then readily amenable to modal analysis by the simplest of methods.

-

As in the previous case, these modified FRFs are simply linear combinations of the original measured data and, as such, contain no more and no less information than in their original form.

-

However, such an approach lends itself to a very reliable extraction of the global properties (eigenvalues) for the measured FRF data set which can then be re-visited in a second stage to determine the local properties (mode shapes) for all the measured DOFs.

-
-
Other MIFs
-

There are multiple variants on the mode indicator function concepts. Some use the eigenvalue decomposition instead of the singular value decomposition. -Two are worth mentioning: the Multivariable Mode Indicator Function (MMIF) and the Real Mode Indicator Function (RMIF).

-

SDOF Modal Analysis Methods

-

Review of SDOF modal analysis methods

-

The “SDOF” approach does not imply that the system being modeled is reduced to a single degree of freedom, that that just one resonance is considered at a time.

-

There are limitations to such simple approach, the principal one being that very close modes cannot easily be separated.

-

There are several implementations of the basic concept of SDOF analysis, ranging from the simple peak-picking method, through the classic circle-fit approach to more automatic algorithms such as the inverse FRF “he-fit” method and the general least-squares methods.

-

As the name implies, the method exploits the fact that in the vicinity of a resonance, the behavior of the system is dominated by a single mode (the magnitude is dominated by one of the terms in the series).

-

The general expression of the receptance FRF

-

\begin{equation} -\alpha_{jk}(\omega) = \sum_{s=1}^N \frac{{}_sA_{jk}}{\omega_s^2 - \omega^2 + i \eta_s \omega_s^2} -\end{equation}

-

can be rewritten as:

-

\begin{equation} -\alpha_{jk}(\omega) = \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} + \sum_{\substack{s=1\s \neq r}}^N \frac{{}_sA_{jk}}{\omega_s^2 - \omega^2 + i \eta_s \omega_s^2} -\end{equation}

-
-
-

Now, the SDOF assumption is that for a small range of frequency in the vicinity of the natural frequency of mode \(r\), \(\alpha_{jk}(\omega)\) can be approximated as

-

\begin{equation} -\alpha_{jk}(\omega)_{\omega\approx\omega_r} = \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} + {}_rB_{jk} -\end{equation}

-
-

This does not mean that the other modes are unimportant or negligible (their influence can be considerable), but rather that their combined effect can be represented as a constant term around this resonance.

-

SDOF Modal Analysis I - Peak-Amplitude method

-

In this method, it is assumed that close to one local mode, any effects due to the other modes can be ignored. -This is a method which works adequately for structures whose FRF exhibit well separated modes. -This method is useful in obtaining initial estimates to the parameters.

-

The peak-picking method is applied as follows (illustrated on figure fig:peak_amplitude):

-
    -
  1. -

    First, individual resonance peaks are detected on the FRF plot and the maximum responses frequency \(\omega_r\) is taken as the natural frequency of that mode

    -
  2. -
  3. -

    Second, the local maximum value of the FRF \(|\hat{H}|\) is noted and the frequency bandwidth of the function for a response level of \(|\hat{H}|/\sqrt{2}\) is determined. -The two points thus identified as \(\omega_b\) and \(\omega_a\) are the “half power points”

    -
  4. -
  5. -

    The damping of the mode in question can now be estimated from of the following formulae:

    -

    \begin{subequations} -\begin{align} -\eta_r &= \frac{\omega_a^2 - \omega_b^2}{2 \omega_r^2} \approx \frac{\Delta\omega}{\omega_r} \\\
    -2\xi_r &= \eta_r -\end{align} -\end{subequations}

    -
  6. -
  7. -

    We now obtain an estimate for the modal constant of the mode being analyzed by assuming that the total response in this resonant region is attributed to a single term in the general FRF series:

    -

    \begin{equation} -|\hat{H}| = \frac{A_r}{\omega_r^2 \eta_r} \Leftrightarrow A_r = |\hat{H}| \omega_r^2 \eta_r -\end{equation}

    -
  8. -
-

It must be noted that the estimates of both damping and modal constant depend heavily on the accuracy of the maximum FRF level \(|\hat{H}|\) which is difficult to measure with great accuracy, especially for lightly damped systems. -Only real modal constants and thus real modes can be deduced by this method.

-

-
- Figure 28: Peak Amplitude method of modal analysis
-

Figure 28: Peak Amplitude method of modal analysis

-
-
- -

Alternatives of this method can be applied using the real part of the receptance FRF instead of the modulus plot.

-

SDOF Modal Analysis II - Circle Fit Method

-
Properties of the modal circle
-

MDOF systems produce Nyquist plots of FRF data which include sections of near circular arcs corresponding to the regions near the natural frequencies. -This characteristic provides the basic of the “SDOF circle-fit method".

-

We here use structural damping and we use the receptance form of FRF data as this will produces an exact circle in a Nyquist plot. -However, if it is required to use a model incorporating viscous damping, then the mobility version of the FRF data should be used.

-

In the case of a system assumed to have structural damping, the basic function with which we are dealing is

-

\begin{equation} -\alpha(\omega) = \frac{1}{\omega_r^2\left( 1 - \left(\omega/\omega_r\right)^2 + i\eta_r \right)} -\end{equation}

-

since the only effect of including the modal constant \({}_rA_{jk}\) is to scale the size of the circle by \(|{}_rA_{jk}|\) and to rotate it by \(\angle {}_rA_{jk}\). -A plot of the quantity \(\alpha(\omega)\) is given in figure fig:modal_circle.

-

-
- Table 21: - Modal Circle -
- - - - - - - - - - - - - - - - - -
Properties \(\omega_b\) and \(\omega_a\) points
width=\linewidthwidth=\linewidth
-

For any frequency \(\omega\), we have the following relationship:

-

\begin{subequations} -\begin{align} -\tan \gamma &= \frac{\eta_r}{1 - (\omega/\omega_r)^2}\\\
-\tan(\SI{90}{\degree}-\gamma) &= \tan\left(\frac{\theta}{2}\right) = \frac{1 - (\omega/\omega_r)^2}{\eta_r} \label{eq:modal_circle_tan} -\end{align} -\end{subequations}

-

From eq:modal_circle_tan, we obtain:

-

\begin{equation} -\omega^2 = \omega_r^2 \left(1 - \eta_r \tan\left(\frac{\theta}{2}\right) \right) -\end{equation}

-

If we differentiate eq:modal_circle_omega with respect to \(\theta\), we obtain:

-

\begin{equation} -\frac{d\omega^2}{d\theta} = \frac{-\omega_r^2 \eta_r}{2} \frac{\left(1 - (\omega/\omega_r)^2\right)^2}{\eta_r^2} -\end{equation}

-

The reciprocal of this quantity is a measure of the rate at which the locus sweeps around the circular arc. -It may be seen to reach a maximum value when \(\omega=\omega_r\):

-

\begin{equation} -\tcmbox{\frac{d}{d\omega} \left(\frac{d\omega^2}{d\theta}\right) = 0 \text{ when } \omega_r^2 - \omega^2 = 0} -\end{equation}

-

It may also be seen that an estimate of the damping is provided by the sweep rate:

-

\begin{equation} -\tcmbox{\left(\frac{d\theta}{d\omega^2}\right)_{\omega=\omega_r} = -\frac{2}{\omega_r^2 \eta_r}} -\end{equation}

-

Suppose now we have two specific points on the circle, one corresponding to a frequency \(\omega_b\) below the natural frequency and the other one \(\omega_a\) above the natural frequency. -Referring to figure fig:modal_circle_bis, we can write:

-

\begin{subequations} -\begin{align} -\tan\left(\frac{\theta_b}{2}\right) &= \frac{1 - (\omega_b/\omega_r)^2}{\eta_r}\\\
-\tan\left(\frac{\theta_a}{2}\right) &= \frac{(\omega_a/\omega_r)^2 - 1}{\eta_r} -\end{align} -\end{subequations}

-

From these two equations, we can obtain an expression for the damping of the mode:

-

\begin{equation} -\tcmbox{\eta_r = \frac{\omega_a^2 - \omega_b^2}{\omega_r^2 \left(\tan(\theta_a/2) + \tan(\theta_b/2)\right)}} -\end{equation}

-

which is an exact expression and applies for all levels of damping.

-

If we take two points for which \(\theta_a = \theta_b = \SI{90}{\degree}\), we obtain:

-

\begin{subequations} -\begin{align} -\eta_r &= \frac{\omega_2^2 - \omega_1^2}{2 \omega_r^2}\\\
-\eta_r &= \frac{\omega_2 - \omega_1}{\omega_r} \text{ for light damping} -\end{align} -\end{subequations}

-

When scaled by a modal constant \({}_rA_{jk}\) added in the numerator, the diameter of the circle will be -\[ {}_rD_{jk} = \frac{\left|{}_rA_{jk}\right|}{\omega_r^2 \eta_r} \] -and the whole circle will be rotated so that the principal diameter (the one passing through the natural frequency point) is oriented at an angle \(\arg({}_rA_{jk})\) to the negative Imaginary axis.

-

For SDOF system with viscous damping, rather than structural damping, the mobility is -\[ Y(\omega) = \frac{i\omega}{(k - \omega^2 m) + i \omega c} \]

-

And we have

-

\begin{equation} -\tan\left(\frac{\theta}{2}\right) = \frac{1 - (\omega/\omega_r)^2}{2 \xi \omega/\omega_r} -\end{equation}

-

From points at \(\omega_a\) and \(\omega_b\), we obtain

-

\begin{subequations} -\begin{align} -\xi &= \frac{\omega_a^2 - \omega_b^2}{2 \omega_r \left( \omega_a \tan(\theta_a/2) + \omega_b \tan(\theta_b/2) \right)}\\\
-&= \frac{\omega_a - \omega_b}{\omega_r \left( \tan(\theta_a/2) + \tan(\theta_b/2) \right)} \text{ for light damping} -\end{align} -\end{subequations}

-

Finally, selecting two points for which \(\theta_a = \theta_b = \SI{90}{\degree}\):

-

\begin{equation} -\xi = \frac{\omega_2 - \omega_1}{2 \omega_r} -\end{equation}

-
Circle-fit analysis procedure
-

The sequence is:

-
    -
  1. Select points to be used.
  2. -
  3. Fit circle, calculate quality of fit. -It is generally done by a least-square algorithm. -Then we obtain the center and radius of the circle and the quality factor is the mean square deviation of the chosen points from the circle.
  4. -
  5. Locate natural frequency, obtain damping estimate. -The rate of sweep through the region is estimated numerically and the frequency at which it reaches the maximum is deduced. -At the same time, an estimate of the damping is derived using eq:estimate_damping_sweep_rate. -A typical example is shown on figure fig:circle_fit_natural_frequency.
  6. -
  7. Calculate multiple damping estimates, and scatter. -A set of damping estimates using all possible combination of the selected data points are computed using eq:estimate_damping. -Then, we can choose the damping estimate to be the mean value. -We also look at the distribution of the obtained damping estimates as is permits a useful diagnostic of the quality of the entire analysis: -
      -
    • Good measured data should lead to a smooth plot of these damping estimates, any roughness of the surface can be explained in terms of noise in the original data.
    • -
    • However, any systematic distortion of the plot is almost certainly caused by some form of error in the data, in the analysis or in the assumed behavior of the system.
    • -
    -
  8. -
  9. Determine modal constant modulus and argument. -The magnitude and argument of the modal constant is determined from the diameter of the circle and from its orientation relative to the Real and Imaginary axis.
  10. -
-

-
- Figure 29: Location of natural frequency for a Circle-fit modal analysis
-

Figure 29: Location of natural frequency for a Circle-fit modal analysis

-
-
- -

Then, the theoretically regenerated FRF can be plotted against the original measured data for comparison. -In order to determines the contribution of other modes on the resonance of mode \(r\), the distance from the top of the principal diameter to the origin has to be measured and is equal to \({}_rB_{jk}\).

-

SDOF Modal Analysis III - Inverse or Line-fit method

-
Properties of inverse FRF plots
-

The original version of this method uses the fact that a function which generates a circle when plotted in the complex plane will, when plotted as a reciprocal, trace out a straight line. -Thus, if we were to plot the reciprocal of receptance of a SDOF system with structural damping, we would find that in the Argand diagram it produces a straight line:

-

\begin{subequations} -\begin{align} -\alpha(\omega) &= \frac{(k - \omega^2 m) - i d}{(k - \omega^2 m)^2 + d^2}\\\
-\frac{1}{\alpha(\omega)} &= (k - \omega^2 m) + i d -\end{align} -\end{subequations}

-

First, a least squares best-fit straight line is constructed through the data points and an estimate for the damping parameters is immediately available from the intercept of the line with the Imaginary axis. -Furthermore, an indication of the reliability of that estimate may be gained from the nature of the deviations of the data points from the line itself. -We can here determine whether the damping is structural (imaginary part constant with frequency) or viscous (imaginary part linear with frequency).

-

Then, a second least squares operation is performed, this time on the deviation between the real part of the measured data points and that of the theoretical model. -Resulting from this, we obtain estimates for the mass and stiffness parameters.

-

It should be noted that this approach is best suited to systems with real modes and to relatively well-separated modes.

-
General inverse analysis method
-

It has been shown that if a purely SDOF system FRF is plotted in this way, then both plots demonstrate straight lines, and separately reveal useful information about the mass, stiffness and damping properties of the measured system.

-

The inverse FRF of a MDOF system is not as convenient as SDOF system as:

-

\begin{align*} -H_{jk}^{-1} (\omega) &= \frac{1}{\sum (k - \omega^2 m) + i \omega c}\\\
-&\neq \sum \frac{1}{(k - \omega^2 m) + i \omega c} -\end{align*}

-

Thus, in order to determine the modal parameters of a MDOF system using inverse method, some modifications to the basic formulation must be found.

-

We start with the basic formula for SDOF analysis: -\[ \alpha_{jk}(\omega)_{\omega\simeq\omega_r} \simeq \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} + {}_rB_{jk} \] -We can note that the presence of the \({}_rB_{jk}\) term is problematic for the inverse plot.

-

The trick is to define a new FRF term \(\alpha^\prime_{ik}(\omega)\) which is the difference between the actual FRF and the value of the FRF at one fixed frequency \(\Omega\) in the range of interest called “fixing frequency": -\[ \alpha^\prime_{jk}(\omega) = \alpha_{jk}(\omega) - \alpha_{jk}(\Omega) \] -from which the inverse FRF parameter that we shall use for the modal analysis \(\Delta(\omega)\), can be defined as:

-

\begin{align*} -\Delta(\omega) &= (\omega^2 - \Omega^2)/\alpha^\prime_{jk}(\omega)\\\
-&= \text{Re}(\Delta) + i \text{Im}(\Delta) -\end{align*}

-

It can be seen that -\[ \text{Re}(\Delta) = m_R \omega^2 + c_R; \quad \text{Im}(\Delta) = m_I \omega^2 + c_I \] -and that

-

\begin{align*} -m_R &= a_R(\Omega^2 - \omega_r^2) - b_r (\omega_r^2 \eta_r) \\\
-m_I &= -b_R(\Omega^2 - \omega_r^2) - a_r (\omega_r^2 \eta_r) \\\
-{}_rA_{jk} &= a_R + i b_r -\end{align*}

-

The first step of our analysis procedure can be made, as follows:

-
    -
  1. Using the FRF data measured in the vicinity of the resonance \(\omega_r\), choose the fixing frequency \(\Omega_j\) and then calculate \(\Delta(\omega)\)
  2. -
  3. Plot these values on \(\text{Re vs } \omega^2\) and \(\text{Im vs }\omega^2\) plots and compute the best fit straight line in order to determine \(m_R(\Omega_j)\) and \(m_I(\Omega_j)\)
  4. -
-

Now it can be shown that both these straight line slopes \(m_R\) and \(m_I\) are simple functions of \(\Omega\), and we can write: -\[ m_R = n_R \Omega^2 + d_R \text{ and } m_I = n_I \Omega^2 + d_I \] -where

-

\begin{equation} -\begin{aligned} -n_R &= a_r; \quad n_I = -b_r \\\
-d_R &= -b_r(\omega_r^2 \eta_r) - a_r \omega_r^2; \quad d_I = b_r \omega_r^2 - a_r\omega_r^2\eta_r -\end{aligned} -\end{equation}

-

Now let \(p = n_I/n_R \text{ and } q = d_I/d_R\), and noting that

-

\begin{equation} -\begin{aligned} -\eta_r &= \frac{q - p}{1 + pq}; \quad \omega_r^2 = \frac{d_R}{(p\eta_r - 1)n_R} \\\
-a_r &= \frac{\omega_r^2(p\eta_r - 1)}{(1 + p^2)d_R}; \quad b_r = -a_r p -\end{aligned} -\end{equation}

-

we now have sufficient information to extract estimates for the four parameters for the resonance which has been analyzed: \(\omega_r, \eta_r, \text{ and } {}_rA_{jk} = a_r + i b_r\).

-
    -
  1. Plot graphs of \\(m\_R(\Omega)\\) vs \\(\Omega^2\\) and of \\(m\_I(\Omega)\\) vs \\(\Omega^2\\) using the results from step 1., each time using a different measurement points as the fixing frequency \\(\Omega\_j\\)
  2. -
  3. Determine the slopes of the best fit straight lines through these two plots, \\(n\_R\\) and \\(n\_I\\), and their intercepts with the vertical axis \\(d\_R\\) and \\(d\_I\\)
  4. -
  5. Use these four quantities, and equation [eq:modal_parameters_formula](#eq:modal_parameters_formula), to determine the **four modal parameters** required for that mode
  6. -
-

This procedure which places more weight to points slightly away from the resonance region is likely to be less sensitive to measurement difficulties of measuring the resonance region.

-

Residuals

-
Concept of residual terms
-

We need to introduce the concept of residual terms, necessary in the modal analysis process to take account of those modes which we do not analyze directly but which nevertheless exist and have an influence on the FRF data we use.

-

The first occasion on which the residual problem is encountered is generally at the end of the analysis of a single FRF curve, such as by the repeated application of an SDOF curve-fit to each of the resonances in turn until all modes visible on the plot have been identified. -At this point, it is often desired to construct a theoretical curve (called “regenerated"), based on the modal parameters extracted from the measured data, and to overlay this on the original measured data to assess the success of the curve-fit process. -Then the regenerated curve is compared with the original measurements, the result is often disappointing, as illustrated in figure fig:residual_without. -However, by the inclusion of two simple extra terms (the “residuals"), the modified regenerated curve is seen to correlate very well with the original experimental data as shown on figure fig:residual_with.

-

-
- Table 22: - Effects of residual terms on FRF regeneration -
- - - - - - - - - - - - - - - - - -
without residual with residuals
width=\linewidthwidth=\linewidth
-

If we regenerate an FRF curve from the modal parameters we have extracted from the measured data, we shall use a formula of the type

-

\begin{equation} -H_{jk}(\omega) = \sum_{r = m_1}^{m_2} \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} -\end{equation}

-

in which \(m_1\) and \(m_2\) reflects that we do not always start at the first mode (\(r = 1\)) and continue to the highest mode (\(r = N\)).

-

However, the equation which most closely represents the measured data is:

-

\begin{equation} -H_{jk}(\omega) = \sum_{r = 1}^{N} \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} -\end{equation}

-

which may be rewritten as

-

\begin{equation} -H_{jk}(\omega) = \left( \sum_{r=1}^{m_1-1} + \sum_{r=m_1}^{m_2} + \sum_{r = m_2+1}^{N} \right) \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} -\end{equation}

-

The three terms corresponds to:

-
    -
  1. the low frequency modes not identified
  2. -
  3. the high frequency modes not identified
  4. -
  5. the modes actually identified
  6. -
-

These three terms are illustrated on figure fig:low_medium_high_modes.

-

-
- Figure 30: Numerical simulation of contribution of low, medium and high frequency modes
-

Figure 30: Numerical simulation of contribution of low, medium and high frequency modes

-
-
- -

From the sketch, it may be seen that within the frequency range of interest:

-
    -
  • the first term tends to approximate to a mass-like behavior
  • -
  • the third term approximates to a stiffness effect
  • -
-

Thus, we have a basis for the residual terms and shall rewrite equation eq:sum_modes:

-

\begin{equation} -H_{jk}(\omega) \simeq -\frac{1}{\omega^2 M_{jk}^R} + \sum_{r=m_1}^{m_2} \left( \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} \right) + \frac{1}{K_{jk}^R} -\end{equation}

-

where the quantities \(M_{jk}^R\) and \(K_{jk}^R\) are the residual mass and stiffness for that particular FRF and chosen frequency range.

-
Calculation of residual mass and stiffness terms
-

First, we compute a few values of the regenerated FRF curve at the lower frequencies covered by the tests, using only the identified modal parameters. -Then, by comparing these values with those from actual measurements, we estimate a mass residual constant which, when added to the regenerated curve, brings this closely into line with the measured data.

-

Then, the process is repeated at the top end of the frequency range, this time seeking a residual stiffness. -Often, the process is more effective if there is an antiresonance near either end of the frequency range which this is then used as the point of adjustment.

-

The procedure outlined here may need to be repeated iteratively in case the addition of the stiffness residual term then upsets the effectiveness of the mass term.

-

It should be noted that often there is a physical significance to the residual terms. -If the test structure is freely-supported and its rigid body modes are well below the minimum frequency of measurement, then the mass residual term will be a direct reflection of the rigid body mass and inertia properties of the structure. -The high frequency residual can represent the local flexibility at the drive point.

-
Residual and pseudo modes
-

Sometimes it is convenient to treat the residual terms as if they were modes. -Instead of representing each residual effect by a constant, each can be represented by a pseudo mode. -For the low frequency residual effects, this pseudo mode has a natural frequency below the lowest frequency on the measured FRF, and for the high frequency residual effects, that pseudo mode has a natural frequency which is above the highest frequency of the measured FRF. -These pseudo modes can be conveniently included in the list of modes which have been extracted by modal analysis of that FRF.

-

Using pseudo modes instead of simple residual mass and stiffness terms is a more accurate way of representing the out-of-range modes. -There is one warning, however, and that is to point out that these pseudo modes are not genuine modes and that they cannot be used to deduce the corresponding contributions of these same modes for any other FRF curve.

-

Refinement of SDOF modal analysis methods

-

In the modal analysis methods discussed above, an assumption is made that near the resonance under analysis, the effect of all the other modes could be represented by a constant. -When there are neighboring modes close to the one being analyzed, this assumption may not be valid.

-
-
-

“Close” is begin loosely defined as a situation where the separation between the natural frequencies of two adjacent modes is less than the typical damping level, both measured as percentage.

-
-

However, we can usually remove that restriction and thereby make a more precise analysis of the data.

-

We can write the receptance in the frequency range of interest as:

-

\begin{equation} -\begin{aligned} -H_{jk}(\omega) &= \sum_{s=m_1}^{m_2} \left( \frac{{}_sA_{jk}}{\omega_s^2 - \omega^2 + i \eta_s \omega_s^2} \right) + \frac{1}{K_{jk}^R}-\frac{1}{\omega^2 M_{jk}^R} \\\
-&= \left( \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i\eta_r \omega_r^2} \right) \\\
-&+ \left(\sum_{\substack{s=m_1\s \neq r}}^{m_2} \frac{{}_sA_{jk}}{\omega_s^2 - \omega^2 + i\eta_s \omega_s^2} + \frac{1}{K_{jk}^R} - \frac{1}{\omega^2 M_{jk}^R} \right) -\end{aligned} -\end{equation}

-

In the previous methods, the second term was assumed to be a constant in the curve-fit procedure for mode \(r\). -However, if we have good estimates for the coefficients which constitutes the second term, for example by having already completed an SDOF analysis, we may remove the restriction on the analysis. -Indeed, suppose we take a set of measured data points around the resonance at \(\omega_r\), and that we can compute the magnitude of the second term in eq:second_term_refinement, we then subtract this from the measurement and we obtain adjusted data points that are conform to a true SDOF behavior and we can use the same technique as before to obtain improved estimated to the modal parameters of more \(r\).

-

This procedure can be repeated iteratively for all the modes in the range of interest and it can significantly enhance the quality of found modal parameters for system with strong coupling.

-

MDOF Modal analysis in the frequency domain (SISO)

-

General Approach

-

There are a number of situations in which the SDOF approach to modal analysis is inadequate and for these there exist several alternative methods which may generally be classified as MDOF modal analysis methods. -These situations are generally those with closely coupled modes where the single mode approximation is inappropriate and those with extremely light damping for which measurements at resonance are inaccurate.

-
-
-

Three approach to curve-fit the entire FRF in one step are considered here:

-
    -
  1. a general approach to multi-mode curve-fitting
  2. -
  3. a method based on the rational fraction FRF formulation
  4. -
  5. a method particularly suited to very lightly-damped structures
  6. -
-
-

Method I - General Curve Fit approach - Non-linear Least Squares (NLLS)

-

We shall denote the individual FRF measured data as: -\[ H_{jk}^m(\Omega_l) = H_l^m \] -while the corresponding “theoretical” values are:

-

\begin{equation} -\begin{aligned} -H_l &=H_{jk}(\Omega_l) \\\
-&= \sum_{s=m_1}^{m_2}\frac{{}_sA_{jk}}{\omega_s^2 - \Omega_l^2 + i \eta_s \omega_s^2} + \frac{1}{K_{jk}^R} - \frac{1}{\Omega_l^2 M_{jk}^R} -\end{aligned} -\end{equation}

-

where the coefficients \({}_1A_{jk}, {}_2A_{jk}, \dots, \omega_1, \omega_2, \dots, \eta_1, \eta_2, \dots, K_{jk}^R \text{ and }M_{jk}^R\) are all to be determined.

-

We can define an individual error as:

-

\begin{equation} -\epsilon_l = H_l^m - H_l -\end{equation}

-

and express this as a scalar quantity:

-

\begin{equation} -E_l = \left| \epsilon_l^2 \right| -\end{equation}

-

If we further increase the generality by attaching a weighting factor \(w_l\) to each frequency point of interest, then the curve fit process has to determine the values of the unknown coefficients such that the total error:

-

\begin{equation} -E = \sum_{l = 1}^p w_l E_l -\end{equation}

-

is minimized.

-

This is achieved by differentiating eq:error_weighted with respect to each unknown in turn, thus generating a set of as many equations as there are unknown:

-

\begin{equation} -\frac{d E}{d q} = 0; \quad q = {}_1A_{jk}, {}_2A_{jk}, \dots -\end{equation}

-

Unfortunately, this set of equations are not linear in many of the coefficients and thus cannot be solved directly. -It is from this point that the differing algorithms choose their individual procedures: making various simplifications, assumptions or linearizing the expressions.

-

Method II - Rational Fraction Polynomial Method (RFP)

-

The method which has emerged as one the standard frequency domain modal analysis methods is that known as the Rational Fraction Polynomial (RFP) method. -This method is a special version of the general curve fitting approach but is based on a different formulation for the theoretical expression used for the FRF.

-
-
-

\begin{subequations} -\begin{align} -H(\omega) &= \sum_{r=1}^N \frac{A_r}{\omega_r^2 - \omega^2 + 2 i \omega \omega_r \xi_r} \label{eq:frf_clasic} \\\
-&= \frac{b_0 + b_1(i\omega) + \dots + b_{2N-1}(i\omega)^{2N-1}}{a_0 + a_1(i\omega) + \dots + a_{2N}(i\omega)^{2N}} \label{eq:frf_rational} -\end{align} -\end{subequations}

-

In this formulation, we have adopted the viscous damping model.

-
-

The unknown coefficients \(a_0, \dots, a_{2N}, b_0, \dots, b_{2N-1}\) are not the modal properties but are related to them and are computed in a further stage of processing.

-

The particular advantage of this approach is the possibility of formulating the curve fitting problem as a linear set of equations, thereby making the solution amenable to a direct matrix solution.

-

We shall denote each of our measured FRF data point by \(\hat{H}_k\), where \(\hat{H}_k = \hat{H}(\omega_k)\), and define the error between that measured value and the corresponding value derived from the curve-fit expression as

-

\begin{equation} -e_k = \frac{b_0 + b_1(i\omega_k) + \dots + b_{2m-1}(i\omega_k)^{2m-1}}{a_0 + a_1(i\omega_k) + \dots + a_{2m}(i\omega_k)^{2m}} - \hat{H}_k -\end{equation}

-

leading to the modified, but more convenient version actually used in the analysis

-

\begin{equation} -\begin{aligned} -e_k^\prime &= \left( b_0 + b_1(i\omega_k) + \dots + b_{2m-1}(i\omega_k)^{2m-1} \right)\\\
-&- \hat{H}_k\left( a_0 + a_1(i\omega_k) + \dots + a_{2m}(i\omega_k)^{2m} \right) -\end{aligned} -\end{equation}

-

In these expressions, only \(m\) modes are included in the theoretical FRF formula: the true number of modes, \(N\), is actually one of the unknowns to be determined during the analysis. -Equation eq:rpf_error can be rewritten as follows:

-

\begin{equation} -\begin{aligned} -e_k^\prime &= \begin{Bmatrix} 1 & i \omega_k & \dots & (i\omega_k)^{2m-1} \end{Bmatrix} -\begin{Bmatrix} b_0 \ \vdots \ b_{2m-1} \end{Bmatrix}\\\
-&- \hat{H}_k \begin{Bmatrix} 1 & i\omega_k & \dots & (i\omega_k)^{2m-1} \end{Bmatrix} -\begin{Bmatrix} a_0 \ \vdots \ a_{2m-1} \end{Bmatrix}\\\
-&- \hat{H}_k (i\omega_k)^{2m} a_{2m} -\end{aligned} -\end{equation}

-

and the \(L\) linear equations corresponding to \(L\) individual frequency points can be combined in matrix form:

-

\begin{equation} -\begin{aligned} -\{E^\prime\}_{L \times 1} &= [P]_{L\times 2m} \{b\}_{2m\times 1}\\\
-&- [T]_{L\times(2m+1)} \{a\}_{(2m+1)\times 1}\\\
-&- \{W\}_{L\times 1} -\end{aligned} -\end{equation}

-

Solution for the unknown coefficients \(a_j, \dots, b_k, \dots\) is achieved by minimizing the error function

-

\begin{equation} -J = \{E^*\}^T\{E\} -\end{equation}

-

and this leads to

-

\begin{equation} -\begin{bmatrix} -[Y] & [X] \\\
-[X]^T & [Z] -\end{bmatrix}_{L \times (4m+1)} -\begin{Bmatrix} -\{b\} \ \{a\} -\end{Bmatrix}_{(4m+1) \times 1} -= \begin{Bmatrix} -\{B\} \ \{F\} -\end{Bmatrix}_{L \times 1} -\end{equation}

-

where \([X], [Y], [Z], \{G\}\) and \(\{F\}\) are known measured quantities:

-

\begin{equation} -\begin{aligned} -[Y] &= \text{Re}\left( [P^*]^T[P] \right);\quad [X] = \text{Re}\left( [P^*]^T[T] \right); \\\
-[Z] &= \text{Re}\left( [T^*]^T[T] \right); \\\
-\{G\} &= \text{Re}\left( [P^*]\{W\} \right);\quad \{F\} = \text{Re}\left( [T^*]\{W\} \right); -\end{aligned} -\end{equation}

-

Once the solution has been obtained for the coefficients \(a_k, \dots , b_k, \dots\) then the second stage of the modal analysis can be performed in which the required modal parameters are derived. -This is usually done by solving the two polynomial expressions which form the numerator and denominator of equations eq:frf_clasic and eq:frf_rational:

-
    -
  • the denominator is used to obtain the natural frequencies \(\omega_r\) and damping factors \(\xi_r\)
  • -
  • the numerator is used to determine the complex modal constants \(A_r\)
  • -
-

In order to determine the order, the analysis is repeated using different assumed values for the order \(m\) and are compared. -For each analysis, there will be properties found for as many modes as prescribed by the chosen model order. -Some of these will be genuine modes while others will be fictitious modes. -Various strategies may be adopted to separate the fictitious and real modes:

-
    -
  • measuring the difference between the original FRF curve and that regenerated using the modal properties derived
  • -
  • measuring the consistency of the various modal parameters for different model order choices and eliminating those which vary widely from run to run
  • -
-

In all these checks, interest is concentrated on the repeatability of the various modal properties: modes which reappear for all choices of data and model condition are believed to be genuine, while those which vary from run to run are more likely to have computational features due to the curve-fitting requirements as their origins, rather than physical ones.

-

Method III - Lightly Damped Structures

-

It is found that some structures do not provide FRF data which respond very well to the above modal analysis procedures mainly because of the difficulties encountered in acquiring good measurements near resonance.

-

For such structures, it is often the case that interest is confined to an undamped model of the test structure since the damping in a complete structural assembly is provided mostly from the joints and not from the components themselves. -Thus, there is scope for an alternative method of modal analysis which is capable of providing the required modal properties, in this case natural frequencies and real modal constants, using data measured away from the resonance regions.

-

The requirements for the analysis are as follows:

-
    -
  1. measure the FRF over the frequency range of interest
  2. -
  3. locate the resonances and note the corresponding natural frequencies
  4. -
  5. select individual FRF measurement data points from as many frequencies as there are modes, plus two, confining the selection to points away from resonance
  6. -
  7. using the data thus gathered, compute the modal constants
  8. -
  9. construct a regenerated curve and compare this with the full set of measured data points
  10. -
-

Global modal analysis methods in the frequency domain

-

General Approach

-

More recent curve fitting procedures are capable of performing a multi curve fit instead of just working with individual FRF curves. -They fit several FRF curves simultaneously, taking due account of the fact that the properties of all the individual curves are related by being from the same structure: -all FRF plots on a given testpiece should indicate the same values for natural frequencies and damping factor of each mode.

-

Such methods have the advantage of producing a unique and consistent model as direct output.

-
-
-

A way in which a set of measured FRF curves may be used collectively, rather than singly, is by the construction of a single Composite Response Function:

-

\begin{equation} -\sum_j\sum_k H_{jk}(\omega) = \sum_j\sum_k\sum_{r=1}^N (\dots) = HH(\omega) -\end{equation}

-

with -\[ H_{jk} = \sum_{r=1}^n \frac{{}_rA_{jk}}{\omega_r^2 - \omega^2 + i \eta_r \omega_r^2} \]

-
-

The composite function \(HH(\omega)\) can provide a useful means of determining a single (average) value for the natural frequency and damping factor for each mode where the individual functions would each indicate slightly different values. -As an example, a set of mobilities measured are shown individually in figure fig:composite_raw and their summation shown as a single composite curve in figure fig:composite_sum.

-

-
- Table 23: - Set of measured FRF -
- - - - - - - - - - - - - - - - - -
Individual curves Composite curve
width=\linewidthwidth=\linewidth
-

The global analysis methods have the disadvantages first, that the computation power required is high and second that there may be valid reasons why the various FRF curves exhibit slight differences in their characteristics and it may not always be appropriate to average them.

-

Global Rational Fraction Polynomial Method (GRFP)

-

The basic Rational Fraction Polynomial (RFP) method that was described in the context of single FRF curve can be generalized to multi-FRF data. -Indeed, all the FRFs from the same structure will have identical numerator polynomials. -The number of unknown coefficients in a problem where there are \(n\) measured FRFs and \(m\) modes of vibration is of the order \((n+1)(2m + 1)\).

-

Global SVD method

-

A set of FRFs with a signal reference (such as are contained within a column from the complete FRF matrix) can be referred to the underlying modal model of the structure (assumed to have viscous damping) by the equation:

-

\begin{align*} -\{H(\omega)\}_k &= \begin{Bmatrix} H_{1k}(\omega) \ \vdots \ H_{nk}(\omega) \ \end{Bmatrix}_{n\times 1} \\\
-&= [\Phi]_{n\times N} \{g_k(\omega)\}_{N\times 1} + \{R_k(\omega)\}_{n\times 1} -\end{align*}

-

where \(\{R_k(\omega)\}\) is a vector containing the relevant residual terms and \(\{g_k(\omega)\}\) is defined as: -\[ \{g_k(\omega)\}_{N\times 1} = [i \omega - s_r]_{N\times N}^{-1} \{\phi_k\}_{N\times 1} \]

-

Also -\[ \{\dot{H}(\omega)\}_k = [\Phi] [s_r] \{g_k(\omega)\} + \{\dot{R}_k(\omega)\} \]

-

Next, we can write the following expressions

-

\begin{equation} -\begin{aligned} -\{\Delta H(\omega_i)\}_k &= \{H(\omega_i)\}_k - \{H(\omega_{i+c})\}_k \\\
-&\approx [\Phi] \{\Delta g_k(\omega_i)\}_{N\times 1} \\\
-\{\Delta \dot{H}(\omega_i)\}_k &\approx [\Phi] [s_r] \{\Delta g_k(\omega_i)\}_{N\times 1} -\end{aligned} -\end{equation}

-

If we now consider data at several different frequencies \(i = 1, 2, \dots, L\), we can write

-

\begin{equation} -\begin{aligned} -[\Delta H_k]_{n\times L} &= [\Phi] [\Delta g_k]_{N\times L} \\\
-[\Delta \dot{H}_k]_{n\times L} &= [\Phi] [s_r] [\Delta g_k]_{N\times L} -\end{aligned} -\end{equation}

-

We can construct an eigenvalue problem: -\[ \left( [\Delta \dot{H}_k]^T - s_r [\Delta H_k]^T \right) \{z\}_r = \{0\} \] -where -\[ [z] = [\Phi]^{+T} \]

-

If we solve \([z] = [\Phi]^{+T}\) using the SVD, we can determine the rank of the FRF matrices and thus the correct number of modes \(m\) to be identified, leading to the appropriate eigenvalues \(s_r;\ r=1, \dots, m\).

-

Then, in order to determine the mode shapes, the modal constants can be recovered from:

-

\begin{equation} -\begin{aligned} -\begin{Bmatrix} H_{jk}(\omega_1) \ \vdots \ H_{jk}(\omega_L) \ \end{Bmatrix}_{L\times 1} = &\begin{bmatrix} -(i\omega_1 - s_1)^{-1} & (i\omega_1 - s_2)^{-1} & \dots \\\
-(i\omega_2 - s_1)^{-1} & (i\omega_2 - s_2)^{-1} & \dots \\\
-\vdots & \dots & \dots \\\
-\vdots & \dots & (i\omega_L - s_m)^{-1} \\\
-\end{bmatrix}\\\
-&\begin{Bmatrix} -{}_1A_{jk}\ \vdots \ {}_mA_{jk} -\end{Bmatrix}_{m\times 1} -\end{aligned} -\end{equation}

-

Using this approach, it is possible to extract a consistent set of modal parameters for the model whose FRFs have been supplied.

-

Concluding comments

-

In the task of extracting modal model parameters from measured test data, the analyst must rely on the skill of others who have coded the various analysis algorithms since these are generally complex. -Because of this, the analyst must develop the various skills which enable him to select the most appropriate analysis procedure for each case and to make the best interpretation of the output of these analysis methods.

-

In this chapter, we have first highlighted the need for accuracy and reliability in the measured data that is the source of a modal analysis. -If these data are not of high quality, the resulting modal model cannot be expected to be any better. -Thus, attention must be paid at the initial phases to ascertain and to assure the necessary quality of the raw data. -Question as to the correct order for the model and the most appropriate model for damping are often foremost among these early interpretations.

-

A hierarchy of different types of modal analysis procedure have been cataloged, from the simple SDOF one-mode-at-a-time for a single response function, through MDOF methods which reveal several modes at a time, to global analysis methods where several modes are extracted simultaneously from several FRFs.

-

Derivation of Mathematical Models

-

Introduction

-

We consider now the derivation of a mathematical model to describe the dynamic behavior of the test structure. -Various types of model exists and are suitable in different cases. -The most important aspect of the modeling process is to decide exactly which type of model we should seek before setting out on the acquisition and processing of experimental data.

-

Three main categories of model are identified:

-
    -
  • Spatial model: mass, stiffness and damping
  • -
  • Modal model: natural frequencies, mode shapes
  • -
  • Response model: frequency response functions
  • -
-

There exist complete models of each type and the more realistic incomplete models we are obliged to consider in practical cases.

-

The three types of model are usually derived as \(\text{Spatial}\Rightarrow\text{Modal}\Rightarrow\text{Response}\) for theoretical analysis, and conversely, as \(\text{Response}\Rightarrow\text{Modal}\Rightarrow\text{Spatial}\) for an experimental study. -We may now view them in a different order, according to the facility with which each may be derived from the test data: Modal, Response and then Spatial. -This reflects the quantity of the completeness of data required in each case.

-
-
-

A modal model can be constructed using just one single mode, and including only a handful of degrees of freedom, even though the structure has many modes and many DOFs. -Such a model can be built up by adding data from more modes, but it is not a requirement that all the modes should be included nor even that all the modes in the frequency range of interest be taken into account. -Thus such a model may be derived with relatively few, or equally, with many data.

-
-
-
-

The response type of model in the form of a FRF matrix, such as the mobility matrix, also needs only to include information concerning a limited number of point of interest: not all the DOFs need be considered. -However, in this case, it is generally required that the model be valid over a specified frequency range, and here it is necessary that all the modes in that range be included. -Also, some account should be taken of the modes whose natural frequencies lie outside of the range of interest to allow for the residual effects. -Thus, the response type of model demands more data to be collected from the tests.

-
-
-
-

A representative spatial model can only be obtained if we have measured most of the modes of the structure and if we have made measurements at a great many of the DOFs it possesses. -This is generally a very demanding requirement to meet, and as result, the derivation of a spatial model from test data is very difficult to achieve.

-
-

This chapter is organized with the following structure:

-
    -
  1. We shall describe what data must be measured in order to construct a suitable model and what checks can be made to access the reliability of the model.
  2. -
  3. We shall discuss a number of techniques for “refining” the model which is obtained from the test so that it matches a number of features of the analytical model. -For instance, it is common to extract complex mode shapes from the test data on real structures but the analytical models are usually undamped so that their modes are real.
  4. -
  5. We may wish to expand our experimental model, or, alternatively, reduce the theoretical ones so that the two models which are to be compared are at least of the same order.
  6. -
  7. We shall explore some of the properties of the models which can be derived by the means described here.
  8. -
- -

Requirements to construct modal model

-

A modal model of a structure consists of two matrices:

-
    -
  • one containing the natural frequencies and damping factors: the eigenvalues
  • -
  • one which describes the shapes of the corresponding modes: the eigenvectors
  • -
-

Thus, we can construct such a model with just a single mode, and a more complete model is assembled simply by adding together a set of these single-mode descriptions.

-

The basic method of deriving a modal model is as follows. -First, we note that from a single FRF curve, \(H_{jk}(\omega)\), it is possible to extract certain modal properties for the \(r^\text{th}\) mode by modal analysis:

-

\begin{equation} -H_{jk}(\omega) \longrightarrow \omega_r, \eta_r, {}_rA_{jk}; \quad r=1, m -\end{equation}

-

Now, although this gives us the natural frequency and damping properties directly, it does not explicitly yield the mode shape: only a modal constant \({}_rA_{jk}\) which is formed from the mode shape data. -In order to extract the individual elements \(\phi_{jr}\) of the mode shape matrix \([\Phi]\), it is necessary to make a series of measurements of specific FRFs including, especially, the point FRF at the excitation position. -If we measure \(H_{kk}\), then by using eq:modal_model_from_frf, we also obtain the specific elements in the mode shape matrix corresponding to the excitation point:

-

\begin{equation} -H_{kk}(\omega) \longrightarrow \omega_r, \eta_r, {}_rA_{jk} \longrightarrow \phi_{kr}; \quad r=1, m -\end{equation}

-

If we then measure an associated transfer FRF using the same excitation position, such as \(H_{jk}\), we are able to deduce the mode shape element corresponding to the new response point \(\phi_{jr}\) using the fact that the relevant modal constants may be combined with those from the point measurement:

-

\begin{equation} -\tcmbox{\phi_{jr} = \frac{{}_rA_{jk}}{\phi_{kr}}} -\end{equation}

-

Hence, we find that in order to derive a modal model referred to a particular set of \(n\) coordinates, we need to measure and analysis a set of \(n\) FRF curves, all sharing the same excitation point and thus constituting one point FRF and \((n-1)\) transfer FRFs. -In terms of the complete FRF matrix, this corresponds to measure the individual FRF of one entire column. -It is also possible to measure one row of the FRF matrix. This corresponds of a set of \(n\) FRF curves sharing the same measurement point and varied excitation point.

-

Often, several additional elements from the FRF matrix would be measured to provide a check, or to replace poor data, and sometimes measurement of a complete second column or row might be advised in order to ensure that one or more modes have not been missed by an unfortunate choice of exciter location. -Indeed, if the exciter is placed at a nodal point of one of the modes, then there would be no indications at all of the existence of that mode because every modal constant would be zero for that mode. -It may then require more than one measurement to confirm that we are not exciting the structure at a nodal point.

-

Once all the selected FRF curves have been measured and individually analyzed, we obtain a set of modal properties containing more data than needed:

-
    -
  • we may have determined many separate estimates for the natural frequencies and damping factors as these parameters are extracted from each FRF curve
  • -
  • in the even we have measured more than one row or one column for the FRF matrix, we also obtain separate estimates for the mode shapes
  • -
-

The simplest procedure is to average all the individual estimates that results in means values \(\tilde{\omega}_r\) and \(\tilde{\eta}_r\). -In practice, not all the estimates should carry equal weight because some would probably be derived from much more satisfactory curve fits than others. -A refined procedure would be to calculate a weighted mean of all the estimate using the quality factor obtained from the curve-fit procedure.

-

If we choose to accept a revised value for \(\omega_r\) and \(\eta_r\) of a particular mode, then the value for the modal constant should also be revised:

-

\begin{equation} -{}_r\tilde{A}_{jk} = {}_rA_{jk}\frac{\tilde{\omega}_r^2 \tilde{\eta}_r}{\omega_r^2 \eta_r} -\end{equation}

-

The final reduced model obtained consist of the two matrices which constitute a modal model, namely: -\[ \left[ \omega_r^2(1 + i\eta_r) \right]_{m\times m};\quad \left[ \Phi \right]_{n\times m} \]

-

Double modes or repeated roots

-

When a structure has two modes that are very close in frequency, it may be impossible to derive a true model for the structure. -All we can define in these circumstances is a single equivalent mode which is, in fact, a combination of the two actual modes that are difficult to identify individually.

-

However, single equivalent modes can lead to erroneous models and it is very important that we can detect the presence of double modes and that we can identify all the modes which are present.

-

The only way repeated modes can be detected and identified in a modal test is by using data from more than on reference. -This means that we must measure FRF data from more than a single row or column (as many rows/columns as there are repeated roots).

-

Constructing models of NSA structures

-

Structures which are classified as Non-Self-Adjoint (NSA) have non-symmetric mass, stiffness or damping matrices. -This often occurs in structures with rotating components. -As a result, we cannot take advantage of the symmetry of the system matrices and just measuring a single row or column of the FRF matrix.

-

In the case of NSA structures, we are required to measure and analyze the elements in both a row and a column of the FRF matrix. -A mathematical explanation is that this class of system have two types of eigenvectors (left-hand and right-hand) and thus there are twice as many eigenvectors elements to identify.

-

Quality checks for modal models

-

It is important to check the reliability of the obtain results. -There are two such checks that can be recommended for this phase of the process.

-

First, it is possible to regenerate FRFs from the modal model. -These FRFs can be compared with measured data that as been used for the modal analysis. -Furthermore, it is also possible to synthesize FRFs that have not yet been measured (and thus not used for the model), and then to measure the corresponding FRF on the structure and to compare. -This test provides a powerful demonstration of the validity of the modal model.

-

A second, more demanding but also more convincing, demonstration of the validity of the modal model is to use the model to predict how the dynamic properties of the test structure will change if it is subjected to a small structural modification, such as can be occasioned by adding a small mass at a selected point. -Then such modification can be made and the real structure, measurements done and compare with the modified model.

-

Refinement of modal models

-

Need for model refinement

-

Several differences exist between most test-derived models and analytical models that make their comparison difficult.

-

The first difference are on the mode shapes:

-
    -
  • test-derived: generally complex
  • -
  • analytical: usually real if we use an undamped model
  • -
-

Objective comparison between complex mode shapes and real mode shapes is then not possible and some refinement of one of the two sets are required.

-

A second incompatibility lies in the difference in the order of the models:

-
    -
  • test-derived: relatively small order given by the number of measured DOFs \(n\)
  • -
  • analytical: generally an order of magnitude greater than \(n\)
  • -
-

There is then a desire to refine one or other model to bring them both to the same size for meaningful comparison.

-

However, all the refinements involve approximations which means that a compromise has been made in order to achieve the greater degree of compatibility which is desired.

-

Complex-to-real conversion

-

As we usually don’t know the nature, extend and distribution of damping present in the system, the analytical model is chosen to be undamped. -We wish here to be able to determine what would be the mode shapes of the tested structure if, by some means, we could remove the damping but leave everything else the same. -Then we should be able to compare the modes.

-
Simple method
-

This simple method is to convert the mode shape vectors from complex to real by taking the modulus of each element and by assigning a phase to each of \(\SI{0}{\degree}\) or \(\SI{180}{\degree}\).

-

Any phase angle of a complex mode shape element which is between \(\SI{-90}{\degree}\) and \(\SI{90}{\degree}\) is set to \(\SI{0}{\degree}\), while those between \(\SI{90}{\degree}\) and \(\SI{270}{\degree}\) are set to \(\SI{180}{\degree}\). -This procedure can become difficult to apply in borderline cases when the phase is poorly defined.

-
Multi point excitation - Asher’s method
-

In this method, the test-derived model based on complex modes is used to synthesize the response that would be produced by the application of several simultaneous harmonic forces in order to establish what those forces would need to be in order to produce a mono-modal response vector.

-

If the optimum set of excitation forces for a given mode can be found, then they represent the forces that are actually being generated by the damping in the system at resonance of that mode. -We can then deduce the dynamic properties of the structure with these effects removed.

-

The sequence of steps required to determine this solution is as follows:

-
    -
  1. Compute \([\alpha(\omega)]\) from the complex modal model
  2. -
  3. Determine the undamped system natural frequencies \(\omega_r\) by solving the equation \(\det|\text{Re}[\alpha(\omega)]|=0\)
  4. -
  5. Calculate the mono-phase vector for each mode of interest using \(\text{Re}[\alpha(\omega)]\{\hat{F}\} = \{0\}\)
  6. -
  7. Calculate the undamped system mode shapes \(\{\psi_u\}\) using the just-derived force vector: \(\{\psi_u\} = \text{Im}[\alpha(\omega)]\{\hat{F}\}\)
  8. -
-
Matrix transformation
-

We here seek a numerical solution to the expression linking the known damped modes and the unknown undamped modes. -The steps are:

-
    -
  1. Assume that \(\text{Re}[T_1]\) is unity and calculate \(\text{Im}[T_1]\) from -\[ \text{Im}[T_1] = -[\text{Re}[\phi_d]]^T [\text{Re}[\phi_d]]^{-1} [\text{Re}[\phi_d]]^T \text{Im}[\phi_d] \]
  2. -
  3. calculate \([M_1]\) and \([K_1]\) from -\[ [M_1] = [T_1]^T[T_1]; \quad [K_1] = [T_1]^T[\lambda^2][T_1] \]
  4. -
  5. Solve the eigen-problem formed by \([M_1]\) and \([K_1]\) leading to -\[ [\omega_r^2]; \quad [T_2] \]
  6. -
  7. Calculate the real modes using -\[ [\phi_u] = [\phi_d][T_1][T_2] \]
  8. -
-

Expansion of models

-
-
-

An important model refinement is called expansion and consist of the addition to the actually measured modal data of estimates for selected DOFs which were not measured for one reason or another.

-
-

Prior to conducting each modal test, decisions have to be made as to which of the many DOFs that exist on the structure will be measured. -These decisions are made for various practical reasons:

-
    -
  • Limited test time
  • -
  • Inaccessibility of some DOFs
  • -
  • Anticipated low importance of motion in certain DOFs
  • -
-

Three approaches to the expansion of measured modes will be mentioned here:

-
    -
  1. Geometric interpolation using spline functions
  2. -
  3. Expansion using the analytical model’s spatial properties
  4. -
  5. Expansion using the analytical model’s modal properties
  6. -
-
-
-

In all three approached, we are in effect seeking a transformation matrix \([T]\) that allows us to construct a long eigenvector \(\{\phi\}_{N\times 1}\) from knowledge of a short (incomplete) one \(\{\phi\}_{n\times 1}\): -\[ \{\phi\}_{N\times 1} = [T]_{N\times n} \{\phi\}_{n\times 1} \]

-
-
Interpolation
-

Simple interpolation has a limited range of application and can only be used on structures which have large regions of relatively homogeneous structure: those with joints of abrupt changes are must less likely to respond to this form of expansion.

-

The method is simply geometric interpolation between the measured points themselves, such as by fitting a polynomial function through the measured points.

-
Expansion using theoretical spatial model - Kidder’s method
-

This interpolation uses a theoretical model’s mass and stiffness matrices in a form of an inverse Guyan reduction procedure.

-

If we partition the eigenvector of interest, \(\{\phi_A\}_r\), into:

-
    -
  • the DOFs to be included: \(\{{}_A\phi_1\}_r\)
  • -
  • the DOFs which are not available from the measurements: \(\{{}_A\phi_2\}_r\)
  • -
-

then we may write:

-

\begin{equation*} -\left( \begin{bmatrix} -{}_AK_{11} & {}_AK_{12}\\\
-{}_AK_{21} & {}_AK_{22} -\end{bmatrix} - \omega_r^2 \begin{bmatrix} -{}_AM_{11} & {}_AM_{12}\\\
-{}_AM_{21} & {}_AM_{22} -\end{bmatrix} \right) \begin{Bmatrix}{}_A\phi_1\{}_A\phi_2\end{Bmatrix} = \{0\} -\end{equation*}

-

We can use this relationship between the measured and unmeasured DOFs as the basic for an expansion of the incomplete measured mode shapes: -\[ \{{}_A\phi_2\}_r = [T_{21}]\{{}_A\phi_1\}_r \] -with -\[ [T_{12}] = - \left( [{}_AK_{22}] - \omega_r^2[{}_AM_{22}] \right)^{-1} \left( [{}_AK_{21}] - \omega_r^2[{}_AM_{21}] \right) \]

-

The relation between the incomplete measured vector to the complete expanded vector is then

-

\begin{equation} -\tcmbox{ \{\tilde{\phi}_X\}_r = \begin{Bmatrix} -{}_X\phi_1 \ {}_X\tilde{\phi}_2 -\end{Bmatrix} = \begin{bmatrix} -[I] \ [T_{21}] -\end{bmatrix} \{{}_X\phi_1\}_r } -\end{equation}

-
Expansion using analytical model mode shapes
-

This method uses the analytical model for the interpolation, but is based on the mode shapes derived from the analytical modal spatial matrices, rather than on these matrices themselves.

-

We may write the following expression which relates the experimental model mode shapes to those of the analytical model:

-

\begin{equation*} -\begin{Bmatrix} -{}_X\phi_1 \ {}_X\phi_2 -\end{Bmatrix} = \begin{bmatrix} -[{}_A\Phi_{11}] & [{}_A\Phi_{12}] \\\
-[{}_A\Phi_{21}] & [{}_A\Phi_{22}] -\end{bmatrix} \begin{Bmatrix} -\gamma_1 \ \gamma_2 -\end{Bmatrix}_r -\end{equation*}

-

The basic of this method is to assume that the measured mode shape submatrix can be represented exactly by the simple relationship (which assumes that \(\{\gamma_2\}_r\) can be taken to be zero):

-

\begin{equation} -\{{}_X\phi_1\}_r = [{}_A\Phi_{11}] \{\gamma_1\}_r -\end{equation}

-

so that an estimate can be provided for the unmeasured part of the eigenvector from

-

\begin{equation} -\begin{aligned} -\{{}_X\tilde{\phi}_2\} &= [T_{21}] \{{}_X\phi_1\}_r \\\
-&= [{}_A\Phi_{21}][{}_A\Phi_{11}]^{-1} \{{}_X\phi_1\}_r -\end{aligned} -\end{equation}

-

Thus, we can write the full transformation as:

-

\begin{equation*} -\tcmbox{ \{\tilde{\phi}_X\}_r = \begin{Bmatrix} -{}_X\phi_1 \ {}_X\tilde{\phi}_2 -\end{Bmatrix} = \begin{bmatrix} -[{}_A\Phi_{11}] \ [{}_A\Phi_{21}] -\end{bmatrix} [{}_A\Phi_{11}]^{-1} \{{}_X\phi_1\}_r } -\end{equation*}

-

This formula can be generalized to a single expression which covers several measured modes:

-

\begin{equation*} -\tcmbox{[\tilde{\Phi}_X]_{N\times m_X} = \underbrace{[\Phi_A]_{N\times m_A} [{}_A\Phi_{11}]_{m_A \times n}^+}_{[T]_{N\times n}} [{}_A\Phi_1]_{n\times m_X}} -\end{equation*}

-

where \(m_X\) and \(m_A\) are the number of experimental and analytical modes used, respectively.

-

Other formulations for \([T]\) are possible, they involve various combinations of the available experimental mode shape data and those from the analytical model:

-

\begin{equation} -\begin{aligned} -[T_{(1)}] &= [\Phi_A][{}_A\Phi_1]^+ & \text{A model - based} \\\
-[T_{(2)}] &= [\Phi_A][{}_X\Phi_1]^+ & \text{X model - based} \\\
-[T_{(3)}] &= \begin{bmatrix}{}_X\Phi_1\{}_A\Phi_2\end{bmatrix}[{}_A\Phi_1]^+ & \text{Mixed/A - based} \\\
-[T_{(4)}] &= \begin{bmatrix}{}_X\Phi_1\{}_A\Phi_2\end{bmatrix}[{}_X\Phi_1]^+ & \text{Mixed/X - based} -\end{aligned} -\end{equation}

-

It must be pointed out that all the above formula are approximate because of the initial assumption that the higher modes are not required to be included in the process (that \(\{\gamma_2\}\) is zero).

-

Reduction of models

-

The model reduction, which is the inverse of the expansion process, is used when it is decided to obtain compatibility between two otherwise disparate models by reducing the size of the larger of the two models (almost always, the analytical model).

-

Model reduction has less importance nowadays as computing power is widely available and because such reduction introduces approximations.

-

There are basically two different types of model reduction, both of which are applied to the spatial model (as opposed to the modal model as is the case in model expansion), and both achieve the same end result of yielding a smaller order model, with system matrices which are \(n\times n\) instead of \(N\times N\):

-
    -
  1. a condensed model which seeks to represent the entire structure completely at a smaller number of DOFs. This type of model introduces approximation.
  2. -
  3. a reduced model which has removed information related to the DOFs that are eliminated from the model, and which is thus an incomplete model. However, for the retained DOFs, no information is lost.
  4. -
-

Let’s summarize the basic feature of model reduction by condensation. -The basic equation of motion for the original model can be expressed as: -\[ [M] \ddot{x} + [K]\{x\} = \{f\} \] -and this can be partitioned into the kept DOFs \(\{x_1\}\) and the eliminated DOFs \(\{x_2\}\) (which by definition cannot have any excitation forces applied to them):

-

\begin{equation*} -\begin{bmatrix} -M_{11} & M_{12} \\\
-M_{21} & M_{22} -\end{bmatrix} \begin{Bmatrix} -\ddot{x}_1 \ \ddot{x}_2 -\end{Bmatrix} + \begin{bmatrix} -K_{11} & K_{12} \\\
-K_{21} & K_{22} -\end{bmatrix} \begin{Bmatrix} -x_1 \ x_2 -\end{Bmatrix} = \begin{Bmatrix} -f_1 \ 0 -\end{Bmatrix} -\end{equation*}

-

A relationship between the kept and eliminated DOFs can be written in the form:

-

\begin{equation} -\begin{Bmatrix} -x_1 \ x_2 -\end{Bmatrix}_{N\times 1} = \begin{bmatrix} -[I] \ [T] -\end{bmatrix}_{N\times n} \{x_1\}_{n\times 1} -\end{equation}

-

where the transformation matrix \([T]\) can be defined by

-

\begin{equation*} -[T] = (1 - \beta)\left(-[K_{22}]^{-1}[K_{21}]\right) + \beta\left(-[M_{22}]^{-1}[M_{21}]\right) -\end{equation*}

-

in which \(\beta\) is a reduction coefficient whose limiting values are \(\beta = 0\) for static reduction and \(\beta = 1\) for dynamic reduction.

-

The reduced mass and stiffness matrices which are produced by this process are:

-

\begin{align*} -\left[M^R\right]_{n\times n} &= \begin{bmatrix}[I] & [T]^T\end{bmatrix}_{n\times N} \begin{bmatrix} -M_{22} & M_{21} \ M_{12} & M_{22} -\end{bmatrix}_{N\times N} \begin{bmatrix} -[I] \ [T] -\end{bmatrix}_{N\times n}\\\
-\left[K^R\right]_{n\times n} &= \begin{bmatrix}[I] & [T]^T\end{bmatrix}_{n\times N} \begin{bmatrix} -K_{22} & K_{21} \ K_{12} & K_{22} -\end{bmatrix}_{N\times N} \begin{bmatrix} -[I] \ [T] -\end{bmatrix}_{N\times n} -\end{align*}

-

The two limiting cases of static and dynamic reduction are of particular interest. -In each case, one of the two system matrices is unchanged and the other one is:

-

\begin{align*} -\beta = 1:\ &[M^{R\text{static}}] = [M_{12}] \left(-[M_{22}]^{-1}[M_{21}]\right)^{-1} + [M_{11}]\\\
-&[K^{R\text{static}}] = [K]\\\
-\beta = 0:\ &[M^{R\text{dynamic}}] = [M]\\\
-&[K^{R\text{dynamic}}] = [K_{12}] \left(-[K_{22}]^{-1}[K_{21}]\right)^{-1} + [K_{11}] -\end{align*}

-

These reduction procedure can provide useful approximate models of the structure if an optimum choice of which DOFs to retain and which can be eliminated is made. -However, a reduced theoretical model of this type does not correspond to a similarly low-order model which is obtained from experiments since that is formed simply by ignoring the eliminated DOFs. -The measured data for the included DOFs are the same no matter how many DOFs are eliminated. -Thus, there are inherent difficulties involved in using this mixture of condensed (but complete) theoretical models and reduced (but incomplete) experimental models.

-

Display of modal models

-

One of the attraction of the modal model is possibility of obtaining a graphic display of its form by plotting the mode shapes.

-

There are basically two choices for the graphical display of a modal model:

-
    -
  • a static plot
  • -
  • a dynamic (animated) display
  • -
-

Static Displays

-
Deflected shapes
-

A static display is often adequate for depicting relatively simple mode shapes. -Measured coordinates of the test structure are first linked as shown on figure fig:static_display (a). -Then, the grid of measured coordinate points is redrawn on the same plot but this time displaced by an amount proportional to the corresponding element in the mode shape vector as shown on figure fig:static_display (b). -The elements in the vector are scaled according the normalization process used (usually mass-normalized), and their absolute magnitudes have no particular significance.

-

-
- Figure 31: Static display of modes shapes. (a) basic grid (b) single-frame deflection pattern (c) multiple-frame deflection pattern (d) complex mode (e) Argand diagram - quasi-real mode (f) Argand diagram - complex mode
-

Figure 31: Static display of modes shapes. (a) basic grid (b) single-frame deflection pattern (c) multiple-frame deflection pattern (d) complex mode (e) Argand diagram - quasi-real mode (f) Argand diagram - complex mode

-
-
- -

It is customary to select the largest eigenvector element and to scale the whole vector by an amount that makes that displacement on the plot a viable amount.

-
Multiple frames
-

If a series of deflection patterns that has been computed for a different instant of time are superimposed, we obtain a result as shown on figure fig:static_display (c). -Some indication of the motion of the structure can be obtained, and the points of zero motion (nodes) can be clearly identified.

-

It is also possible, in this format, to give some indication of the essence of complex modes, as shown in figure fig:static_display (d). -Complex modes do not, in general, exhibit fixed nodal points.

-
Argand diagram plots
-

Another form of representation which is useful for complex modes is the representation of the individual complex elements of the eigenvectors on a polar plot, as shown in the examples of figure fig:static_display (e) and (f). -Although there is no attempt to show the physical deformation of the actual structure in this format, the complexity of the mode shape is graphically displayed.

-

Dynamic Display

-

The coordinates for the basic picture are computed and stored for multiple fractions of a cycle. -Then, 10 to 20 frames are stored and displayed with an update rate which is suitable to give a clear picture of the distortion of the structure during vibration.

-

The dynamic character of animation is the only really effective way to view modal complexity and is very useful to display complex modes.

-

Interpretation of mode shape displays

-

There are a number of features associated with mode shape displays that warrant a mention in the context of ensuring that the correct interpretation is made from viewing these displays.

-

The first concerns the consequences of viewing an incomplete model. -In that case, there are no mode shape data from some of the points which comprise the grid which outlines the structure, and the indicated result is zero motion of those DOFs and this can be very misleading. -For instance, if we measure the displacement of grid points in only one direction, \(x\) for instance, then the shape display will show significant x-direction motion of those points with no motion in the other transverse directions. -We then tend to interpret this as a motion which is purely in the x-direction which may be clearly not true.

-

The second problem arises when the grid of measurement points that is chosen to display the mode shapes is too coarse in relation to the complexity of the deformation patterns that are to be displayed. -This can be illustrated using a very simple example: suppose that our test structure is a straight beam, and that we decide to use just three response measurements points. -If we consider the first six modes of the beam, whose mode shapes are sketched in figure fig:beam_modes, then we see that with this few measurement points, modes 1 and 5 look the same as do modes 2, 4 and 6. -All the higher modes will be indistinguishable from these first few. -This is a well known problem of spatial aliasing.

-

-
- Figure 32: Misinterpretation of mode shapes by spatial aliasing
-

Figure 32: Misinterpretation of mode shapes by spatial aliasing

-
-
- -

Response models

-
-
-

There are two main requirements demanded for a response model:

-
    -
  • the capability of regeneration “theoretical” curves for the FRFs actually measured and analyzed
  • -
  • synthesizing the other response functions which were not measured
  • -
-
-

In general, the form of response model with which we are concerned is an FRF matrix whose order is dictated by the number of coordinates \(n\) included in the test. -Also, as explained, it is normal in practice to measured and to analyze just a subset of the FRF matrix but rather to measure the full FRF matrix. -Usually one column or one row with a few additional elements are measured. -Thus, if we are to construct an acceptable response model, it will be necessary to synthesize those elements which have not been directly measured. -However, in principle, this need present no major problem as it is possible to compute the full FRF matrix from a modal model using:

-

\begin{equation} -\tcmbox{[H]_{n\times n} = [\Phi]_{n\times m} [\lambda_r^2 - \omega^2]_{m\times m}^{-1} [\Phi]_{m\times n}^T} -\end{equation}

-

Regenerated FRF curves

-

It is usual practice to regenerate an FRF curve using the results from the modal analysis as a mean of checking the success of that analysis.

-

It should be noted that in order to construct an acceptable response model, it is essential that all the modes in the frequency range of interest be included, and that suitable residual terms are added to take account of out-of-range modes. -In this respect, the demands of the response model are more stringent that those of the modal model.

-

Synthesis of FRF curves

-

One of the implications of equation eq:regenerate_full_frf_matrix is that it is possible to synthesize the FRF curves which were not measured. -This arises because if we measured three individual FRF such as \(H_{ik}(\omega)\), \(H_{jk}(\omega)\) and \(K_{kk}(\omega)\), then modal analysis of these yields the modal parameters from which it is possible to generate the FRF \(H_{ij}(\omega)\), \(H_{jj}(\omega)\), etc.

-

However, it must be noted that there is an important limitation to this procedure which is highlighted in the example below.

-
-
-

As an example, suppose that FRF data \(H_{11}\) and \(H_{21}\) are measured and analyzed in order to synthesize the FRF \(H_{22}\) initially unmeasured. -The predict curve is compared with the measurements on figure fig:H22_without_residual. -Clearly, the agreement is poor and would tend to indicate that the measurement/analysis process had not been successful. -However, the synthesized curve contained only those terms relating to the modes which had actually been studied from \(H_{11}\) and \(H_{21}\) and this set of modes did not include all the modes of the structure. -Thus, \(H_{22}\) omitted the influence of out-of-range modes. -The inclusion of these two additional terms (obtained here only after measuring and analyzing \(H_{22}\) itself) resulted in the greatly improved predicted vs measured comparison shown in figure fig:H22_with_residual.

-
-

-
- Table 24: - Synthesized FRF plot -
- - - - - - - - - - - - - - - - - -
Using measured modal data only After inclusion of residual terms
width=\linewidthwidth=\linewidth
-

The appropriate expression for a “correct” response model, derived via a set of modal properties is thus

-

\begin{equation} -[H] = [\Phi] [\lambda_r^2 - \omega^2]^{-1} [\Phi]^T + [\text{Res}] -\end{equation}

-

In order to obtain all the data necessary to form such a model, we must first derive the modal model on which it is based and then find some means of determining the elements in the residual matrix \([\text{Res}]\). -This latter task may be done in several ways:

-
    -
  • It may be most accurately achieved by measuring all (or at least over half) of the elements in the FRF matrix, but this would increase a lot the quantity of data to be measured.
  • -
  • Extend the frequency range of the modal test beyond that over which the model is eventually required. -In this way, much of the content of the residual terms is included in separate modes and their actual magnitudes can be reduced to relatively unimportant dimensions.
  • -
  • Try to access which of the many FRF elements are liable to need large residual terms and to make sure that these are included in the list of those which are measured and analyzed. -We noted earlier that it is the point mobilities which are expected to have the highest-valued residuals and the remote transfers which will have the smallest. -Thus, the significant terms in the \([\text{Res}]\) matrix will generally be grouped close to the leading diagonal, and this suggests making measurements of most of the point mobility parameters.
  • -
-

Direct measurement

-

It should be noted that it is quite possible to develop a response model by measuring and analyzing all the elements in one half of the FRF matrix (this being symmetric) and by storing the results of this process without constructing a modal model. -This procedure clearly solves the residual problem discussed above, but it will introduce inconsistencies into to model which renders it unsatisfactory.

-

Transmissibilities

-

One vibration parameter which has not been mentioned so far is that of transmissibility. -This is a quantity which is quite widely used in vibration engineering practice to indicate the relative vibration levels between two points.

-

In general, transmissibility is considered to be a frequency dependent response function \(T_{jk}(\omega)\) which defines the ratio between the response levels at two DOFs \(j\) and \(k\). -Simply defined, we can write:

-

\begin{equation} -T_{jk} (\omega) = \frac{X_j e^{i\omega t}}{X_k e^{i\omega t}} -\end{equation}

-

but, in fact, we need also to specify the excitation conditions that give rise to the two responses in question and these are missing from the above definition which is thus not rigorous. -It does not give us enough information to be able to reproduce the conditions which have been used to measured \(T_{jk}(\omega)\).

-
-
-

If the transmissibility is measured during a modal test which has a single excitation, say at DOF \(i\), then we can define the transmissibility thus obtained more precisely:

-

\begin{equation} -{}_iT_{jk}(\omega) = \frac{H_{ji}(\omega)}{H_{ki}(\omega)} -\end{equation}

-
-

In general, the transmissibility depends significantly on the excitation point (\({}_iT_{jk}(\omega) \neq {}_qT_{jk}(\omega)\) where \(q\) is a different DOF than \(i\)) and it is shown on figure fig:transmissibility_plots. -This may explain why transmissibilities are not widely used in modal analysis.

-

-
- Figure 33: Transmissibility plots
-

Figure 33: Transmissibility plots

-
-
- -

Base excitation

-

The one application area where transmissibilities can be used as part of modal testing is in the case of base excitation. -Base excitation is a type of test where the input is measured as a response at the drive point \(x_0(t)\), instead of as a force \(f_1(t)\), as illustrated in figure fig:base_excitation_configuration.

-

We can show that it is possible to determine, from measurements of \(x_i\) and \(x_0\), modal properties of natural frequency, damping factor and unscaled mode shape for each of the modes that are visible in the frequency range of measurement. -The fact that the excitation force is not measured is responsible for the lack of formal scaling of the mode shapes.

-

-
- Table 25: - Base excitation configuration -
- - - - - - - - - - - - - - - - - -
Conventional modal test setup Base excitation setup
height=4cmheight=4cm
-

Spatial models

-

It would appear from the basic orthogonality properties of the modal model that there exists a simple means of constructing a spatial model from the modal model, thus this is not so. -We have that:

-

\begin{equation} -\begin{aligned} -[\Phi]^T[M][\Phi] &= [I]\\\
-[\Phi]^T[K][\Phi] &= [\lambda_r^2] -\end{aligned} -\end{equation}

-

from which is would appear that we can write

-

\begin{equation} -\begin{aligned} -[M] &= [\Phi]^{-T} [I] [\Phi]^{-1}\\\
-[K] &= [\Phi]^{-T} [\lambda_r^2] [\Phi]^{-1} -\end{aligned} -\end{equation}

-

However, equation eq:m_k_from_modes is only applicable when we have available the complete \(N \times N\) modal model.

-

It is much more usual to have an incomplete model in which the eigenvector matrix is rectangle and, as such, is non-invertible. -One step which can be made using the incomplete data is the construction of “pseudo” flexibility and inverse-mass matrices. -This is accomplished using the above equation in the form:

-

\begin{equation} -\begin{aligned} -[K]_{n\times n}^{-1} &= [\Phi]_{n\times m} [\lambda_r^2]_{m\times m}^{-1} [\Phi]_{m\times n}^T\\\
-[M]_{n\times n}^{-1} &= [\Phi]_{n\times m} [\Phi]_{m\times n}^T -\end{aligned} -\end{equation}

-

Because the rank of each pseudo matrix is less than its order, it cannot be inverted and so we are unable to construct stiffness or mass matrix from this approach.

-

Bibliography

-

Ewins, D., Modal testing: theory, practice and application (2000), Baldock, Hertfordshire, England Philadelphia, PA: Wiley-Blackwell.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/fleming14_desig_model_contr_nanop_system/index.html b/public/book/fleming14_desig_model_contr_nanop_system/index.html deleted file mode 100644 index 5fad1ab..0000000 --- a/public/book/fleming14_desig_model_contr_nanop_system/index.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - Design, modeling and control of nanopositioning systems - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

Tags -:

-
-
Reference
-
(Andrew Fleming & Kam Leang, 2014)
-
Author(s)
-
Fleming, A. J., & Leang, K. K.
-
Year
-
2014
-
-

Bibliography

-

Fleming, A. J., & Leang, K. K., Design, modeling and control of nanopositioning systems (2014), : Springer International Publishing.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/horowitz15_art_of_elect_third_edition/index.html b/public/book/horowitz15_art_of_elect_third_edition/index.html deleted file mode 100644 index e89e635..0000000 --- a/public/book/horowitz15_art_of_elect_third_edition/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - The art of electronics - third edition - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
Reference Books, Electronics
-
Reference
-
(Horowitz, 2015)
-
Author(s)
-
Horowitz, P.
-
Year
-
2015
-
-

Bibliography

-

Horowitz, P., The art of electronics - third edition (2015), New York, NY, USA: Cambridge University Press.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/index.html b/public/book/index.html deleted file mode 100644 index 128807d..0000000 --- a/public/book/index.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - Archive - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- - - - - - - - - - - - - - - - - - - diff --git a/public/book/index.xml b/public/book/index.xml deleted file mode 100644 index dfb3b44..0000000 --- a/public/book/index.xml +++ /dev/null @@ -1,135 +0,0 @@ - - - - Books on My digital brain - /book/ - Recent content in Books on My digital brain - Hugo -- gohugo.io - en - - - - - - Basics of precision engineering - 1st edition - /book/leach18_basic_precis_engin_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/leach18_basic_precis_engin_edition/ - Tags Precision Engineering Reference (Richard Leach &amp; Stuart Smith, 2018) Author(s) Leach, R., &amp; Smith, S. T. Year 2018 Bibliography Leach, R., &amp; Smith, S. T., Basics of precision engineering - 1st edition (2018), : CRC Press. ↩ - - - - Design, modeling and control of nanopositioning systems - /book/fleming14_desig_model_contr_nanop_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/fleming14_desig_model_contr_nanop_system/ - Tags : - Reference (Andrew Fleming &amp; Kam Leang, 2014) Author(s) Fleming, A. J., &amp; Leang, K. K. Year 2014 Bibliography Fleming, A. J., &amp; Leang, K. K., Design, modeling and control of nanopositioning systems (2014), : Springer International Publishing. ↩ - - - - Fundamental principles of engineering nanometrology - /book/leach14_fundam_princ_engin_nanom/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/leach14_fundam_princ_engin_nanom/ - Tags Metrology Reference (Richard Leach, 2014) Author(s) Leach, R. Year 2014 Measurement of angles Unit: - radian for plane angle steradian for solid angle \(1 rad \approx 55.3deg\) -Instrument principles: - subdivision: index tacle, angular gratings, polygons, &hellip; ratio of two lengths: angular interferometers, sin cars, small angle generators, &hellip; autocollimators with a flat mirror Sources of error in displacement interferometry Two error sources: - error sources that are proportional to the displacement being measured \(L\): cumulative errors error sources that are independent of the displacement being measured: non-cumulative errors Thermal expansion of the metrology frame Deadpath length Deadpath length, \(d\), is defined as the difference in distance in air between the reference and measurement reflectors and the beam splitter when the interferometer measurement is initiated. - - - - Modal testing: theory, practice and application - /book/ewins00_modal/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/ewins00_modal/ - Tags System Identification, Reference Books Reference (Ewins, 2000) Author(s) Ewins, D. Year 2000 Overview Introduction to Modal Testing The major objectives of modal testing are: - Determining the nature and extent of vibration response levels in operation Verifying theoretical models and predictions of the vibrations Measurement of the essential materials properties under dynamic loading, such as damping capacity, friction and fatigue endurance For many applications, vibrations is directly related to performance and it is important that the vibration levels are anticipated and brought under satisfactory control. - - - - Modeling and control of vibration in mechanical systems - /book/du10_model_contr_vibrat_mechan_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/du10_model_contr_vibrat_mechan_system/ - Tags Stewart Platforms, Vibration Isolation Reference (Chunling Du &amp; Lihua Xie, 2010) Author(s) Du, C., &amp; Xie, L. Year 2010 Read Chapter 1 and 3. -Bibliography Du, C., &amp; Xie, L., Modeling and control of vibration in mechanical systems (2010), : CRC Press. ↩ - - - - Multi-stage actuation systems and control - /book/du19_multi_actuat_system_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/du19_multi_actuat_system_contr/ - Tags : - Reference (Chunling Du &amp; Chee Khiang Pang, 2019) Author(s) Du, C., &amp; Pang, C. K. Year 2019 Mechanical Actuation Systems Introduction When high bandwidth, high position accuracy and long stroke are required simultaneously: dual-stage systems composed of a coarse (or primary) actuator and a fine actuator working together are used. -Popular choices for coarse actuator are: - DC motor Voice coil motor (VCM) Permanent magnet stepper motor Permanent magnet linear synchronous motor As fine actuators, most of the time piezoelectric actuator are used. - - - - Multivariable control systems: an engineering approach - /book/albertos04_multiv_contr_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/albertos04_multiv_contr_system/ - Tags Multivariable Control Reference (Albertos &amp; Antonio, 2004) Author(s) Albertos, P., &amp; Antonio, S. Year 2004 Bibliography Albertos, P., &amp; Antonio, S., Multivariable control systems: an engineering approach (2004), : Springer-Verlag. ↩ - - - - Multivariable feedback control: analysis and design - /book/skogestad07_multiv_feedb_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/skogestad07_multiv_feedb_contr/ - Tags Reference Books, Multivariable Control Reference (Skogestad &amp; Postlethwaite, 2007) Author(s) Skogestad, S., &amp; Postlethwaite, I. Year 2007 \( % H Infini \newcommand{\hinf}{\mathcal{H}_\infty} % H 2 \newcommand{\htwo}{\mathcal{H}_2} % Omega \newcommand{\w}{\omega} % H-Infinity Norm \newcommand{\hnorm}[1]{\left\|#1\right\|_{\infty}} % H-2 Norm \newcommand{\normtwo}[1]{\left\|#1\right\|_{2}} % Norm \newcommand{\norm}[1]{\left\|#1\right\|} % Absolute value \newcommand{\abs}[1]{\left\lvert#1\right\lvert} % Maximum for all omega \newcommand{\maxw}{\text{max}_{\omega}} % Maximum singular value \newcommand{\maxsv}{\overline{\sigma}} % Minimum singular value \newcommand{\minsv}{\underline{\sigma}} % Under bar \newcommand{\ubar}[1]{\text{\b{$#1$}}} % Diag keyword \newcommand{\diag}[1]{\text{diag}\{{#1}\}} % Vector \newcommand{\colvec}[1]{\begin{bmatrix}#1\end{bmatrix}} \) \( \newcommand{\tcmbox}[1]{\boxed{#1}} % Simulate SIunitx \newcommand{\SI}[2]{#1\,#2} \newcommand{\ang}[1]{#1^{\circ}} \newcommand{\degree}{^{\circ}} \newcommand{\radian}{\text{rad}} \newcommand{\percent}{\%} \newcommand{\decibel}{\text{dB}} \newcommand{\per}{/} % Bug with subequations \newcommand{\eatLabel}[2]{} \newenvironment{subequations}{\eatLabel}{} \) Introduction - - - - Parallel robots : mechanics and control - /book/taghirad13_paral/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/taghirad13_paral/ - Tags Stewart Platforms, Reference Books Reference (Taghirad, 2013) Author(s) Taghirad, H. Year 2013 Introduction -This book is intended to give some analysis and design tools for the increase number of engineers and researchers who are interested in the design and implementation of parallel robots. A systematic approach is presented to analyze the kinematics, dynamics and control of parallel robots. To define the motion characteristics of such robots, it is necessary to represent 3D motion of the robot moving platform with respect to a fixed coordinate. - - - - The art of electronics - third edition - /book/horowitz15_art_of_elect_third_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/horowitz15_art_of_elect_third_edition/ - Tags Reference Books, Electronics Reference (Horowitz, 2015) Author(s) Horowitz, P. Year 2015 Bibliography Horowitz, P., The art of electronics - third edition (2015), New York, NY, USA: Cambridge University Press. ↩ - - - - The design of high performance mechatronics - 2nd revised edition - /book/schmidt14_desig_high_perfor_mechat_revis_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/schmidt14_desig_high_perfor_mechat_revis_edition/ - Tags Reference Books Reference (Schmidt {\it et al.}, 2014) Author(s) Schmidt, R. M., Schitter, G., &amp; Rankers, A. Year 2014 Section 2.2 Mechanics - The core of a mechatronic system is its mechanical construction and in spite of many decade of excellent designs, optimizing the mechanical structure in strength, mass and endurance, the mechanical behavior will always remain the limiting factor of the performance of any mechatronic system. - - - - Vibration Control of Active Structures - Fourth Edition - /book/preumont18_vibrat_contr_activ_struc_fourt_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/preumont18_vibrat_contr_activ_struc_fourt_edition/ - Tags Vibration Isolation, Reference Books, Stewart Platforms, HAC-HAC Reference (Andre Preumont, 2018) Author(s) Preumont, A. Year 2018 Introduction Active Versus Passive Active structure may be cheaper or lighter than passive structures of comparable performances; or they may offer performances that no passive structure could offer. -Active is not always better, and a control systems cannot compensate for a bad design. Active solution should be considered only after all other passive means have been exhausted. - - - - \ No newline at end of file diff --git a/public/book/leach14_fundam_princ_engin_nanom/index.html b/public/book/leach14_fundam_princ_engin_nanom/index.html deleted file mode 100644 index 5a37a92..0000000 --- a/public/book/leach14_fundam_princ_engin_nanom/index.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - Fundamental principles of engineering nanometrology - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
Metrology
-
Reference
-
(Richard Leach, 2014)
-
Author(s)
-
Leach, R.
-
Year
-
2014
-
-

Measurement of angles

-

Unit:

-
    -
  • radian for plane angle
  • -
  • steradian for solid angle
  • -
-

\(1 rad \approx 55.3deg\)

-

Instrument principles:

-
    -
  • subdivision: index tacle, angular gratings, polygons, …
  • -
  • ratio of two lengths: angular interferometers, sin cars, small angle generators, …
  • -
  • autocollimators with a flat mirror
  • -
-

Sources of error in displacement interferometry

-

Two error sources:

-
    -
  • error sources that are proportional to the displacement being measured \(L\): cumulative errors
  • -
  • error sources that are independent of the displacement being measured: non-cumulative errors
  • -
-

Thermal expansion of the metrology frame

-

Deadpath length

-

Deadpath length, \(d\), is defined as the difference in distance in air between the reference and measurement reflectors and the beam splitter when the interferometer measurement is initiated. -Deadpath error occurs when there is a non-zero deadpath and environmental conditions change during a measurement.

-

Cosine error

-

\(\Delta l = l(1-\cos(\theta))\)

-

For small angles: \(\Delta l = \frac{l \theta^2}{2}\)

-

The cosine error is then a second-order effect, contrary to the Abbe error which is a first order effect. -The second order nature means that cosine error quickly diminish as the alignment is improved.

-

Latest advances in displacement interferometry

-

Commercial interferometers -=> fused silica optics housed in Invar mounts -=> all the optical components are mounted to one central optic to reduce the susceptibility to thermal variations

-

One advantage that homodyme systems have over heterodyne systems is their ability to readily have the source fibre delivered to the interferometer.

-

Spatially separated interferometers

-

It uses heterodyne interferometer and one quadrant photodiode. -By knowing the beam size and detector geometry, the measurement target’s angle change can be determined by differencing matched pairs of measured phase from the quadrant photodiode while the displacement is determined from the average phase over the four quadrants.

-

Angular interferometers

-

Determination of an angle by the ratio of two lengths. -The angular optics is used to create two parallel beam paths between the angular interferometer and the angular reflector.

-

The beam that illuminates the angular optics contains two frequencies, \(f1\) and \(f2\). A polarising beam splitter in the angular interferometer splits the frequencies that travel along separate paths.

-

The measurement of angles is then relative.

-

This type of angular interferometer is used to measure small angles (less than \(10deg\)).

-

Bibliography

-

Leach, R., Fundamental principles of engineering nanometrology (2014), : Elsevier.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/leach18_basic_precis_engin_edition/index.html b/public/book/leach18_basic_precis_engin_edition/index.html deleted file mode 100644 index 161e8ac..0000000 --- a/public/book/leach18_basic_precis_engin_edition/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - Basics of precision engineering - 1st edition - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/preumont18_vibrat_contr_activ_struc_fourt_edition/index.html b/public/book/preumont18_vibrat_contr_activ_struc_fourt_edition/index.html deleted file mode 100644 index 14173bf..0000000 --- a/public/book/preumont18_vibrat_contr_activ_struc_fourt_edition/index.html +++ /dev/null @@ -1,1300 +0,0 @@ - - - - - - Vibration Control of Active Structures - Fourth Edition - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
Vibration Isolation, Reference Books, Stewart Platforms, HAC-HAC
-
Reference
-
(Andre Preumont, 2018)
-
Author(s)
-
Preumont, A.
-
Year
-
2018
-
-

Introduction

-

Active Versus Passive

-

Active structure may be cheaper or lighter than passive structures of comparable performances; or they may offer performances that no passive structure could offer.

-

Active is not always better, and a control systems cannot compensate for a bad design. Active solution should be considered only after all other passive means have been exhausted.

-

Feedback control can compensate for external disturbances only in a limited frequency range (the bandwidth), the disturbances are actually amplified by the control system outside this frequency band.

-

Vibration Suppression

-

Vibration reduction can be achieved in many different ways:

-
    -
  • stiffening: consists of shifting the resonance frequency of the structure beyond the frequency band of excitation
  • -
  • damping: consists of reducing the resonance peaks by dissipating the vibration energy
  • -
  • isolation: consists of preventing the propagation of disturbances to sensitive parts of the system
  • -
-

The design of an active control system involves many issues such as how to configurate the sensors and actuators, how to secure stability and robustness. The power requirements will often determine the size of the actuators and the cost of the project.

-

Smart Materials and Structures

-

An active structure consists of a structure provided with a set of actuators and sensors coupled by a controller. If the bandwidth of the controller includes some vibration modes of the structure, its dynamic response must be considered.

-

If the set of actuators and sensors are located at discrete points of the structure, they can be treated separately. However, for smart structures, the actuators and sensors are often distributed and have a high degree of integration inside the structure, which makes a separate modelling impossible.

-

Some smart materials are:

-
    -
  • Shape Memory Alloys (SMA): recoverable strain of \(\SI{5}{\percent}\) induced by temperature. They can be used at low frequency and for low precision applications
  • -
  • Piezoelectric materials: recoverable strain of \(\SI{0.1}{\percent}\) under electric field. They can be used as actuators as well as sensors. Two main classes: ceramics and polymers. Piezopolymers are used mostly as sensors as they require high voltage. The best-known piezoceramic is the Lead-Zirconate-Titanate (PZT).
  • -
  • Magnetostrictive materials: recoverable strain of \(\SI{0.15}{\percent}\) under magnetic field
  • -
  • Magneto-Rheological fluids (MR): consists of viscous fluids containing micronsized particules of magnetic material. When the fluid is subjected to a magnetic field, the particules create colunmar structures requiring a minimum shear stress to initiate the flow.
  • -
-

Control Strategies

-

There are two radically different approached to disturbance rejection: feedback and feedforward.

-

Feedback

-

-
- Figure 1: Principle of feedback control
-

Figure 1: Principle of feedback control

-
-
- -

The principle of feedback is represented on figure fig:classical_feedback_small. The output \(y\) of the system is compared to the reference signal \(r\), and the error signal \(\epsilon = r-y\) is passed into a compensator \(K(s)\) and applied to the system \(G(s)\), \(d\) is the disturbance. -The design problem consists of finding the appropriate compensator \(K(s)\) such that the closed-loop system is stable and behaves in the appropriate manner.

-

In the control of lightly damped structures, feedback control is used for two distinct and complementary purposes: active damping and model-based feedback.

-

Active Damping:

-
    -
  • The objective of active damping is to reduce the effect of resonant peaks on the response of the structure.
  • -
  • From \(\frac{y}{d} = \frac{1}{1 + GK}\), this requires \(GK \gg 1\) near the resonances
  • -
  • It can be generally be achieved without a model of the structure, with guaranteed stability, provided that the actuator and sensor are collocated and have perfect dynamics.
  • -
-

Model based feedback: -The objective is to control a variable \(y\) to a desired value \(r\) in spite of the external disturbances \(d\).

-
    -
  • From \(\frac{y}{r} = \frac{GK}{1 + GK}\) we see that this requires large values of \(GK\) in the frequency range where \(y\approx r\) (bandwidth)
  • -
  • The bandwidth \(\omega_c\) is limited by the accuracy of the model
  • -
  • The disturbance rejection within the bandwidth of the control system is always compensated by an amplification of the disturbances outside the bandwidth
  • -
  • When implemented digitally, the sampling frequency \(\omega_s\) must always be two orders of magnitude larger than \(\omega_c\) to preseve reasonably the behavior of the continuous system
  • -
-

Feedforward

-

-
- Figure 2: Principle of feedforward control
-

Figure 2: Principle of feedforward control

-
-
- -

The method relies on the availability of a reference signal correlated to the primary disturbance. -The idea is to produce a second disturbance such that is cancels the effect of the primary disturbance at the location of the sensor error. Its principle is explained in figure 2.

-

The filter coefficients are adapted in such a way that the error signal at one or several critical points is minimized.

-

There is no guarantee that the global response is reduced at other locations. This method is therefor considered as a local one. -Because it is less sensitive to phase lag than feedback, it can be used at higher frequencies (\(\omega_c \approx \omega_s/10\)).

-

The table 1 summarizes the main features of the two approaches.

-

-
- Table 1: - Advantages and Disadvantages of some types of control -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AdvantagesDisadvantages
Active Damping- Simple to implement- Effective only near resonance
- Does not required accurate model
- Guaranteed stability (collocated)
Model Based- Global method- Requires accurate model
- Attenuate all disturbance within bandwidth- Limited bandwidth
- Spillover
- Amplification of disturbances outside bandwidth
Feedforward Adaptive filtering- No model is necessary- Error signal required
- Robust to change in plant transfer function- Local method: may amplify vibration elsewhere
- More effective for narrowband disturbance- Large amount of real-time computation
-

The Various Steps of the Design

-

-
- Figure 3: The various steps of the design
-

Figure 3: The various steps of the design

-
-
- -

The various steps of the design of a controlled structure are shown in figure 3.

-

The starting point is:

-
    -
  • Mechanical system
  • -
  • Performance objectives
  • -
  • Specification of the disturbances
  • -
-

Then the open loop performances can be evaluated:

-
    -
  • The need for active control can be assessed
  • -
  • The needed bandwidth can be roughly specified
  • -
-

The next step consist of selecting the proper type and location of sensors and actuators:

-
    -
  • The controllability and Observability are important concepts
  • -
-

A model of the structure is developped:

-
    -
  • FEM or identification
  • -
  • Model reduction to limit the DoF
  • -
-

If the dynamics of the sensors and actuators may significantly affect the behavior of the system, they must be included in the model before the controller design.

-

Plant Description, Error and Control Budget

-

From the block diagram of the control system (figure fig:general_plant):

-

\begin{align*} -y &= (I - G_{yu}H)^{-1} G_{yw} w\\\
-z &= T_{zw} w = [G_{zw} + G_{zu}H(I - G_{yu}H)^{-1} G_{yw}] w -\end{align*}

-

-
- Figure 4: Block diagram of the control System
-

Figure 4: Block diagram of the control System

-
-
- -

The frequency content of the disturbance \(w\) is usually described by its power spectral density \(\Phi_w (\omega)\) which describes the frequency distribution of the meas-square value.

-
-
-

\[\sigma_w = \sqrt{\int_0^\infty \Phi_w(\omega) d\omega}\]

-
-

Even more interesting for the design is the Cumulative Mean Square response defined by the integral of the PSD in the frequency range \([\omega, \infty[\).

-
-
-

\[\sigma_z^2(\omega) = \int_\omega^\infty \Phi_z(\nu) d\nu = \int_\omega^\infty |T_{zw}|^2 \Phi_w(\nu) d\nu \]

-
-

It is a monotonously decreasing function of frequency and describes the contribution of all frequencies above \(\omega\) to the mean-square value of \(z\). -\(\sigma_z(0)\) is then the global RMS response.

-

A typical plot of \(\sigma_z(\omega)\) is shown figure fig:cas_plot. -It is useful to identify the critical modes in a design, at which the effort should be targeted.

-

The diagram can also be used to assess the control laws and compare different actuator and sensor configuration.

-

-
- Figure 5: Error budget distribution in OL and CL for increasing gains
-

Figure 5: Error budget distribution in OL and CL for increasing gains

-
-
- -

Pseudo-inverse

-

Under-actuated System

-

Consider the linear system of equation: -\[w = J v\] -With:

-
    -
  • \(w\) a vector with \(m\) components (measurements)
  • -
  • \(v\) a vector with \(n\) components (inputs)
  • -
  • We assume \(m>n\) (under-actuated)
  • -
-

We seek the pseudo-inverse of \(J\) such that \(v = J^+ w\)

-

The columns of \(J\) are the influence function of the actuators. -If the columns of \(J\) are independant, the Jacobian is full rang (\(r=n\)) and the Moore-Penrose pseudo inverse is: -\[J^+ = (J^T J)^{-1} J^T\]

-

Over-actuated System

-

If there are more actuator than sensor (\(m<n\)), we obtain: -\[J^+ = J^T(J J^T)^{-1}\]

-

Note that the Singular Value Decomposition offers a practical way to compute the pseudo-inverse, both for \(m>n\) and \(n>m\).

-

Singular Value Decomposition

-

The Singular Value Decomposition (SVD) is a generalization of the eigenvalue decomposition of a rectangular matrix: -\[ J = U \Sigma V^T = \sum_{i=1}^r \sigma_i u_i v_i^T \] -With:

-
    -
  • \(U\) and \(V\) orthogonal matrices. The columns \(u_i\) and \(v_i\) of \(U\) and \(V\) are the eigenvectors of the square matrices \(JJ^T\) and \(J^TJ\) respectively
  • -
  • \(\Sigma\) a rectangular diagonal matrix of dimension \(m \times n\) containing the square root of the common non-zero eigenvalues of \(JJ^T\) and \(J^TJ\)
  • -
  • \(r\) is the number of non-zero singular values of \(J\)
  • -
-

The pseudo-inverse of \(J\) is: -\[ J^+ = V\Sigma^+U^T = \sum_{i=1}^r \frac{1}{\sigma_i} v_i u_i^T \]

-

The conditioning of the Jacobian is measured by the condition number: -\[ c(J) = \frac{\sigma_{max}}{\sigma_{min}} \]

-

When \(c(J)\) becomes large, the most straightforward way to handle the ill-conditioning is to truncate the smallest singular value out of the sum. -This will have usually little impact of the fitting error while reducing considerably the actuator inputs \(v\).

-

Some Concepts in Structural Dynamics

-

Equation of Motion of a Discrete System

-

The general form of the equation of motion governing the dynamic equilibrium between the external, elastic, inertia and damping forces acting on a discrete, flexible structure with a finite number \(n\) of degrees of freedom is

-
-
-

\begin{equation} -M \ddot{x} + C \dot{x} + K x = f -\end{equation}

-

With:

-
    -
  • \(x\) is the vector of generalized displacements (translations and rotations)
  • -
  • \(f\) is the vector of generalized forces (point forces and torques)
  • -
  • \(M\), \(C\) and \(K\) are respectively the mass, damping and stiffness matrices; they are symmetric and semi-positive definite
  • -
-
-

The damping matrix \(C\) represents the various dissipation mechanisms in the structure, which are usually poorly known. One of the popular hypotheses is the Rayleigh damping.

-
-
-

\begin{equation} -C = \alpha M + \beta K -\end{equation}

-
-

\(\alpha\) and \(\beta\) are selected to fit the structure under consideration.

-

Vibration Modes

-

Consider the free response of an undamped system of order \(n\): -\[ M\ddot{x} + K x = 0 \]

-

If one tries a solution of the form \(x = \phi_i e^{j\omega_i t}\), \(\phi_i\) and \(\omega_i\) must statisfy the eigenvalue problem -\[ (K - \omega_i^2 M)\phi_i = 0 \] -with:

-
    -
  • \(\omega_i\): the natural frequency
  • -
  • \(\phi_i\): the corresponding mode shape
  • -
-

The number of mode shapes is equal to the number of degrees of freedom \(n\).

-

The mode shapes are orthogonal with respect to the stiffness and mass matrices:

-

\begin{align} -\phi_i^T M \phi_j &= \mu_i \delta_{ij} \\\
-\phi_i^T K \phi_j &= \mu_i \omega_i^2 \delta_{ij} -\end{align}

-

With \(\mu_i\) the modal mass (also called the generalized mass) of mode \(i\).

- -

Structure Without Rigid Body Modes

-

Let perform a change of variable from physical coordinates \(x\) to modal coordinates \(z\).

-
-
-

\begin{equation} -x = \Phi z -\end{equation}

-

With:

-
    -
  • \(\Phi = [\phi_1, \phi_2, …, \phi_n]\) the matrix of the mode shapes
  • -
  • \(z\) the vector of modal amplitudes
  • -
-
-

The dynamic equation of the system becomes: -\[ M \Phi \ddot{z} + C \Phi \dot{z} + K \Phi z = f \]

-

If we left multiply the equation by \(\Phi^T\) and we use the orthogonalily relationships: -\[ diag(\mu_i) \ddot{z} + \Phi^T C \Phi + diag(\mu_i \omega_i^2) z = \Phi^T f \]

-

If \(\Phi^T C \Phi\) is diagonal, the damping is said classical or normal. In this case: -\[ \Phi^T C \Phi = diag(2 \xi_i \mu_i \omega_i) \]

-

One can verify that the Rayleigh damping \eqref{eq:rayleigh_damping} complies with this condition with modal damping ratios \(\xi_i = \frac{1}{2} ( \frac{\alpha}{\omega_i} + \beta\omega_i )\).

-

And we obtain decoupled modal equations \eqref{eq:modal_eom}.

-
-
-

\begin{equation} -\ddot{z} + 2 \xi \Omega \dot{z} + \Omega^2 z = z^{-1} \Phi^T f -\end{equation}

-

with:

-
    -
  • \(\xi = diag(\xi_i)\)
  • -
  • \(\Omega = diag(\omega_i)\)
  • -
  • \(\mu = diag(\mu_i)\)
  • -
-
-

Typical values of the modal damping ratio are summarized on table tab:damping_ratio.

-

-
- Table 2: - Typical Damping ratio -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Damping RatioApplication
\(\xi \simeq 0.001 - 0.005\)Space structures
\(\xi \simeq 0.01 - 0.02\)Mechanical engineering
\(\xi \simeq 0.05\)Civil engineering
\(\xi \simeq 0.2\)When ground is involved
-

The assumption of classical damping is often justified for light damping, but it is questionable when the damping is large.

-

If one accepts the assumption of classical damping, the only difference between equation \eqref{eq:general_eom} and \eqref{eq:modal_eom} lies in the change of coordinates. -However, in physical coordinates, the number of degrees of freedom is usually very large. -If a structure is excited in by a band limited excitation, its response is dominated by the modes whose natural frequencies are inside the bandwidth of the excitation and the equation \eqref{eq:modal_eom} can often be restricted to theses modes. -Therefore, the number of degrees of freedom contribution effectively to the response is reduced drastically in modal coordinates.

-

Dynamic Flexibility Matrix

-

If we consider the steady-state response of equation \eqref{eq:general_eom} to harmonic excitation \(f=F e^{j\omega t}\), the response is also harmonic \(x = Xe^{j\omega t}\). The amplitude of \(F\) and \(X\) is related by: -\[ X = G(\omega) F \]

-

Where \(G(\omega)\) is called the Dynamic flexibility Matrix: -\[ G(\omega) = (-\omega^2 M + j\omega C + K)^{-1} F \]

-

From the modal expansion of the dynamic flexibility matrix can be obtained by coordinate transformation \(x = \phi z\) and we obtain:

-

\begin{equation} -G(\omega) = \sum_{i=1}^n \frac{\phi_i \phi_i^T}{\mu_i \omega_i^2} D_i(\omega) -\end{equation}

-

With:

-
    -
  • \(D_i(\omega)\) is the dynamic amplification factor of mode \(i\) given by
  • -
-

\begin{equation} -D_i(\omega) = \frac{1}{1 - \omega^2/\omega_i^2 + 2 j \xi_i \omega/\omega_i} -\end{equation}

-

-
- Figure 6: Fourier spectrum of the excitation \(F\) and dynamic amplitification \(D_i\) of mode \(i\) and \(k\) such that \(\omega_i &lt; \omega_b\) and \(\omega_k \gg \omega_b\)
-

Figure 6: Fourier spectrum of the excitation \(F\) and dynamic amplitification \(D_i\) of mode \(i\) and \(k\) such that \(\omega_i < \omega_b\) and \(\omega_k \gg \omega_b\)

-
-
- -

If the excitation has a limited bandwidth \(\omega_b\), the contribution of the high frequency modes \(\omega_k \gg \omega_b\) can be evaluated by assuming \(D_k(\omega) \approx 1\) (as shown on figure fig:neglected_modes).

-

And \(G(\omega)\) can be rewritten on terms of the low frequency modes only: -\[ G(\omega) \approx \sum_{i=1}^m \frac{\phi_i \phi_i^T}{\mu_i \omega_i^2} D_i(\omega) + R \]

-

The quasi-static correction of the high frequency modes \(R\) is called the residual mode. This introduces a feedthrough component in the transfer matrix.

-

Structure with Rigid Body Modes

-

Collocated Control System

-
-
-

A collocated control system is a control system where:

-
    -
  • the actuator and the sensor are attached to the same degree of freedom
  • -
  • they are dual: the product of the actuator signal and the sensor signal represents the energy exchange between the structure and the control system
  • -
-
-

-
- Table 3: - Examples of dual actuators and sensors -
- - - - - - - - - - - - - - - - - -
ActuatorSensor
ForceTranslation
TorqueRotation
-

The open-loop FRF of a collocated system corresponds to a diagonal component of the dynamic flexibility matrix.

-

If we assumes that the collocated system is undamped and is attached to the DoF \(k\), the open-loop FRF is purely real: -\[ G_{kk}(\omega) = \sum_{i=1}^m \frac{\phi_i^2(k)}{\mu_i (\omega_i^2 - \omega^2)} + R_{kk} \]

-

\(G_{kk}\) is a monotonously increasing function of \(\omega\) (figure fig:collocated_control_frf).

-

-
- Figure 7: Open-Loop FRF of an undamped structure with collocated actuator/sensor pair
-

Figure 7: Open-Loop FRF of an undamped structure with collocated actuator/sensor pair

-
-
- -

The amplitude of the FRF goes from \(-\infty\) at the resonance frequencies \(\omega_i\) to \(+\infty\) at the next resonance frequency \(\omega_{i+1}\). Therefore, in every interval, there is a frequency \(z_i\) such that \(\omega_i < z_i < \omega_{i+1}\) where the amplitude of the FRF vanishes. The frequencies \(z_i\) are called anti-resonances.

-
-
-

Undamped collocated control systems have alternating poles and zeros on the imaginary axis. -For lightly damped structure, the poles and zeros are just moved a little bit in the left-half plane, but they are still interlacing.

-
-

If the undamped structure is excited harmonically by the actuator at the frequency of the transmission zero \(z_i\), the amplitude of the response of the collocated sensor vanishes. That means that the structure oscillates at the frequency \(z_i\) according to the mode shape shown in dotted line figure fig:collocated_zero.

-

-
- Figure 8: Structure with collocated actuator and sensor
-

Figure 8: Structure with collocated actuator and sensor

-
-
- -
-
-

The frequency of the transmission zero \(z_i\) and the mode shape associated are the natural frequency and the mode shape of the system obtained by constraining the d.o.f. on which the control systems acts.

-

The open-loop zeros are asymptotic values of the closed-loop poles when the feedback gain goes to infinity.

-

The open-loop poles are independant of the actuator and sensor configuration while the open-loop zeros do depend on it.

-
-

By looking at figure fig:collocated_control_frf, we see that neglecting the residual mode in the modelling amounts to translating the FRF diagram vertically. That produces a shift in the location of the transmission zeros to the right.

-

-
- Figure 9: Bode plot of a lighly damped structure with collocated actuator and sensor
-

Figure 9: Bode plot of a lighly damped structure with collocated actuator and sensor

-
-
- -

The open-loop transfer function of a lighly damped structure with a collocated actuator/sensor pair can be written:

-

\begin{equation} -G(s) = G_0 \frac{\Pi_i(s^2/z_i^2 + 2 \xi_i s/z_i + 1)}{\Pi_j(s^2/\omega_j^2 + 2 \xi_j s /\omega_j + 1)} -\end{equation}

-

The corresponding Bode plot is represented in figure 9. Every imaginary pole at \(\pm j\omega_i\) introduces a \(\SI{180}{\degree}\) phase lag and every imaginary zero at \(\pm jz_i\) introduces a phase lead of \(\SI{180}{\degree}\). -In this way, the phase diagram is always contained between \(\SI{0}{\degree}\) and \(\SI{-180}{\degree}\) as a consequence of the interlacing property.

-

Electromagnetic and Piezoelectric Transducers

-

Introduction

-

Transducers are critical in active structures technology. -In many applications, the actuators are the most critical part of the system; however, the sensors become very important in precision engineering where submicron amplitudes must be detected.

-

Two broad categories of actuators can be distinguish:

-
    -
  • grounded actuator: react on a fixed support. They include torque motors, force motors (shakers), tendons
  • -
  • structure borne actuator: includes jets, reaction wheels, proof-mass actuators, piezo strips, …
  • -
-

Voice Coil Transducer

-

A voice coil transducer is an energy transformer which converts electrical power into mechanical power and vice versa.

-

The system consists of (see figure fig:voice_coil_schematic):

-
    -
  • A permanent magnet which produces a uniform flux density \(B\) normal to the gap
  • -
  • A coil which is free to move axially
  • -
-

-
- Figure 10: Physical principle of a voice coil transducer
-

Figure 10: Physical principle of a voice coil transducer

-
-
- -

We note:

-
    -
  • \(v\) the velocity of the coil
  • -
  • \(f\) the external force acting to maintain the coil in equilibrium againt the electromagnetic forces
  • -
  • \(e\) the voltage difference across the coil
  • -
  • \(i\) the current into the coil
  • -
-
-
-

Faraday’s law:

-

\begin{equation} -e = 2\pi n r B v = T v -\end{equation}

-

With \(T = 2\pi n r B\) is the transducer constant.

-

Lorentz force law:

-

\begin{equation} -f = -i 2\pi n r B = - T i -\end{equation}

-
-

The total power delivered to the moving coil transducer is equal to the sum of the electric power and the mechanical power: -\[ ei + fv = 0 \]

-

Thus, at any time, there is an equilibrium between the electrical power absorbed by the device and the mechanical power delivered.

-

Proof-Mass Actuator

-

A reaction mass \(m\) is conected to the support structure by a spring \(k\) , and damper \(c\) and a force actuator \(f = T i\) (figure fig:proof_mass_actuator).

-

-
- Figure 11: Proof-mass actuator
-

Figure 11: Proof-mass actuator

-
-
- -

If we apply the second law of Newton on the mass: -\[ m\ddot{x} + c\dot{x} + kx = f = Ti \]

-

In the Laplace domain: -\[ x = \frac{Ti}{ms^2 + cs + k} \]

-

The total force applied on the support is: -\[ F = -f + cs + k = -m s^2 x = \frac{-ms^2Ti}{ms^2 + cs + k} \]

-

The transfer function between the total force and the current \(i\) applied to the coil is :

-
-
-

\begin{equation} -\frac{F}{i} = \frac{-s^2 T}{s^2 + 2\xi_p \omega_p s + \omega_p^2} -\end{equation}

-

with:

-
    -
  • \(T\) is the transducer constant
  • -
  • \(\omega_p = \frac{k}{m}\) is the natural frequency of the spring-mass system
  • -
  • \(\xi_p\) is the damping ratio
  • -
-
-

Above some critical frequency \(\omega_c \approx 2\omega_p\), the proof-mass actuator can be regarded as an ideal force generator (figure fig:proof_mass_tf).

-

-
- Figure 12: Bode plot \(F/i\) of the proof-mass actuator
-

Figure 12: Bode plot \(F/i\) of the proof-mass actuator

-
-
- -

Geophone

-

The geophone is a transducer which behaves like an absolute velocity sensor above some cutoff frequency. -The voltage \(e\) of the coil is used as the sensor output.

-

If \(x_0\) is the displacement of the support and if the voice coil is open (\(i=0\)), the governing equations are:

-

\begin{align*} -m\ddot{x} + c(\dot{x}-\dot{x_0}) + k(x-x_0) &= 0\\\
-T(\dot{x}-\dot{x_0}) &= e -\end{align*}

-

By using the two equations, we obtain:

-

\begin{equation} -\frac{e}{\dot{x_0}} = \frac{-s^2 T}{s^2 + 2\xi_p\omega_p s + \omega_p^2} -\end{equation}

-

Above the corner frequency, the gain of the geophone is equal to the transducer constant \(T\).

-

-
- Figure 13: Model of a geophone based on a voice coil transducer
-

Figure 13: Model of a geophone based on a voice coil transducer

-
-
- -

Designing geophones with very low corner frequency is in general difficult. Active geophones where the frequency is lowered electronically may constitute a good alternative option.

-

General Electromechanical Transducer

-

The consitutive behavior of a wide class of electromechanical transducers can be modelled as in figure fig:electro_mechanical_transducer.

-

-
- Figure 14: Electrical analog representation of an electromechanical transducer
-

Figure 14: Electrical analog representation of an electromechanical transducer

-
-
- -

In Laplace form the constitutive equations read:

-

\begin{align} -e & = Z_e i + T_{em} v \label{eq:gen_trans_e} \\\
-f & = T_{em} i + Z_m v \label{eq:gen_trans_f} -\end{align}

-

With:

-
    -
  • \(e\) is the Laplace transform of the input voltage across the electrical terminals
  • -
  • \(i\) is the input current
  • -
  • \(f\) is the force applied to the mechanical terminals
  • -
  • \(v\) is the velocity of the mechanical part
  • -
  • \(Z_e\) is the blocked electrical impedance (for \(v=0\))
  • -
  • \(T_{em}\) is the transduction coefficient representing the electromotive force (in \(\si{\volt\second\per\meter}\))
  • -
  • \(T_{me}\) is the transduction coefficient representing the force acting on the mechanical terminals to balance the electromagnetic force induced per unit current input (in \(\si{\newton\per\ampere}\))
  • -
  • \(Z_m\) is the mechanical impedance measured when \(i=0\)
  • -
-

Equation \eqref{eq:gen_trans_e} shows that the voltage across the electrical terminals of any electromechanical transducer is the sum of a contribution proportional to the current applied and a contribution proportional to the velocity of the mechanical terminals. -Thus, if \(Z_ei\) can be measured and substracted from \(e\), a signal proportional to the velocity is obtained.

-

To do so, the bridge circuit as shown on figure fig:bridge_circuit can be used.

-

We can show that

-

\begin{equation} -V_4 - V_2 = \frac{-Z_b T_{em}}{Z_e + Z_b} v -\end{equation}

-

which is indeed a linear function of the velocity \(v\) at the mechanical terminals.

-

-
- Figure 15: Bridge circuit for self-sensing actuation
-

Figure 15: Bridge circuit for self-sensing actuation

-
-
- -

Smart Materials

-

Smart materials have the ability to respond significantly to stimuli of different physical nature. -Figure fig:smart_materials lists various effects that are observed in materials in response to various inputs.

-

-
- Figure 16: Stimulus response relations indicating various effects in materials. The smart materials corresponds to the non-diagonal cells
-

Figure 16: Stimulus response relations indicating various effects in materials. The smart materials corresponds to the non-diagonal cells

-
-
- -

Piezoelectric Transducer

-

Piezoelectric materials exhibits two effects described below.

-
-
-

Ability to generate an electrical charge in proportion to an external applied force.

-
-
-
-

An electric filed parallel to the direction of polarization induces an expansion of the material.

-
-

The most popular piezoelectric materials are Lead-Zirconate-Titanate (PZT) which is a ceramic, and Polyvinylidene fluoride (PVDF) which is a polymer.

-

We here consider a transducer made of one-dimensional piezoelectric material.

-
-
-

\begin{subequations} -\begin{align} -D & = \epsilon^T E + d_{33} T\\\
-S & = d_{33} E + s^E T -\end{align} -\end{subequations}

-

With:

-
    -
  • \(D\) is the electric displacement \([C/m^2]\)
  • -
  • \(E\) is the electric field \([V/m]\)
  • -
  • \(T\) is the stress \([N/m^2]\)
  • -
  • \(S\) is the strain
  • -
  • \(\epsilon^T\) is the dielectric constant under constant stress
  • -
  • \(s^E\) is the compliance when the eletric field is constant (inverse of Young modulus)
  • -
  • \(d_{33}\) is the piezoelectric constant \([m/V]\) or \([C/N]\) in the poling direction of the material (convention)
  • -
-
-

Constitutive Relations of a Discrete Transducer

-

The set of equations \eqref{eq:piezo_eq} can be written in a matrix form:

-

\begin{equation} -\begin{bmatrix}D\S\end{bmatrix}

-

\begin{bmatrix} -\epsilon^T & d_{33}\\\
-d_{33} & s^E -\end{bmatrix} -\begin{bmatrix}E\T\end{bmatrix} -\end{equation}

-

Where \((E, T)\) are the independent variables and \((D, S)\) are the dependent variable.

-

If \((E, S)\) are taken as independant variables:

-

\begin{equation} -\begin{bmatrix}D\T\end{bmatrix}

-

\begin{bmatrix} -\epsilon^T(1-k^2) & e_{33}\\\
--e_{33} & c^E -\end{bmatrix} -\begin{bmatrix}E\S\end{bmatrix} -\end{equation}

-

With:

-
    -
  • \(c^E = \frac{1}{s^E}\) is the Young modulus under short circuited electrodes (\(E = 0\)) in \([N/m^2]\)
  • -
  • \(e_{33} = \frac{d_{33}}{s^E}\) is the constant relating the electric displacement to the strain for short-circuited electrodes \([C/m^2]\)
  • -
-
-
-

\begin{equation} -k^2 = \frac{{d_{33}}^2}{s^E \epsilon^T} = \frac{{e_{33}}^2}{c^E \epsilon^T} -\end{equation}

-

\(k\) is called the electromechanical coupling factor of the material. -It measures the efficiency of the conversion of the mechanical energy into electrical energy, and vice versa.

-
-

If one assumes that all the electrical and mechanical quantities are uniformly distributed in a linear transducer formed by a stack (see figure fig:piezo_stack) of \(n\) disks of thickness \(t\) and cross section \(A\), the global constitutive equations of the transducer are obtained by integrating \eqref{eq:piezo_eq_matrix_bis} over the volume of the transducer:

-

\begin{equation} -\begin{bmatrix}Q\\Delta\end{bmatrix}

-

\begin{bmatrix} -C & nd_{33}\\\
-nd_{33} & 1/K_a -\end{bmatrix} -\begin{bmatrix}V\f\end{bmatrix} -\end{equation}

-

where

-
    -
  • \(Q = n A D\) is the total electric charge on the electrodes of the transducer
  • -
  • \(\Delta = S l\) is the total extension (\(l = nt\) is the length of the transducer)
  • -
  • \(f = AT\) is the total force
  • -
  • \(V\) is the voltage applied between the electrodes of the transducer
  • -
  • \(C = \epsilon^T A n^2/l\) is the capacitance of the transducer with no external load (\(f = 0\))
  • -
  • \(K_a = A/s^El\) is the stiffness with short-circuited electrodes (\(V = 0\))
  • -
-

-
- Figure 17: Piezoelectric linear transducer
-

Figure 17: Piezoelectric linear transducer

-
-
- -

Equation \eqref{eq:piezo_stack_eq} can be inverted to obtain

-

\begin{equation} -\begin{bmatrix}V\f\end{bmatrix}

-

\frac{K_a}{C(1-k^2)} -\begin{bmatrix} -1/K_a & -nd_{33}\\\
--nd_{33} & C -\end{bmatrix} -\begin{bmatrix}Q\\Delta\end{bmatrix} -\end{equation}

-

Energy Stored in the Piezoelectric Transducer

-

Let us write the total stored electromechanical energy of a discrete piezoelectric transducer as shown on figure fig:piezo_discrete.

-

The total power delivered to the transducer is the sum of electric power \(V i\) and the mechanical power \(f \dot{\Delta}\). The net work of the transducer is

-

\begin{equation} -dW = V i dt + f \dot{\Delta} dt = V dQ + f d\Delta -\end{equation}

-

-
- Figure 18: Discrete Piezoelectric Transducer
-

Figure 18: Discrete Piezoelectric Transducer

-
-
- -

By integrating equation \eqref{eq:piezo_work} and using the constitutive equations \eqref{eq:piezo_stack_eq_inv}, we obtain the analytical expression of the stored electromechanical energy for the discrete transducer:

-

\begin{equation} -W_e(\Delta, Q) = \frac{Q^2}{2 C (1 - k^2)} - \frac{n d_{33} K_a}{C(1-k^2)} Q\Delta + \frac{K_a}{1-k^2}\frac{\Delta^2}{2} -\end{equation}

-
    -
  • The first term is the electrical energy stored in the capacitance \(C(1-k^2)\) (corresponding to fixed geometry \(\Delta = 0\))
  • -
  • The second term is the piezoelectric energy
  • -
  • The third term is the elastic strain energy stored in a spring stiffness \(K_a/(1-k^2)\) (corresponding to open electrodes \(Q=0\))
  • -
-

The constitutive equations can be recovered by differentiate the stored energy: -\[ f = \frac{\partial W_e}{\partial \Delta}, \quad V = \frac{\partial W_e}{\partial Q} \]

-

Interpretation of \(k^2\)

-

Consider a piezoelectric transducer subjected to the following mechanical cycle: first, it is loaded with a force \(F\) with short-circuited electrodes; the resulting extension is \(\Delta_1 = F/K_a\) where \(K_a = A/(s^El)\) is the stiffness with short-circuited electrodes. -The energy stored in the system is: -\[ W_1 = \int_0^{\Delta_1} f dx = \int_0^{\Delta_1} K_a x dx = \frac{F^2}{2 K_a} \]

-

At this point, the electrodes are open and the transducer is unloaded according to a path of slope \(K_a/(1-k^2)\), the resulting extension is \(\Delta_2 = \frac{F(1-k^2)}{K_a}\). -The energy recovered is -\[ W_1 = \int_0^{\Delta_2} f dx = \frac{F \Delta_2}{2} = \frac{F^2(1-k^2)}{2 K_a} \]

-

The ratio between the remaining stored energy and the initial stored energy is -\[ \frac{W_1 - W_2}{W_1} = k^2 \]

-

Admittance of the Piezoelectric Transducer

-

Consider the system of figure fig:piezo_stack_admittance, where the piezoelectric transducer is assumed massless and is connected to a mass \(M\). -The force acting on the mass is negative of that acting on the transducer, \(f = -M \ddot{x}\).

-

-
- Figure 19: Elementary dynamical model of the piezoelectric transducer
-

Figure 19: Elementary dynamical model of the piezoelectric transducer

-
-
- -

From the constitutive equations, one finds

-

\begin{equation} -\frac{I}{V} = s C (1-k^2) \frac{s^2 + z^2}{s^2 + p^2} -\end{equation}

-

where the poles and zeros are respectively -\[ p^2 = \frac{K_a}{M},\quad z^2 = \frac{K_a/(1-k^2)}{M} \]

-

And one can see that

-

\begin{equation} -\frac{z^2 - p^2}{z^2} = k^2 -\end{equation}

-

Equation \eqref{eq:distance_p_z} constitutes a practical way to determine the electromechanical coupling factor from the poles and zeros of the admittance measurement (figure fig:piezo_admittance_curve).

-

-
- Figure 20: Typical admittance FRF of the transducer
-

Figure 20: Typical admittance FRF of the transducer

-
-
- -

Piezoelectric Beam, Plate and Truss

-

Piezoelectric Material

-

Constitutive Relations

-

Coenergy Density Function

-

Hamilton’s Principle

-

Piezoelectric Beam Actuator

-

Hamilton’s Principle

-

Piezoelectric Loads

-

Laminar Sensor

-

Current and Charge Amplifiers

-

Distributed Sensor Output

-

Charge Amplifier Dynamics

-

Spatial Modal Filters

- - -

Active Beam with Collocated Actuator/Sensor

-

Frequency Response Function

-

Pole-Zero Pattern

- -

Admittance of a Beam with a Piezoelectric Patch

-

Piezoelectric Laminate

-

Two-Dimensional Constitutive Equations

-

Kirchhoff Theory

-

Stiffness Matrix of a Multilayer Elastic Laminate

-

Multilayer Laminate with a Piezoelectric Layer

-

Equivalent Piezoelectric Loads

-

Sensor Output

-

Beam Model Versus Plate Model

-

Additional Remarks

-

Active Truss

-

Open-Loop Transfer Function

-

Admittance Function

-

Finite Element Formulation

-

Problems

-

References

-

Passive Damping with Piezoelectric Transducers

-

Introduction

-

Resistive Shunting

-

Inductive Shunting

-

Equal Peak Design

-

Robustness of the Equal Peak Design

-

Switched Shunt

-

Equivalent Damping Ratio

-

Collocated Versus Non-collocated Control

-

Pole-Zero Flipping

-
-
-

The Root Locus shows, in a graphical form, the evolution of the poles of the closed-loop system as a function of the scalar gain \(g\) applied to the compensator. -The Root Locus is the locus of the solution \(s\) of the closed loop characteristic equation \(1 + gG(s)H(s) = 0\) when \(g\) goes from zero to infinity.

-
-

If the open-loop transfer function is written -\[ G(s)H(s) = k \frac{\Pi_{i=1}^{m} (s - z_i)}{\Pi_{i=1}^{n} (s - p_i)} \] -The locus goes from the poles \(p_i\) (for \(g=0\)) to the zeros \(z_i\) (as \(g \rightarrow \infty\)).

-

The Two-Mass Problem

-

Collocated Control

-

Non-collocated Control

-

Notch Filter

-

Effect of Pole-Zero Flipping on the Bode Plots

-

Nearly Collocated Control System

-

Non-collocated Control Systems

-

The Role of Damping

-

Active Damping with Collocated System

-

Introduction

-

The role of active damping is to increase the negative real parts of system poles wile maintaining the natural frequencies essentially unchanged.

-

Active damping requires relatively little control effort; this is why it is also called Low Authority Control (LAC). -Other control strategies which fully relocate the closed loop poles are called High Autority Control (HAC).

-

Lead Control

-

\[H(s) = g \frac{s+z}{z+p} \quad p \gg z \]

-

It produces a phase lead in the frequency band between \(z\) and \(p\), bringing active damping to all the modes belonging to \(z < \omega_i < p\).

-

The closed-loop poles start at the open-llop poles for \(g=0\) and go to the open-loop zeros for \(g\rightarrow\infty\).

-

The controller does not have any roll-off, but the roll-off of the structure is enough to guarantee gain stability at high frequency.

-

Direct Velocity Feedback (DVF)

-

This is a particular case of the Lead controller as \(z\rightarrow 0\) and \(p\rightarrow\infty\).

-

Structure: -\[M \ddot{x} + K x = b u\]

-

Output is a velocity sensor: -\[y = b^T \dot{x}\]

-

Control: -\[u = -g y\]

-

Positive Position Feedback (PPF)

-

Sometimes the plant does not have a roll-off of \(-40dB/\text{decade}\), then we can use a second-order PPF: -\[H(s) = \frac{-g}{s^2 + 2 \xi_f \omega_f s + {\omega_f}^2}\]

-

Integral Force Feedback (IFF)

-

Duality Between the Lead and the IFF Controllers

-

Root Locus of a Single Mode

-

Open-Loop Poles and Zeros

-

Actuator and Sensor Dynamics

-

Decentralized Control with Collocated Pairs

-

Cross talk

-

Force Actuator and Displacement Sensor

-

Displacement Actuator and Force Sensor

-

Proof of Equation (7.18)–(7.32)

-

Vibration Isolation

-

Introduction

-

Relaxation Isolator

-

Electromagnetic Realization

-

Active Isolation

-

Sky-Hook Damper

-

Integral Force Feedback

-

Flexible Body

-

Free-Free Beam with Isolator

-

Payload Isolation in Spacecraft

-

Interaction Isolator/Attitude Control

-

Gough–Stewart Platform

-

Six-Axis Isolator

-

Relaxation Isolator

-

Integral Force Feedback

-

Spherical Joints, Modal Spread

-

Active Versus Passive

-

Car Suspension

-

State Space Approach

-

Introduction

-

State Space Description

-

Single Degree of Freedom Oscillator

-

Flexible Structure

-

Inverted Pendulum

-

System Transfer Function

-

Poles and Zeros

-

Pole Placement by State Feedback

-

Example: Oscillator

-

Linear Quadratic Regulator

-

Symmetric Root Locus

-

Inverted Pendulum

-

Observer Design

-

Kalman Filter

-

Inverted Pendulum

-

Reduced-Order Observer

-

Oscillator

-

Inverted Pendulum

-

Separation Principle

-

Transfer Function of the Compensator

-

The Two-Mass Problem

-

Analysis and Synthesis in the Frequency Domain

-

Gain and Phase Margins

-

Nyquist Criterion

-

Cauchy’s Principle

-

Nyquist Stability Criterion

-

Nichols Chart

-

Feedback Specification for SISO Systems

-

Sensitivity

-

Tracking Error

-

Performance Specification

-

Unstructured Uncertainty

-

Robust Performance and Robust Stability

-

Bode Gain–Phase Relationships

-

The Bode Ideal Cutoff

-

Non-minimum Phase Systems

-

Usual Compensators

-

System Type

-

Lead Compensator

-

PI Compensator

-

Lag Compensator

-

PID Compensator

-

Multivariable Systems

-

Performance Specification

-

Small Gain Theorem

-

Stability Robustness Tests

-

Residual Dynamics

-

Optimal Control

-

Introduction

-

Quadratic Integral

-

Deterministic LQR

-

Stochastic Response to a White Noise

-

Remark

-

Stochastic LQR

-

Asymptotic Behavior of the Closed Loop

-

Prescribed Degree of Stability

-

Gain and Phase Margins of the LQR

-

Full State Observer

-

Covariance of the Reconstruction Error

-

Kalman Filter (KF)

-

Linear Quadratic Gaussian (LQG)

-

Duality

-

Spillover

-

Spillover Reduction

-

Loop Transfer Recovery (LTR)

-

Integral Control with State Feedback

-

Frequency Shaping

-

Weakness of LQG:

-
    -
  • use frequency independant cost function
  • -
  • use noise statistics with uniform distribution
  • -
-

To overcome the weakness => frequency shaping either by:

-
    -
  • considering a frequency dependant cost function
  • -
  • using colored noise statistics
  • -
-

Frequency-Shaped Cost Functionals

-

Noise Model

-

Controllability and Observability

-

Introduction

-

Definitions

-

Controllability and Observability Matrices

-

Examples

-

Cart with Two Inverted Pendulums

-

Double Inverted Pendulum

-

Two d.o.f. Oscillator

-

State Transformation

-

Control Canonical Form

-

Left and Right Eigenvectors

-

Diagonal Form

-

PBH Test

-

Residues

-

Example

-

Sensitivity

-

Controllability and Observability Gramians

-

Internally Balanced Coordinates

-

Model Reduction

-

Transfer Equivalent Realization

-

Internally Balanced Realization

-

Example

-

Stability

-

Introduction

-

Phase Portrait

-

Linear Systems

-

Routh–Hurwitz Criterion

-

Lyapunov’s Direct Method

-

Introductory Example

-

Stability Theorem

-

Asymptotic Stability Theorem

-

Lasalle’s Theorem

-

Geometric Interpretation

-

Instability Theorem

-

Lyapunov Functions for Linear Systems

-

Lyapunov’s Indirect Method

-

An Application to Controller Design

-

Energy Absorbing Controls

-

Applications

-

Digital Implementation

-

Sampling, Aliasing, and Prefiltering

-

Zero-Order Hold, Computational Delay

-

Quantization

-

Discretization of a Continuous Controller

-

Active Damping of a Truss Structure

-

Actuator Placement

-

Implementation, Experimental Results

-

Active Damping Generic Interface

-

Active Damping

-

Experiment

-

Pointing and Position Control

-

Active Damping of a Plate

-

Control Design

-

Active Damping of a Stiff Beam

-

System Design

-

The HAC/LAC Strategy

-

In active structures for precision engineering applications, the control system is used to reduce the effect of transient and steady-state disturbances on the controlled variables. -Active damping is very effective in reducing the settling time of transient disturbances and the effect of steady state disturbances near the resonance frequencies of the system; however, away from the resonances, the active damping is completely ineffective and leaves the closed-loop response essentially unchanged. -Such low-gain controllers are often called Low Authority Controllers (LAC), because they modify the poles of the system only slightly.

-

To attenuate wide-band disturbances, the controller needs larger gains, in order to cause more substantial modifications to the poles of the open-loop system; this is the reason why they are often called High Authority Controllers (HAC). -Their design requires a model of the structure, and there is usually a trade-off between the conflicting requirements of performance-bandwidth and stability in the face of parametric uncertainty and unmodelled dynamics.

-

When collocated actuator/sensor pairs can be used, stability can be achieved using positivity concepts, but in many situations, collocated pairs are not feasible for HAC.

-

The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure fig:hac_lac_control. -The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure. -This approach has the following advantages:

-
    -
  • The active damping extends outside the bandwidth of the HAC and reduces the settling time of the modes which are outsite the bandwidth
  • -
  • The active damping makes it easier to gain-stabilize the modes outside the bandwidth of the output loop (improved gain margin)
  • -
  • The larger damping of the modes within the controller bandwidth makes them more robust to the parmetric uncertainty (improved phase margin)
  • -
-

-
- Figure 21: Principle of the dual-loop HAC/LAC control
-

Figure 21: Principle of the dual-loop HAC/LAC control

-
-
- -

Wide-Band Position Control

-

Compensator Design

-

Results

-

Vibroacoustics: Volume Displacement Sensors

-

QWSIS Sensor

-

Discrete Array Sensor

-

Spatial Aliasing

-

Distributed Sensor

-

Tendon Control of Cable Structures

-

Introduction

-

Tendon Control of Strings and Cables

-

Active Damping Strategy

-

Basic Experiment

-

Linear Theory of Decentralized Active Damping

-

Guyed Truss Experiment

-

Microprecision Interferometer Testbed

-

Free-Floating Truss Experiment

-

Application to Cable-Stayed Bridges

-

Laboratory Experiment

-

Control of Parametric Resonance

-

Large Scale Experiment

-

Application to Suspension Bridges

-

Footbridge

-

Laboratory Experiment

-

Active Control of Large Telescopes: Adaptive Optics

-

Introduction

-

Wavefront Sensor

-

Zernike Modes

-

Fried Length, Seeing

-

Kolmogorov Turbulence Model

-

Strehl Ratio

-

Power Spectral Density of the Zernike Modes

-

Deformable Mirror for Adaptive Optics

-

Stoney Formula

-

Stroke Versus Natural Frequency

-

Feedback Control of an AO Mirror

-

Quasi-static Control

-

Control of the Mirror Based on the Jacobian

-

Control of Zernike Modes

-

Dynamic Response of the AO Mirror

-

Dynamic Model of the Mirror

-

Control-Structure Interaction

-

Passive Damping

-

Active Damping

-

Miscellaneous

-

Segmented AO Mirror

-

Initial Curvature of the AO Mirror

-

Active Control of Large Telescopes: Active Optics

-

Introduction

-

Monolithic Primary Mirror

-

Segmented Primary Mirror

-

SVD Controller

-

Loop Shaping of the SVD Controller

-

Dynamics of a Segmented Mirror

-

Control-Structure Interaction

-

SISO System

-

MIMO System

-

Spillover Alleviation

-

Scaling Rules

-

Static Deflection Under Gravity

-

First Resonance Frequency

-

Control Bandwidth

-

Adaptive Thin Shell Space Reflectors

-

Introduction

-

Adaptive Plates Versus Adaptive Shells

-

Adaptive Spherical Shell

-

Quasi-static Control: Hierarchical Approach

-

Petal Configuration

-

MATS Demonstrator

-

Manufacturing of the Demonstrator

-

Semi-active Control

-

Introduction

-

Magneto-Rheological Fluids

-

MR Devices

-

Semi-active Suspension

-

Semi-active Devices

-

Narrow-Band Disturbance

-

Quarter-Car Semi-active Suspension

-

Problems

-

Bibliography

-

Preumont, A., Vibration control of active structures - fourth edition (2018), : Springer International Publishing.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/schmidt14_desig_high_perfor_mechat_revis_edition/index.html b/public/book/schmidt14_desig_high_perfor_mechat_revis_edition/index.html deleted file mode 100644 index aec5daf..0000000 --- a/public/book/schmidt14_desig_high_perfor_mechat_revis_edition/index.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - The design of high performance mechatronics - 2nd revised edition - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
Reference Books
-
Reference
-
(Schmidt {\it et al.}, 2014)
-
Author(s)
-
Schmidt, R. M., Schitter, G., & Rankers, A.
-
Year
-
2014
-
-

Section 2.2 Mechanics

-
-

The core of a mechatronic system is its mechanical construction and in spite of many decade of excellent designs, optimizing the mechanical structure in strength, mass and endurance, the mechanical behavior will always remain the limiting factor of the performance of any mechatronic system.

-
-

Section 2.2.2 Force and Motion

-
-

Statics deals with the stress levels that are present in the mechanical system when (quasi-)static forces are exerted on it. -It analyses the linear and non-linear strain effects that are caused by elastic and plastic deformation under these stress levels.

-

Dynamics deals with the behaviour of the mechanical system under changing forces, while often the effects are linearised and limited to strain levels well below any irreversible plastic deformation. -One should however be aware that another non-destructive source of non-linearity is found in a tried important field of mechanics, called kinematics. -The relation between angles and positions is often non-linear in such a mechanism, because of the changing angles, and controlling these often requires special precautions to overcome the inherent non-linearities by linearisation around actual position and adapting the optimal settings of the controller to each position.

-
-

-
- Figure 1: Stabiliby condition and robustness of a feedback controlled system. The desired shape of these curves guide the control design by optimising the lvels and sloppes of the amplitude Bode-plot at low and high frequencies for suppression of the disturbances and of the base Bode-plot in the cross-over frequency region. This is called loop shaping design
-

Figure 1: Stabiliby condition and robustness of a feedback controlled system. The desired shape of these curves guide the control design by optimising the lvels and sloppes of the amplitude Bode-plot at low and high frequencies for suppression of the disturbances and of the base Bode-plot in the cross-over frequency region. This is called loop shaping design

-
-
- -

Section 4.3.3

-
-

On might say that a high value of the unity-gain crossover frequency and corresponding high-frequency bandwidth limit is rather an unwanted side-effect of the required high loop-gain at lower frequencies, than a target for the design of a control system as such.

-
-

Section 9.3: Mass Dilemma

-
-

A reduced mass requires improved system dynamics that enable a higher control bandwidth to compensate for the increase sensitivity for external vibrations.

-
-

Bibliography

-

Schmidt, R. M., Schitter, G., & Rankers, A., The design of high performance mechatronics - 2nd revised edition (2014), : Ios Press.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/skogestad07_multiv_feedb_contr/index.html b/public/book/skogestad07_multiv_feedb_contr/index.html deleted file mode 100644 index c2b0907..0000000 --- a/public/book/skogestad07_multiv_feedb_contr/index.html +++ /dev/null @@ -1,4975 +0,0 @@ - - - - - - Multivariable feedback control: analysis and design - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
Reference Books, Multivariable Control
-
Reference
-
(Skogestad & Postlethwaite, 2007)
-
Author(s)
-
Skogestad, S., & Postlethwaite, I.
-
Year
-
2007
-
-
\( -% H Infini -\newcommand{\hinf}{\mathcal{H}_\infty} -% H 2 -\newcommand{\htwo}{\mathcal{H}_2} -% Omega -\newcommand{\w}{\omega} -% H-Infinity Norm -\newcommand{\hnorm}[1]{\left\|#1\right\|_{\infty}} -% H-2 Norm -\newcommand{\normtwo}[1]{\left\|#1\right\|_{2}} -% Norm -\newcommand{\norm}[1]{\left\|#1\right\|} -% Absolute value -\newcommand{\abs}[1]{\left\lvert#1\right\lvert} -% Maximum for all omega -\newcommand{\maxw}{\text{max}_{\omega}} -% Maximum singular value -\newcommand{\maxsv}{\overline{\sigma}} -% Minimum singular value -\newcommand{\minsv}{\underline{\sigma}} -% Under bar -\newcommand{\ubar}[1]{\text{\b{$#1$}}} -% Diag keyword -\newcommand{\diag}[1]{\text{diag}\{{#1}\}} -% Vector -\newcommand{\colvec}[1]{\begin{bmatrix}#1\end{bmatrix}} -\)
-
\( -\newcommand{\tcmbox}[1]{\boxed{#1}} -% Simulate SIunitx -\newcommand{\SI}[2]{#1\,#2} -\newcommand{\ang}[1]{#1^{\circ}} -\newcommand{\degree}{^{\circ}} -\newcommand{\radian}{\text{rad}} -\newcommand{\percent}{\%} -\newcommand{\decibel}{\text{dB}} -\newcommand{\per}{/} -% Bug with subequations -\newcommand{\eatLabel}[2]{} -\newenvironment{subequations}{\eatLabel}{} -\)
-

Introduction

-

-

The Process of Control System Design

-

The process of designing a control system is a step by step design procedure as follows:

-
    -
  1. Study the system (plant) to be controlled and obtain initial information about the control objectives
  2. -
  3. model the system and simplify the model, if necessary
  4. -
  5. scale the variables and analyze the resulting model; determine its properties
  6. -
  7. Decide which variables are to be controlled (controlled outputs)
  8. -
  9. Decide on the measurements and manipulated variables: what sensors and actuators will be used and where will they be placed?
  10. -
  11. Select the control configuration
  12. -
  13. Decide on the type of controller to be used
  14. -
  15. Decide on performance specifications, based on the overall control objectives
  16. -
  17. Design a controller
  18. -
  19. Analyze the resulting controlled system to see if the specifications are satisfied; and if they are not satisfied modify the specifications or the type of controller
  20. -
  21. Simulate the resulting controlled system
  22. -
  23. Repeat from step 2 if necessary
  24. -
  25. Choose hardware and software and implement the controller
  26. -
  27. Test and validate the control system, and tune the controller on-line, if necessary
  28. -
-

Input-output controllability analysis is studied in section sec:perf_limit_siso for SISO systems and in section sec:perf_limit_mimo for MIMO systems. -The steps 4, 5, 6 and 7 are corresponding to the control structure design. This is treated in section sec:controller_structure_design. -The design of the controller is described in section sec:controller_design. -The analysis of performance and robustness of a controlled system is studied in sections sec:uncertainty_robustness_siso and sec:robust_perf_mimo.

-

The Control Problem

-

The objective of a control system is to make the output \(y\) behave in a desired way by manipulating the plant input \(u\). -The regulator problem is to manipulate \(u\) to counteract the effect of a disturbance \(d\). -The servo problem is to manipulate \(u\) to keep the output close to a given reference input \(r\).

-

In both cases, we want the control error \(e = y - r\) to be small. -The algorithm for adjusting \(u\) based on \(y\) is the controller \(K\). -To arrive at a good design for \(K\) we need information about the expected disturbances, the reference inputs, the plant model \(G\) and disturbance model \(G_d\).

-

A major source of difficulty is that models may be inaccurate or may change with time. -The inaccuracy in \(G\) may cause instability problems as it is part of the feedback loop. -To deal with such a problem, the concept of model uncertainty will be used.

-
-
-
-
Nominal Stability (NS)
-
The system is stable with no model uncertainty
-
Nominal Performance (NP)
-
The system satisfies the performance specifications with no model uncertainty
-
Robust Stability (RS)
-
The system is stable for all perturbed plants about the nominal model up to the worst case uncertainty
-
Robust Performance (RP)
-
The system satisfies the performance specifications for all perturbed plants about the nominal model up to the worst-case model uncertainty
-
-
-

Transfer Functions

-

Properties of transfer functions:

-
    -
  • A system \(G(s)\) is strictly proper if \(G(s) \rightarrow 0\) as \(\w \rightarrow \infty\)
  • -
  • A system \(G(s)\) is semi-proper if \(G(s) \rightarrow D \ne 0\) as \(\w \rightarrow \infty\)
  • -
  • A system \(G(s)\) is proper if \(G(s)\) is strictly proper or semi-proper
  • -
  • The order of the system noted \(n\) and is the order of the denominator (or pole polynomial) of its matrix transfer function
  • -
-

Scaling

-

Scaling is very important in applications, both for model analysis (input-output controllability) and for controller design.

-

The scaling is done by dividing each variable by its maximum expected or allowed change. -That way, the scaled variable should be less than one in magnitude.

-

We denote variables in their unscaled units by a hat.

-
    -
  • \(d = \hat{d}/D_d\) with \(D_d = \hat{d}_{\max}\) is the largest expected change in disturbance
  • -
  • \(u = \hat{u}/D_u\) with \(D_u = \hat{u}_{\max}\) is the largest allowed input change
  • -
-

The variables \(\hat{y}\), \(\hat{r}\) and \(\hat{e}\) are in the same unit, so we choose to scale them with respect to the maximum allowed control error:

-
    -
  • \(e = \hat{e}/D_e\) with \(D_e = \hat{e}_{\max}\) is the largest allowed control error
  • -
  • \(r = \hat{r}/D_e\)
  • -
  • \(y = \hat{y}/D_e\)
  • -
-

For MIMO systems, each variables in the vectors \(\hat{d}\), \(\hat{r}\), \(\hat{u}\) and \(\hat{e}\) may have a different maximum value, in which case \(D_e\), \(D_u\), \(D_s\) and \(D_r\), become diagonal scaling matrices.

-
-
-

\begin{align*} -G &= D_e^{-1} \hat{G} D_u\\\
-G_d &= D_e^{-1} \hat{G_d} D_d -\end{align*}

-
-

We then obtain the following model in terms of scaled variables: -\[ y = G u + G_d d \] -where \(u\) and \(d\) should be less than 1 in magnitude.

-

It is sometimes useful to introduce a scaled reference \(\tilde{r}\) which is less than 1 in magnitude: \(\tilde{r} = \hat{r}/\hat{r}_{\max} = D_r^{-1}\hat{r}\) -Then we have \(r = R \tilde{r}\) with \(R \triangleq D_e^{-1}D_r = \hat{r}_{\max}/\hat{e}_{\max}\) is the largest expected change in reference relative to the allowed control error.

-

With scaling you make initial decision regarding performance. This makes weight selection simple later (may often select identity weights if initial scaling is reasonable!).

-

Deriving Linear Models

-

Linear models may be obtained from physical “first-principle” models or from analyzing input-output data (identification).

-

In order to obtain a linear model from the “first-principle”, the following approach is used:

-
    -
  1. Formulate a nonlinear state-space model based on physical knowledge
  2. -
  3. Determine the steady-state operating point about which to linearize
  4. -
  5. Introduce deviation variables and linearize the model
  6. -
-

Notation

-

Notations used throughout this note are summarized in tables table:notation_conventional, table:notation_general and table:notation_tf.

-

-
- Table 1: - Notations for the conventional control configuration -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NotationMeaning
\(G\)Plant model
\(K\)Controller
\(G_d\)Disturbance model
\(r\)Reference inputs
\(n\)Measurement noise
\(y\)Plant outputs
\(y_m\)Measurements
\(u\)Control signals
-

-
- Table 2: - Notations for the general configuration -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NotationMeaning
\(P\)Generalized plant model
\(w\)Exogenous inputs: commands, disturbances, noise
\(z\)Exogenous outputs: signals to be minimized
\(v\)Controller inputs: measurements
\(u\)Control signals
-

-
- Table 3: - Notations for transfer functions -
- - - - - - - - - - - - - - - - - - - - - -
NotationMeaning
\(L\)Loop gain: \(L = GK\)
\(S\)Sensitivity function: \(S = (I + L)^{-1}\)
\(T\)Complementary sensitivity function: \(T = (I + L)*(I + L)^{-1}\)
-

Classical Feedback Control

-

-

Frequency Response

-

By replacing \(s\) by \(j\omega\) in a transfer function \(G(s)\), we get the frequency response description. It can be used to describe:

-
    -
  • A system’s response to sinusoids of varying frequency
  • -
  • The frequency content of a deterministic signal via the Fourier transform
  • -
  • The frequency distribution of a stochastic signal via the power spectral density
  • -
-

After sending a sinusoidal signal through a system \(G(s)\), the signal’s magnitude is amplified by a factor \(\abs{G(j\omega)}\) and its phase is shifted by \(\angle{G(j\omega)}\).

-
-
-

minimum phase systems are systems with no time delays or RHP-zeros.

-

The name minimum phase refers to the fact that such a system has the minimum possible phase lag for the given magnitude response \(|G(j\omega)|\).

-

RHP-zeros and time delays contribute additional phase lag to a system when compare to that of a minimum phase system with the same gain (hence the term non-minimum phase system).

-
-

For minimum phase systems, there is a unique relationship between the gain and phase of the frequency response: the Bode gain-phase relationship:

-

\begin{equation} -\angle{G(j\w_0)} = \frac{1}{\pi} \int_{-\infty}^{\infty} \frac{d\ln{\abs{G(j\w)}}}{d\ln{\w}} \ln{\abs{\frac{\w+\w_0}{\w-\w_0}}} \frac{d\w}{\w} -\end{equation}

-

We note \(N(\w_0) = \left( \frac{d\ln{|G(j\w)|}}{d\ln{\w}} \right)_{\w=\w_0}\) that corresponds to the slope of the magnitude of \(G(s)\) in log-variables. We then have the following approximation of the Bode gain-phase relationship:

-

\begin{equation} -\tcmbox{\angle{G(j\w_0)} \approx \frac{\pi}{2} N(\w_0)} -\end{equation}

-

Feedback Control

-

One Degree-of-Freedom Controller

-

The simple one degree-of-freedom controller negative feedback structure is represented in Fig. fig:classical_feedback_alt.

-

The input to the controller \(K(s)\) is \(r-y_m\) where \(y_m = y+n\) is the measured output and \(n\) is the measurement noise. -Thus, the input to the plant is \(u = K(s) (r-y-n)\). -The objective of control is to manipulate \(u\) (design \(K\)) such that the control error \(e\) remains small in spite of disturbances \(d\). -The control error is defined as \(e = y-r\).

-

-
- Figure 1: Configuration for one degree-of-freedom control
-

Figure 1: Configuration for one degree-of-freedom control

-
-
- -

Closed-loop Transfer Functions

-
-
-

\begin{subequations} -\begin{align} -y &= T r + S G_d d + T n\\\
-e &= -S r + S G_d d - T n\\\
-y &= KS r - KS G_d d - KS n -\end{align} -\end{subequations}

-
-

Why Feedback?

-

We could think that we can use a “perfect” feedforward controller \(K_r(s) = G^{-1}(s)\) with \(r-G_d d\) as the controller input: -\[ y = G u + G_d d = G K_r (r - G_d d) + G_d d = r \] -Unfortunately, \(G\) is never an exact model and the disturbances are never known exactly.

-
-
-
    -
  • Signal uncertainty
  • -
  • Unknown disturbance
  • -
  • Model uncertainty
  • -
  • An unstable plant
  • -
-
-

Closed Loop Stability

-

Two methods are commonly used to determine closed-loop stability:

-
    -
  1. The system is stable if and only if all the closed-loop poles (roots of \(1 + L(s) = 0\)) are in the open LHP. The poles are also equal to the eigenvalues of the state-space \(A\) matrix (this is how the poles are computed).
  2. -
  3. The frequency response of \(L(j\w)\) is plotted in the complex plane and the number of encirclement it makes around the critical point \(-1\) is counted. -
      -
    • Nyquist’s stability criterion: Closed-loop stability is inferred by equating the number of encirclement to the number of open-loop RHP-poles
    • -
    • Bode’s stability condition: The closed loop system is stable if and only if \(\vert L(j \w_{180})\vert < 1\) where \(\w_{180}\) is the phase crossover frequency defined by \(\angle L(j \w_{180})=\ang{-180}\). This is only valid for open-loop stable systems where \(\angle L(j\w)\) falls with frequency and such that \(\angle L(j\w)\) crosses \(\ang{-180}\) only once.
    • -
    -
  4. -
-

Method 1 is best suited for numerical calculation while method 2 has a nice graphical interpretation and may also be used for systems with time delays. -Moreover, method 2 provides useful measure of relative stability and will be used for robustness test.

-

Evaluating Closed-Loop Performance

-

Gain Margin

-

The Gain Margin is defined as:

-

\begin{equation} -\tcmbox{\text{GM} = \frac{1}{|L(j\w_{180})|}} -\end{equation}

-

with \(\w_{180}\) is the phase crossover frequency defined by \(\angle L(j \w_{180}) = \ang{-180}\). -If there is more than one crossing (\(\angle L(j \w_{180}) = \ang{-180}\)), the largest value of \(\vert L(j\w_{180})\vert\) is taken.

-

The GM is the factor by which the loop gain \(\vert L(s)\vert\) may be increased before the closed-loop system becomes unstable.

-

Phase Margin

-

The Phase Margin is defined as:

-

\begin{equation} -\tcmbox{\text{PM} = \angle L(j \w_c) + \ang{180}} -\end{equation}

-

with \(\w_c\) the gain crossover frequency defined by \(\vert L(j \w_c)\vert = 1\).

-

The PM tells how much negative phase (phase lag) we can add to \(L(s)\) at frequency \(\omega_c\) before closed-loop instability appears.

-

Typically, we required the PM to be larger than \(\SI{30}{\degree}\). This is a safeguard against time delay uncertainty, the system becomes unstable is we add a delay of \(\theta_{max} = PM / \w_c\).

-

Note that by decreasing the value of \(\omega_c\) (lowering the closed-loop bandwidth) the system can tolerate larger time delays.

-

Maximum Peak Criteria

-
-
-

\begin{subequations} -\begin{align} -M_S &= \max_{\w} \abs{S(j\w)} = \hnorm{S}\\\
-M_T &= \max_{\w} \abs{T(j\w)} = \hnorm{T} -\end{align} -\end{subequations}

-
-

Typically, we require \(M_S < 2\ (6dB)\) and \(M_T < 1.25\ (2dB)\).

-

Why do we want \(M_S\) small?

-
    -
  • Without feedback, with have \(e = r - G_d d\) but with feedback \(e = S(r - G_d d)\). Thus feedback improves performance in terms of reducing \(|e|\) where \(|S|<1\). However, we cannot avoid having \(|S|>1\) at some intermediate frequency where feedback control degrades performance. The value of \(M_S\) is then a measure of the worst-case performance degradation
  • -
  • \(M_S\) is also a measure of the robustness because the smallest distance between \(L(\w)\) and the critical point \(-1\) is \({M_S}^{-1}\)
  • -
-

There is a close relationship between these maximum peaks and the gain and phase margins. -For a given value of \(M_S\), we have:

-

\begin{equation} -\tcmbox{\text{GM} \geq \frac{M_S}{M_S-1}; \quad \text{PM} \geq \frac{1}{M_S}} -\end{equation}

-

Example of guaranteed stability margins:

-
    -
  • \(M_S < 2 \Rightarrow GM > 2\) and \(PM > \SI{29}{\degree}\)
  • -
  • \(M_T < 2 \Rightarrow GM > 1.5\) and \(PM > \SI{29}{\degree}\)
  • -
-

Bandwidth and Crossover Frequency

-

In general, a large bandwidth corresponds to a faster rise time, however, this also indicates an higher sensitivity to noise and to parameter variations.

-
-
-

The bandwidth, is the frequency range \([\w_1, \w_2]\) over which control is effective. In most case we simple call \(\w_2 = \w_B\) the bandwidth.

-
-

As the word “effective” may be interpreted in different ways, there are multiple definitions of bandwidth:

-
    -
  • The closed-loop bandwidth \(\w_B\) is the frequency where \(\vert S(j\w)\vert\) first crosses \(1/\sqrt{2}\approx -3dB\) from below.
  • -
  • The gain crossover frequency \(\w_c\) is defined as the frequency where \(\vert L(j \w_c)\vert\) first crosses 1 from above
  • -
  • The bandwidth in terms of \(T\), \(\w_{BT}\), is the highest frequency at which \(\vert T(j \w_c)\vert\) crosses \(1/\sqrt{2}\approx -3dB\) from above.
  • -
-

For systems with \(PM < \ang{90}\), we have: \(\w_{B} <\w_{c} < \w_{BT}\) -Then we have the following regions:

-
    -
  • \(\w < \w_B\): \(|S|<0.7\) and control is effective
  • -
  • \(\w_B < \w < \w_{BT}\): we may have \(|S| > 1\) and control degrades performance
  • -
  • \(\w_{BT} < \w\): \(|S| \approx 1\) and control has no significant effect on the response
  • -
-

The closed-loop time constant \(\tau_{\text{cl}}\) can be related to the bandwidth:

-

\begin{equation} -\tcmbox{\tau_{\text{cl}} \approx \frac{1}{\w_b}} -\end{equation}

-

Controller Design

-

There is 3 mains approaches to controller design:

-
    -
  1. Shaping of transfer functions. The designer specifies the magnitude of some transfer functions as a function of frequency and then finds a controller which gives the desired shape(s) -
      -
    1. Loop shaping of the open-loop transfer function \(L(j\w)\)
    2. -
    3. Shaping of closed-loop transfer functions such as \(S\), \(T\) and \(KS\)
    4. -
    -
  2. -
  3. The signal based approach. This involves time domain problem formulations resulting in the minimization of a norm of a transfer function. Linear Quadratic Gaussian (LQG) is an example of a signal based approach. A signal based \(\hinf\) optimal control methodology can be derived.
  4. -
  5. Numerical optimization. This often involves multi-objective optimization where one attempts to optimize directly the true objectives such as rise times, stability margins, … This problems may be difficult to solve, especially if one does not have convexity in the control parameters. This optimization may also be performed online.
  6. -
-

Loop Shaping

-

Trade-offs in Terms of \(L\)

-

Let’s consider a feedback control system with error \(e = -S r + S G_d d - T n\). -If we want perfect control:

-
    -
  • For disturbance rejection and command tracking, we obtain \(S \approx 0\), this implies that the loop transfer function \(L\) must be large in magnitude
  • -
  • For zero noise transmission, we want \(T \approx 0\) or equivalently \(S \approx I\) which is obtained with \(L \approx 0\).
  • -
-

This illustrate the fundamental nature of feedback design which always involves a trade-off between conflicting objectives.

-

The most important design objectives are:

-
-
Performance
-
\(L\) large
-
Good dist. rejection
-
\(L\) large
-
Limitation of meas. noise on plant output
-
\(L\) small
-
Small magnitude of input signal
-
\(K\) and \(L\) small
-
Strictly proper controller
-
\(K\rightarrow 0\) at high frequencies
-
Nominal stability
-
\(L\) small (RHP zeros and time delays)
-
Robust stability
-
\(L\) small (neglected dynamics)
-
-

Fortunately, the conflicting design objectives are generally in different frequency ranges, and we can meet most of the objectives by using large loop gain at low frequencies and a small gain at high frequencies above crossover.

-

Fundamentals of Loop-Shaping Design

-
-
-

Design procedure that involves explicitly shaping the magnitude of the loop transfer function \(\abs{L(j\w)}\).

-
-

To get the benefits of feedback control, we want the loop gain \(\abs{L(j\w)}\) to be as large as possible within the bandwidth region. -However, due to time delays, RHP-zeros, unmodelled high-frequency dynamics and limitations on the allowed manipulated inputs, the loop gain has to drop below one at and above the crossover frequency \(\w_c\).

-
-
-

To measure how \(\abs{L(j\w)}\) falls with frequency, we consider the logarithmic slope:

-

\begin{equation} -N = \frac{d \ln{\abs{L}}}{d \ln{\w}} -\end{equation}

-

The value of \(-N\) at high frequencies is called the roll-off rate.

-
-

To get a high bandwidth (fast response) we want \(\w_c\) large (thus \(\w_{180}\) large), that is we want the phase lag in \(L\) to be small. Unfortunately, that is not consistent with the desire that \(\abs{L(j\w)}\) should fall sharply (because of the approximation \(\angle{L} \approx -N * \SI{90}{\degree}\)).

-

The situation becomes even worse for cases with delays or RHP-zeros in \(L(s)\) which add undesirable phase lag without contributing to a desirable negative slope.

-

We can define the desired loop transfer function in terms of the following specifications:

-
    -
  1. The gain crossover frequency \(\w_c\), where \(\abs{L(j\w_c)} = 1\)
  2. -
  3. The shape of \(\abs{L(j\w)}\): -
      -
    • Slope of \(N=-1\) around crossover
    • -
    • Large roll-off at higher frequencies (\(N>2\))
    • -
    • Slope at low frequencies depending on the nature of the disturbance or reference signal. -We required a slope of \(-1\) for step changes and \(-2\) for ramp changes
    • -
    -
  4. -
  5. The system type, defined as the number of pure integrators in \(L(s)\)
  6. -
-

Limitations Imposed by RHP-zeros and Time Delays

-

We usually want the loop shape to have a slope of \(-1\) around crossover \(\w_c\), then the phase lag of \(L\) at \(\w_c\) will be at least \(\SI{-90}{\degree}\). -If we require a phase margin of \(\SI{-35}{\degree}\), then the additional phase contribution from delays and RHP zeros at \(\w_c\) cannot exceed \(\SI{-55}{\degree}\).

-

First consider a time delay \(\theta\) which adds a phase of \(-\theta \omega\). -Thus, we want \(\theta \omega_c < \SI{55}{\degree} \approx \SI{1}{\radian}\). -The attainable bandwidth is limited by the time delay:

-

\begin{equation} -\tcmbox{\omega_c < 1/\theta} -\end{equation}

-

Next consider a RHP-zero at \(s = z\). -To avoid an increase in slope cause by the zero, we add a pole at \(s = -z\), then \(L\) contains \(\frac{-s+z}{s+z}\) which corresponds to an all-pass filter. -The phase contribution is \(\approx \SI{-55}{\degree}\) at \(\w = z/2\). -Thus, this limits the attainable bandwidth:

-

\begin{equation} -\tcmbox{\w_c < z/2} -\end{equation}

-

Inverse-Based Controller Design

-

The idea is to have \(L(s) = \frac{\w_c}{s}\) with \(\w_c\) the desired gain crossover frequency. -The controller associated is then \(K(s) = \frac{\w_c}{s}G^{-1}(s)\) {the plant is inverted and an integrator is added}. -This idea is the essential part of the internal model control (IMC). -This loop shape yields a phase margin of \(\SI{90}{\degree}\) and an infinite gain margin.

-

They are many reasons why the inverse-based controller may not be a good choice:

-
    -
  • The controller will not be realizable if \(G(s)\) has a pole excess of two or larger
  • -
  • The loop shape is not generally desirable, unless the references and disturbances are steps
  • -
-

Loop Shaping for Disturbance Rejection

-

We have \(e = S G_d d\) with \(\abs{d(j\w)} < 1\) at each frequency (thanks to scaling). -The main control objective is to achieve \(\abs{e(j\w)} < 1\). -Then, we require: \(\abs{S(j\w) G_d(j\w)} < 1, \forall \w\) or equivalently \(\abs{1 + L(j\w)} > \abs{G_d}, \forall \w\).

-

Note that we don’t want to have larger loop gain than necessary to not increase input signals and sensitivity to noise. -A reasonable loop shape is then \(\abs{L} = \abs{G_d}\).

-

The corresponding controller satisfies

-

\begin{equation} -\abs{K} = \abs{G^{-1}G_d} -\end{equation}

-

This means that:

-
    -
  • For disturbances entering at the plant output (\(G_d = 1\)), we get \(\abs{K} = \abs{G^{-1}}\)
  • -
  • For disturbances entering at the plant input (\(G_d = G\)), we get \(\abs{K} = 1\)
  • -
  • Note that reference change may be viewed as a disturbance directly affecting the output
  • -
-

The loop-shape \(L(s)\) may be modify as follows:

-
    -
  • Around crossover, make the slope of \(|L|\) to be about -1. This is to achieve good transient behavior with acceptable gain and phase margins
  • -
  • Improve the low frequency performance by adding integral action \(\abs{K} = \abs{\frac{s+\w_I}{s}}\abs{G^{-1}G_d}\)
  • -
  • Let \(L(s)\) roll of faster at high frequencies in order to reduce the effect of noise and the input magnitude
  • -
-

Two Degrees-of-freedom Design

-

For reference tracking, we typically want the controller to look like \(\frac{1}{s} G^{-1}\), whereas for disturbance rejection we want the controller to look like \(\frac{1}{s} G^{-1}G_d\).

-

We cannot achieve both of these simultaneously with a single feedback controller.

-

The solution is to use a two degrees of freedom controller where the reference signal \(r\) and output measurement \(y_m\) are independently treated by the controller (Fig. fig:classical_feedback_2dof_alt), rather than operating on their difference \(r - y_m\).

-

-
- Figure 2: 2 degrees-of-freedom control architecture
-

Figure 2: 2 degrees-of-freedom control architecture

-
-
- -

The controller can be slit into two separate blocks (Fig. fig:classical_feedback_sep):

-
    -
  • the feedback controller \(K_y\) that is used to reduce the effect of uncertainty (disturbances and model errors)
  • -
  • the prefilter \(K_r\) that shapes the commands \(r\) to improve tracking performance
  • -
-

-
- Figure 3: 2 degrees-of-freedom control architecture with two separate blocs
-

Figure 3: 2 degrees-of-freedom control architecture with two separate blocs

-
-
- -

It is optimal to design the combined two degrees of freedom controller \(K\) in one step, however, in practice \(K_y\) is often designed first for disturbance rejection, and then \(K_r\) is designed to improve reference tracking.

-

Shaping Closed-Loop Transfer Functions

-

Specifications on the open-loop transfer function \(L = GK\) does not consider directly the closed-loop transfer functions, such as \(S\) and \(T\) which determine the final response. -An alternative design strategy is to directly shape the magnitude of the closed loop transfer functions. This strategy can be formulated as an \(\hinf\) optimal control problem.

-

The Terms \(\hinf\) and \(\htwo\)

-

The \(\hinf\) norm of a stable scalar transfer function \(f(s)\) is simply the peak value of \(\abs{f(j\w)}\) as a function of frequency:

-

\begin{equation} -\tcmbox{\hnorm{f(s)} \triangleq \max_{\w} \abs{f(j\w)}} -\end{equation}

-

Similarly, the symbol \(\htwo\) stands for the Hardy space of transfer function with bounded 2-norm:

-

\begin{equation} -\tcmbox{\normtwo{f(s)} \triangleq \left( \frac{1}{2\pi} \int_{-\infty}^{\infty} \abs{f(j\w)}^2 d\w \right)^{1/2}} -\end{equation}

-

Weighted Sensitivity

-

The sensitivity function \(S\) is a very good indicator of closed-loop performance. The main advantage of considering \(S\) is that we want \(S\) small and it is sufficient to consider just its magnitude \(\abs{S}\).

-
-
-
    -
  • Minimum bandwidth frequency \(\w_B^*\)
  • -
  • Maximum tracking error at selected freq.
  • -
  • The maximum steady state tracking error \(A\)
  • -
  • Shape of \(S\) over selected frequency ranges
  • -
  • Maximum magnitude of \(S\): \(\hnorm{S(j\w)} \leq M\)
  • -
-
-

The maximum peak specification prevents amplification of noise at high frequencies, and also introduces a margin of robustness. Typically, we select \(M = 2\).

-

Mathematically, these specifications may be captured by an upper bound \(1/\abs{W_P(s)}\) on the magnitude of \(S\) where \(W_P(s)\) is a weight selected by the designer. -The subscript \(P\) stands for performance since \(S\) is mainly used as a performance indicator.

-

The performance requirement becomes -\[ S(j\w) < 1/\abs{W_P(j\w)}, \forall \w \] -Which can be expressed as an \(\mathcal{H}_\infty\):

-

\begin{equation} -\tcmbox{\hnorm{W_P S} < 1} -\end{equation}

-
-
-

\[W_P(s) = \frac{s/M + \w_B^*}{s + \w_B^* A}\]

-

With (see Fig. fig:performance_weigth):

-
    -
  • \(M\): maximum magnitude of \(\abs{S}\)
  • -
  • \(\w_B\): crossover frequency
  • -
  • \(A\): steady-state offset
  • -
-
-

-
- Figure 4: Inverse of performance weight
-

Figure 4: Inverse of performance weight

-
-
- -

If we want a steeper slope for \(L\) below the bandwidth, an higher order weight may be selected. A weight which ask for a slope of \(-2\) for \(L\) below crossover is: -\[W_P(s) = \frac{(s/M^{1/2} + \w_B^*)^2}{(s + \w_B^* A^{1/2})^2}\]

-

Stacked Requirements: Mixed Sensitivity

-

The specification \(\hnorm{W_P S} < 1\) puts a lower bound on the bandwidth, but not an upper one and nor does it allow us to specify the roll-off of \(L(s)\) above the bandwidth.

-

To do this, we can make demands on another closed-loop transfer function \(T\) by specifying an upper bound \(1/\abs{W_T}\) on the magnitude \(\abs{T}\) to make sure that \(L\) rolls off sufficiently fast at high frequencies.

-

Also, to achieve robustness or to restrict the magnitude of the input signal \(u\), one may place an upper bound \(1/\abs{W_U}\) on the magnitude \(KS\).

-

To combined these mixed sensitivity specifications, a stacking approach is usually used, resulting in the following overall specification: -\[\maxw \maxsv(N(j\w)) < 1; \quad N = \colvec{W_P S \ W_T T \ W_U KS}\]

-

After selecting the form of \(N\) and the weights, the \(\hinf\) optimal controller is obtained by solving the problem \(\min_K\hnorm{N(K)}\).

-

Introduction to Multivariable Control

-

-

Introduction

-

The main difference between a SISO system and a MIMO system is the presence of directions in the latter.

-

However, most of the ideas and techniques used for SISO systems may be extended to MIMO systems. -This is done by considering the maximum singular value instead of the absolute value.

-

The singular value decomposition (SVD) provides a useful way of quantifying multivariable directionality.

-

For MIMO systems the gain \(\frac{\abs{Gd}}{\abs{d}}\) (where \(\abs{\cdot}\) is some norm) is independent of the magnitude \(\abs{d}\) (like for SISO systems), but it does depend on its direction.

-

A plant is said to be ill-conditioned if the gain depends strongly on the input direction. It is quantified by the condition number \(\Gamma\) (which is much larger than 1 for an ill-conditioned plant).

-

For MIMO systems the order of the transfer functions matter, so in general:

-

\begin{equation} -\tcmbox{GK \neq KG} -\end{equation}

-

even when \(G\) and \(K\) are square matrices.

-

Transfer Functions

-
-
-

The main rule for evaluating transfer functions is the MIMO Rule: Start from the output and write down the transfer functions as you meet them going to the input. If you exit a feedback loop then we get a term \((I-L)^{-1}\) where \(L = GK\) is the transfer function around the loop (gain going backwards).

-
-

Negative Feedback Control Systems

-

For negative feedback system (Fig. fig:classical_feedback_bis), we define \(L\) to be the loop transfer function as seen when breaking the loop at the output of the plant:

-
    -
  • \(L = G K\)
  • -
  • \(S \triangleq (I + L)^{-1}\) is the transfer function from \(d_1\) to \(y\)
  • -
  • \(T \triangleq L(I + L)^{-1}\) is the transfer function from \(r\) to \(y\)
  • -
-

-
- Figure 5: Conventional negative feedback control system
-

Figure 5: Conventional negative feedback control system

-
-
- -

We define \(L_1\) to be the loop transfer function as seen when breaking the loop at the input to the plant:

-
    -
  • \(L_1 = K G\)
  • -
  • \(S_1 \triangleq (I + L_1)^{-1}\)
  • -
  • \(T_1 \triangleq L_1(I + L_1)^{-1}\) is the transfer function from \(d_2\) to \(-u\)
  • -
-

Multivariable Frequency Response Analysis

-

Obtaining the Frequency Response from \(G(s)\)

-

Consider the system \(G(s)\) with input \(d(s)\) and output \(y(s)\). -The element \(g_{ij}(j\w)\) of the matrix \(G\) represents the sinusoidal response from the input \(j\) to output \(i\).

-

Directions in Multivariable Systems

-

For a SISO system, the gain at \(\omega\) is simply:

-

\begin{equation} -\frac{|y(\w)|}{|d(\w)|} = \frac{|G(j\w)d(\w)|}{|d(\w)|} = |G(j\w)| -\end{equation}

-

The gain depends on the frequency \(\w\) but it is independent of the input magnitude \(|d(\w)|\).

-

For MIMO systems, we have to use norms to measure the amplitude of the inputs/outputs. -If we select vector 2-norm, the magnitude of the vector input signal is: -\[ \normtwo{d(\w)} = \sqrt{\sum_j |d_j(\w)|^2} \]

-

The gain of the system is then:

-

\begin{equation} -\frac{\normtwo{y(\w)}}{\normtwo{d(\w)}} = \frac{\normtwo{G(j\w)d(\w)}}{\normtwo{d(\w)}} = \frac{\sqrt{\sum_j |y_j(\w)|^2}}{\sqrt{\sum_j |d_j(\w)|^2}} -\end{equation}

-

Again the gain depends on the frequency \(\w\) and again it is independent of the input magnitude \(\normtwo{d(\w)}\). However, the gain depends also on the direction of the input \(d\).

-

Eigenvalues as a Poor Measure of Gain

-

The magnitudes of the eigenvalues of a transfer function matrix \(\abs{\lambda_i(G(j\w))}\) do not provide a useful means of generalizing the SISO gain. -The main problem is that the eigenvalues measure the gain for the special case when the inputs and the outputs are in the same direction, namely in the direction of the eigenvectors.

-

Singular Value Decomposition

-

We are interested by the physical interpretation of the SVD when applied to the frequency response of a MIMO system \(G(s)\) with \(m\) inputs and \(l\) outputs.

-
-
-

\begin{equation} -G = U \Sigma V^H -\end{equation}

-
-
\(\Sigma\)
-
is an \(l \times m\) matrix with \(k = \min\{l, m\}\) non-negative singular values \(\sigma_i\), arranged in descending order along its main diagonal, the other entries are zero.
-
\(U\)
-
is an \(l \times l\) unitary matrix. The columns of \(U\), denoted \(u_i\), represent the output directions of the plant. They are orthonormal.
-
\(V\)
-
is an \(m \times m\) unitary matrix. The columns of \(V\), denoted \(v_i\), represent the input directions of the plant. They are orthonormal.
-
-
-

The input and output directions are related through the singular values:

-

\begin{equation} -\tcmbox{G v_i = \sigma_i u_i} -\end{equation}

-

So, if we consider an input in the direction \(v_i\), then the output is in the direction \(u_i\). Furthermore, since \(\normtwo{v_i}=1\) and \(\normtwo{u_i}=1\), we see that the singular value \(\sigma_i\) directly gives the gain of the matrix \(G\) in this direction.

-

The largest gain for any input is equal to the maximum singular value: -\[\maxsv(G) \equiv \sigma_1(G) = \max_{d\neq 0}\frac{\normtwo{Gd}}{\normtwo{d}} = \frac{\normtwo{Gv_1}}{\normtwo{v_1}} \] -The smallest gain for any input direction is equal to the minimum singular value: -\[\minsv(G) \equiv \sigma_k(G) = \min_{d\neq 0}\frac{\normtwo{Gd}}{\normtwo{d}} = \frac{\normtwo{Gv_k}}{\normtwo{v_k}} \]

-

We define \(u_1 = \bar{u}\), \(v_1 = \bar{v}\), \(u_k=\ubar{u}\) and \(v_k = \ubar{v}\). Then is follows that: -\[ G\bar{v} = \maxsv \bar{u} ; \quad G\ubar{v} = \minsv \ubar{u} \]

-

Non Square Plants

-

If the plant has more output than inputs, the outputs singular vectors \(u_i\) with \(i > k\) correspond to the outputs directions that cannot be controlled.

-

Similarly, for a plant with more inputs and outputs, the additional input singular vectors tells us in which directions the input will have no effect.

-

Singular Values for Performance

-

The gain of the MIMO system from the vector of reference inputs \(r\) and the vector of control error \(e\) is bounded by the minimum and maximum singular values of \(S\): -\[ \minsv(S(j\w)) < \frac{\normtwo{e(\w)}}{\normtwo{r(\w)}} < \maxsv(S(j\w)) \]

-

In terms of performance, we require that the gain remains small for any direction of \(r(\w)\) including the “worst-case” direction corresponding to the gain \(\maxsv(S(j\w))\). Let \(1/\abs{W_P(j\w)}\) represent the maximum allowed magnitude of \(\frac{\normtwo{e(\w)}}{\normtwo{r(\w)}}\) at each frequency: -\[ \maxsv(S(j\w)) < \frac{1}{\abs{W_P}}, \forall \w \Leftrightarrow \hnorm{W_P S} < 1 \]

-
-
-

The \(\hinf\) norm is defined as the peak of the maximum singular value of the frequency response:

-

\begin{equation} -\hnorm{M(s)} \triangleq \max_{\w} \maxsv(M(j\w)) -\end{equation}

-
-

For MIMO systems the bandwidth depends on direction. -If we want to associate a single bandwidth frequency for a multivariable system, then we consider the worst-case direction, and define the bandwidth \(\w_B\) as the frequency where \(\maxsv(S)\) crosses \(\frac{1}{\sqrt{2}} = 0.7\) from below.

-

Control of Multivariable Plants

-

A conceptually simple approach to multivariable control is given by a two-step procedure:

-
    -
  1. Design a pre-compensator \(W_1\), which counteracts the interactions in the plant and results in a new shaped plant \(G_S(s) = G(s) W_1(s)\) which is more diagonal and easier to control than the original plant \(G(s)\).
  2. -
  3. Design a diagonal controller \(K_S(s)\) for the shaped plant using methods similar to those for SISO systems.
  4. -
-

The overall controller is then: -\[ K(s) = W_1(s)K_s(s) \]

-

Decoupling

-

There are mainly three different cases:

-
    -
  1. Dynamic decoupling: \(G_S(s)\) is diagonal at all frequencies. For that we can choose \(W_1(s) = G^{-1}(s)\) and this is an inverse-based controller.
  2. -
  3. Steady-state decoupling: \(G_S(0)\) is diagonal. This can be obtained by selecting \(W_1(s) = G^{-1}(0)\).
  4. -
  5. Approximate decoupling at frequency \(\w_0\): \(G_S(j\w_0)\) is as diagonal as possible. Decoupling the system at \(\w_0\) is a good choice because the effect on performance of reducing interaction is normally greatest at this frequency.
  6. -
-

The idea of decoupling control is appealing, but there are several difficulties:

-
    -
  1. It is very sensitive to modelling errors
  2. -
  3. It may not be required for disturbance rejection
  4. -
  5. If the plant has RHP-zero, the decoupling generally introduces extra RHP-zero in the closed-loop system
  6. -
-

SVD-Controller

-

We can also introduce a post compensator \(W_2(s)\). -The shaped plant is then: -\[G_S(s) = W_2(s)G(s)W_1(s)\]

-

A diagonal controller \(K_S\) can then be designed for the shaped plant. The overall controller is then: -\[K(s) = W_1(s)K_S(s)W_2(s)\]

-

The SVD-controller is a special case of a pre and post compensator design: \(W_1 = V_0\) and \(W_2 = U_0^T\). -\(V_0\) and \(U_0\) are obtained from a SVD of \(G_0 = U_0 \Sigma_0 V_0^T\) where \(G_0\) is a real approximation of \(G(j\w_0)\).

-

Decentralized Control

-

Another approach is to use a diagonal or block-diagonal controller \(K(s)\). This works well if \(G(s)\) is close to diagonal, because then the plant to be controlled is essentially a collection of independent sub-plants, and each element in \(K(s)\) may be designed independently. -However, if off-diagonal elements in \(G(s)\) are large, the performance with decentralized diagonal control may be poor because no attempt is made to counteract the interactions.

-

What is the Shape of the “best” Feedback Controller?

-

Consider the problem of disturbance rejection: \(y = S G_d d\) where \(\normtwo{d}<1\) and our performance requirement is that \(\normtwo{y}<1\) which is equivalent to requiring \(\maxsv(SG_d) < 1\).

-

However there is generally a trade-off between input usage and performance. The controller that minimize the input magnitude while meeting the performance requirement is the one that yields all singular values of \(SG_d\) equal to 1, i.e. \(\sigma_i(SG_d) = 1, \forall \w\). This corresponds to: -\[S_{\text{min}} G_d = U_1\] -Where \(U_1\) is some all-pass transfer function (which at each frequency has all its singular values equal to 1).

-

At frequencies where feedback is effective, we have \(S\approx L^{-1}\) and then \(L_{\text{min}} = GK_{\text{min}} \approx G_d U_1^{-1}\). -In conclusion, the controller and loop shape with the minimum gain will often look like: -\[ K_{\text{min}} \approx G^{-1} G_d U_2 \] -where \(U_2 = U_1^{-1}\) is some all-pass transfer function matrix.

-

We see that for disturbances entering at the plant inputs, \(G_d = G\), we get \(G_{\text{min}} = U_2\), so a simple constant unit gain controller yields a good trade-off between output performance and input usage.

-

Summary of Mixed-Sensitivity \(\hinf\) Synthesis

-

In the mixed-sensitivity \(S/KS\) problem, the objective is to minimize the \(\hinf\) norm of:

-

\begin{equation} -N = \colvec{W_P S \ W_U K S} -\end{equation}

-

Here are some guidelines for the choice of the weights \(W_P\) and \(W_U\):

-
    -
  • \(KS\) is the transfer function from \(r\) to \(u\), so for a system which has been scaled, a reasonable initial choice for the input weight is \(W_U = I\)
  • -
  • \(S\) is the transfer function from \(r\) to \(-e = r-y\). A common choice for the performance weight is \(W_P = \text{diag}\{w_{p_i}\}\) with: -\[ w_{p_i} = \frac{s/M_i + \w_{B_i}^*}{s + \w_{B_i}^*A_i}, \quad A_i \ll 1 \] -Selecting \(A_i \ll 1\) ensures approximate integral action. -Often we select \(M_i\) about 2 for all outputs, whereas \(\w_{B_i}^*\) may be different for each output.
  • -
-

For disturbance rejection, we may in some cases want a steeper slope for \(w_{P_i}(s)\) at low frequencies. -However it may be better to consider the disturbances explicitly by considering the \(\hinf\) norm of:

-

\begin{equation} -N = \begin{bmatrix} -W_P S & W_P S G_d \\\
-W_U K S & W_U K S G_d -\end{bmatrix} -\end{equation}

-

We can also considerate \(T\) which is the transfer function from \(-n\) to \(y\). To reduce the sensitivity to noise and uncertainty, we want \(T\) small at high frequencies, and so we may want additional roll-off in \(L\). -This can be achieved in several ways:

-
    -
  • One approach is to add \(W_T T\) to the stack for \(N\) where \(W_T = \text{diag}\{w_{T_i}\}\) and \(\abs{w_{T_i}}\) is smaller than 1 at low frequencies and large at high frequencies
  • -
  • A more direct approach is to add high-frequency dynamics \(W_1(s)\) to the plant model to ensure that the resulting shaped plant, \(G_S=GW_1\) rolls off with the desired slope. We then obtain an \(\hinf\) optimal controller \(K_S\) for this shaped plant, and finally include \(W_1(s)\) in the controller \(K=W_1 K_S\)
  • -
-

Introduction to MIMO RHP-Zeros

-

Whereas the poles \(p\) of MIMO system \(G\) are essentially poles of elements of \(G\), the zeros are generally not the zeros of elements of \(G\). -However, for square MIMO plants, the poles and zeros are in most cases the poles and zeros of \(\det G(s)\).

-
-
-

The zeros \(z\) of a MIMO system \(G\) are defined as the values \(s=z\) where \(G(s)\) loses rank.

-
-

As for SISO systems, we find that RHP-zeros impose fundamental limitations on control. -Poles and zeros of MIMO systems have directions:

-
    -
  • We can find the direction of a zero by looking at the direction in which the matrix \(G(z)\) has zero gain
  • -
  • Pole direction is direction where \(G(p)\) is infinite
  • -
-

It is generally possible to move the effect of RHP-zero to particular outputs. -If it is not, the zero is called a “pinned zero".

-

Condition Number and RGA

-

Condition Number

-
-
-

We define the condition number of a matrix as the ratio between its maximum and minimum singular values:

-

\begin{equation} -\gamma(G) \triangleq \maxsv(G)/\minsv(G) -\end{equation}

-
-

A matrix with large condition number is said to be ill-conditioned.

-

For a non-singular square matrix \(\minsv(G)=1/\maxsv(G^{-1})\), so \(\gamma(G) = \maxsv(G) \maxsv(G^{-1})\). -It then follows that the condition number is large if the product of the largest element in \(G\) and \(G^{-1}\) is large.

-

Note that the condition number depends strongly on scaling. One might consider minimizing the condition number over all possible scalings. -This results in the minimized or optimal condition number which is defined by:

-

\begin{equation} -\gamma^*(G) = \min_{D_1,D_2} \gamma(D_1 G D_2) -\end{equation}

-

If the condition number is small, then the multivariable effects of uncertainty are not likely to be serious. -However if the condition number is large (say, larger than 10), then this may indicate control problems.

-

Relative Gain Array (RGA)

-
-
-

The relative gain array (RGA) for a non-singular square matrix \(G\) is a square matrix defined as:

-

\begin{equation} -\text{RGA}(G) = \Lambda(G) \triangleq G \times G^{-T} -\end{equation}

-

where \(\times\) is element-by-element multiplication

-
-

In most case, it is the value of the RGA at frequencies close to crossover which is most important.

-

The RGA has interesting algebraic properties:

-
    -
  • It is independent of input and output scaling
  • -
  • Its rows and columns sum to one
  • -
  • The sum-norm of the RGA \(\|\Lambda\|_\text{sum}\) is close to the minimized condition number \(\gamma^*\). -Plants with large RGA-elements are thus always ill-conditioned
  • -
  • The RGA is the identity matrix if \(G\) is upper of lower triangular. This follows that \(\Gamma - I\) provides a measure of two-way interactions
  • -
-

It has also a number of useful control properties:

-
    -
  • Plants with large RGA-elements around the crossover frequency are fundamentally difficult to control because of sensitivity to input uncertainty
  • -
  • If the sign of a RGA-element changes from \(s=0\) to \(s=\infty\), then there is a RHP-zero in \(G\)
  • -
  • The definition of the RGA may be generalized to non-square matrices by using the pseudo inverse
  • -
  • The RGA-number can be used as a measure of diagonal dominance: \(\|\Lambda(G)-I\|_{\text{sum}}\)
  • -
  • For decentralized control, we prefer pairing input and outputs for which the RGA-number at crossover frequencies is close to \(0\)
  • -
-

Introduction to Robustness for MIMO Plants

-

Multivariable plants can show a sensitivity to uncertainty which is fundamentally different from what is possible in SISO systems. -It is possible to have excellent stability margins (GM and PM) when considering one loop at a time, but small simultaneous input gain errors can give instability.

-

For SISO systems, we generally have that nominal performance and robust stability imply robust performance, but this is not the case for MIMO systems.

-

Although we have useful indicators of robustness problems (RGA-number, Sensitivity Peaks, etc), they provide no exact answer to whether a given source of uncertainty will yield instability or poor performance. -The structured singular value \(\mu\) is a tool for analyzing the effects of model uncertainty.

-

General Control Problem Formulation

-

The general control problem formulation is represented in Fig. fig:general_control_names.

-

-
- Figure 6: General control configuration
-

Figure 6: General control configuration

-
-
- -
-
-

Find a controller \(K\) which based on the information in \(v\), generates a control signal \(u\) which counteracts the influence of \(w\) on \(z\), thereby minimizing the closed-loop norm from \(w\) to \(z\).

-
-

Obtaining the Generalized Plant \(P\)

-

We must first find a block diagram representation of the system and identify the signals \(w\), \(z\), \(u\) and \(v\). -Then we have to break all the “loops” entering and exiting the controller \(K\) to obtain \(P\) such that:

-

\begin{equation} -\colvec{z\v} = P \colvec{w\u} -\end{equation}

-

Controller Design: Including Weights in \(P\)

-

In order to get a meaningful controller synthesis problem, for example in terms of the \(\hinf\) norms, we generally have to include the weights \(W_z\) and \(W_w\) in the generalized plant \(P\) (Fig. fig:general_plant_weights). -We consider:

-
    -
  • The weighted or normalized exogenous inputs \(w\) (where \(\tilde{w} = W_w w\) consists of the “physical” signals entering the system)
  • -
  • The weighted or normalized controlled outputs \(z = W_z \tilde{z}\) (where \(\tilde{z}\) often consists of the control error \(y-r\) and the manipulated input \(u\))
  • -
-

-
- Figure 7: General Weighted Plant
-

Figure 7: General Weighted Plant

-
-
- -

The weighted matrices are usually frequency dependent and typically selected such that weighted signals \(w\) and \(z\) are of magnitude 1.

-

Partitioning the Generalized Plant \(P\)

-

We often partition \(P\) as:

-

\begin{equation} -\begin{bmatrix} z \ v \end{bmatrix} = \begin{bmatrix} -P_{11} & P_{12} \\\
-P_{21} & P_{22} -\end{bmatrix} \begin{bmatrix} w \ u \end{bmatrix} -\end{equation}

-

\(P_{22}\) has dimensions compatible with the controller.

-

Analysis: Closing the Loop the get \(N\)

-

In the previous representations, the controller \(K\) has a separate block. This is useful when synthesizing the controller. However, for analysis of closed-loop performance the controller is given, and we may absorb \(K\) into the interconnection structure and obtain the system \(N\).

-
-
-

\begin{equation} -z = N w -\end{equation}

-

\(N\) is given by: -\[N = P_{11} + P_{12}K(I-P_{22}K)^{-1}P_{12} \triangleq F_l(P, K) \] -where \(F_l(P, K)\) denotes a lower linear fractional transformation (LFT).

-
-

A General Control Configuration Including Model Uncertainty

-

The general control configuration may be extended to include model uncertainty as shown in Fig. fig:general_config_model_uncertainty.

-

-
- Figure 8: General control configuration for the case with model uncertainty
-

Figure 8: General control configuration for the case with model uncertainty

-
-
- -

The matrix \(\Delta\) is a block-diagonal matrix that includes all possible perturbations (representing uncertainty). -It is usually normalized in such a way that \(\hnorm{\Delta} \leq 1\).

-

Conclusion

-
-
-

The Singular Value Decomposition (SVD) of the plant transfer function matrix provides insight into multivariable directionality.

-

Other useful tools for analyzing directionality and interactions are the condition number and the Relative Gain Array (RGA).

-

Closed loop performance may be analyzed in the frequency domain by evaluating the maximum singular value of the sensitivity function as the function of frequency.

-

Multivariable RHP-zeros impose fundamental limitations on performance, but for MIMO systems we can often direct the undesired effect of a RHP-zero to a subset of the outputs.

-

MIMO systems are often more sensitive to uncertainty than SISO systems.

-
-

Elements of Linear System Theory

-

-

System Descriptions

-

For linear systems there are several alternative system representations:

-
    -
  • state-space representation often follows directly from a physical model, and is used in most numerical calculations.
  • -
  • transfer function representation is a nice compact representation which yields invaluable insights; it allows for series connections to be represented by multiplication of transfer functions. It also leads directly to the frequency response by setting \(s = j\w\).
  • -
  • coprime factorization is a factorization into two stable systems, and that it is useful for representing the class of all stabilizing controllers. It forms the basis for the very useful coprime uncertainty description.
  • -
-

State-Space Representation

-

A natural way to represent many physical systems is by nonlinear state-space models of the form -\[\dot{x} \triangleq \frac{dx}{dt} = f(x, u);\quad y = g(x, u)\]

-

Linear state-space models may then be derived from the linearization of such models.

-

\begin{align*} -\dot{x}(t) & = A x(t) + B u(t)\\\
-y(t) & = C x(t) + D u(t) -\end{align*}

-

where \(A\), \(B\), \(C\) and \(D\) are real matrices.

-

These equations may be rewritten as -\[\colvec{\dot{x}\y} = \begin{bmatrix} -A & B \\\
-C & D -\end{bmatrix} \colvec{x\u}\] -which gives rise to the short-hand notation -\[G = \left[ \begin{array}{c|c} -A & B \ \hline -C & D \\\
-\end{array} \right]\]

-

The state-space representation of a system is not unique, there exist realizations with the same input-output behavior, but with additional unobservable and/or uncontrollable state.

-
-
-

A minimal realization is a realization with the fewest number of states and consequently no unobservable or uncontrollable modes.

-
-

The state-space representation yields an internal description of the system which may be useful if the model is derived from physical principles. It is also more suitable for numerical calculations.

-

Impulse Response Representation

-

The impulse response matrix is -\[g(t) = \begin{cases} -0 & t < 0 \\\
-C e^{At} B + D \delta(t) & t \geq 0 -\end{cases}\] -The \(ij\)‘th element of the impulse response matrix, \(g_{ij}(t)\), represents the response \(y_i(t)\) to an impulse \(u_j(t)=\delta(t)\) for a systems with a zero initial state.

-

With initial state \(x(0) = 0\), the dynamic response to an arbitrary input \(u(t)\) is -\[y(t) = g(t)*u(t) = \int_0^t g(t-\tau)u(\tau)d\tau\]

-

Transfer Function Representation - Laplace Transforms

-

The transfer function representation is unique and is defined as the Laplace transform of the impulse response.

-
-
-

\[ G(s) = \int_0^\infty g(t)e^{-st}dt \]

-
-

We can also obtain the transfer function representation from the state-space representation by taking the Laplace transform of the state-space equations -\[ s x(s) = A x(s) + B u(s) \ \Rightarrow \ x(s) = (sI-A)^{-1} B u(s) \] -\[ y(s) = C x(s) + D u(s) \ \Rightarrow \ y(s) = \underbrace{\left(C(sI-A)^{-1}B+D\right)}_{G(s)}u(s) \]

-

Time delays and improper systems can be represented by Laplace transforms, but do not have a state-space representation.

-

Coprime Factorization

-
-
-

\[G(s) = N_r(s) M_r^{-1}(s)\] -where \(N_r(s)\) and \(M_r(s)\) are stable coprime transfer functions.

-
-

The stability implies that \(N_r(s)\) should contains all the RHP-zeros of \(G(s)\), and \(M_r(s)\) should contain as RHP-zeros all the RHP-poles of \(G(s)\). -Mathematically, coprimeness means that there exist stable \(U_r(s)\) and \(V_r(s)\) such that the Bezout identity is satisfied: \(U_r N_r + V_r M_r = I\)

-

State Controllability and State Observability

-

There are many ways to check for state controllability and observability, e.g. with Gramians, input/output pole vectors, controllability/observability matrix, etc.

-
Input and output pole vectors
-

The method which yields the most insight is probably to compute the input and output directions associated with each pole (mode).

-

For the case when \(A\) has distinct eigenvalues, we have the following dyadic expansion of the transfer function matrix from inputs to outputs -\[G(s) = \sum_{i=1}^{n} \frac{C t_i q_i^H B}{s - \lambda_i} + D = \sum_{i=1}^{n} \frac{y_{p_i} u_{p_i}}{s - \lambda_i} + D\]

-
    -
  • The \(i\)‘th input pole vector \(u_{p_i} \triangleq q_i^H B\) is an indication of how much the \(i\)‘th mode is excited (and thus may be “controlled”) by the inputs.
  • -
  • The \(i\)‘th output pole vector \(y_{p_i} \triangleq C t_i\) indicates how much the \(i\)‘th mode is observed in the outputs.
  • -
-
State Controllability
-

Let \(\lambda_i\) be the \(i^{\text{th}}\) eigenvalue of \(A\), \(q_i\) the corresponding left eigenvector (\(q_i^H A = \lambda_i q_i^H\)), and \(u_{p_i} = B^H q_i\) the \(i^{\text{th}}\) input pole vector. Then the system \((A, B)\) is state controllable if and only if -\[u_{p_i} \neq 0, \forall i\] -That is if and only if all its input pole vectors are nonzero.

-
State Observability
-

Let \(\lambda_i\) be the \(i^{\text{th}}\) eigenvalue of \(A\), \(t_i\) the corresponding right eigenvector (\(A t_i = \lambda_i t_i\)), and \(y_{p_i} = C t_i\) the \(i^{\text{th}}\) output pole vector. Then the system \((A, C)\) is state observable if and only if -\[y_{p_i} \neq 0, \forall i\] -That is if and only if all its output pole vectors are nonzero.

-
Minimal realization
-

A state space realization \((A, B, C, D)\) of \(G(s)\) is said to be a minimal realization of \(G(s)\) if \(A\) has the smallest possible dimension. The smallest dimension is called the McMillan degree of \(G(s)\). A mode is hidden if it is not state controllable or observable and thus does not appear in the minimal realization. -It follows that a state-space realization is minimal if and only if \((A, B)\) is state controllable and \((A, C)\) is state observable.

-

Stability

-
-
-

A system is (internally) stable is none of its components contain hidden unstable modes and the injection of bounded external signals at any place in the system result in bounded output signals measured anywhere in the system.

-
-
-
-

A system is (state) stabilizable if all unstable modes are state controllable. -A system is (state) detectable if all unstable modes are state observable.

-

A system with unstabilizable or undetectable modes is said to contain hidden unstable modes.

-
-

Poles

-
-
-

The poles \(p_i\) of a system with state-space description are the eigenvalues \(\lambda_i(A), i=1, \dotsc, n\) of the matrix \(A\). -The pole or characteristic polynomial \(\phi(s)\) is defined as \(\phi(s) \triangleq \det(sI-A) = \Pi_{i=1}^n (s-p_i)\). -Thus the poles are the roots or the characteristic equation -\[\phi(s) \triangleq \det(sI-A) = 0\]

-
-

Poles and Stability

-

A linear dynamic system is stable if and only if all the poles are in the LHP, that is, \(\text{Re}\{\lambda_i(A)\} < 0, \forall i\)

-

Poles from Transfer Functions

-

The pole polynomial \(\phi(s)\) corresponding to a minimal realization of a system with transfer function \(G(s)\) is the least common denominator of all non-identically-zero minors of all orders of \(G(s)\).

-

The poles are essentially the sum of the poles in the elements of the transfer function, but to get the correct multiplicity a more careful analysis is needed.

-

Pole Vectors and Directions

-

In multivariable system poles have directions associated with them. To quantify this, we use the input and output pole vectors.

-
-
-

\[ u_{p_i} = B^H q_i \] -With \(q_i\) the left eigenvector of \(A\) (\({q_i}^T A = \lambda_i {q_i}^T\)). -The input pole direction is \(\frac{1}{\normtwo{u_{p_i}}} u_{p_i}\)

-
-
-
-

\[ y_{p_i} = C t_i \] -With \(t_i\) the right eigenvector of \(A\) (\(A t_i = \lambda_i t_i\)). -The output pole direction is \(\frac{1}{\normtwo{y_{p_i}}} y_{p_i}\)

-
-

The pole directions may be defined in terms of the transfer function matrix by evaluating \(G(s)\) at the pole \(p_i\) and considering the directions of the resulting complex matrix \(G(p_i)\). The matrix is infinite in the direction of the pole, and we may write -\[ G(p_i) u_{p_i} = \infty \cdot y_{p_i} \] -where \(u_{p_i}\) is the input pole direction and \(y_{p_i}\) is the output pole direction.

-

The pole directions may in principle be obtained from an SVD of \(G(p_i) = U\Sigma V^H\). -Then \(u_{p_i}\) is the first column in \(V\) (corresponding to the maximum singular value) and \(y_{p_i}\) the first column in \(U\).

-

The pole direction is usually very interesting because it gives information about which output (or combination of outputs) may be difficult to control.

-

Zeros

-

Zeros of a system arise when competing effects, internal to the system, are such that the output is zero even when the inputs (and the states) are not themselves identically zero.

-
-
-

\(z_i\) is a zero of \(G(s)\) if the rank of \(G(z_i)\) is less than the normal rank of \(G(s)\). -The zero polynomial is defined as \(z(s) = \Pi_{i=1}^{n_z}(s-z_i)\) where \(n_z\) is the number of finite zeros of \(G(s)\)

-
-

Zeros from State-Space Realizations

-

The state-space equations of a system may be written as -\[P(s) \colvec{x\u} = \colvec{0\y}, \quad P(s) = \begin{bmatrix} -sI-A & -B \\\
-C & D \\\
-\end{bmatrix}\]

-

The zeros are then the values \(s=z\) for which the polynomial system matrix, \(P(s)\), loses rank, resulting in zero output for some non-zero input.

-

Zeros from Transfer Functions

-

The zero polynomial \(z(s)\), corresponding to a minimal realization of the system, is the greatest divisor of all the numerator of all order-\(r\) minors of \(G(s)\), where \(r\) is the normal rank of \(G(s)\), provided that these minors have been adjusted in such a way as to have the pole polynomial \(\phi(s)\) as their denominator.

-

The zeros are values of \(s\) for which \(G(s)\) looses rank. In general, there is no relationship between the elements of the transfer function and its (multivariable) zeros.

-

Zero Directions

-

Let \(G(s)\) have a zero at \(s=z\). Then \(G(s)\) loses rank at \(s=z\), and there will exist non-zero vectors \(u_z\) and \(y_z\) such that -\[G(z) u_z = 0 \cdot y_z\] -Here \(u_z\) is defined as the input zero direction and \(y_z\) is defined as the output zero direction.

-

From a practical point of view, \(y_z\) is usually of more interest than \(u_z\) because it give information about which combination of outputs may be difficult to control.

-

Again, we may obtain input and output zero directions from an SVD of \(G(s)\): \(u_z\) is the last column of \(U\) and \(y_z\) is the last column of \(V\) (corresponding to the zero singular value of \(G(z)\)).

-

Some Remarks on Poles and Zeros

-
    -
  • We should always find a minimal realization of the system before computing the zeros.
  • -
  • For a square system \(G(s)\), the poles and zeros are essentially the poles and zeros of \(\det G(s)\).
  • -
  • Poles and zeros can occurs at the same location, but their directions may be different so they do not cancel or otherwise interact with each other.
  • -
  • If \(G^{-1}(s)\) exists, then the poles of \(G(s)\) are the zeros of \(G^{-1}(s)\) and vice versa (as for SISO systems).
  • -
  • Zeros usually appear when there are fewer inputs or outputs than states or when \(D \neq 0\)
  • -
  • Moving poles and zeros: -
      -
    • Feedback: \(G(I+GK)^{-1}\). Poles (of \(G\)) are moved and zeros (of \(G\)) are unchanged (in addition we get as zeros the poles of \(K\))
    • -
    • Series: \(GK\). Poles and zeros are unchanged (with the exception of possible cancellations between poles and zeros in \(G\) and \(K\))
    • -
    • Parallel: \(G+K\). Poles are unchanged, zeros are moved (but note that physically a parallel interconnection requires an additional manipulated input)
    • -
    -
  • -
  • Pinned zeros. A zero is pinned to a subset of the outputs if \(y_z\) has one or more elements equal to zero. Their effect cannot be moved freely to any output. Similarly, a zero is pinned to certain input if \(u_z\) has one or more elements equal to zero.
  • -
-
-
-

Consider a SISO negative feedback system with plant \(G(s)=\frac{z(s)}{\phi(s)}\) and a constant gain controller, \(K(s)=k\). The closed-loop response from reference \(r\) to output \(y\) is -\[T(s) = \frac{kG(s)}{1+kG(s)} = \frac{kz(s)}{\phi(s)+kz(s)} = k\frac{z_{\text{cl}}(s)}{\phi_{\text{cl}}(s)}\]

-

We note that:

-
    -
  • The zero locations are unchanged by feedback
  • -
  • The pole locations are changed by feedback
  • -
-

\begin{align*} -\phi_{\text{cl}(s)} &\underset{k \rightarrow 0}{\longrightarrow} \phi(s) \\\
-\phi_{\text{cl}(s)} &\underset{k \rightarrow \infty}{\longrightarrow} k z(s) -\end{align*}

-

That is, as we increase the feedback gain, the closed loop poles moves from open-loop poles to the open-loop zeros. -RHP-zeros therefore imply high gain instability.

-
-

Internal Stability of Feedback Systems

-

-
- Figure 9: Block diagram used to check internal stability
-

Figure 9: Block diagram used to check internal stability

-
-
- -

Assume that the components \(G\) and \(K\) contain no unstable hidden modes. Then the feedback system in Fig. fig:block_diagram_for_stability is internally stable if and only if all four closed-loop transfer matrices are stable.

-

\begin{align*} -&(I+KG)^{-1} & -K&(I+GK)^{-1} \\\
-G&(I+KG)^{-1} & &(I+GK)^{-1} -\end{align*}

-

Assume there are no RHP pole-zero cancellations between \(G(s)\) and \(K(s)\), the feedback system in Fig. fig:block_diagram_for_stability is internally stable if and only if one of the four closed-loop transfer function matrices is stable.

-

Stabilizing Controllers

-

The Q-parameterization is a parameterization that generates all controllers that yield internal stability of the closed loop transfer function.

-
-
-

For stable plants, a parameterization of all stabilizing negative feedback controllers for the stable plant \(G(s)\) is given by -\[K = (I-QG)^{-1} Q = Q(I-GQ)^{-1}\] -where the parameter \(Q\) is any stable transfer function matrix.

-
-

This may have significant advantages in controller synthesis where the objective is to a find a \(K\) which minimizes some norm of \(N(K)\). -The search over stabilizing \(K\) (which involves checking the stability of closed-loop transfer functions) is replaced by a search over stable \(Q\). -The closed-loop transfer functions turn out to be affine in \(Q\), e.g. \(S\) or \(T\) can be written \(H1 + H2 Q H3\), which may significantly simplify the optimization (e.g. compared to \(GK(I+GK)^{-1}\) which is fractional in \(K\)).

-

Stability Analysis in the Frequency Domain

-
-
-

Let \(P_{ol}\) denote the number of unstable poles in \(L(s) = G(s)K(s)\). The closed-loop system with loop transfer \(L(s)\) and negative feedback is stable if and only if the Nyquist plot of \(\det(I+L(s))\):

-
    -
  1. makes \(P_{ol}\) anti-clockwise encirclements of the origin
  2. -
  3. does not pass through the origin
  4. -
-
-
-
-

The spectral radius \(\rho(L(j\w))\) is defined as the maximum eigenvalue magnitude: -\[ \rho(L(j\w)) \triangleq \max_{i} \abs{\lambda_i (L(j\w))} \]

-
-
-
-

Consider a system with a stable loop transfer function \(L(s)\). Then the closed-loop system is stable if -\[ \rho(L(j\w)) < 1 \quad \forall \w \]

-
-
-
-

Consider a system with a stable loop transfer function \(L(s)\). Then the closed-loop system is stable if -\[ \norm{L(j\w)} < 1 \quad \forall \w\] -Where \(\norm{L}\) denotes any matrix norm that satisfies the multiplicative property \(\norm{AB} \leq \norm{A}\cdot\norm{B}\)

-
-

The Small gain theorem for SISO system says that the system is stable if \(\abs{L(j\w)} < 1\) at all frequencies \(\w\). This is clearly a very conservative condition as no phase information is taken into account.

-

This may be understood as follows: the signals which “return” in the same direction after “one turn around the loop” are magnified by the eigenvalues \(\lambda_i\) (and the directions are the eigenvectors \(x_i\)):

-

\[ L x_i = \lambda_i x_i \]

-

So if all the eigenvalues \(\lambda_i\) are less than 1 in magnitude, all signals become smaller after each round, and the closed-loop system is stable.

-

System Norms

-

\(\htwo\) norm

-
-
-

Consider a strictly proper system \(G(s)\). The \(\htwo\) norm is:

-

\begin{align*} -\normtwo{G(s)} &\triangleq \sqrt{\frac{1}{2\pi} \int_{-\infty}^{\infty} \text{tr}\left(G(j\w)^HG(j\w)\right) d\w} \\\
-& = \sqrt{\frac{1}{2\pi} \int_{-\infty}^{\infty} \sum_i {\sigma_i}^2(G(j\w)) d\w} -\end{align*}

-
-

The \(\htwo\) norm can have a stochastic interpretation where we measure the expected root mean square value of the output in response to white noise excitation.

-

\(\hinf\) norm

-
-
-

Consider a proper linear stable system \(G(s)\). The \(\hinf\) norm is the peak value of its maximum singular value: -\[ \hnorm{G(s)} \triangleq \max_{\w} \maxsv(G(j\w)) \]

-
-

The \(\hinf\) norm has several interpretations in the time and frequency domains:

-
    -
  • it is the peak of the transfer function magnitude
  • -
  • by introducing weights, it can be interpreted as the magnitude of the some closed-loop transfer function relative to an upper bound
  • -
  • it is the worst case steady-state gain for sinusoidal inputs at any frequency
  • -
  • it is equal to the 2-norm in the time domain:
  • -
-

\[ \hnorm{G(s)} = \max_{w(t) \neq 0} \frac{\normtwo{z(t)}}{\normtwo{w(t)}} = \max_{\normtwo{w(t)} = 1} \normtwo{z(t)} \]

-
    -
  • is has an interpretation as an induced norm in terms of the expected values of stochastic signals
  • -
-

Difference Between the \(\htwo\) and \(\hinf\) norms

-

Minimizing the \(\hinf\) norm corresponds to minimizing the peak of the largest singular value, whereas minimizing the \(\htwo\) norm corresponds to minimizing the sum of the square of all the singular values over all frequencies.

-
-
-

The \(\hinf\) norm is convenient for representing unstructured model uncertainty and because if satisfies the multiplicative property \(\hnorm{A(s)B(s)} \leq \hnorm{A(s)} \cdot \hnorm{B(s)}\) -It follows that the \(\hinf\) norm is an induced norm.

-
-

The \(\htwo\) norm on the other hand is not and induced norm and does not satisfies the multiplicative property. -This implies that we cannot, by evaluating the \(\htwo\) norm of the individual components say anything about how their series interconnection will behave.

-

Hankel norm

-

The Hankel norm of a stable system \(G(s)\) is obtained when one applies an input \(w(t)\) up to \(t=0\) and measures the output \(z(t)\) for \(t>0\), and selects \(w(t)\) to maximize the ratio of the 2-norms: -\[ \left\|G(s)\right\|_H \triangleq \max_{w(t)} \frac{\sqrt{\int_{0}^{\infty} \normtwo{z(\tau)}^2 d\tau }}{\sqrt{\int_{-\infty}^0 \normtwo{w(\tau)}^2 d\tau}} \] -The Hankel norm is a kind of induced norm from past inputs to future outputs.

-

It may be shown that the Hankel norm is equal to \(\left\|G(s)\right\|_H = \sqrt{\rho(PQ)}\) where \(\rho\) is the spectral radius, \(P\) is the controllability Gramian and \(Q\) the observability Gramian.

-

Limitations on Performance in SISO Systems

-

-

Input-Output Controllability

-
-
-

The input-output controllability is the ability to achieve acceptable control performance; that is, to keep the outputs (\(y\)) within specified bounds from their references (\(r\)), in spite of unknown but bounded variations, such as disturbances (\(d\)) and plant changes, using available inputs (\(u\)) and available measurements (\(y_m\)).

-
-

A plant is controllable if there exists a controller that yields acceptable performance for all expected plant variation. Thus, controllability is independent of the controller and is a property of the plant alone. -It may be affected by changing the plant itself:

-
    -
  • changing the mechanical design
  • -
  • relocating sensors and actuators
  • -
  • adding new equipment to dampen disturbances
  • -
  • adding extra sensor or actuators
  • -
  • changing the configuration of the lower layers of control already in place
  • -
-
-
-

Input-output controllability analysis is applied to a plant to find out what control performance can be expected.

-

It is also called performance targeting.

-
-

If the system has been scaled, the requirement for acceptable performance is: -For any disturbance \(\abs{d} \leq 1\) and any reference \(\abs{r} \leq R\), the performance requirement is to keep the control error \(\abs{e} \leq 1\) using an input \(\abs{u} \leq 1\).

-

Perfect Control and Plant Inversion

-

To obtain insight into the inherent limitations on performance, let’s consider the input needed to achieve perfect control. -Let the plant model be: \(y = G u + G_d d\) -Since we want perfect control, \(y = r\) and we have \(u = G^{-1} r - G^{-1} G_d d\) that represents a perfect feedforward controller.

-

For a feedback control, \(u = K(r - y)\), and we have \(u = KS r - KSG_d d\) that we can rewrite \(u = G^{-1}Tr - G^{-1}TG_d d\).

-

We see that at frequency where feedback is effective (\(T \approx I\)), the input generated by feedback is the same as the perfect control input. That is, high gain feedback generates an inverse of \(G\).

-

Perfect control requires the controller to somehow generate an inverse of \(G\). Perfect control cannot be achieved if:

-
    -
  • \(G\) contains RHP-zeros (since then \(G^{-1}\) is unstable)
  • -
  • \(G\) contains time delay (since then \(G^{-1}\) contains non-causal prediction)
  • -
  • \(G\) has more pole than zero (since then \(G^{-1}\) is unrealizable)
  • -
-

The required input must not exceed maximum physically allowed value (\(\abs{u} \leq 1\)), therefore perfect control cannot be achieve if:

-
    -
  • \(\abs{G^{-1} G_d}\) is large (\(\geq 1\))
  • -
  • \(\abs{G^{-1} R}\) is large (\(\geq 1\))
  • -
-

Constrain of \(S\) and \(T\)

-

\(S\) Plus \(T\) is One

-
-
-

From the definitions \(S = (I + L)^{-1}\) and \(T = L(I+L)^{-1}\) we derive

-

\begin{equation} -S + T = I -\end{equation}

-
-

Ideally, we want \(S\) small to obtain small control error for commands and disturbances, and \(T\) small to avoid sensitivity to noise. There requirements are not simultaneously possible at any frequency.

-

The Waterbed Effects

-

In general, a trade-off between sensitivity reduction and sensitivity increase must be performed whenever:

-
    -
  1. \(L(s)\) has at least two more poles than zeros (first waterbed formula)
  2. -
  3. \(L(s)\) has a RHP-zero (second waterbed formula)
  4. -
-
-
-

Suppose that the open-loop transfer function \(L(s)\) is rational and has at least two more poles than zeros. -Suppose also that \(L(s)\) has \(N_p\) RHP-poles at locations \(p_i\). -Then for closed-loop stability, the sensitivity function must satisfy the following Bode Sensitivity Integral:

-

\begin{equation} -\int_0^\infty \ln\abs{S(j\w)} d\w = \pi \sum_{i=1}^{N_p} \text{Re}(p_i) -\end{equation}

-
-

For a stable plant, we must have:

-

\begin{equation} -\int_0^\infty \ln\abs{S(j\w)} d\w = 0 -\end{equation}

-

The area of sensitivity reduction (\(\ln\abs{S}\) negative) must equal the area of sensitivity increase (\(\ln\abs{S}\) positive): the benefits and costs of feedback are balanced.

-

For unstable plant, the presence of unstable poles usually increase the peak of \(\abs{S}\) as seen from the contribution \(\pi \sum_{i=1}^{N_p} \text{Re}(p_i)\). This is the price to pay for stabilizing the system.

-

From the first waterbed formula, we expect that an increase in the bandwidth must come at the expense of a large peak in \(\abs{S}\). -Although this is true in most practical cases, however this is not strictly implied by the formula. -This is because the increase in area may happen over an infinite frequency range.

-
-
-

Suppose that \(L(s)\) has a single real RHP-zero \(z\) or a complex conjugate pair of zero \(z=x\pm jy\), and has \(N_p\) RHP-poles \(p_i\). -For closed-loop stability, the sensitivity function must satisfy -\[ \int_0^\infty \ln\abs{S(j\w)} w(z, \w) d\w = \pi \ln \sum_{i=1}^{N_p} \abs{\frac{p_i + z}{\bar{p_i}-z}} \]

-

where if the zero is real -\[ w(z, \w) = \frac{2z}{z^2 + \w^2} \] -and if the zero pair is complex -\[ w(z, \w) = \frac{x}{x^2 + (y-\w)^2} + \frac{x}{x^2 + (y+\w)^2} \]

-
-

The second waterbed formula implies that the peak of \(\abs{S}\) is even higher for plants with RHP-zeros.

-

The weight \(w(z, \w)\) effectively “cuts off” the contribution from \(\ln\abs{S}\) to the integral at frequencies \(\w > z\). -So we have approximately: -\[ \int_0^z \ln \abs{S(j\w)} d\w \approx 0 \]

-

This is similar to the Bode sensitivity integral, except that the trade-off is done over a limited frequency range. -Thus, a large peak for \(\abs{S}\) is unavoidable if we try to push down \(\abs{S}\) at low frequencies.

-

Interpolation Constraints

-
-
-

If \(p\) is a RHP-pole of the loop transfer function \(L(s)\) then

-

\begin{equation} -T(p) = 1, \quad S(p) = 0 -\end{equation}

-

If \(z\) is a RHP-zero of the loop transfer function \(L(s)\) then

-

\begin{equation} -T(z) = 0, \quad S(z) = 1 -\end{equation}

-
-

Sensitivity Peaks

-
-
-

Suppose \(f(s)\) is stable, then the maximum value of \(\abs{f(s)}\) for \(s\) in the RHP is attained on the region’s boundary (somewhere along the \(j\w\)-axis): -\[ \hnorm{f(j\w)} = \max_{\omega} \abs{f(j\w)} \geq \abs{f(s_0)} \quad \forall s_0 \in \text{RHP} \]

-
-

We can derive the following bounds on the peaks of \(S\) and \(T\) from the maximum modulus principle: -\[ \hnorm{S} \geq \max_{j} \prod_{i=1}^{N_p} \frac{\abs{z_j + \bar{p_i}}}{\abs{z_j - p_i}} \quad \hnorm{T} \geq \max_{i} \prod_{j=1}^{N_z} \frac{\abs{\bar{z_j} + p_i}}{\abs{z_j - p_i}} \]

-

This shows that large peaks for \(\abs{S}\) and \(\abs{T}\) are unavoidable if we have a RHP-zero and RHP-pole located close to each other.

-

Limitation Imposed by Time Delays

-

Consider a plant \(G(s)\) that contains a time delay \(e^{-\theta s}\). Even the “ideal” controller cannot remove this delay and the “ideal” sensitivity function is \(S = 1 - T = 1 - e^{-\theta s}\).

-
-
-

\(S\) crosses 1 at a frequency of about \(1/\theta\), so we expect to have an upper bound on \(\w_c\): -\[ \w_c < 1/\theta \]

-
-

Limitation Imposed by RHP-Zeros

-

RHP-zeros typically appear when we have competing effects of slow and fast dynamics. Their presence induces many limitations.

-

Inverse Response

-

We can show that the output of a step change in the input of a stable plant with \(n_z\) real RHP-zeros will cross zero \(n_z\) times, that is, we have inverse response.

-

High Gain Instability

-

It is well known that the closed-loop poles migrate from the open-loop poles to the open-loop zeros as the feedback gain increases. Thus the presence of RHP-zeros implies high-gain instability.

-

Bandwidth Limitation

-

To derive bounds for the bandwidth, we select performance weight \(w_P(s)\) and we then use the interpolation constraint \(S(z) = 1\).

-

We require \(\abs{S(j\w)} < 1/\abs{w_P(j\w)} \quad \forall \w\), so we must at least require that the weight satisfies \(\abs{w_P(z)} < 1\).

-
Performance at low frequencies
-

If we specify performance at low frequencies, we may use the following weight: -\[ w_P = \frac{s/M + \w_B^*}{s + \w_B^* A} \] -Where \(\w_B^*\) is the minimum wanted bandwidth, \(M\) the maximum peak of \(\abs{S}\) and \(A\) the steady-state offset.

-

If we consider a real RHP-zero: -\[ \w_B^* < z \frac{1 - 1/M}{1 - A} \] -For example, with \(A=0\) and \(M=2\), we must at least require \(\w_B^* < 0.5z\).

-

If we consider an imaginary RHP-zero: -\[ \w_B^* < \abs{z} \sqrt{1 - \frac{1}{M^2}} \] -For example, with \(M=2\), we must at least require \(\w_B^* < 0.86\abs{z}\).

-
-
-

The presence of RHP-zero imposes an upper bound on the achievable bandwidth when we want tight control at low frequencies

-
-
Performance at high frequencies
-

We consider the case where we want tight control at high frequencies, by use of the performance weight: -\[ w_P = \frac{1}{M} + \frac{s}{\w_B^*} \]

-

If we consider a real RHP-zero: -\[ \w_B^* > z \frac{1}{1-1/M} \] -For example, with \(M=2\) the requirement is \(\w_B^* > 2z\), so we can only achieve tight control at frequencies beyond the frequency of the RHP-zero.

-
-
-

The presence of RHP-zero imposes and lower bound on the achievable bandwidth when we want tight control at high frequencies

-
-

Limitation Imposed by RHP-Poles

-

For unstable plants with a RHP-pole at \(s = p\), we need feedback for stabilization.

-
-
-

In presence of a RHP-pole at \(s=p\): -\[ \hnorm{KS} \geq \abs{G_s(p)^{-1}} \] -where \(G_s\) is the “stable version” of \(G\) with its RHP-poles mirrored into the LHP.

-

Since \(u = -KS(G_d d + n)\) and because of the previous inequality, the presence of disturbances \(d\) and measurement noise \(n\) may require the input \(u\) to saturate. -When the inputs saturate, the system is practically open-loop and the stabilization is not possible.

-
-
-
-

We need to react sufficiently fast. -For a real RHP-pole \(p\) we must require that the closed-loop bandwidth is larger than \(2p\). -The presence of RHP-poles generally imposes a lower bound on the bandwidth.

-
-

Combined Unstable (RHP) Poles and Zeros

-

A strictly proper plant with a single real RHP-zero \(z\) and a single real RHP-pole \(p\) can be stabilized by a stable proper controller if and only if \(z>p\). In words “the system may go unstable before we have time to react”.

-

In order to achieve acceptable performance and robustness, we must approximately require \(z>4p\). That is, we want to RHP-pole to be much lower than the RHP-zero.

-

The presence of RHP-zeros (or time delays) make stabilization more difficult.

-

Performance Requirements Imposed by Disturbances and Commands

-
Disturbance rejection
-

Consider a single disturbance \(d\) and a constant reference \(r=0\). Without control, we have \(e = G_d d\). -We conclude that no control is needed if \(\abs{G_d(j\w)} < 1\) at all frequencies. In that case, the plant is said to be “self-regulated".

-

If \(\abs{G_d(j\w)} > 1\) at some frequency, then we need control. In case of feedback control, we have -\[ e(s) = S(s)G_d(s)d(s) \] -The performance requirement \(\abs{e(\w)} < 1\) for any \(\abs{d(\w)}\) at any frequency is satisfied if and only if -\[ \abs{S G_d(j\w)} < 1 \quad \forall\w \quad \Leftrightarrow \quad \abs{S(j\w)} < 1/\abs{G_d(j\w)} \quad \forall\w \]

-
-
-

If the plant has a RHP-zero at \(s=z\), then \(S(z) = 1\) and we have the following condition: -\[ \abs{G_d(z)} < 1 \]

-
-
-
-

We also have that -\[ \w_B > \w_d \] -where \(\w_d\) is defined by \(\abs{G_d(j\w_d)} = 1\).

-
-

The actual bandwidth requirement imposed by disturbances may be higher than \(\w_d\) if \(\abs{G_d(j\w)}\) drops with a slope steeper than \(-1\) just before the frequency \(\w_d\). This is because we cannot let the slope of \(\abs{L(j\w)}\) around the crossover be much larger than \(-1\) due to stability margins. It is however possible to overcome this issue using local feedback loops in series.

-
Command tracking
-

Assume than \(d=0\) and \(r(t) = R\sin(\w t)\). For acceptable control (\(\abs{e} < 1\)) we must have -\[ \abs{S(j\w)R}<1 \quad \forall\w\leq\w_r \] -where \(\w_r\) is the frequency up to which performance tracking is required.

-

Limitation Imposed by Input Constraints

-
-
-

To achieve acceptable control (\(\abs{e}<1\)) and avoid input saturation (\(\abs{u}<1\)), we must require:

-

For disturbance rejection: -\[ \abs{G} > \abs{G_d} - 1 \text{ at frequencies where } \abs{G_d} > 1 \]

-

For command tracking: -\[ \abs{G} > \abs{R} - 1 \quad \forall \w \leq \w_r \]

-
-

Limitation Imposed by Phase Lag

-

Phase lag in the plant present no fundamental limitations, however is usually does on practical designs.

-
-
-

Let define \(\w_u\) as the frequency where the phase lag of the plant \(G\) is \(\SI{-180}{\degree}\)

-

\begin{equation} -\angle G(j\w_u) \triangleq \SI{-180}{\degree} -\end{equation}

-
-

With simple controllers such as a proportional controller or a PI-controller, the phase lag does pose a fundamental limitation on the achievable bandwidth because of stability bounds: -\[ \w_c < \w_u \]

-

However, if the model is exactly known and there are no RHP-zeros or time delays, one may extend \(\w_c\) to infinite frequency by placing zeros in the controller at the plant poles.

-

Limitation Imposed by Uncertainty

-
Uncertainty with feedforward control
-

Perfect control is obtained using a controller which generates the control input -\[ u = G^{-1} r - G^{-1} G_d d \] -When we apply this perfect controller to the actual plant \(y’ = G’ u + G_d’ d\), we find -\[ e’ = y’ - r = \underbrace{\left( \frac{G’}{G} - 1 \right)}_{\text{rel. error in }G} r - \underbrace{\left( \frac{G’/G_d’}{G/G_d} - 1 \right)}_{\text{rel. error in } G/G_d} G_d’ d \] -For feedforward control, the model error propagates directly to the control error.

-

If we want acceptable control (\(\abs{e’}<1\)), we must require that the model error in \(G/G_d\) is less than \(1/\abs{G_d’}\). This is very difficult to satisfy at frequencies where \(\abs{G_d’}\) is much larger than 1.

-

The presence of uncertainty then requires us to use feedback control rather than just feedforward control.

-
Uncertainty with feedback control
-

With feedback control, the closed-loop response is \(e = y - r = S G_d d - S r\). -With model error, we get \(y’ - r = S’(G_d’d - r)\) where \(S’ = (I + G’K)^{-1}\). -\(S’\) can be rewritten as \(S’ = S \frac{1}{1+ET}\) with \(E = \frac{G’-G}{G}\) the relative error for \(G\).

-

We see that the control error in only weakly affected by model error at frequencies where feedback is effective (\(T \approx 1\)).

-
-
-

Uncertainty in the crossover frequency region can result in poor performance and even instability:

-
    -
  • Uncertainty which keeps \(\abs{G(j\w_u)}\) approximately constant will not change the gain margin.
  • -
  • Uncertainty which increases \(\abs{G(j\w_u)}\) may yield instability.
  • -
-
-

Summary: Controllability Analysis with Feedback Control

-

-
- Figure 10: Feedback control system
-

Figure 10: Feedback control system

-
-
- -

Consider the control system in Fig. fig:classical_feedback_meas. -Here \(G_m(s)\) denotes the measurement transfer function and we assume \(G_m(0) = 1\) (perfect steady-state measurement).

-
-
-
    -
  1. Speed of response to reject disturbances. We approximately require \(\w_c > \w_d\). With feedback control we require \(\abs{S(j\w)} \leq \abs{1/G_d(j\w)} \quad \forall\w\).
  2. -
  3. Speed of response to track reference changes. We require \(\abs{S(j\w)} \leq 1/R\) up to the frequency \(\w_r\) where tracking is required.
  4. -
  5. Input constraints arising from disturbances. For acceptable control we require \(\abs{G(j\w)} > \abs{G_d(j\w)} - 1\) at frequencies where \(\abs{G_d(j\w)} > 1\).
  6. -
  7. Input constraints arising from setpoints. We require \(\abs{G(j\w)} > R - 1\) up to the frequency \(\w_r\) where tracking is required.
  8. -
  9. Time delay \(\theta\) in \(G(s)G_m(s)\). We approximately require \(\w_c < 1/\theta\).
  10. -
  11. Tight control at low frequencies with a RHP-zero \(z\) in \(G(s)G_m(s)\). For a real RHP-zero we require \(\w_c < z/2\) and for an imaginary RHP-zero we approximately require \(\w_c < \abs{z}\).
  12. -
  13. Phase lag constraint. We require in most practical cases \(\w_c < \w_u\). Here the ultimate frequency \(\w_u\) is where \(\angle GG_m(j\w_u) = \SI{-180}{\degree}\). Since time delays and RHP-zeros also contribute to the phase lag, it is possible to combine the corresponding rules in the single rule \(\w_c < \w_u\).
  14. -
  15. Real open-loop unstable pole in \(G(s)\) at \(s=p\). We need high feedback gains to stabilize the system and we approximately require \(\w_c > 2p\).
  16. -
-
-

In summary:

-
    -
  • rules 1, 2 and 8 tell us that we need high feedback gain in order to reject disturbances, to track setpoints and to stabilize the plant.
  • -
  • rules 5, 6 and 7 tell us we must use low feedback gains in the frequency range where there are RHP-zeros or delays or where the plant has a lot of phase lag.
  • -
-

Sometimes, the disturbances are so large that we hit input saturation or the required bandwidth is not achievable. To avoid the latter problem, we must at least require that the effect of the disturbance is less than \(1\) at frequencies beyond the bandwidth: -\[ \abs{G_d(j\w)} < 1 \quad \forall \w \geq \w_c \]

-

-
- Figure 11: Illustration of controllability requirements
-

Figure 11: Illustration of controllability requirements

-
-
- -
Controllability analysis with feedforward control
-

We find that essentially the same conclusions apply to feedforward control when relevant.

-

A major difference is that a delay in \(G_d(s)\) is an advantage for feedforward control (“it gives the feedforward controller more time to make the right action”).

-

Conclusion

-

The controllability analysis is summarized in terms of eight controllability rules. -These rules are necessary conditions to achieve acceptable control performance. -They are not sufficient since among other things they only consider one effect at a time. -The rules may be used to determine whether or not a given plant is controllable.

-

Limitations on Performance in MIMO Systems

-

-

Introduction

-

In a MIMO system, disturbances, the plant, RHP zeros, RHP poles, delays and disturbances have each directions associated with them.

-

We quantify the directionality of the various effects in \(G\) and \(G_d\) by their output directions:

-
    -
  • \(y_z\): output dir. of RHP-zero, \(G(z) u_z = 0 \cdot y_z\)
  • -
  • \(y_p\): output dir. of RHP-pole, \(G(p_i) u_p = \infty \cdot y_p\)
  • -
  • \(y_d\): output dir. of disturbance, \(y_d(s) = \frac{1}{\normtwo{g_d(s)}} g_d(s)\)
  • -
  • \(u_i\): i’th output dir. (singular vector) of the plant, \(G(s) v_i(s) = \sigma_i(s) u_i(s)\)
  • -
-

We may also consider input directions, however we are primarily concerned with the performance at the output of the plant.

-

The angle between various output directions is quantified using their inner products.

-

For example, the output angle between a pole and a zero is \(\phi = \cos^{-1} \abs{y_z^H y_p}\), and:

-
    -
  • if \(\phi = \SI{90}{\degree}\), then the pole and zero are in completely different directions and there is no interaction (they may be considered separately)
  • -
  • if \(\phi = \SI{0}{\degree}\), then they interact as in a SISO system
  • -
-

Constraints on \(S\) and \(T\)

-

\(S\) plus \(T\) is the Identity Matrix

-

From the identity \(S + T = I\), we get:

-

\begin{subequations} -\begin{align} -|1 - \maxsv(S)| \leq \maxsv(T) \leq 1 + \maxsv(S)\\\
-|1 - \maxsv(T)| \leq \maxsv(S) \leq 1 + \maxsv(T) -\end{align} -\end{subequations}

-

This shows that we cannot have \(S\) and \(T\) small simultaneously and that \(\maxsv(S)\) is large if and only if \(\maxsv(T)\) is large.

-

Sensitivity Intregrals

-

The waterbed effect can be generalized for MIMO systems:

-

\begin{align*} -\int_0^{\infty} \ln{|\det{S(j\w)}|} d\w &= \sum_j \int_0^\infty \ln{\sigma_j(S(j\w))} d\w \\\
-&= \pi \cdot \sum_{i=1}^{N_p} \text{Re}(p_i) -\end{align*}

-

Interpolation Constraints

-

The basis of many of the results in this chapter are the “interpolation constraints".

-
-
-

If \(G(s)\) has a RHP-zero at \(z\) with output direction \(y_z\), \(T(s)\) must have a RHP-zero at \(z\), i.e., \(T(z)\) has a zero gain in the direction of output direction \(y_z\) of the zero, and we get -\[ y_z^H T(z) = 0 ; \quad y_z^H S(z) = y_z^H \]

-
-
-
-

If \(G(s)\) has a RHP-pole at \(p\) with output direction \(y_p\), \(S(s)\) must have a RHP-zero at \(p\), i.e. \(S(p)\) has a zero gain in the input direction of the output direction \(y_p\) of the RHP-pole, and we get -\[ S(p) y_p = 0 ; \quad T(p) y_p = y_p \]

-
-

Sensitivity Peaks

-

Consider a plant \(G(s)\) with RHP-poles \(p_i\) and RHP-zeros \(z_j\). -The factorization of \(G(s)\) in terms of Blaschke products is: -\[ \tcmbox{G(s) = B_p^{-1} G_s(s), \quad G(s) = B_z(s) G_m(s)} \] -where \(G_s\) is the stable and \(G_m\) the minimum-phase version of \(G\). -\(B_p\) and \(B_z\) are stable all-pass transfer matrices (all singular values are 1 for \(s=j\w\)) containing the RHP-poles and RHP-zeros respectively.

-
MIMO sensitivity peaks
-

Suppose that \(G(s)\) has \(N_z\) RHP-zeros \(z_j\) with output directions \(y_{zj}\), and \(N_p\) RHP-poles \(p_i\) with output direction \(y_{pi}\). -We define the all-pass transfer matrices from the Blaschke factorization and compute the real constants: -\[ c_{1j} = \normtwo{y_{zj}^H B_p(z_j)} \geq 1; \quad c_{2i} = \normtwo{B_z^{-1}(p_i) y_{pi}} \geq 1 \]

-

Let \(w_P(s)\) be a stable weight. Then, for closed-loop stability the weighted sensitivity function must satisfy for each RPH-zero \(z_j\) -\[ \hnorm{w_p S} \ge c_{1j} \abs{w_p(z_j)} \]

-

Let \(w_T(s)\) be a stable weight. Then, for closed-loop stability the weighted complementary sensitivity function must satisfy for each RPH-pole \(p_i\) -\[ \hnorm{w_T T} \ge c_{2j} \abs{w_T(p_i)} \]

-
-
-

By selecting \(w_P(s) = 1\) and \(w_T(s) = 1\), we get -\[ \hnorm{S} \ge \max_{\text{zeros } z_j} c_{1j}; \quad \hnorm{T} \ge \max_{\text{poles } p_i} c_{2j} \]

-
-

Functional Controllability

-
-
-

An m-input l-output system \(G(s)\) is functionally controllable is the normal rank of \(G(s)\), denoted \(r\), is equal to the number of outputs (\(r = l\)), that is, if \(G(s)\) has full row rank. -A system is functionally uncontrollable if \(r<l\).

-
-

A square MIMO system is uncontrollable if and only if \(\det{G(s)} = 0,\ \forall s\).

-

A plant is functionally uncontrollable if and only if \(\sigma_l(G(j\omega)) = 0,\ \forall\w\). -\(\sigma_l(G(j\w))\) is then a measure of how close a plant is to being functionally uncontrollable.

-
-
-

If the plant is not functionally controllable (\(r<l\)), then there are \(l-r\) output directions, denoted \(y_0\) which cannot be affected. These directions will vary with frequency, and we have -\[ y_0^H(j\w) G(j\w) = 0 \] -From an SVD of \(G(j\w) = U \Sigma V^H\), the uncontrollable output directions \(y_0(j\w)\) are the last \(l-r\) columns of \(U(j\w)\).

-
-

By analyzing the uncontrollable output directions, an engineer can decide on whether it is acceptable to keep certain output combinations uncontrolled, or if additional actuators are needed.

-

Limitation Imposed by Time Delays

-

Time delays pose limitation also in MIMO systems. Let \(\theta_{ij}\) denote the time delay in the \(ij\)‘th element of \(G(s)\). Then a lower bound on the time delay for output \(i\) is given by the smallest delay in row \(i\) of \(G(s)\), that is -\[ \theta_i^{\min} = \min_j \theta_{ij} \]

-

For MIMO systems, we have the surprising result that an increase time delay may sometimes improve the achievable performance. The time delay may indeed increase the decoupling between the outputs.

-

Limitations Imposed by RHP-Zeros

-

The limitations imposed by RHP-zeros on MIMO systems are similar to those for SISO system, although they only apply in particular directions.

-

The limitations of a RHP-zero located at \(z\) may be derived from the bound: -\[ \hnorm{w_P S(s)} = \max_{\w} \abs{w_P(j\w)} \maxsv(S(j\w)) \ge \abs{w_P(z)} \]

-

All the results derived for SISO systems generalize if we consider the “worst” direction corresponding to the maximum singular value \(\maxsv(S)\). -For instance, if we choose \(w_P(s)\) to require tight control at low frequencies, the bandwidth must satisfy \(w_B^* < z/2\).

-

In MIMO systems, one can often move the deteriorating effect of a RHP-zero to a given output which may be less important to control well. -This is possible because, although the interpolation constraint \(y_z^H T(z) = 0\) imposes a certain relationship between the elements within each column of \(T(s)\), the columns of \(T(s)\) may still be selected independently.

-

Requiring a decoupled response from \(r\) to \(y\) generally leads to the introduction of additional RHP-zero in \(T(s)\) which are not present in \(G(s)\). -Moving the effect of the RHP-zero to a particular output generally add some interaction. Also, moving to RHP-zero in a direction where \(y_z\) is small usually introduces more interaction than in a direction where \(y_z\) is large.

-

For example, if we have a RHP-zero with \(y_z = [0.03,\ -0.04,\ 0.9,\ 0.43]^T\), then one may in theory move the bad effect of the RHP-zero to any of the outputs. However, in practice, it will be difficult to avoid the effect of the RHP-zero on output 3, because the zero direction is mainly in that output. Trying to move it somewhere else will give large interactions and poor performance.

-

Limitation Imposed by Unstable (RHP) Poles

-

For unstable plants, feedback is needed for stabilization. More precisely, the presence of an unstable pole \(p\) requires for internal stability \(T(p) y_p = y_p\) where \(y_p\) is the output pole direction.

-
-
-

The transfer function \(KS\) from plant output to plant inputs must satisfy for any RHP-pole \(p\) -\[ \hnorm{KS} \ge \normtwo{u_p^H G_s(p)^{-1}} \] -where \(u_p\) is the input pole direction, and \(G_s\) is the “stable version” of \(G\) with its RHP-poles mirrored in the LHP.

-
-
-
-

From the bound \(\hnorm{w_T(s) T(s)} \ge \abs{w_T(p)}\), we find that a RHP-pole \(p\) imposes restrictions on \(\maxsv(T)\) which are identical to those derived on \(\abs{T}\) for SISO systems. -Thus, we need to react sufficiently fast and we must require that \(\maxsv(T(j\w))\) is about 1 or larger up to the frequency \(2 \abs{p}\).

-
-

RHP-poles Combined with RHP-Zeros

-

For a MIMO plant with single RHP-zero \(z\) and single RHP-pole \(p\), we derive

-

\[ \hnorm{S} \ge c \quad \hnorm{T} \ge c \] -\[ \text{with } c = \sqrt{\sin^2 \phi + \frac{\abs{z + p}^2}{\abs{z-p}^2} \cos^2 \phi} \] -where \(\phi = cos^{-1} \abs{y_z^H y_p}\) is the angle between the RHP-zero and the RHP-pole.

-

Thus the angle between the RHP-zero and the RHP-pole is of great importance, we usually want \(\abs{y_z^H y_p}\) close to zero so that they don’t interact with each other.

-

Limitations Imposed by Disturbances

-

For SISO systems, we found that large and “fast” disturbances require tight control and a large bandwidth. -The same results apply for MIMO systems, but again the issue of directions is important.

-
-
-

Consider a scalar disturbance \(d\) and let the vector \(g_d\) represents its effect on the outputs (\(y = g_d d\)). -The disturbance direction is defined as

-

\begin{equation} -y_d = \frac{1}{\normtwo{g_d}} g_d -\end{equation}

-

For a plant with multiple disturbances, \(g_d\) is a column of the matrix \(G_d\).

-
-
-
-

\begin{equation} -\gamma_d (G) = \maxsv(G) \maxsv(G^\dagger y_d) -\end{equation}

-

where \(G^\dagger\) is the pseudo inverse of \(G\)

-
-

The disturbance condition number provides a measure of how a disturbance is aligned with the plant. It may vary between 1 (for \(y_d = \bar{u}\)) if the disturbance is in the “good” direction, and the condition number \(\gamma(G) = \maxsv(G) \maxsv(G^\dagger)\) (for \(y_d = \ubar{u}\)) if it is in the “bad” direction.

-

Let assume \(r=0\) and that the system has been scaled. With feedback control \(e = S g_d d\) and the performance objective is -\[ \normtwo{S g_d} = \maxsv(S g_d) < 1 \ \forall\w \quad \Leftrightarrow \quad \hnorm{S g_d} < 1 \]

-

We derive bounds in terms of the singular values of \(S\): -\[ \minsv(S) \normtwo{g_d} \le \normtwo{S g_d} \le \maxsv(S) \normtwo{g_d} \]

-
-
-

For acceptable performance we must at least require that -\[ \maxsv(I+L) > \normtwo{g_d} \]

-

And we may require that -\[ \minsv(I+L) > \normtwo{g_d} \]

-
-

If \(G(s)\) has a RHP-zero at \(s = z\), then the performance may be poor if the disturbance is aligned with the output direction of this zero. -To satisfy \(\hnorm{S g_d} < 1\), we must require -\[ \abs{y_z^H g_d(z)} < 1 \] -where \(y_z\) is the direction of the RHP-zero.

-

Limitations Imposed by Input Constraints

-

Inputs for Perfect Control

-

We here consider the question: can the disturbances be rejected perfectly while maintaining \(\|u\|<1\)?

-

For a square plant, the input needed for perfect disturbance rejection is \(u = -G^{-1} G_d d\).

-

For a single disturbance, as the worst-cast disturbance is \(\abs{d(\w)} = 1\), we get that input saturation is avoided (\(\|u\|_{\text{max}} \le 1\)) if all elements in the vector \(G^{-1} g_d\) are less than 1 in magnitude: -\[ \|G^{-1} g_d\|_{\text{max}} < 1, \ \forall\w \]

-

It is first recommended to consider one disturbance at a time by plotting as a function of frequency the individual elements of \(G^{-1} G_d\). This will yields more information about which particular input is most likely to saturate and which disturbance is the most problematic.

-

Inputs for Acceptable Control

-

We here consider the question: is it possible to achieve \(\|e\|<1\) while using inputs with \(\|u\| \le 1\)?

-

For SISO systems, we have to required \(\abs{G} > \abs{g_d} - 1\) at frequencies where \(\abs{g_d} > 1\). -We would like to generalize this result to MIMO systems.

-
-
-

Each singular value \(\sigma_i\) of \(G\) must approximately satisfy:

-

\begin{equation} -\sigma_i(G) \ge \abs{u_i^H g_d} - 1 \text{ where } \abs{u_i^H g_d} > 1 -\end{equation}

-

with \(u_i\) the \(i\)‘th output singular vector of \(G\).

-

\(u_i^H g_d\) may be interpreted as the projection of \(g_d\) onto the \(i\)‘th output singular vector of the plant.

-
-

Using the previous approximation, we can find out:

-
    -
  • For which disturbances and at which frequencies input constraints may cause problems. This may give ideas on which disturbances should be reduced.
  • -
  • In which direction \(i\) the plant gain is too small. By looking at the corresponding input singular vector \(v_i\), one can determine which actuators should be redesigned. By looking at the corresponding output singular vector \(u_i\), one can determine on which outputs we may have to reduce our performance requirements.
  • -
-

For combined disturbances, one requires the \(i\)‘th row sum of \(U^H G_d\) to be less than \(\sigma_i(G)\). However, we usually derive more insight by considering one disturbance at a time.

-

Unstable Plant and Input Constraints

-

Active use of inputs are needed to stabilize an unstable plant. -We must require \(\hnorm{KS} \ge \normtwo{u_p^H G_s(p)^{-1}}\). -If the required inputs exceed the constraints, then stabilization is most likely not possible.

-

Limitation Imposed by Uncertainty

-

The presence of uncertainty requires the use of feedback rather than simply feedforward control to get acceptable performance. -Sensitivity reduction with respect to uncertainty is achieved with high-gain feedback, but for any real system, we have a crossover frequency range where the loop gain has to drop below 1. The presence of uncertainty in this frequency range may result in poor performance or even instability.

-

The issues are the same for SISO and MIMO systems, however, with MIMO systems there is an additional problem in that there is also uncertainty associated with the plant directionality.

-

Input and Output Uncertainty

-

In practice, the difference between the true perturbed plant \(G^\prime\) and the plant model \(G\) is caused by a number of different sources. -We here focus on input and output uncertainty. -In multiplicative form, the input and output uncertainties are given by (see Fig. fig:input_output_uncertainty): -\[ G^\prime = (I + E_O) G (I + E_I) \]

-

-
- Figure 12: Plant with multiplicative input and output uncertainty
-

Figure 12: Plant with multiplicative input and output uncertainty

-
-
- -

Input and output uncertainty may seem similar, but their implications for control may be very different.

-

If all the elements of \(E_O\) and \(E_I\) are non-zero, then we have full block (unstructured) uncertainty.

-

In many cases, the source of uncertainty is in the individual input or output channels, and we have that \(E_I\) and \(E_O\) are diagonal matrices. For example \(E_I = \text{diag}\{\epsilon_1, \epsilon_2, \dots\}\) where \(\epsilon_i\) is the relative uncertainty in input channel \(i\).

-

Diagonal input uncertainty is always present in real systems and the magnitude of \(\epsilon_i\) is typically \(0.1\) or larger.

-

Effect of Uncertainty on Feedforward Control

-

Consider a feedforward controller \(u = K_r r\) for the case with no disturbance (\(d = 0\)). We assume that \(G\) is inversible and we select \(K_r = G^{-1}\) to achieve perfect control (\(e = 0\)). -However, for the actual plant \(G^\prime\) (with uncertainty), the actual control error \(e^\prime = y^\prime - r = G^\prime G^{-1} r - r\) is not null and we get:

-
    -
  • For output uncertainty: \(e^\prime = E_O r\)
  • -
  • For input uncertainty: \(e^\prime = G E_I G^{-1} r\)
  • -
-

For output uncertainty, we have an identical result as for SISO systems: the worst case relative control error \(\normtwo{e^\prime}/\normtwo{r}\) is equal to the magnitude of the relative output uncertainty \(\maxsv(E_O)\). -However, for input uncertainty, the sensitivity may be much larger because the elements in the matrix \(G E_I G^{-1}\) can be much larger than the elements in \(E_I\).

-
-
-

For diagonal input uncertainty, the elements of \(G E_I G^{-1}\) are directly related to the RGA: -\[ \left[ G E_I G^{-1} \right]_{ii} = \sum_{j=1}^n \lambda_{ij}(G) \epsilon_j \]

-
-

Since diagonal input uncertainty is always present, we can conclude that if the plant has large RGA elements within in the frequency range where effect control is desired, then it is not possible to achieve good reference tracking with feedforward control because of strong sensitivity to diagonal input uncertainty. The reverse statement is not true.

-

Uncertainty and the Benefits of Feedback

-

To illustrate the benefits of feedback control in reducing the sensitivity to uncertainty, we consider the effect of output uncertainty on reference tracking both for feedforward and feedback.

-

Feedforward Let the nominal transfer function with feedforward control be \(y = T_r r\) where \(T_r = G K_r\) and \(K_r = G^{-1}\). -With model error \(T_r^\prime = G^\prime K_r\) and the change in response is \(y^\prime - y = (T_r^\prime - T_r) r = (G^\prime - G)G^{-1} T_r r = E_O T_r r\). -Thus, the control error caused by the uncertainty is equal to the relative output uncertainty.

-

Feedback control The output is \(y = T r\). -The change in response is \(y^\prime - y = (T^\prime - T)r = S^\prime E_O T r = S^\prime E_O y\). -With feedback control, the effect of the uncertainty is reduced by a factor \(S^\prime\) compared to that with feedforward control.

-

Uncertainty and the Sensitivity Peak

-

Consider a controller \(K(s) = l(s)G^{-1}(s)\) which results in a nominally decoupled response with sensitivity \(S = s \cdot I\) and complementary sensitivity \(T = t \cdot I\) where \(t(s) = 1 - s(s)\). -Suppose the plant has diagonal input uncertainty of relative magnitude \(\abs{w_I(j\w)}\) in each input channel. -Then there exists a combination of input uncertainties such that at each frequency: -\[ \maxsv(S^\prime) \ge \maxsv(S) \left( 1 + \frac{\abs{w_I t}}{1+\abs{w_I t}} \|\Lambda(G)\|_{i\infty} \right) \] -where \(\| \Lambda(G) \|_{i\infty}\) is the maximum row sum of the RGA and \(\maxsv(S) = \abs{s}\).

-

We can see that with an inverse based controller, the worst case sensitivity will be much larger than the nominal sensitivity at frequencies where the plant has large RGA elements.

-
-
-

These statements apply to the frequency range around crossover. -By “small”, we mean smaller than 2 and by “large” we mean larger than 10.

-
    -
  • Condition number \(\gamma(G)\) or \(\gamma(K)\) small: robust performance to both diagonal and full-block input uncertainty
  • -
  • Minimized condition number \(\gamma_I^* (G)\) or \(\gamma_O^*(K)\) small: robust performance to diagonal input uncertainty
  • -
  • \(\text{RGA}(G)\) has large elements: inverse based controller is not robust to diagonal input uncertainty. -Since diagonal input uncertainty is unavoidable in practice, the rule is never to use a decoupling controller for a plant with large RGA-elements. -Plant with large RGA elements are fundamentally difficult to control.
  • -
-
-

Element-by-element Uncertainty

-

Consider any complex matrix \(G\) and let \(\lambda_{ij}\) denote the \(ij\)‘th element in the RGA-matrix of \(G\).

-
-
-

The matrix \(G\) becomes singular if we make a relative change \(-1/\lambda_{ij}\) in its \(ij\)‘th elements, that is, if a single element in \(G\) is perturbed from \(g_{ij}\) to \(g_{pij} = g_{ij}(1-\frac{1}{\lambda_{ij}})\)

-
-

Thus, the RGA-matrix is a direct measure of sensitivity to element-by-element uncertainty and matrices with large RGA-values become singular for small relative errors in the elements.

-

The above result has important implications:

-
    -
  • Identification. Models of multivariable plants \(G(s)\) are often obtained by identifying one element at a time, for example using step responses. This simple analysis will most likely give meaningless results if there are large RGA-elements within the bandwidth where the model is intended to be used.
  • -
  • RHP-zeros. Consider a plant with transfer function matrix \(G(s)\). If the relative uncertainty in an element at a given frequency is larger than \(\abs{1/\lambda_{ij}(j\w)}\) then the plant may be singular at this frequency, implying that the uncertainty allows for a RHP-zero on the \(j\w\text{-axis}\).
  • -
-

MIMO Input-Output Controllability

-

The following procedure assumes that we have made a decision on the plant inputs and plant outputs, and we want to analyze the model \(G\) to find out what control performance can be expected. -It can also be used to assist in control structure design.

-

A typical MIMO controllability analysis may proceed as follows:

-
    -
  1. Scale all variables (inputs \(u\), outputs \(y\), disturbances \(d\), references \(r\)) to obtain a scaled model \(y = G(s) u + G_d(s) d\), \(r = R \tilde{r}\)
  2. -
  3. Obtain a minimal realization
  4. -
  5. Check functional controllability. To be able to control the outputs independently, we first need at least as many inputs \(u\) as outputs \(y\). Second, we need the rank of \(G(s)\) to be equal to the number of outputs \(l\), i.e. the minimum singular value \(G(j\w)\), \(\minsv(G) = \sigma_l(G)\), should be non-zero (except at possible \(j\w\text{-axis}\) zeros). If the plant is not functionally controllable, then compute the output direction where the plant has no gain to have insight into the source of the problem
  6. -
  7. Compute the poles. For RHP poles, obtain their locations and associated directions. “Fast” RHP-poles far from the origin are bad
  8. -
  9. Compute the zeros. For RHP zeros, obtain their locations and associated directions. Look for zeros pinned into certain outputs. “Small” RHP-zeros (close to the origin) are bad if tight performance is needed at low frequencies
  10. -
  11. Obtain the frequency response \(G(j\w)\) and compute the RGA matrix \(\Gamma = G \times (G^\dagger)^{-1}\). Plants with large RGA-elements at crossover frequencies are difficult to control and should be avoided
  12. -
  13. Compute the singular values of \(G(j\w)\) and plot them as a function of frequency. Also consider the associated input and output singular vectors
  14. -
  15. The minimum singular value \(\minsv(G(j\w))\) is a particularly useful controllability measure. It should generally be as large as possible at frequencies where control is needed. If \(\minsv(G(j\w)) < 1\) then we cannot at frequency \(\w\) make independent output changes of unit magnitude by using inputs of unit magnitude
  16. -
  17. For disturbances, consider the elements of the matrix \(G_d\). At frequencies where one or more elements is larger than 1, we need control. We get more information by considering one disturbance at a time (the columns \(g_d\) of \(G_d\)). We must require for each disturbance that \(S\) is less than \(1/\normtwo{g_d}\) in the disturbance direction \(y_d\), i.e. \(\normtwo{S y_d} \le 1/\normtwo{g_d}\). Thus, we must at least require \(\minsv(S) \le 1/\normtwo{g_d}\) and we may have to require \(\maxsv(S) \le 1/\normtwo{g_d}\)
  18. -
  19. Disturbances and input saturation: -
      -
    • First step. Consider the input magnitudes needed for perfect control by computing the elements in the matrix \(G^\dagger G_d\). If all elements are less than 1 at all frequencies, then input saturation is not expected to be a problem. If some elements of \(G^\dagger G_d\) are larger than 1, then perfect control cannot be achieve at this frequency, but “acceptable” control may be possible
    • -
    • Second step. Consider the elements of \(U^H G_d\) and make sure that the elements in the \(i\)‘th row are smaller than \(\sigma_i(G) + 1\) at all frequencies
    • -
    -
  20. -
  21. Are the requirements compatible? Look at disturbances, RHP-poles, RHP-zeros and their associated locations and directions. For example, we must required for each disturbance and each RHP-zero that \(\abs{y_z^H g_d(z)} \le 1\). Similar relations exist for combined RHP-zero and RHP-pole.
  22. -
  23. Uncertainty. If the condition number \(\gamma(G)\) is small then we expect no particular problems with uncertainty. If the RGA-elements are large, we expect strong sensitivity to uncertainty.
  24. -
-
Plant design changes
-

If the plant is not input-output controllable, then it must be modified. -Some possible modifications are:

-
    -
  • Controlled outputs. Identify the outputs which cannot be controlled satisfactory. Can the specifications for these be relaxed?
  • -
  • Manipulated inputs. If input constraints are encountered, then consider replacing or moving actuators. If there are RHP-zeros which cause control problems, then the zeros may often be eliminated by adding another input. This may not be possible if the zero is pinned to a particular output
  • -
  • Extra measurements. If the effect of disturbances or uncertainty is large, and the dynamics of the plant are such that acceptable control cannot be achieved, then consider adding “fast local loops” based on extra measurements which are located close to the inputs and disturbances
  • -
  • Disturbances. If the effect of disturbances is too large, then see whether the disturbance itself may be reduced. This may involve adding extra equipment to dampen the disturbances. In other cases, this may involve improving or changing the control of another part of the system: we may have a disturbance which is actually the manipulated input for another part of the system
  • -
  • Plant dynamics and time delays. In most cases, controllability is improved by making the plant dynamics faster and by reducing time delays. An exception to this is a strongly interactive plant, where an increased dynamic lag or time delay may be helpful if it somehow “delays” the effect of the interactions
  • -
-

Conclusion

-

We have found that most of the insights into the performance limitation of SISO systems carry over to MIMO systems. -For RHP-zeros, RHP-poles and disturbances, the issue of directions usually makes the limitation less severe for MIMO than for SISO systems. -However, the situation is usually the opposite with model uncertainty because for MIMO systems, there is also uncertainty associated with plant directionality.

-

Uncertainty and Robustness for SISO Systems

-

-

Introduction to Robustness

-

A control system is robust if it is insensitive to differences between the actual system and the model of the system which was used to design the controller. -The key idea in the \(\hinf\) robust control paradigm is to check whether the design specifications are satisfied even for the “worst-case” uncertainty.

-

Our approach is then as follows:

-
    -
  1. Determine the uncertainty set. Find a mathematical representation of the model uncertainty
  2. -
  3. Check Robust Stability (RS). Determine whether the system remains stable for all plants in the uncertainty set
  4. -
  5. Check Robust Performance (RP). If RS is satisfied, determine whether the performance specifications are met for all plants in the uncertainty set
  6. -
-

This approach may not always achieve optimal performance. In particular, if the worst case plant rarely occurs, other approaches, such as optimizing some average performance or using adaptive control may yield better performance.

-

To account for model uncertainty, we will assume that the dynamic behavior of a plant is described not by a single linear time invariant model but by a set \(\Pi\) of possible linear time invariant models, sometimes denoted the “uncertainty set".

-

We adopt the following notation:

-
    -
  • \(\Pi\) - a set of possible perturbed plant models
  • -
  • \(G(s) \in \Pi\) - nominal plant model
  • -
  • \(G_p(s) \in \Pi\) - particular perturbed plant models
  • -
-

We will use a “norm-bounded uncertainty description” where the set \(\Pi\) is generated by allowing \(\hinf\) norm-bounded stable perturbations to the nominal plant \(G(s)\). -We let \(E\) denote a perturbation which is not normalized, and let \(\Delta\) denote a normalized perturbation with its \(\hinf\) norm less than 1.

-

Representing Uncertainty

-

Uncertainty in the plant model may have several origins:

-
    -
  1. There are always parameters in the linear model which are only known approximatively
  2. -
  3. Parameters in the model may vary due to non-linearities or changes in the operating conditions
  4. -
  5. Measurement devices have imperfections
  6. -
  7. At high frequencies, even the structure and the model order is unknown, and the uncertainty will always exceed \(\SI{100}{\percent}\) at some frequency
  8. -
  9. Even when a very detailed model is available, we may choose to work with a simpler nominal model and represent the neglected dynamics as “uncertainty”
  10. -
  11. The controller implemented may differ from the one obtained by solving the synthesis problem. -One may include uncertainty to allow for controller order reduction and implementation inaccuracies
  12. -
-

The various sources of model uncertainty may be grouped into two main classes:

-
    -
  1. Parametric uncertainty. The structure of the model is known, but some parameters are uncertain
  2. -
  3. Neglected and unmodelled dynamics uncertainty. The model is in error because of missing dynamics, usually at high frequencies
  4. -
-
-
-

Parametric uncertainty will be quantified by assuming that each uncertain parameters is bounded within some region \([\alpha_{\min}, \alpha_{\text{max}}]\). That is, we have parameter sets of the form

-

\begin{equation} -\alpha_p = \bar{\alpha}(1 + r_\alpha \Delta); \quad r_\alpha = \frac{\alpha_{\text{max}} - \alpha_{\min}}{\alpha_{\text{max}} + \alpha_{\min}} -\end{equation}

-

where \(\bar{\alpha}\) is the mean parameter value, \(r_\alpha\) is the relative uncertainty in the parameter, and \(\Delta\) is any real scalar satisfying \(\abs{\Delta} \le 1\).

-
-

Neglected and unmodelled dynamics uncertainty is somewhat less precise and thus more difficult to quantify, but it appears that frequency domain is particularly well suited for this class. -This leads to complex perturbations which we normalize such that \(\hnorm{\Delta} \le 1\).

-

There is also a third class of uncertainty (which is a combination of the other two) called Lumped uncertainty. -Here the uncertainty description represents one or several sources of parametric and/or unmodelled dynamics uncertainty combined into a single lumped perturbation of a chosen structure. -The frequency domain is also well suited for describing lumped uncertainty.

-
-
-

In most cases, we prefer to lump the uncertainty into a multiplicative uncertainty of the form -\[ G_p(s) = G(s)(1 + w_I(s)\Delta_I(s)); \quad \abs{\Delta_I(j\w)} \le 1 , \forall\w \] -which may be represented by the diagram in Fig. fig:input_uncertainty_set.

-
-

-
- Figure 13: Plant with multiplicative uncertainty
-

Figure 13: Plant with multiplicative uncertainty

-
-
- -

Parametric Uncertainty

-

Parametric uncertainty may also be represented in the \(\hinf\) framework if we restrict \(\Delta\) to be real.

-
-
-

\[ G_p(s) = k_p G_0(s); \quad k_{\min} \le k_p \le k_{\text{max}} \] -where \(k_p\) is an uncertain gain and \(G_0(s)\) is a transfer function with no uncertainty. -By writing \(k_p = \bar{k}(1 + r_k \Delta)\) where \(r_k\) is the relative magnitude of the gain uncertainty and \(\bar{k}\) is the average gain, be may write -\[ G_p = \underbrace{\bar{k}G_0(s)}_{G(s)} (1 + r_k \Delta), \quad \abs{\Delta} \le 1 \] -where \(\Delta\) is a real scalar and \(G(s)\) is the nominal plant.

-
-
-
-

\[ G_p(s) = \frac{1}{\tau_p s + 1}G_0(s); \quad \tau_{\min} \le \tau_p \le \tau_{\text{max}} \] -By writing \(\tau_p = \bar{\tau}(1 + r_\tau \Delta)\), with \(\abs{\Delta} \le 1\), the model set can be rewritten as -\[ G_p(s) = \frac{G_0}{1+\bar{\tau} s + r_\tau \bar{\tau} s \Delta} = \underbrace{\frac{G_0}{1+\bar{\tau}s}}_{G(s)} \frac{1}{1 + w_{iI}(s) \Delta} \] -with \(\displaystyle w_{iI}(s) = \frac{r_\tau \bar{\tau} s}{1 + \bar{\tau} s}\).

-
-

As shown in the two examples, one can represent parametric uncertainty in the \(\hinf\) framework. -However, parametric uncertainty is often avoided for the following reasons:

-
    -
  1. It usually requires a large effort to model parametric uncertainty
  2. -
  3. A parametric uncertainty model is somewhat deceiving in the sense that it provides a very detailed and accurate description, even though the underlying assumptions about the model and the parameters may be much less exact
  4. -
  5. The exact model structure is required and so unmodelled dynamics cannot be dealt with
  6. -
  7. Real perturbations are required, which are more difficult to deal with mathematically and numerically, especially when it comes to controller synthesis
  8. -
-

Therefore, parametric uncertainty is often represented by complex perturbations. For example, we may simply replace the real perturbation, \(-1 \le \Delta \le 1\) by a complex perturbation with \(\abs{\Delta(j\w)} \le 1\). -This is of course conservative as it introduces possible plants that are not present in the original set. However, if there are several real perturbations, then the conservatism if often reduced by lumping these perturbations into a single complex perturbation.

-

Representing Uncertainty in the Frequency Domain

-

Uncertain Regions

-

To illustrate how parametric uncertainty translate into frequency domain uncertainty, consider in Fig. fig:uncertainty_region the Nyquist plots generated by the following set of plants -\[ G_p(s) = \frac{k}{\tau s + 1} e^{-\theta s}, \quad 2 \le k, \theta, \tau \le 3 \]

-
    -
  • Step 1. At each frequency, a region of complex numbers \(G_p(j\w)\) is generated by varying the parameters. -In general, these uncertain regions have complicated shapes and complex mathematical descriptions
  • -
  • Step 2. We therefore approximate such complex regions as discs, resulting in a complex additive uncertainty description
  • -
-

-
- Figure 14: Uncertainty regions of the Nyquist plot at given frequencies
-

Figure 14: Uncertainty regions of the Nyquist plot at given frequencies

-
-
- -

Representing Uncertainty Regions by Complex Perturbations

-
-
-

The disc-shaped regions may be generated by additive complex norm-bounded perturbations around a nominal plant \(G\)

-

\begin{equation} -\begin{aligned} -\Pi_A: \ G_p(s) &= G(s) + w_A(s) \Delta_A(s) \\\
-& \text{with }\abs{\Delta_A(j\w)} \le 1 , \forall\w -\end{aligned} -\end{equation}

-

At each frequency, all possible \(\Delta(j\w)\) “generates” a disc-shaped region with radius 1 centered at 0, so \(G(j\w) + w_A(j\w)\Delta_A(j\w)\) generates at each frequency a disc-shapes region of radius \(\abs{w_A(j\w)}\) centered at \(G(j\w)\) as shown in Fig. fig:uncertainty_disc_generated.

-
-

-
- Figure 15: Disc-shaped uncertainty regions generated by complex additive uncertainty
-

Figure 15: Disc-shaped uncertainty regions generated by complex additive uncertainty

-
-
- -
-
-

The disc-shaped region may alternatively be represented by a multiplicative uncertainty

-

\begin{equation} -\begin{aligned} -\Pi_I: \ G_p(s) &= G(s)(1 + w_I(s)\Delta_I(s)); \\\
-& \text{with }\abs{\Delta_I(j\w)} \le 1 , \forall\w -\end{aligned} -\end{equation}

-
-

And we see that for SISO systems, additive and multiplicative uncertainty are equivalent if at each frequency: -\[ \abs{w_I(j\w)} = \abs{w_A(j\w)}/\abs{G(j\w)} \]

-

However, multiplicative weights are often preferred because their numerical value is more informative. At frequencies where \(\abs{w_I(j\w)} > 1\) the uncertainty exceeds \(\SI{100}{\percent}\) and the Nyquist curve may pass through the origin. -Then, at these frequencies, we do not know the phase of the plant, and we allow for zeros crossing from the left to the right-half plane. Tight control is then not possible at frequencies where \(\abs{w_I(j\w)} \ge 1\).

-

Obtaining the Weight for Complex Uncertainty

-

Consider a set \(\Pi\) of possible plants resulting, for example, from parametric uncertainty. We now want to describe this set of plants by a single complex perturbation \(\Delta_A\) or \(\Delta_I\).

-

This complex disc-shaped uncertainty description may be generated as follows:

-
    -
  1. Select a nominal \(G(s)\)
  2. -
  3. Additive uncertainty. -At each frequency, find the smallest radius \(l_A(\w)\) which includes all the possible plants \(\Pi\) -\[ l_A(\w) = \max_{G_p\in\Pi} \abs{G_p(j\w) - G(j\w)} \] -If we want a rational transfer function weight, \(w_A(s)\), then it must be chosen to cover the set, so -\[ \abs{w_A(j\w)} \ge l_A(\w) \quad \forall\w \] -Usually \(w_A(s)\) is of low order to simplify the controller design.
  4. -
  5. Multiplicative uncertainty. -This is often the preferred uncertainty form, and we have -\[ l_I(\w) = \max_{G_p\in\Pi} \abs{\frac{G_p(j\w) - G(j\w)}{G(j\w)}} \] -and with a rational weight \(\abs{w_I(j\w)} \ge l_I(\w), , \forall\w\)
  6. -
-
-
-

We want to represent the following set using multiplicative uncertainty with a rational weight \(w_I(s)\) -\[ \Pi: \quad G_p(s) = \frac{k}{\tau s + 1} e^{-\theta s}, \quad 2 \le k, \theta, \tau \le 3 \] -To simplify subsequent controller design, we select a delay-free nominal model -\[ G(s) = \frac{\bar{k}}{\bar{\tau} s + 1} = \frac{2.5}{2.5 s + 1} \]

-

To obtain \(l_I(\w)\), we consider three values (2, 2.5 and 3) for each of the three parameters (\(k, \theta, \tau\)). -The corresponding relative errors \(\abs{\frac{G_p-G}{G}}\) are shown as functions of frequency for the \(3^3 = 27\) resulting \(G_p\) (Fig. fig:uncertainty_weight). -To derive \(w_I(s)\), we then try to find a simple weight so that \(\abs{w_I(j\w)}\) lies above all the dotted lines.

-
-

-
- Figure 16: Relative error for 27 combinations of \(k,\ \tau\) and \(\theta\). Solid and dashed lines: two weights \(\abs{w_I}\)
-

Figure 16: Relative error for 27 combinations of \(k,\ \tau\) and \(\theta\). Solid and dashed lines: two weights \(\abs{w_I}\)

-
-
- -

Choice of Nominal Model

-

With parametric uncertainty represented as complex perturbations, there are three main options for the choice of nominal model:

-
    -
  1. A simplified model, for instance a low order, delay free model. -It usually yields the largest uncertainty region, but the model is simple and this facilitates controller design in later stages.
  2. -
  3. A model of mean parameter values, \(G(s) = \bar{G}(s)\). -It is probably the most straightforward choice.
  4. -
  5. The central plant obtained from a Nyquist plot. -It yields the smallest region, but in this case a significant effort may be required to obtain the nominal model which is usually not a rational transfer function.
  6. -
-

For SISO systems, we find that for plants with an uncertain time delay, it is simplest and sometimes best to use a delay-free nominal model, and to represent the nominal delay as additional uncertainty.

-

If we use a parametric uncertainty description, based on multiple real perturbations, then we should always use the mean parameter values in the nominal model.

-

Neglected Dynamics Represented as Uncertainty

-

We saw that one advantage of frequency domain uncertainty description is that one can choose to work with a simple nominal model, and represent neglected dynamics as uncertainty.

-

Consider a set of plants -\[ G_p(s) = G_0(s) f(s) \] -where \(G_0(s)\) is fixed. -We want to neglect the term \(f(s) \in \Pi_f\), and represent \(G_p\) by multiplicative uncertainty with a nominal model \(G = G_0\).

-

The magnitude of the relative uncertainty caused by neglecting the dynamics in \(f(s)\) is -\[ l_I(\w) = \max_{G_p} \abs{\frac{G_p - G}{G}} = \max_{f(s) \in \Pi_f} \abs{f(j\w) - 1} \]

-
Neglected delay
-

Let \(f(s) = e^{-\theta_p s}\), where \(0 \le \theta_p \le \theta_{\text{max}}\). We want to represent \(G_p(s) = G_0(s)e^{-\theta_p s}\) by a delay-free plant \(G_0(s)\) and multiplicative uncertainty. Let first consider the maximum delay, for which the relative error \(\abs{1 - e^{-j \w \theta_{\text{max}}}}\) is shown as a function of frequency (Fig. fig:neglected_time_delay). If we consider all \(\theta \in [0, \theta_{\text{max}}]\) then: -\[ l_I(\w) = \begin{cases} \abs{1 - e^{-j\w\theta_{\text{max}}}} & \w < \pi/\theta_{\text{max}} \ 2 & \w \ge \pi/\theta_{\text{max}} \end{cases} \]

-

-
- Figure 17: Neglected time delay
-

Figure 17: Neglected time delay

-
-
- -
Neglected lag
-

Let \(f(s) = 1/(\tau_p s + 1)\), where \(0 \le \tau_p \le \tau_{\text{max}}\). In this case the resulting \(l_I(\w)\) (Fig. fig:neglected_first_order_lag) can be represented by a rational transfer function with \(\abs{w_I(j\w)} = l_I(\w)\) where -\[ w_I(s) = \frac{\tau_{\text{max}} s}{\tau_{\text{max}} s + 1} \]

-

-
- Figure 18: Neglected first-order lag uncertainty
-

Figure 18: Neglected first-order lag uncertainty

-
-
- -
Multiplicative weight for gain and delay uncertainty
-

Consider the following set of plants -\[ G_p = k_p e^{-\theta_p s} G_0(s); \quad k_p \in [k_{\min}, k_{\text{max}}], \ \theta_p \in [\theta_{\min}, \theta_{\text{max}}] \] -which we want to represent by multiplicative uncertainty and a delay-free nominal model \(G(s) = \bar{k} G_0(s)\). -There is an exact expression, its first order approximation is -\[ w_I(s) = \frac{(1+\frac{r_k}{2})\theta_{\text{max}} s + r_k}{\frac{\theta_{\text{max}}}{2} s + 1} \] -However, as shown in Fig. fig:lag_delay_uncertainty, the weight \(w_I\) is optimistic, especially around frequencies \(1/\theta_{\text{max}}\). To make sure that \(\abs{w_I(j\w)} \le l_I(\w)\), we can apply a correction factor: -\[ w_I^\prime(s) = w_I \cdot \frac{(\frac{\theta_{\text{max}}}{2.363})^2 s^2 + 2\cdot 0.838 \cdot \frac{\theta_{\text{max}}}{2.363} s + 1}{(\frac{\theta_{\text{max}}}{2.363})^2 s^2 + 2\cdot 0.685 \cdot \frac{\theta_{\text{max}}}{2.363} s + 1} \]

-

It is suggested to start with the simple weight and then if needed, to try the higher order weight.

-

-
- Figure 19: Multiplicative weight for gain and delay uncertainty
-

Figure 19: Multiplicative weight for gain and delay uncertainty

-
-
- -

Unmodelled Dynamics Uncertainty

-

The most important reason for using frequency domain (\(\hinf\)) uncertainty description and complex perturbations, is the incorporation of unmodelled dynamics. -Unmodelled dynamics, while being close to neglected dynamics, also include unknown dynamics of unknown or even infinite order.

-
-
-

To represent unmodelled dynamics, we usually use a simple multiplicative weight of the form

-

\begin{equation} -w_I(s) = \frac{\tau s + r_0}{(\tau/r_\infty) s + 1} -\end{equation}

-

where \(r_0\) is the relative uncertainty at steady-state, \(1/\tau\) is the frequency at which the relative uncertainty reaches \(\SI{100}{\percent}\), and \(r_\infty\) is the magnitude of the weight at high frequency.

-
-

SISO Robust Stability

-

RS with Multiplicative Uncertainty

-

We want to determine the stability of the uncertain feedback system in Fig. fig:feedback_multiplicative_uncertainty where there is multiplicative uncertainty of magnitude \(\abs{w_I(j\w)}\). -The loop transfer function becomes -\[ L_P = G_p K = G K (1 + w_I \Delta_I) = L + w_I L \Delta_I \] -We assume (by design) the stability of the nominal closed-loop system (with \(\Delta_I = 0\)). -We use the Nyquist stability condition to test for robust stability of the closed loop system:

-

\begin{align*} -\text{RS} \quad &\stackrel{\text{def}}{\Longleftrightarrow} \quad \text{System stable} \ \forall L_p \\\
-&\Longleftrightarrow \quad L_p \ \text{should not encircle -1}, \ \forall L_p -\end{align*}

-

-
- Figure 20: Feedback system with multiplicative uncertainty
-

Figure 20: Feedback system with multiplicative uncertainty

-
-
- -
Graphical derivation of RS-condition
-

Consider the Nyquist plot of \(L_p\) as shown in Fig. fig:nyquist_uncertainty. \(\abs{1+L}\) is the distance from the point \(-1\) to the center of the disc representing \(L_p\) and \(\abs{w_I L}\) is the radius of the disc. -Encirclements are avoided if none of the discs cover \(-1\), and we get:

-

\begin{align*} -\text{RS} \quad &\Leftrightarrow \quad \abs{w_I L} < \abs{1 + L}, \ \forall\w \\\
-&\Leftrightarrow \quad \abs{\frac{w_I L}{1 + L}} < 1, \ \forall\w \\\
-&\Leftrightarrow \quad \abs{w_I T} < 1, \ \forall\w \\\
-\end{align*}

-

-
- Figure 21: Nyquist plot of \(L_p\) for robust stability
-

Figure 21: Nyquist plot of \(L_p\) for robust stability

-
-
- -
-
-

The requirement of robust stability for the case with multiplicative uncertainty gives an upper bound on the complementary sensitivity

-

\begin{equation} -\text{RS} \quad \Leftrightarrow \quad \abs{T} < 1/\abs{w_I}, \ \forall\w -\end{equation}

-
-

We see that we have to make \(T\) small at frequencies where the relative uncertainty \(\abs{w_I}\) exceeds 1 in magnitude.

-
Algebraic derivation of RS-condition
-

Since \(L_p\) is assumed stable, and the nominal closed-loop is stable, the nominal loop transfer function \(L(j\w)\) does not encircle -1. Therefore, since the set of plants is norm-bounded, it then follows that if some \(L_{p1}\) in the uncertainty set encircles -1, then there must be another \(L_{p2}\) in the uncertainty set which goes exactly through -1 at some frequency. Thus

-

\begin{align*} -\text{RS} \quad & \Leftrightarrow \abs{1 + L_p} \ne 0,\ \forall L_p,,\forall \w\\\
-& \Leftrightarrow \abs{1 + L_p} > 0,\ \forall L_p,,\forall \w\\\
-& \Leftrightarrow \abs{1 + L + w_I L \Delta_I} > 0,\ \forall \abs{\Delta_I} \le 1,,\forall \w\\\
-\end{align*}

-

At each frequency, the last condition is most easily violated when the complex number \(\Delta_I(j\w)\) is selected with \(\abs{\Delta(j\w)} = 1\) and with phase such that \(1+L\) and \(w_I L \Delta_I\) point in the opposite direction. Thus -\[ \text{RS} \ \Leftrightarrow \ \abs{1 + L} - \abs{w_I L} > 0, \ \forall\w \ \Leftrightarrow \ \abs{w_I T} < 1, \ \forall\w \] -And we obtain the same condition as before.

-

RS with Inverse Multiplicative Uncertainty

-

We will derive a corresponding RS-condition for feedback system with inverse multiplicative uncertainty (Fig. fig:inverse_uncertainty_set) in which -\[ G_p = G(1 + w_{iI}(s) \Delta_{iI})^{-1} \]

-

-
- Figure 22: Feedback system with inverse multiplicative uncertainty
-

Figure 22: Feedback system with inverse multiplicative uncertainty

-
-
- -

We assume that \(L_p\) and the nominal closed-loop systems are stable. Robust stability is guaranteed if \(L_p(j\w)\) does not encircles the point -1:

-

\begin{align*} -\text{RS} \quad &\Leftrightarrow \quad \abs{1 + L_p} > 0, \ \forall L_p, , \forall\w\\\
-&\Leftrightarrow \quad \abs{1 + L (1 + w_{iI} \Delta_{iI})^{-1}} > 0, \ \forall \abs{\Delta_{iI}} < 1, , \forall\w\\\
-&\Leftrightarrow \quad \abs{1 + w_{iI} \Delta_{iI} + L} > 0, \ \forall \abs{\Delta_{iI}} < 1, , \forall\w\\\
-&\Leftrightarrow \quad \abs{1 + L} - \abs{w_{iI} \Delta_{iI}} > 0, \ \forall\w\\\
-&\Leftrightarrow \quad \abs{w_{iI} S} < 1, \ \forall\w\\\
-\end{align*}

-
-
-

The requirement for robust stability for the case with inverse multiplicative uncertainty gives an upper bound on the sensitivity

-

\begin{equation} -\text{RS} \quad \Leftrightarrow \quad \abs{S} < 1/\abs{w_{iI}}, \ \forall\w -\end{equation}

-

We see that we need tight control and have to make \(S\) small at frequencies where the uncertainty is large and \(w_{iI}\) exceeds 1 in magnitude.

-
-

The reason is that the uncertainty represents pole uncertainty, and at frequencies where \(\abs{w_{iI}}\) exceeds 1, we allow for poles crossing from the left to the right-half plant, and we then need feedback (\(\abs{S} < 1\)) in order to stabilize the system.

-

SISO Robust Performance

-

SISO Nominal Performance

-
-
-

The condition for nominal performance when considering performance in terms of the weighted sensitivity function is

-

\begin{equation} -\begin{aligned} -\text{NP} &\Leftrightarrow \abs{w_P S} < 1 \ \forall\omega \\\
-&\Leftrightarrow \abs{w_P} < \abs{1 + L} \ \forall\omega -\end{aligned} -\end{equation}

-
-

Now \(\abs{1 + L}\) represents at each frequency the distance of \(L(j\omega)\) from the point \(-1\) in the Nyquist plot, so \(L(j\omega)\) must be at least a distance of \(\abs{w_P(j\omega)}\) from \(-1\). -This is illustrated graphically in Fig. fig:nyquist_performance_condition.

-

-
- Figure 23: Nyquist plot illustration of the nominal performance condition \(\abs{w_P} &lt; \abs{1 + L}\)
-

Figure 23: Nyquist plot illustration of the nominal performance condition \(\abs{w_P} < \abs{1 + L}\)

-
-
- -

Robust Performance

-
-
-

For robust performance, we require the performance condition to be satisfied for all possible plants:

-

\begin{equation} -\begin{aligned} -\text{RP}\ &\overset{\text{def}}{\Leftrightarrow}\ \abs{w_P S} < 1 \quad \forall S_p, \forall \omega\\\
-\ &\Leftrightarrow\ \abs{w_P} < \abs{1 + L_p} \quad \forall L_p, \forall \omega -\end{aligned} -\end{equation}

-
-

Let’s consider the case of multiplicative uncertainty as shown on Fig. fig:input_uncertainty_set_feedback_weight_bis. -The robust performance corresponds to requiring \(\abs{\hat{y}/d}<1\ \forall \Delta_I\) and the set of possible loop transfer functions is -\[ L_p = G_p K = L (1 + w_I \Delta_I) = L + w_I L \Delta_I \]

-

-
- Figure 24: Diagram for robust performance with multiplicative uncertainty
-

Figure 24: Diagram for robust performance with multiplicative uncertainty

-
-
- -
Graphical derivation of RP-condition
-

As illustrated on Fig. fig:nyquist_performance_condition, we must required that all possible \(L_p(j\omega)\) stay outside a disk of radius \(\abs{w_P(j\omega)}\) centered on \(-1\). -Since \(L_p\) at each frequency stays within a disk of radius \(|w_I(j\omega) L(j\omega)|\) centered on \(L(j\omega)\), the condition for RP becomes:

-

\begin{align*} -\text{RP}\ &\Leftrightarrow\ \abs{w_P} + \abs{w_I L} < \abs{1+L} \quad \forall\omega\\\
-&\Leftrightarrow\ \abs{w_P(1 + L)^{-1}} + \abs{w_I L(1 + L)^{-1}} < 1 \quad \forall\omega\\\
-\end{align*}

-
-
-

Finally, we obtain the following condition for Robust Performance:

-

\begin{equation} -\text{RP} \ \Leftrightarrow\ \max_{\omega} \left(\abs{w_P S} + \abs{w_I T} \right) < 1 -\end{equation}

-
-
Algebraic derivation of RP-condition
-

RP is satisfied if the worst-case weighted sensitivity at each frequency is less than \(1\): -\[ \text{RP} \ \Leftrightarrow\ \max_{S_p} \abs{w_P S_p} < 1, \quad \forall\omega \]

-

The perturbed sensitivity \(S_p\) is -\[ S_p = \frac{1}{1 + L_p} = \frac{1}{1 + L + w_I L \Delta_I} \] -Thus: -\[ \max_{S_p} \abs{w_P S_p} = \frac{\abs{w_P}}{\abs{1 + L} - \abs{w_I L}} = \frac{\abs{w_P S}}{1 - \abs{w_I T}} \] -And we obtain the same RP-condition as the graphically derived one.

-
Remarks on RP-condition
-
    -
  1. -

    The RP-condition for this problem is closely approximated by the mixed sensitivity \(\hinf\) condition: -\[ \tcmbox{\hnorm{\begin{matrix}w_P S \ w_I T\end{matrix}} = \max_{\omega} \sqrt{\abs{w_P S}^2 + \abs{w_I T}^2} <1} \] -This condition is within a factor at most \(\sqrt{2}\) of the true RP-condition. -This means that for SISO systems, we can closely approximate the RP-condition in terms of an \(\hinf\) problem, so there is no need to make use of the structured singular value. -However, we will see that the situation can be very different for MIMO systems.

    -
  2. -
  3. -

    The RP-condition can be used to derive bounds on the loop shape \(\abs{L}\):

    -

    \begin{align*} -\abs{L} &> \frac{1 + \abs{w_P}}{1 - \abs{w_I}}, \text{ at frequencies where } \abs{w_I} < 1\\\
    -\abs{L} &< \frac{1 - \abs{w_P}}{1 + \abs{w_I}}, \text{ at frequencies where } \abs{w_P} < 1\\\
    -\end{align*}

    -
  4. -
-

The Relationship Between NP, RS and RP

-

Consider a SISO system with multiplicative input uncertainty, and assume that the closed-loop is nominally stable (NS). -The conditions for nominal performance (NP), robust stability (RS) and robust performance (RP) as summarized as follows:

-
-
-

\begin{subequations} -\begin{align} -\text{NP} & \Leftrightarrow |w_P S| < 1,\ \forall \omega \\\
-\text{RS} & \Leftrightarrow |w_I T| < 1,\ \forall \omega \\\
-\text{RP} & \Leftrightarrow |w_P S| + |w_I T| < 1,\ \forall \omega -\end{align} -\end{subequations}

-
-

From this we see that a prerequisite for RP is that we satisfy both NP and RS. -This applies in general, both for SISO and MIMO systems and for any uncertainty.

-

In addition, for SISO systems, if we satisfy both RS and NP, then we have at each frequency: -\[ |w_P S| + |w_I T| < 2 \cdot \max \{|w_P S|, |w_I T|\} < 2 \] -It then follows that, within a factor at most 2, we will automatically get RP when NP and RS are satisfied. -This, RP is not a “big issue” for SISO systems.

-

To satisfy RS we generally want \(T\) small, whereas to satisfy \(NP\) we generally want \(S\) small. -However, we cannot make both \(S\) and \(T\) small at the same frequency because of the identity \(S + T = 1\). -This has implications for RP:

-

\begin{align*} -|w_P S| + |w_I T| &\ge \text{min}\{|w_P|, |w_I|\}(|S| + |T|) \\\
-&\ge \text{min}\{|w_P|, |w_I|\}(|S + T|) \\\
-&\ge \text{min}\{|w_P|, |w_I|\} -\end{align*}

-

This means that we cannot have both \(|w_P|>1\) (i.e. good performance) and \(|w_I|>1\) (i.e. more than \(\si{100}{%}\) uncertainty) at the same frequency.

-

Examples of Parametric Uncertainty

-

Parametric Pole Uncertainty

-

Consider the following set of plants: -\[ G_p(s) = \frac{1}{s - a_p} G_0(s); \quad a_\text{min} \le a_p \le a_{\text{max}} \]

-

If \(a_\text{min}\) and \(a_\text{max}\) have different signs, then this means that the plant can change from stable to unstable with the pole crossing through the origin.

-

This set of plants can be written as -\[ G_p(s) = \frac{G_0(s)}{s - \bar{a}(1 + r_a \Delta)}; \quad -1 \le \Delta \le 1 \] -which can be exactly described by inverse multiplicative uncertainty: -\[ G(s) = \frac{G_0(s)}{(s - \bar{a})}; \quad w_{iI}(s) = \frac{r_a \bar{a}}{s - \bar{a}} \]

-

The magnitude of \(w_{iI}(s)\) is equal to \(r_a\) at low frequency and goes to \(0\) at high frequencies.

-
Time constant form
-

It is also interesting to consider another form of pole uncertainty, namely that associated with the time constant: -\[ G_p(s) = \frac{1}{\tau_p s + 1} G_0(s); \quad \tau_\text{min} \le \tau_p \le \tau_\text{max} \]

-

The corresponding uncertainty weight is -\[ w_{iI}(s) = \frac{r_\tau \bar{\tau} s}{1 + \bar{\tau} s} \]

-

This results in uncertainty in the pole location, but here the uncertainty affects the model at high frequency.

-

Parametric Zero Uncertainty

-

Consider zero uncertainty in the “time constant” form as in: -\[ G_p(s) = (1 + \tau_p s)G_0(s); \quad \tau_\text{min} \le \tau_p \le \tau_\text{max} \]

-

This set of plants may be written as multiplicative uncertainty with: -\[ w_I(s) = \frac{r_\tau \bar{\tau} s}{1 + \bar{\tau} s} \] -The magnitude \(|w_I(j\omega)|\) is small at low frequencies and approaches \(r_\tau\) at high frequencies. -For cases with \(r_\tau > 1\) we allow the zero to cross from the LHP to the RHP.

-

Parametric State-Space Uncertainty

-

A general procedure for handling parametric uncertainty which is more suited for numerical calculations, is parametric state-space uncertainty. -Consider an uncertain state-space model:

-

\begin{align*} -\dot{x} &= A_p x + B_p u \\\
-y &= C_p x + D_p u -\end{align*}

-

Assume that the underlying cause for the uncertainty is uncertainty in some real parameters \(\delta_1, \delta_2, \dots\) and assume that the state space matrices depends linearly on these parameters:

-

\begin{align*} -A_p = A + \sum \delta_i A_i; \quad & B_p = B + \sum \delta_i B_i \\\
-C_p = C + \sum \delta_i C_i; \quad & D_p = D + \sum \delta_i D_i -\end{align*}

-

where \(A\), \(B\), \(C\) and \(D\) model the nominal system.

-

We can collect the perturbations \(\delta_i\) in a large diagonal matrix \(\Delta\) with the real \(\delta_i\)‘s along its diagonal: -\[ A_p = A + \sum \delta_i A_i = A + W_2 \Delta W_1 \]

-

In the transfer function form:

-

\begin{align*} -(s I - A_p)^{-1} &= (sI - A - W_2 \Delta W_1)^{-1} \\\
-&= (I - \Phi(s) W_2 \Delta W_1)^{-1} \Phi(s) -\end{align*}

-

with \(\Phi(s) \triangleq (sI - A)^{-1}\).

-

This is illustrated in the block diagram of Fig. fig:uncertainty_state_a_matrix, which is in the form of an inverse additive perturbation.

-

-
- Figure 25: Uncertainty in state space A-matrix
-

Figure 25: Uncertainty in state space A-matrix

-
-
- -

Conclusion

-

Model uncertainty for SISO systems can be represented in the frequency domain using complex norm-bounded perturbations \(\hnorm{\Delta} \le 1\).

-

Requirements of robust stability for the case of multiplicative complex uncertainty imposes an upper bound on the allowed complementary sensitivity, \(\abs{w_I T} < 1, \ \forall\w\).

-

Similarly, the inverse multiplicative uncertainty imposes an upper bound on the sensitivity, \(\abs{w_{iI} S} < 1, \ \forall\w\).

-

We also derived a condition for robust performance with multiplicative uncertainty, \(\abs{w_P S} + \abs{w_I T} < 1, \ \forall\w\).

-

Robust Stability and Performance Analysis

-

-

General Control Configuration with Uncertainty

-

The starting point for our robustness analysis is a system representation in which the uncertain perturbations are “pulled out” into a block diagonal matrix -\[ \Delta = \text{diag} \{\Delta_i\} = \begin{bmatrix}\Delta_1 \ & \ddots \ & & \Delta_i \ & & & \ddots \end{bmatrix} \] -where each \(\Delta_i\) represents a specific source of uncertainty, e.g. input uncertainty \(\Delta_I\) or parametric uncertainty \(\delta_i\).

-

If we also pull out the controller \(K\), we get the generalized plant \(P\) as shown in Fig. fig:general_control_delta. This form is useful for controller synthesis.

-

-
- Figure 26: General control configuration used for controller synthesis
-

Figure 26: General control configuration used for controller synthesis

-
-
- -

If the controller is given and we want to analyze the uncertain system, we use the \(N\Delta\text{-structure}\) in Fig. fig:general_control_Ndelta.

-

-
- Figure 27: \(N\Delta\text{-structure}\) for robust performance analysis
-

Figure 27: \(N\Delta\text{-structure}\) for robust performance analysis

-
-
- -

\(N\) is related to \(P\) and \(K\) by a lower LFT

-

\begin{align*} -N &= F_l(P, K) \\\
-&\triangleq P_{11} + P_{12} K (I - P_{22}K)^{-1} P_{21} -\end{align*}

-

Similarly, the uncertain closed-loop transfer function from \(w\) to \(z\), is related to \(N\) and \(\Delta\) by an upper LFT

-

\begin{align*} -F &= F_u(N, \Delta) \\\
-&\triangleq N_{22} + N_{21} \Delta (I - N_{11} \Delta)^{-1} N_{12} -\end{align*}

-

To analyze robust stability of \(F\), we can rearrange the system into the \(M\Delta\text{-structure}\) shown in Fig. fig:general_control_Mdelta_bis where \(M = N_{11}\) is the transfer function from the output to the input of the perturbations.

-

-
- Figure 28: \(M\Delta\text{-structure}\) for robust stability analysis
-

Figure 28: \(M\Delta\text{-structure}\) for robust stability analysis

-
-
- -

Representing Uncertainty

-

Each individual perturbation is assumed to be stable and normalized: -\[ \maxsv(\Delta_i(j\w)) \le 1 \quad \forall\w \]

-

As the maximum singular value of a block diagonal matrix is equal to the largest of the maximum singular values of the individual blocks, it then follows for \(\Delta = \text{diag}\{\Delta_i\}\) that -\[ \maxsv(\Delta_i(j\w)) \le 1 \quad \forall\w, \forall i \quad \Leftrightarrow \quad \tcmbox{\hnorm{\Delta} \le 1} \]

-

Differences Between SISO and MIMO Systems

-

The main difference between SISO and MIMO systems is the concept of directions which is only relevant in the latter. -As a consequence, MIMO systems may experience much larger sensitivity to uncertainty than SISO systems.

-

Parametric Uncertainty

-

The representation of parametric uncertainty for MIMO systems is the same as for SISO systems. -However, the inclusion of parametric uncertainty may be more significant for MIMO plants because it offers a simple method of representing uncertain transfer function elements.

-

Unstructured Uncertainty

-

Unstructured perturbations are often used to get a simple uncertainty model. -We here define unstructured uncertainty as the use of a “full” complex perturbation matrix \(\Delta\), usually with dimensions compatible with those of the plant, where at each frequency any \(\Delta(j\w)\) satisfying \(\maxsv(\Delta(j\w)) < 1\) is allowed.

-

Three common forms of feedforward unstructured uncertainty are shown Fig. fig:feedforward_uncertainty: additive uncertainty, multiplicative input uncertainty and multiplicative output uncertainty.

-
-
-

\begin{alignat*}{3} -&\Pi_A: \quad &&G_p = G + E_A; \quad& &E_a = w_A \Delta_a \\\
-&\Pi_I: \quad &&G_p = G(I + E_I); \quad& &E_I = w_I \Delta_I \\\
-&\Pi_O: \quad &&G_p = (I + E_O)G; \quad& &E_O = w_O \Delta_O -\end{alignat*}

-
-

-
- Table 4: - Common feedforward unstructured uncertainty -
- - - - - - - - - - - - - - - -
Additive uncertainty Multiplicative input uncertainty Multiplicative output uncertainty
-

In Fig. fig:feedback_uncertainty, three feedback or inverse unstructured uncertainty forms are shown: inverse additive uncertainty, inverse multiplicative input uncertainty and inverse multiplicative output uncertainty.

-
-
-

\begin{alignat*}{3} -&\Pi_{iA}: \quad &&G_p = G(I - E_{iA} G)^{-1}; & & \quad E_{ia} = w_{iA} \Delta_{ia} \\\
-&\Pi_{iI}: \quad &&G_p = G(I - E_{iI})^{-1}; & & \quad E_{iI} = w_{iI} \Delta_{iI} \\\
-&\Pi_{iO}: \quad &&G_p = (I - E_{iO})^{-1}G; & & \quad E_{iO} = w_{iO} \Delta_{iO} -\end{alignat*}

-
-

-
- Table 5: - Common feedback unstructured uncertainty -
- - - - - - - - - - - - - - - -
Inverse additive uncertainty Inverse multiplicative input uncertainty Inverse multiplicative output uncertainty
-
Lumping uncertainty into a single perturbation
-

For SISO systems, we usually lump multiple sources of uncertainty into a single complex perturbation; often in the multiplicative form. -This may be also done for MIMO systems, but then it makes a difference whether the perturbation is at the input or the output.

-

Since output uncertainty is frequently less restrictive than input uncertainty in terms of control performance, we first attempt to lump the uncertainty at the output. For example, a set of plant \(\Pi\) may be represented by multiplicative output uncertainty with a scalar weight \(w_O(s)\) using -\[ G_p = (I + w_O \Delta_O) G, \quad \hnorm{\Delta_O} \le 1 \] -where -\[ l_O(\w) = \max_{G_p \in \Pi} \maxsv\left( (G_p - G)G^{-1} \right); \ \abs{w_O(j\w)} \ge l_O(\w), , \forall\w \]

-

If the resulting uncertainty weight is reasonable and the analysis shows that robust stability and performance may be achieve, then this lumping of uncertainty at the output is fine. -If this is not the case, then one may try to lump the uncertainty at the input instead, using multiplicative input uncertainty with a scalar weight, -\[ G_p = G(I + w_I \Delta_I), \quad \hnorm{\Delta_I} \le 1 \] -where -\[ l_I(\w) = \max_{G_p \in \Pi} \maxsv\left( G^{-1}(G_p - G) \right); \ \abs{w_I(j\w)} \ge l_I(\w), , \forall\w \]

-

However, in many cases, this approach of lumping uncertainty either at the output or the input does not work well because it usually introduces additional plants that were not present in the original set.

-
Conclusion
-

Ideally, we would like to lump several sources of uncertainty into a single perturbation to get a simple uncertainty description. -Often an unstructured multiplicative output perturbation is used. -However, we should be careful about doing this, at least for plants with a large condition number. -In such cases we may have to represent the uncertainty as it occurs physically (at the input, in the elements, etc.) thereby generating several perturbations.

-

Diagonal Uncertainty

-

By “diagonal uncertainty” we mean that the perturbation is a complex diagonal matrix -\[ \Delta(s) = \text{diag}\{\delta_i(s)\}; \quad \abs{\delta_i(j\w)} \le 1, \ \forall\w, , \forall i \]

-

Diagonal uncertainty usually arises from a consideration of uncertainty or neglected dynamics in the individual input or output channels. -This type of diagonal uncertainty is always present.

-
-
-

Let us consider uncertainty in the input channels. With each input \(u_i\), there is a physical system (amplifier, actuator, etc.) which based on the controller output signal \(u_i\), generates a physical plant input \(m_i\) -\[ m_i = h_i(s) u_i \] -The scalar transfer function \(h_i(s)\) is often absorbed into the plant model \(G(s)\). -We can represent its uncertainty as multiplicative uncertainty -\[ h_{pi}(s) = h_i(s)(1 + w_{Ii}(s)\delta_i(s)); \quad \abs{\delta_i(j\w)} \le 1, , \forall\w \] -which after combining all input channels results in diagonal input uncertainty for the plant

-

\begin{align*} -G_p(s) = G(I + W_I \Delta_I) \text{ with } &\Delta_I = \diag{\delta_i} \\\
-&W_I = \diag{w_{Ii}} -\end{align*}

-
-

Normally, we would represent the uncertainty in each input or output channel using a simple weight in the form -\[ w(s) = \frac{\tau s + r_0}{(\tau/r_\infty)s + 1} \] -where \(r_0\) is the relative uncertainty at steady-state, \(1/\tau\) is the frequency where the relative uncertainty reaches \(\SI{100}{\percent}\), and \(r_\infty\) is the magnitude of the weight at high frequencies.

-

Diagonal input uncertainty should always be considered because:

-
    -
  • it is always present and a system which is sensitive to this uncertainty will not work in practice
  • -
  • it often restrict achievable performance with multivariable control
  • -
-

Obtaining \(P\), \(N\) and \(M\)

-

Let’s consider the feedback system with multiplicative input uncertainty \(\Delta_I\) shown Fig. fig:input_uncertainty_set_feedback_weight. -\(W_I\) is a normalization weight for the uncertainty and \(W_P\) is a performance weight.

-

-
- Figure 29: System with multiplicative input uncertainty and performance measured at the output
-

Figure 29: System with multiplicative input uncertainty and performance measured at the output

-
-
- -

We want to derive the generalized plant \(P\) which has inputs \([u_\Delta,\ w,\ u]^T\) and outputs \([y_\Delta,\ z,\ v]^T\).

-

By breaking the loop before and after \(K\) and \(\Delta_I\), we get -\[ P = \begin{bmatrix} -0 & 0 & W_I \\\
-W_P G & W_P & W_P G \\\
--G & -I & -G -\end{bmatrix} \]

-

Next, we want to derive the matrix \(N\). We fist partition \(P\) to be compatible with \(K\):

-

\begin{align*} -P_{11} = \begin{bmatrix}0&0\GW_P&W_P\end{bmatrix},\quad & P_{12} = \begin{bmatrix}W_I\GW_P\end{bmatrix} \\\
-P_{21} = \begin{bmatrix}G&-1\end{bmatrix}, \quad & P_{22} = -G \\\
-\end{align*}

-

and then we find \(N\) using \(N = F_l(P, K)\).

-

Definitions of Robust Stability and Robust Performance

-

The next step is to check whether we have stability and acceptable performance for all plant in the set:

-
    -
  1. Robust stability analysis: with a given controller \(K\) we determine whether the system remains stable for all plants in the uncertainty set
  2. -
  3. Robust performance analysis: is RS is satisfied, we determine how “large” the transfer function from exogenous inputs \(w\) to outputs \(z\) may be for all plants in the uncertainty set
  4. -
-

We have \(z = F(\Delta) \cdot w\) with

-

\begin{align*} -F &= F_u(N, \Delta) \\\
-&\triangleq N_{22} + N_{21}\Delta(I - N_{11}\Delta)^{-1} N_{12} -\end{align*}

-

We here use \(\hinf\) norm to define performance and require for RP that \(\hnorm{F(\Delta)} \le 1\) for all allowed \(\Delta\). -A typical choice is \(F = w_P S_P\) where \(w_P\) is the performance weight and \(S_P\) represents the set of perturbed sensitivity functions.

-
-
-

In terms of the \(N\Delta\text{-structure}\), our requirements for stability and performance can be summarized as follows:

-

\begin{align*} -\text{NS} &\ \stackrel{\text{def}}{\Longleftrightarrow} \ N \text{ is internally stable} \\\
-\text{NP} &\ \stackrel{\text{def}}{\Longleftrightarrow} \ \text{NS and } \hnorm{N_{22}} < 1 \\\
-\text{RS} &\ \stackrel{\text{def}}{\Longleftrightarrow} \ \text{NS and } F = F_u(N, \Delta) \text{ is stable } \forall\Delta \\\
-\text{RP} &\ \stackrel{\text{def}}{\Longleftrightarrow} \ \text{NS and } \hnorm{F} < 1, \quad \forall \Delta, ,\hnorm{\Delta} \le 1 \\\
-\end{align*}

-
-

Robust Stability for the \(M\Delta\text{-structure}\)

-

Consider the uncertain \(N\Delta\text{-system}\) for which the transfer function from \(w\) to \(z\) is -\[ F_u(N, \Delta) = N_{22} + N_{21}\Delta(I - N_{11}\Delta)^{-1} N_{12} \] -Suppose that the system is nominally stable (with \(\Delta = 0\)) that is \(N\) is stable. We also assume that \(\Delta\) is stable. -We then see from the above equation that the only possible source of instability is the feedback term \((I - N_{11}\Delta)^{-1}\). -Thus, when we have nominal stability, the stability of the \(N\Delta\text{-structure}\) is equivalent to the stability of the \(M\Delta\text{-structure}\) where \(M = N_{11}\).

-

We thus need to derive conditions for checking the stability of the \(M\Delta\text{-structure}\).

-
-
-

Assume that the nominal system \(M(s)\) and the perturbations \(\Delta(s)\) are stable. -Consider the convex set of perturbations \(\Delta\), such that if \(\Delta^\prime\) is an allowed perturbation then so is \(c\Delta^\prime\) where c is any real scalar such that \(\abs{c} \le 1\). -Then the \(M\Delta\text{-structure}\) is stable for all allowed perturbations if and only if the Nyquist plot of \(\det\left( I - M\Delta(s) \right)\) does not encircle the origin, \(\forall\Delta\):

-

\begin{equation} -\det( I - M\Delta(j\w)) \ne 0, \quad \forall\w, , \forall\Delta -\end{equation}

-
-
-
-

Assume that the nominal system \(M(s)\) and the perturbations \(\Delta(s)\) are stable. -Consider the class of perturbations, \(\Delta\), such that if \(\Delta^\prime\) is an allowed perturbation, then so is \(c\Delta^\prime\) where c is any complex scalar such that \(\abs{c} \le 1\). -Then the \(M\Delta\text{-structure}\) is stable for all allowed perturbations if and only if:

-

\begin{equation} -\begin{aligned} -&\rho(M\Delta(j\w)) < 1, \quad \forall\w, , \forall\Delta\\\
-\Leftrightarrow \quad &\max_{\Delta} \rho(M\Delta(j\w)) < 1, \quad \forall\w -\end{aligned} -\end{equation}

-
-

RS for Complex Unstructured Uncertainty

-

Let \(\Delta\) be the set of all complex matrices such that \(\maxsv(\Delta) \le 1\) (\(\|\Delta\|_\infty \le 1\)). -This is often referred to as unstructured uncertainty or as full-block complex perturbation uncertainty. -Then we have

-

\begin{align*} -\max_\Delta \rho(M\Delta) &= \max_\Delta \maxsv(M\Delta) \\\
-&= \max_\Delta \maxsv(\Delta) \maxsv(M) \\\
-&= \maxsv(M) -\end{align*}

-
-
-

Assume that the nominal system \(M(s)\) is stable and that the perturbations \(\Delta(s)\) are stable. -Then the \(M\Delta\text{-system}\) is stable for all perturbations \(\Delta\) satisfying \(\hnorm{\Delta} \le 1\) if and only if

-

\begin{equation} -\maxsv(M(j\w)) < 1 \ \forall\w \quad \Leftrightarrow \quad \hnorm{M} < 1 -\end{equation}

-
-

Application of the Unstructured RS-condition

-

We will now present necessary and sufficient conditions for robust stability for each of the six single unstructured perturbations in Figs fig:feedforward_uncertainty and fig:feedback_uncertainty with -\[ E = W_2 \Delta W_1, \quad \hnorm{\Delta} \le 1 \]

-

To derive the matrix \(M\) we simply “isolate” the perturbation, and determine the transfer function matrix -\[ M = W_1 M_0 W_2 \] -from the output to the input of the perturbation, where \(M_0\) for each of the six cases is given by

-

\begin{alignat*}{2} -G_p &= G + E_A: \quad && M_0 = K (I + GK)^{-1} = KS\\\
-G_p &= G(I + E_I): \quad && M_0 = K (I + GK)^{-1}G = T_I\\\
-G_p &= (I + E_O)G: \quad && M_0 = G K (I + GK)^{-1} = T\\\
-G_p &= G(I - E_{iA}G)^{-1}: \quad && M_0 = (I + GK)^{-1} G = SG\\\
-G_p &= G(I - E_{iI})^{-1}: \quad && M_0 = (I + KG)^{-1} = S_I\\\
-G_p &= (I - E_{iO})^{-1} G: \quad && M_0 = (I + GK)^{-1} = S -\end{alignat*}

-

Using the theorem to check RS for unstructured perturbations -\[ \text{RS} \quad \Leftrightarrow \quad \hnorm{W_1 M_0 W_2(j\w)} < 1, \ \forall\w \]

-

For instance, for feedforward input uncertainty, we get -\[ \text{RS}\ \forall G_p = G(I + w_I \Delta_I), \hnorm{\Delta_I} \le 1 \Leftrightarrow \hnorm{w_I T_I} < 1 \]

-

In general, the unstructured uncertainty descriptions in terms of a single perturbation are not “tight” (in the sense that at each frequency all complex perturbations satisfying \(\maxsv(\Delta(j\w)) \le 1\) may not be possible in practice). -Thus, the above RS-conditions are often conservative. -In order to get tighter condition we must use a tighter uncertainty description in terms of a block-diagonal \(\Delta\).

-

RS for Coprime Factor Uncertainty

-

Robust stability bound in terms of the \(\hinf\) norm (\(\text{RS}\Leftrightarrow\hnorm{M}<1\)) are in general only tight when there is a single full perturbation block. -An “exception” to this is when the uncertainty blocks enter or exit from the same location in the block diagram, because they can then be stacked on top of each other or side-by-side, in an overall \(\Delta\) which is then full matrix.

-

One important uncertainty description that falls into this category is the coprime uncertainty description shown in Fig. fig:coprime_uncertainty, for which the set of plants is -\[ G_p = (M_l + \Delta_M)^{-1}(Nl + \Delta_N), \quad \hnorm{[\Delta_N, \ \Delta_N]} \le \epsilon \] -Where \(G = M_l^{-1} N_l\) is a left coprime factorization of the nominal plant.

-

This uncertainty description is surprisingly general, it allows both zeros and poles to cross into the right-half plane, and has proven to be very useful in applications.

-

-
- Figure 30: Coprime Uncertainty
-

Figure 30: Coprime Uncertainty

-
-
- -

Since we have no weights on the perturbations, it is reasonable to use a normalized coprime factorization of the nominal plant. -In any case, to test for RS we can rearrange the block diagram to match the \(M\Delta\text{-structure}\) with -\[ \Delta = [\Delta_N, \ \Delta_M]; \quad M = -\begin{bmatrix}K\I\end{bmatrix} (I + GK)^{-1} M_l^{-1} \] -And we get -\[ \text{RS}\ \forall\ \hnorm{\Delta_N, \ \Delta_M} \le \epsilon \quad \Leftrightarrow \quad \hnorm{M} < 1/\epsilon \]

-

The coprime uncertainty description provides a good generic uncertainty description for cases where we do not use any specific a priori uncertainty information. -Note that the uncertainty magnitude is \(\epsilon\), so it is not normalized to be less than 1 in this case. -This is because this uncertainty description is most often used in a controller design procedure where the objective is to maximize the magnitude of the uncertainty \(\epsilon\) such that RS is maintained.

-

RS with Structured Uncertainty: Motivation

-

Consider now the presence of structured uncertainty, where \(\Delta = \text{diag}\{\Delta_i\}\) is block-diagonal. -To test for robust stability, we rearrange the system into the \(M\Delta\text{-structure}\) and we have -\[ \text{RS if } \maxsv(M(j\w)) < 1, \ \forall\w \]

-

We have here written “if” rather than “if and only if” since this condition is only sufficient for RS when \(\Delta\) has “no structure”. -The question is whether we can take advantage of the fact that \(\Delta = \text{diag}\{\Delta_i\}\) is structured to obtain an RS-condition which is tighter. -On idea is to make use of the fact that stability must be independent of scaling.

-

To this effect, introduce the block-diagonal scaling matrix -\[ D = \diag{d_i I_i} \] -where \(d_i\) is a scalar and \(I_i\) is an identity matrix of the same dimension as the \(i\)‘th perturbation block \(\Delta_i\).

-

Now rescale the inputs and outputs of \(M\) and \(\Delta\) by inserting the matrices \(D\) and \(D^{-1}\) on both sides as shown in Fig. fig:block_diagonal_scalings. -This clearly has no effect on stability.

-

-
- Figure 31: Use of block-diagonal scalings, \(\Delta D = D \Delta\)
-

Figure 31: Use of block-diagonal scalings, \(\Delta D = D \Delta\)

-
-
- -

Note that with the chosen form for the scalings we have for each perturbation block \(\Delta_i = d_i \Delta_i d_i^{-1}\), that is we have \(\Delta = D \Delta D^{-1}\).

-

This means that we have -\[ \text{RS if } \maxsv(DM(j\w)D^{-1}) < 1, \ \forall\w \]

-
-
-

This applies for any \(D\), and therefore the “most improved” (least conservative) RS-condition is obtained by minimizing at each frequency the scaled singular value and we have -\[ \text{RS if } \min_{D(\w) \in \mathcal{D}} \maxsv(D(\w)M(j\w)D(\w)^{-1}) < 1, \ \forall\w \] -where \(\mathcal{D}\) is the set of block-diagonal matrices whose structure is compatible to that of \(\Delta\), i.e, \(\Delta D = D \Delta\).

-
-

When \(\Delta\) is a full matrix, we must select \(D = dI\) and we have \(\maxsv(D M D^{-1}) = \maxsv(M)\), and we cannot improve the RS-condition. -However, when \(\Delta\) has structure, we get more degrees of freedom in \(D\) and \(\maxsv(D M D^{-1})\) may be significantly smaller than \(\maxsv(M)\).

-

The Structured Singular Value

-

Definition

-

The structured singular value \(\mu\) is a function which provides a generalization of the singular value \(\maxsv\) and the spectral radius \(\rho\). -We will use \(\mu\) to get necessary and sufficient conditions for robust stability and also for robust performance.

-

\(\mu\) can be explained as follow:

-
-

Find the smallest structured \(\Delta\) (measured in terms of \(\maxsv(\Delta)\)) which makes the matrix \(I - M \Delta\) singular; then \(\mu(M) = 1/\maxsv(\Delta)\).

-
-

Mathematically -\[ \mu(M)^{-1} \triangleq \min_{\Delta}\{\maxsv(\Delta) | \det(I-M\Delta) = 0 \text{ for struct. }\Delta\} \] -Clearly, \(\mu(M)\) depends not only on \(M\) but also on the allowed structure for \(\Delta\). This is sometimes shown explicitly by using the notation \(\mu_\Delta (M)\).

-

The above definition of \(\mu\) involves varying \(\maxsv(\Delta)\). However, we prefer to normalize \(\Delta\) such that \(\maxsv(\Delta)\le1\). We can do that by scaling \(\Delta\) by a factor \(k_m\), and looking for the smallest \(k_m\) which makes the matrix \(I - k_m M \Delta\) singular. \(\mu\) is then the reciprocal of this small \(k_m\): \(\mu = 1/k_m\). This results in the following alternative definition of \(\mu\).

-
-
-

Let \(M\) be a given complex matrix and let \(\Delta = \diag{\Delta_i}\) denote a set of complex matrices with \(\maxsv(\Delta) \le 1\) and with a given block-diagonal structure. -The real non-negative function \(\mu(M)\), called the structured singular value, is defined by

-

\begin{align*} -\mu(M) \triangleq &(\min\{ k_m | \det(I - k_m M \Delta) = 0\\\
-&\text{for structured } \Delta, \maxsv(\Delta) \le 1 \} )^{-1} -\end{align*}

-

If no such structured \(\Delta\) exists then \(\mu(M) = 0\)

-
-

A value of \(\mu = 1\) means that there exists a perturbation with \(\maxsv(\Delta) = 1\) which is just large enough to make \(I - M\Delta\) singular.

-

A larger value of \(\mu\) is “bad” as it means that a smaller perturbation makes \(I - M\Delta\) singular, whereas a smaller value of \(\mu\) is “good”.

-

Remarks on the Definition of \(\mu\)

-
    -
  1. The structured singular value was introduced by Doyle while at the same time, Safonov introduced the Multivariable Stability Margin \(k_m\) for a diagonally perturbed system as the inverse of \(\mu\), that is \(k_m(M) = \mu(M)^{-1}\).
  2. -
  3. Note that with \(k_m = 0\) we obtain \(I - k_m M \Delta = I\) which is clearly non-singular. -Thus, one possible way to obtain \(\mu\) numerically, is to start with \(k_m = 0\), and gradually increase \(k_m\) until we first find an allowed \(\Delta\) with \(\maxsv(\Delta) = 1\) such that \(I-k_mM\Delta\) is singular.
  4. -
-

Properties of \(\mu\) for Real and Complex \(\Delta\)

-
    -
  1. \(\mu(\alpha M) = \abs{\alpha} \mu(M)\) for any real scalar \(\alpha\)
  2. -
  3. Let \(\Delta = \diag{\Delta_1, \Delta_2}\) be a block-diagonal perturbation and let \(M\) be partitioned accordingly. -Then \[ \mu_\Delta \ge \text{max} \{\mu_{\Delta_1} (M_{11}), \mu_{\Delta_2}(M_{22}) \} \]
  4. -
-

Properties of \(\mu\) for Complex Perturbations \(\Delta\)

-
    -
  1. -

    For complex perturbations \(\Delta\) with \(\maxsv(\Delta) \le 1\)

    -

    \begin{equation} -\tcmbox{\mu(M) = \max_{\Delta, \maxsv(\Delta) \le 1} \rho(M\Delta)} -\end{equation}

    -
  2. -
  3. -

    \(\mu(\alpha M) = \abs{\alpha} \mu(M)\) for any (complex) scalar \(\alpha\)

    -
  4. -
  5. -

    For a full block complex perturbation \(\Delta\) -\[ \mu(M) = \maxsv(M) \]

    -
  6. -
  7. -

    \(\mu\) for complex perturbations is bounded by the spectral radius and the singular value

    -

    \begin{equation} -\tcmbox{\rho(M) \le \mu(M) \le \maxsv(M)} -\end{equation}

    -
  8. -
  9. -

    Improved lower bound. -Defined \(\mathcal{U}\) as the set of all unitary matrices \(U\) with the same block diagonal structure as \(\Delta\). -Then for complex \(\Delta\)

    -

    \begin{equation} -\tcmbox{\mu(M) = \max_{U\in\mathcal{U}} \rho(MU)} -\end{equation}

    -
  10. -
  11. -

    Improved upper bound. -Defined \(\mathcal{D}\) as the set of all unitary matrices \(D\) that commute with \(\Delta\). -Then

    -

    \begin{equation} -\tcmbox{\mu(M) = \min_{D\in\mathcal{D}} \maxsv(DMD^{-1})} -\end{equation}

    -
  12. -
-

Robust Stability with Structured Uncertainty

-

Consider stability of the \(M\Delta\text{-structure}\) for the case where \(\Delta\) is a set of norm-bounded block-diagonal perturbations. -From the determinant stability condition which applies to both complex and real perturbations, we get -\[ \text{RS} \ \Leftrightarrow \ \det(I-M\Delta(j\w)) \ne 0, \ \forall\w,, \forall\Delta, , \|\Delta\|_\infty \le 1 \] -The problem is that this is only a “yes/no” condition. To find the factor \(k_m\) by which the system is robustly stable, we scale the uncertainty \(\Delta\) by \(k_m\), and look for the smallest \(k_m\) which yields “borderline instability”, namely -\[ \det(I - k_m M \Delta) = 0 \] -From the definition of \(\mu\), this value is \(k_m = 1/\mu(M)\), and we obtain the following necessary and sufficient condition for robust stability.

-
-
-

Assume that the nominal system \(M\) and the perturbations \(\Delta\) are stable. -Then the \(M\Delta\text{-system}\) is stable for all allowed perturbations with \(\maxsv(\Delta)\le 1, \ \forall\w\) if on only if

-

\begin{equation} -\mu(M(j\w)) < 1, \ \forall \omega -\end{equation}

-
-
What do \(\mu \ne 1\) and skewed-\(\mu\) mean?
-

A value of \(\mu = 1.1\) for robust stability means that all the uncertainty blocks must be decreased in magnitude by a factor 1.1 in order to guarantee stability.

-

But if we want to keep some of the uncertainty blocks fixed, how large can one particular source of uncertainty be before we get instability? -We define this value as \(1/\mu^s\), where \(\mu^s\) is called skewed-\(\mu\). We may view \(\mu^s(M)\) as a generalization of \(\mu(M)\).

-
-
-

Let \(\Delta = \diag{\Delta_1, \Delta_2}\) and assume we have fixed \(\norm{\Delta_1} \le 1\) and we want to find how large \(\Delta_2\) can be before we get instability. -The solution is to select -\[ K_m = \begin{bmatrix}I & 0 \ 0 & k_m I\end{bmatrix} \] -and look at each frequency for the smallest value of \(k_m\) which makes \(\det(I - K_m M \Delta) = 0\) and we have that skewed-\(\mu\) is -\[ \mu^s(M) \triangleq 1/k_m \]

-
-

Note that to compute skewed-\(\mu\) we must first define which part of the perturbations is to be constant.

-

Robust Performance

-

Testing RP using \(\mu\)

-

To test for RP, we first “pull out” the uncertain perturbations and rearrange the uncertain system into the \(N\Delta\text{-form}\). -Our RP-requirement, is that the \(\hinf\) norm of the transfer function \(F = F_u(N, \Delta)\) remains less than \(1\) for all allowed perturbations. -This may be tested exactly by computing \(\mu(N)\).

-
-
-

Rearrange the uncertain system into the \(N\Delta\text{-structure}\). Assume nominal stability such that \(N\) is stable. -Then

-

\begin{align*} -\text{RP} \ &\stackrel{\text{def}}{\Longleftrightarrow} \ \hnorm{F} = \hnorm{F_u(N, \Delta)} < 1, \ \forall \hnorm{\Delta} < 1 \\\
-&\Longleftrightarrow \ \mu_{\hat{\Delta}}(N(j\w)) < 1, \ \forall\w -\end{align*}

-

where \(\mu\) is computed with respect to the structure -\[ \hat{\Delta} = \begin{bmatrix}\Delta & 0 \ 0 & \Delta_P\end{bmatrix} \] -and \(\Delta_P\) is a full complex perturbation with the same dimensions as \(F^T\).

-
-

Some remarks on the theorem:

-
    -
  1. Condition \(\mu_{\hat{\Delta}}(N(j\w)) < 1, \ \forall\w\) allows us to test if \(\hnorm{F} < 1\) for all possible \(\Delta\) without having to test each \(\Delta\) individually. Essential, \(\mu\) is defined such that it directly addresses the worst case
  2. -
  3. The \(\mu\text{-condition}\) for RP involves the enlarged perturbation \(\hat{\Delta} = \diag{\Delta, \Delta_P}\). -Here \(\Delta\), which itself may be a block diagonal matrix, represents the true uncertainty, whereas \(\Delta_P\) is a full complex matrix stemming from the \(\hinf\) norm performance specification
  4. -
  5. Since \(\hat{\Delta}\) always has structure, the use of \(\hinf\) norm, \(\hnorm{N} < 1\), is generally conservative for robust performance
  6. -
-

Summary of \(\mu\text{-conditions}\) for NP, RS and RP

-
-
-

Rearrange the uncertain system into the \(N\Delta\text{-structure}\) where the block-diagonal perturbation satisfy \(\hnorm{\Delta} \le 1\). -Introduce -\[ F = F_u(N, \Delta) = N_{22} + N_{21}\Delta(I - N_{11} \Delta)^{-1} N_{12} \] -Let the performance requirement be \(\hnorm{F} \le 1\).

-

\begin{align*} -\text{NS} \ &\Leftrightarrow \ N \text{ (internally) stable} \\\
-\text{NP} \ &\Leftrightarrow \ \text{NS and } \maxsv(N_{22}) = \mu_{\Delta_P} < 1, \ \forall\w \\\
-\text{RS} \ &\Leftrightarrow \ \text{NS and } \mu_\Delta(N_{11}) < 1, \ \forall\w \\\
-\text{RP} \ &\Leftrightarrow \ \text{NS and } \mu_{\tilde{\Delta}}(N) < 1, \ \forall\w, \ \tilde{\Delta} = \begin{bmatrix}\Delta & 0 \ 0 & \Delta_P\end{bmatrix} -\end{align*}

-
-

Here \(\Delta\) is a block-diagonal matrix, whereas \(\Delta_P\) is always a full complex matrix.

-

Although the structured singular value is not a norm, it is sometimes convenient to refer to the peak \(\mu\text{-value}\) as the “\(\Delta\text{-norm}\)". -For a stable rational transfer matrix \(H(s)\), with an associated block structure \(\Delta\), we therefore define

-

\begin{equation} -\tcmbox{\left\|H(s)\right\|_\Delta \triangleq \max_{\w} \mu_\Delta (H(j\w))} -\end{equation}

-

For a nominal stable system, we then have

-

\begin{align*} -\text{NP} \ &\Leftrightarrow \ \hnorm{N_{22}} < 1 \\\
-\text{RS} \ &\Leftrightarrow \ \left\|N_{11}\right\|_\Delta < 1 \\\
-\text{RP} \ &\Leftrightarrow \ \left\|N\right\|_{\tilde{\Delta}} < 1 -\end{align*}

-

Worst-case Performance and Skewed-\(\mu\)

-

Assume we have a system for which the peak \(\mu\text{-value}\) for RP is \(1.1\). What does this mean? -The definition of \(\mu\) tells us that our RP-requirement would be satisfied exactly if we reduced both the performance requirement and the uncertainty by a factor of \(1.1\). -So \(\mu\) does not directly give us the worst-case performance \(\max_{\Delta} \maxsv(F(\Delta))\).

-

To find the worst-case weighted performance for a given uncertainty, one needs to keep the magnitude of the perturbation fixed (\(\maxsv(\Delta) \le 1\)), that is, we must compute the skewed-\(\mu\) of \(N\). -We have, in this case -\[ \max_{\maxsv(\Delta) \le 1} \maxsv(F_l(N, \Delta)(j\w)) = \mu^s (N(j\w)) \]

-

To find \(\mu^s\) numerically, we scale the performance part of \(N\) by a factor \(k_m = 1/\mu^s\) and iterate on \(k_m\) until \(\mu = 1\). -That is, at each frequency skewed-\(\mu\) is the value \(\mu^s(N)\) which solves -\[ \mu(K_mN) = 1, \quad K_m = \begin{bmatrix}I & 0 \ 0 & 1/\mu^s\end{bmatrix} \] -Note that \(\mu\) underestimate how bad or good the actual worst case performance is. This follows because \(\mu^s(N)\) is always further from 1 than \(\mu(N)\).

-

Application: RP with Input Uncertainty

-

We will now consider in some detail the case of multiplicative input uncertainty with performance defined in terms of weighted sensitivity (Fig. fig:input_uncertainty_set_feedback_weight).

-

The performance requirement is then -\[ \text{RP} \quad \stackrel{\text{def}}{\Longleftrightarrow} \quad \hnorm{w_P (I + G_p K)^{-1}} < 1, \quad \forall G_p \] -where the set of plant is given by -\[ G_p = G (I + w_I \Delta_I), \quad \hnorm{\Delta_I} \le 1 \]

-

Here \(w_p(s)\) and \(w_I(s)\) are scalar weights, so the performance objective is the same for all the outputs, and the uncertainty is the same for all the inputs.

-

In this section, we will:

-
    -
  1. Find the interconnection matrix \(N\) for this problem
  2. -
  3. Consider the SISO case, so that useful connections can be made with results for SISO systems
  4. -
  5. Consider a multivariable distillation process
  6. -
  7. Find some simple bounds on \(\mu\) and discuss the role of the condition number
  8. -
  9. Make comparisons with the case where the uncertainty is located at the output
  10. -
-

Interconnection Matrix

-

On rearranging the system into the \(N\Delta\text{-structure}\), we get

-

\begin{equation} -N = \begin{bmatrix} - w_I T_I & - w_I K S \ w_p S G & w_p S \end{bmatrix} -\end{equation}

-

where \(T_I = KG(I + KG)^{-1}\), \(S = (I + GK)^{-1}\). -For simplicity, we can omit the negative signs.

-

For a given controller \(K\) we can now test for NS, NP, RS and RP.

-

RP with Input Uncertainty for SISO System

-

For a SISO system with \(N\) as described above:

-

\begin{align*} -\text{NS} &\Leftrightarrow S,\ SG,\ KS, \text{ and } T_I \text{ are stable} \\\
-\text{NP} &\Leftrightarrow |w_P S| < 1, \quad \forall \omega \\\
-\text{RS} &\Leftrightarrow |w_I T_I| < 1, \quad \forall \omega \\\
-\text{RP} &\Leftrightarrow |w_P S| + |w_I T_I| < 1, \quad \forall \omega -\end{align*}

-

Robust performance optimization, in terms of weighted sensitivity with multiplicative uncertainty for a SISO system, thus involves minimizing the peak value of \(\mu(N) = |w_I T| + |w_P S|\). -This may be solved using DK-iteration. -A closely related problem, which is easier to solve is to minimize the peak value (\(\mathcal{H}_\infty\) norm) of the mixed sensitivity matrix: -\[ N_\text{mix} = \begin{bmatrix} w_P S \ w_I T \end{bmatrix} \]

-

At each frequency, \(\mu(N)\) differs from and \(\bar{\sigma}(N_\text{mix})\) by at most a factor \(\sqrt{2}\). -Thus, minimizing \(\| N_\text{mix} \|_\infty\) is close to optimizing robust performance in terms of \(\mu(N)\).

-

Robust Performance for \(2 \times 2\) Distillation Process

-

Consider a distillation process and a corresponding inverse-based controller: -\[ G(s) = \frac{1}{75s + 1} \begin{bmatrix} 87.8 & -86.4 \ 108.2 & -109.6 \end{bmatrix} ; \quad K(s) = \frac{0.7}{s} G(s)^{-1} \]

-

The controller provides a nominally decoupled system: -\[ L = l I,\ S = \epsilon I \text{ and } T = t I \] -where -\[ l = \frac{0.7}{s}, \ \epsilon = \frac{s}{s + 0.7}, \ t = \frac{0.7}{s + 0.7} \]

-

The following weights for uncertainty and performance are used: -\[ w_I(s) = \frac{s + 0.2}{0.5s + 1}; \quad w_P(s) = \frac{s/2 + 0.05}{s} \]

-

We now test for NS, NP, RS and RP.

-
NS
-

with \(G\) and \(K\) as defined, we find that \(S\), \(SG\), \(KS\) and \(T_I\) are stable, so the system is nominally stable.

-
NP
-

with the decoupling controller we have: -\[ \bar{\sigma}(N_{22}) = \bar{\sigma}(w_P S) = \left|\frac{s/2 + 0.05}{s + 0.7}\right| \] -and we see from Fig. fig:mu_plots_distillation that the NP-condition is satisfied.

-

-
- Figure 32: \(\mu\text{-plots}\) for distillation process with decoupling controller
-

Figure 32: \(\mu\text{-plots}\) for distillation process with decoupling controller

-
-
- -
RS
-

In this case \(w_I T_I = w_I T\) is a scalar times the identity matrix: -\[ \mu_{\Delta_I}(w_I T_I) = |w_I t| = \left|0.2 \frac{5s + 1}{(0.5s + 1)(1.43s + 1)}\right| \] -and we see from Fig. fig:mu_plots_distillation that RS is satisfied.

-

The peak value of \(\mu_{\Delta_I}(M)\) is \(0.53\) meaning that we may increase the uncertainty by a factor of \(1/0.53 = 1.89\) before the worst case uncertainty yields instability.

-
RP
-

Although the system has good robustness margins and excellent nominal performance, the robust performance is poor. -This is shown in Fig. fig:mu_plots_distillation where the \(\mu\text{-curve}\) for RP was computed numerically using \(\mu_{\hat{\Delta}}(N)\), with \(\hat{\Delta} = \text{diag}\{\Delta_I, \Delta_P\}\) and \(\Delta_I = \text{diag}\{\delta_1, \delta_2\}\). -The peak value is close to 6, meaning that even with 6 times less uncertainty, the weighted sensitivity will be about 6 times larger than what we require.

-

Robust Performance and the Condition Number

-

We here consider the relationship between \(\mu\) for RP and the condition number of the plant or of the controller. -We consider unstructured multiplicative uncertainty (i.e. \(\Delta_I\) is a full matrix) and performance is measured in terms of the weighted sensitivity. -With \(N\) given by \eqref{eq:n_delta_structure_clasic}, we have: -\[ \overbrace{\mu_{\tilde{\Delta}}(N)}^{\text{RP}} \le [ \overbrace{\bar{\sigma}(w_I T_I)}^{\text{RS}} + \overbrace{\bar{\sigma}(w_P S)}^{\text{NP}} ] (1 + \sqrt{k}) \] -where \(k\) is taken as the smallest value between the condition number of the plant and of the controller: -\[ k = \text{min}(\gamma(G), \gamma(K)) \]

-

We see that with a “round” controller (i.e. one with \(\gamma(K) = 1\)), there is less sensitivity to uncertainty. -On the other hand, we would expect \(\mu\) for RP to be large if we used an inverse-based controller for a plant with large condition number, since then \(\gamma(K) = \gamma(G)\) is large.

-

Comparison with Output Uncertainty

-

Consider output multiplicative uncertainty of magnitude \(w_O(j\omega)\). -In this case, we get the interconnection matrix -\[ N = \begin{bmatrix} w_O T & w_O T \ w_P S & w_P S \end{bmatrix} \] -and for any structure of the uncertainty, \(\mu(N)\) is bounded as follows: -\[ \bar{\sigma}\begin{bmatrix} w_O T \ w_P S\end{bmatrix} \le \overbrace{\mu(N)}^{\text{RP}} \le \sqrt{2}\ \bar{\sigma} \overbrace{\underbrace{\begin{bmatrix} w_O T \ w_P S \end{bmatrix}}_{\text{NP}}}^{\text{RS}} \] -This follows since the uncertainty and performance blocks both enter at the output and that the difference between bounding the combined perturbations \(\bar{\sigma}[\Delta_O \ \Delta_P]\) and the individual perturbations \(\bar{\sigma}(\Delta_O)\) and \(\bar{\sigma}(\Delta_P)\) is at most a factor \(\sqrt{2}\). -Thus, we “automatically” achieve RP if we satisfy separately NP and RS. -Multiplicative output uncertainty then poses no particular problem for performance.

-

\(\mu\text{-synthesis}\) and DK-iteration

-

The structured singular value \(\mu\) is a very powerful tool for the analysis of robust performance with a given controller. However, one may also seek to find the controller that minimizes a given \(\mu\text{-condition}\): this is the \(\mu\text{-synthesis}\) problem.

-

DK-iteration

-

At present, there is no direct method to synthesize a \(\mu\text{-optimal}\) controller. -However, for complex perturbations, a method known as DK-iteration is available. -It combines \(\hinf\) synthesis and \(\mu\text{-analysis}\) and often yields good results.

-

The starting point is the upper bound on \(\mu\) in terms of the scaled singular value

-

\begin{equation} -\mu(N) \le \min_{D \in \mathcal{D}} \maxsv(D N D^{-1}) -\end{equation}

-

The idea is to find the controller that minimizes the peak value over frequency of this upper bound, namely

-

\begin{equation} -\min_{K} \left( \min_{D \in \mathcal{D}} \hnorm{D N(K) D^{-1} } \right) -\end{equation}

-

by alternating between minimizing \(\hnorm{DN(K)D^{-1}}\) with respect to either \(K\) or \(D\) (while holding the other fixed).

-

To start the iterations, one selects an initial stable rational transfer matrix \(D(s)\) with appropriate structure. -The identity matrix is often a good initial choice for \(D\) provided the system has been reasonably scaled for performance.

-
-
-
    -
  1. K-step. Synthesize an \(\hinf\) controller for the scaled problem, \(\min_{K} \hnorm{DN(K)D^{-1}}\) with fixed \(D(s)\)
  2. -
  3. D-step. Find \(D(j\w)\) to minimize at each frequency \(\maxsv(DND^{-1}(j\w))\) with fixed \(N\)
  4. -
  5. Fit the magnitude of each element of \(D(j\w)\) to a stable and minimum phase transfer function \(D(s)\) and go to step 1
  6. -
-
-

The iteration may continue until satisfactory performance is achieve, \(\hnorm{DND^{-1}} < 1\) or until the \(\hinf\) norm no longer decreases. -One fundamental problem with this approach is that although each of the minimization steps are convex, joint convexity is not guaranteed. -Therefore, the iterations may converge to a local minimum.

-

The order of the controller resulting from each iteration is equal to the number of the states in the plant \(G(s)\) plus the number of states in the weights plus twice the number of state in \(D(s)\). -The obtain \(\mu\text{-optimal}\) controller will usually be of high order and will have a flat \(\mu\text{-curve}\) until some high frequency.

-

The DK-iteration depends heavily on optimal solutions for steps 1 and 2, and also on good fits in step 3. -We usually prefers to have a low-order fit in step 3 as it will reduces the order of the \(\hinf\) problem which usually improves the numerical properties of the optimization. -In some cases, the iterations converge slowly, the \(\mu\text{-value}\) can even increase. This may be caused by numerical problems and one may consider going back to the initial problem and rescaling the inputs and outputs.

-

Adjusting the Performance Weight

-

If \(\mu\) at a given frequency is different from 1, then the interpretation is that at this frequency we can tolerate \(1/\mu\) times more uncertainty and still satisfy our performance objective with a margin of \(1/\mu\). -In \(\mu\text{-synthesis}\), the designer will usually adjust some parameter in the performance or uncertainty weights until the weight of the peak \(\mu\text{-value}\) is close to 1.

-

Sometimes, uncertainty is fixed and we effectively optimize worst-cast performance by adjusting a parameter in the performance weight. -Consider the performance weight -\[ w_p(s) = \frac{s/M + \w_B^*}{s + \w_B^* A} \] -where we want to keep \(M\) constant and find the high achievable bandwidth frequency \(\w_B^*\). -The optimization problem becomes -\[ \text{max} \abs{\w_B^*} \quad \text{such that} \quad \mu(N) < 1, \ \forall\w \] -where \(N\), the interconnection matrix for the RP-problem, depends on \(\w_B^*\). This may be implemented as an outer loop around the DK-iteration.

-

Fixed Structure Controller

-

Sometimes it is desirable to find a low-order controller with a given structure. -This may be achievable by numerical optimization where \(\mu\) is minimized with respect to the controller parameters. -This problem here is that the optimization is not generally convex in the parameters. -Sometimes it helps to switch the optimization between minimizing the peak of \(\mu\) and minimizing the integral square deviation of \(\mu\) away from \(k\) (i.e. \(\normtwo{\mu(j\w) - k}\)) where \(k\) is usually close to 1. -The latter is an attempt to “flatten out” \(\mu\).

-

Example: \(\mu\text{-synthesis}\) with DK-iteration

-

For simplicity, we will consider again the case of multiplicative uncertainty and performance defined in terms of weighted sensitivity. -The uncertainty weight \(w_I I\) and performance weight \(w_P I\) are shown graphically in Fig. fig:weights_distillation.

-

-
- Figure 33: Uncertainty and performance weights
-

Figure 33: Uncertainty and performance weights

-
-
- -

The objective is to minimize the peak value of \(\mu_{\tilde{\Delta}}(N)\), \(\tilde{\Delta} = \text{diag}\{\Delta_I, \Delta_P\}\). -\(\Delta_I\) is a diagonal \(2 \times 2\) matrix representing the diagonal input uncertainty and \(\Delta_P\) is a full \(2 \times 2\) matrix representing the performance specifications.

-

First, the generalized plant \(P\) is constructed which includes the plant model, the uncertainty weight and the performance weight. -Then the block structure is defined, it consists of two \(1 \times 1\) blocks to represent \(\Delta_I\) and a \(2 \times 2\) block to represent \(\Delta_P\). -The scaling matrix \(D\) for \(DND^{-1}\) then has the structure \(D = \text{diag}\{d_1, d_2, d_3I_2\}\). We select \(d_3 = 1\) and as initial scalings we select \(d_1^0 = d_2^0 = 1\). -\(P\) is then scaled with the matrix \(\text{diag}\{D, I_2\}\) where \(I_2\) is associated with the inputs and outputs from the controller (we do not want to scale the controller).

-
    -
  • Iteration No. 1. -Step 1: with the initial scalings, the \(\mathcal{H}_\infty\) synthesis produced a 6 state controller (2 states from the plant model and 2 from each of the weights). -Step 2: the upper \(\mu\text{-bound}\) is shown in Fig. fig:dk_iter_mu. -Step 3: the frequency dependent \(d_1(\omega)\) and \(d_2(\omega)\) from step 2 are fitted using a 4th order transfer function shown in Fig. fig:dk_iter_d_scale
  • -
  • Iteration No. 2. -Step 1: with the 8 state scalings \(D^1(s)\), the \(\mathcal{H}_\infty\) synthesis gives a 22 state controller. -Step 2: This controller gives a peak value of \(\mu\) of \(1.02\). -Step 3: the scalings are only slightly changed
  • -
  • Iteration No. 3. -Step 1: The \(\mathcal{H}_\infty\) norm is only slightly reduced. We thus decide the stop the iterations.
  • -
-

-
- Figure 34: Change in \(\mu\) during DK-iteration
-

Figure 34: Change in \(\mu\) during DK-iteration

-
-
- -

-
- Figure 35: Change in D-scale \(d_1\) during DK-iteration
-

Figure 35: Change in D-scale \(d_1\) during DK-iteration

-
-
- -

The final \(\mu\text{-curves}\) for NP, RS and RP with the controller \(K_3\) are shown in Fig. fig:mu_plot_optimal_k3. -The objectives of RS and NP are easily satisfied. -The peak value of \(\mu\) is just slightly over 1, so the performance specification \(\bar{\sigma}(w_P S_p) < 1\) is almost satisfied for all possible plants.

-

-
- Figure 36: (mutext{-plots}) with (mu) &ldquo;optimal&rdquo; controller (K_3)
-

Figure 36: (mutext{-plots}) with (mu) “optimal” controller (K_3)

-
-
- -

To confirm that, 6 perturbed plants are used to compute the perturbed sensitivity functions shown in Fig. fig:perturb_s_k3.

-

-
- Figure 37: Perturbed sensitivity functions (bar{sigma}(S^prime)) using (mu) &ldquo;optimal&rdquo; controller (K_3). Lower solid line: nominal plant. Upper solid line: worst-case plant
-

Figure 37: Perturbed sensitivity functions (bar{sigma}(S^prime)) using (mu) “optimal” controller (K_3). Lower solid line: nominal plant. Upper solid line: worst-case plant

-
-
- -

Further Remarks on \(\mu\)

-

For complex perturbations, the scaled singular value \(\maxsv(DND^{-1})\) is a tight upper bound on \(\mu(N)\) in most cases, and minimizing the upper bound \(\hnorm{DND^{-1}}\) form the basis for the DK-iteration.

-

The use of constant D-scales (\(D\) is not allowed to vary with frequency), provides a necessary and sufficient condition for robustness to arbitrary fast time varying linear uncertainty. While such perturbations are unlikely in a practical situation, we know that this controller will work very well even for rapid changes in the plant. Moreover, the use of constant D-scales make the computation of \(\mu\) straightforward and solvable using LMIs.

-

Conclusion

-

We have discussed how to represent uncertainty and how to analyze its effect on stability (RS) and performance (RP) using the structured singular value \(\mu\).

-

To analyze robust stability of an uncertain system, we make use of the \(M\Delta\text{-structure}\) where \(M\) represents the transfer function for the “new” feedback part generated by the uncertainty. -From the small gain theorem -\[ \tcmbox{RS \quad \Leftarrow \quad \maxsv(M) < 1, \ \forall\w} \] -which is tight (necessary and sufficient) for the special case where at each frequency any complex \(\Delta\) satisfying \(\maxsv(\Delta) \le 1\) is allowed. -More generally, the tight condition is -\[ \tcmbox{RP \quad \Leftrightarrow \quad \mu(M) < 1, \ \forall\w} \] -where \(\mu(M)\) is the structured singular value. The calculation of \(\mu\) makes use of the fact that \(\Delta\) has a given block-diagonal structure, where certain blocks may also be real (e.g. to handle parametric uncertainty).

-

We defined robust performance as \(\hnorm{F_l(N, \Delta)} < 1\) for all allowed \(\Delta\). -Since we used the \(\hinf\) norm in both the representation of uncertainty and the definition of performance, we found that RP could be viewed as a special case of RS, and we derived -\[ \tcmbox{RS \quad \Leftrightarrow \quad \mu(N) < 1, \ \forall\w} \] -where \(\mu\) is computed with respect to the block-diagonal structure \(\diag{\Delta, \Delta_P}\). -Here \(\Delta\) represents the uncertainty and \(\Delta_P\) is a fictitious full uncertainty block representing the \(\hinf\) performance bound.

-

There are two main approaches to getting a robust design:

-
    -
  1. We aim to make the system robust to some “general” class of uncertainty which we do not explicitly model. -For SISO systems, the classical gain and phase margins and the peaks of \(S\) and \(T\) provide useful robustness measures. -For MIMO systems, normalized coprime factor uncertainty provides a good general class of uncertainty, and the associated Glover-McFlarlane \(\hinf\) loop-shaping design procedure has proved itself very useful in applications
  2. -
  3. We explicitly model and quantify the uncertainty in the plant and aim to make the system robust to this specific uncertainty. -Potentially, it yields better designs, but it may require a much larger effort in terms of uncertainty modelling, especially if parametric uncertainty is consider. -Analysis and in particular, synthesis using \(\mu\) can be very involved
  4. -
-

In applications, it is therefore recommended to start with the first approach, at least for design. -The robust stability and performance is then analyzed in simulations and using the structured singular value, for example, by considering first simple sources of uncertainty such as multiplicative input uncertainty. -One then iterates between design and analysis until a satisfactory solution is obtained. -If resulting control performance is not satisfactory, one may switch to the second approach.

-
Practical \(\mu\text{-synthesis}\) in practice:
-
    -
  1. Because of the effort involved in deriving detailed uncertainty descriptions, and the subsequent complexity in synthesizing controllers, the rule is to start simple with a crude uncertainty description, and then to see whether the performance specifications can be met. Only if they can’t, one should consider more detailed uncertainty descriptions such as parametric uncertainty
  2. -
  3. The use of \(\mu\) implies a worst-case analysis, so one should be careful about including too many sources of uncertainty, noise and disturbances - otherwise it becomes very unlikely for the worst case to occur, and the resulting analysis and design may be unnecessarily conservative
  4. -
  5. There is always uncertainty with respect to the inputs and outputs, so it is generally sage to include diagonal input and output uncertainty. The relative multiplicative form is very convenient in this case
  6. -
  7. \(\mu\) is most commonly used for analysis. If \(\mu\) is used for synthesis, then we recommend that you keep the uncertainty fixed and adjust the parameters in the performance weight until \(\mu\) is close to 1
  8. -
-

Controller Design

-

-

Trade-offs in MIMO Feedback Design

-

The shaping of multivariable transfer functions is based on the idea that a satisfactory definition of gain for a matrix transfer function is given by the singular values. -By multivariable transfer function shaping, therefore, we mean the shaping of the singular values of appropriate specified transfer functions such as the loop transfer function of one or more closed-loop transfer functions.

-

The classical loop-shaping ideas can be further generalized to MIMO systems by considering the singular values.

-

Consider the one degree-of-freedom system as shown in Fig. fig:classical_feedback_small. -We have the following important relationships:

-

\begin{subequations} -\begin{align} -y(s) &= T(s) r(s) + S(s) d(s) - T(s) n(s) \\\
-u(s) &= K(s) S(s) \big(r(s) - n(s) - d(s) \big) -\end{align} -\end{subequations}

-

-
- Figure 38: One degree-of-freedom feedback configuration
-

Figure 38: One degree-of-freedom feedback configuration

-
-
- -
-
-
    -
  1. For disturbance rejection make \(\maxsv(S)\) small
  2. -
  3. For noise attenuation make \(\maxsv(T)\) small
  4. -
  5. For reference tracking make \(\maxsv(T) \approx \minsv(T) \approx 1\)
  6. -
  7. For control energy reduction make \(\maxsv(KS)\) small
  8. -
  9. For robust stability in presence of an additive perturbation (\(G_p = G + \Delta\)) make \(\maxsv(KS)\) small
  10. -
  11. For robust stability in presence of a multiplicative output perturbation (\(G_p = (I + \Delta) G\)) make \(\maxsv(T)\) small
  12. -
-
-

The closed-loop requirements cannot all be satisfied simultaneously. -Feedback design is therefore a trade-off over frequency of conflicting objectives. -This is not always as difficult as it sounds because the frequency range over which the objectives are important can be quite different.

-

In classical loop shaping, it is the magnitude of the open-loop transfer function \(L = GK\) which is shaped, whereas the above requirements are all in terms of closed-loop transfer functions. -However, we have that -\[ \minsv(L) - 1 \le \frac{1}{\maxsv(S)} \le \minsv(L) + 1 \] -from which we see that \(\maxsv(S) \approx 1/\minsv(L)\) at frequencies where \(\minsv(L)\) is much larger than \(1\). -Furthermore, from \(T = L(I+L)^{-1}\) it follows that \(\maxsv(T) \approx \maxsv(L)\) at frequencies where \(\maxsv(L)\) is much smaller than \(1\).

-

Thus, over specified frequency ranges, it is relatively easy to approximate the closed-loop requirements by open-loop objectives.

-
-
-
    -
  1. For disturbance rejection make \(\minsv(GK)\) large
  2. -
  3. For noise attenuation make \(\maxsv(GK)\) small
  4. -
  5. For reference tracking make \(\minsv(GK)\) large
  6. -
  7. For control energy reduction make \(\maxsv(K)\) small
  8. -
  9. For robust stability in presence of an additive perturbation make \(\maxsv(K)\) small
  10. -
  11. For robust stability in presence of an multiplicative output perturbation make \(\maxsv(GK)\) small
  12. -
-
-

Typically, the open-loop requirements 1 and 3 are valid and important at low frequencies \(0 \le \omega \le \omega_l \le \omega_B\), while conditions 2, 4, 5 and 6 are conditions which are valid and important at high frequencies \(\omega_B \le \omega_h \le \omega \le \infty\), as illustrated in Fig. fig:design_trade_off_mimo_gk.

-

-
- Figure 39: Design trade-offs for the multivariable loop transfer function \(GK\)
-

Figure 39: Design trade-offs for the multivariable loop transfer function \(GK\)

-
-
- -

The control engineer must design \(K\) such that \(\minsv(GK)\) lies above a performance boundary for all \(\omega\) up to \(\omega_l\), and such that \(\maxsv(GK)\) lies below a robustness boundary for all \(\omega\) above \(\omega_h\).

-

Shaping the singular values of \(GK\) by selecting \(K\) is relatively easy task, but to do this in a way which also guarantees closed-loop stability is in general difficult as closed-loop stability cannot be determined from open-loop singular values.

-

For SISO systems, closed-loop stability is closely related to the open-loop roll-off rate from high to low gain at the crossover (which is in practice less than \(\SI{40}{\decibel\per dec}\)). -An immediate consequence of this is that there is a lower limit to the difference between \(\omega_h\) and \(\omega_l\).

-

For MIMO systems, a similar gain/phase relationship holds in the crossover frequency region, but this is in terms of roll-off rate of the magnitude of the eigenvalues of \(GK\) and not the singular values. -The stability constraint is therefore more difficult to handle.

-

LQG Control

-

LQG control was developed and successfully applied for aerospace problems where accurate plants are available. -For other control problems, it was not easy, and the assumption of white noise disturbance is not always relevant. -As a result, LQG designs were sometimes not robust enough to be used in practice.

-

It is assumed that the plant dynamics are linear and known, and that the measurement noise and disturbance signals are stochastic with known statistical properties:

-

\begin{align*} -\dot{x} &= A x + B u + w_d \\\
-y &= C x + D u + w_n -\end{align*}

-

with \(w_d\) and \(w_n\) are the disturbance and measurement noise which are assumed to be uncorrelated zero-mean Gaussian stochastic processes with constant power spectral density matrices \(W\) and \(V\) respectively.

-
-
-

The LQG control problem is to find the optimal control \(u(t)\) that minimize: -\[J = E \bigg\{ \lim_{T\rightarrow \infty} \frac{1}{T} \int_0^T \big[ x^T Q x + u^T R u \big] dt \bigg\} \] -Where \(Q\) and \(R\) are appropriately chosen constant weighting matrices (design parameters) such that \(Q = Q^T \ge 0\) and \(R = R^T > 0\).

-
-

The solution to the LQG problem, known as the Separation Theorem, is separated into two problems.

-

It consists of first determining the optimal control to a deterministic LQR problem (LQG without \(w_d\) and \(w_n\)). -The solution to this problem is a state feedback law

-

\begin{equation} -\tcmbox{u(t) = -K_r x(t)} -\end{equation}

-

where \(K_r\) is a constant matrix that can be easily computed.

-

The next step is to find an optimal estimate \(\hat{x}\) of the state \(x\) so that \(E \big\{ [x-\hat{x}]^T [x-\hat{x}] \big\}\) is minimized. -The optimal state estimate is given by a Kalman filter.

-

The solution to the LQG problem is then found by replacing \(x\) by \(\hat{x}\) to give \(u(t) = -K_r \hat{x}\).

-

We therefore see that the LQG problem and its solution can be separated into two distinct parts as illustrated in Fig. fig:lqg_separation: the optimal state feedback and the optimal state estimator (the Kalman filter).

-

-
- Figure 40: The separation theorem
-

Figure 40: The separation theorem

-
-
- -
-
-

The LQR problem, where all the states are known is to find the input signal \(u(t)\) that takes the system \(\dot{x} = Ax+Bu\) to the zero state (\(x=0\)) by minimizing the deterministic cost

-

\begin{equation} -J_r = \int_0^\infty \big( x(t)^T Q x(t) + u(t)^T R u(t) \big) dt -\end{equation}

-

The optimal solution is \(u=-K_r x(t)\) with

-

\begin{equation} -K_r = R^{-1} B^T X -\end{equation}

-

and \(X\) is the unique positive-semi definite solution of the algebraic Riccati equation:

-

\begin{equation} -A^T X + X A - XBR^{-1}B^TX + Q = 0 -\end{equation}

-
-
-
-

The Kalman filter has the structure of an ordinary state-estimator, as shown on Fig. fig:lqg_kalman_filter, with:

-

\begin{equation} -\dot{\hat{x}} = A\hat{x} + Bu + K_f(y-C\hat{x}) -\end{equation}

-

The optimal choice of \(K_f\), which minimize \(E \big\{ [x-\hat{x}]^T [x-\hat{x}] \big\}\) is given by

-

\begin{equation} -K_f = Y C^T V^{-1} -\end{equation}

-

Where \(Y\) is the unique positive-semi definite solution of the algebraic Riccati equation

-

\begin{equation} -YA^T + AY - YC^TV^{-1}CY + W = 0 -\end{equation}

-
-

-
- Figure 41: The LQG controller and noisy plant
-

Figure 41: The LQG controller and noisy plant

-
-
- -

The structure of the LQG controller is illustrated in Fig. fig:lqg_kalman_filter, its transfer function from \(y\) to \(u\) is given by

-

\begin{align*} -L_{\text{LQG}}(s) &= \left[ \begin{array}{c|c} -A - B K_r - K_f C & K_f \ \hline --K_r & 0 -\end{array} \right] \\\
-&= \left[ \begin{array}{c|c} -A - B R^{-1} B^T X - Y C^T V^{-1} C & Y C^T V^{-1} \ \hline --R^{-1} B^T X & 0 -\end{array} \right] -\end{align*}

-

It has the same degree (number of poles) as the plant.

-

For the LQG-controller, as shown on Fig. fig:lqg_kalman_filter, it is not easy to see where to position the reference input \(r\) and how integral action may be included, if desired. Indeed, the standard LQG design procedure does not give a controller with integral action. One strategy is illustrated in Fig. fig:lqg_integral. Here, the control error \(r-y\) is integrated and the regulator \(K_r\) is designed for the plant augmented with these integral states.

-

-
- Figure 42: LQG controller with integral action and reference input
-

Figure 42: LQG controller with integral action and reference input

-
-
- -

For an LQG-controller system with a combined Kalman filter and LQR control law, there are no guaranteed stability margins, and there exist LQG combinations with arbitrary small gain margins. -However, there are procedures for improving robustness properties of LQG control such as Loop Transfer Recovery (LTR).

-

These procedure are somehow difficult to use in practice. -Their main limitation is that they can only be applied to minimum phase plants.

-

\(\htwo\) and \(\hinf\) Control

-

-

General Control Problem Formulation

-

-There are many ways in which feedback design problems can be cast as \(\htwo\) and \(\hinf\) optimization problems. -It is very useful therefore to have a standard problem formulation into which any particular problem may be manipulated.

-

Such a general formulation is afforded by the general configuration shown in Fig. fig:general_control.

-

-
- Figure 43: General control configuration
-

Figure 43: General control configuration

-
-
- -

The system is described by

-

\begin{subequations} -\begin{align} -\colvec{z\v} &= P(s) \colvec{w\u} = \begin{bmatrix}P_{11}(s) & P_{12}(s)\ P_{21}(s) & P_{22}(s) \end{bmatrix} \colvec{w\u}\\\
-u &= K(s) v -\end{align} -\end{subequations}

-

With a state space realization of the generalized plant \(P\) given by

-

\begin{equation} -P = \left[ -\begin{array}{c|cc} -A & B_1 & B_2 \\\
-\hline -C_1 & D_{11} & D_{12} \\\
-C_2 & D_{21} & D_{22} -\end{array} -\right] -\end{equation}

-

The closed loop transfer function from \(w\) to \(z\) is given by the linear fractional transformation:

-

\begin{align*} -z &= F_l(P, K) w \\\
-&= [P_{11} + P_{12}K(I-P_{22}K)^{-1} P_{21}] w -\end{align*}

-

\(\htwo\) and \(\hinf\) control involve the minimization of the \(\htwo\) and \(\hinf\) norms of \(F_l(P, K)\).

-

The most general and widely used algorithms for \(\htwo\) and \(\hinf\) control problems are based on the state space formulation and requires the solution of two Riccati equations.

-

The following assumptions are typically made in \(\htwo\) and \(\hinf\) problems:

-
    -
  1. \((A, B_2, C_2)\) is stabilizable and detectable. -This is required for the existence of stabilizing controllers
  2. -
  3. \(D_{12}\) and \(D_{21}\) have full rank. -This is sufficient to ensure that the controllers are proper
  4. -
  5. \(\begin{bmatrix} A-j\w I & B_2 \ C_1 & D_{12} \end{bmatrix}\) and \(\begin{bmatrix} A-j\w I & B_1 \ C_2 & D_{21} \end{bmatrix}\) have respectively full column and full row rank for all \(\w\). -This ensures that the controller does not cancel poles or zeros in the imaginary axis which would result in closed-loop instability
  6. -
  7. \(D_{11} = 0\) and \(D_{22} = 0\) is a conventional requirement for \(\htwo\) control. -This is not required for \(\hinf\) control but this significantly simplify algorithm formulas
  8. -
  9. \(D_{12}^T C_1 = 0\) and \(B_1 D_{12}^T = 0\) is common in \(\htwo\) control. -\(D_{12}^T C_1 = 0\) means that there is no cross terms in the cost function and \(B_1 D_{12}^T = 0\) that the process noise and measurement noise are uncorrelated
  10. -
  11. \((A, B_1)\) is stabilizable and \((A, C_1)\) is detectable
  12. -
-

If the Matlab Robust Control Toolbox complains, then it probably means that the control problem is not well formulated and that some assumptions are not met.

-

\(\hinf\) algorithms, in general, find a sub-optimal controller. That is, for a specified \(\gamma\) a stabilizing controller is found for which \(\hnorm{F_l(P,K)}<\gamma\). -This contrasts with \(\htwo\) theory, in which the optimal controller is unique and can be found from the solution of two Riccati equations.

-

\(\htwo\) Optimal Control

-
-
-

The standard \(\htwo\) optimal control problem is to find a stabilizing controller \(K\) which minimizes -\[\normtwo{F(s)} = \sqrt{\frac{1}{2\pi}\int_{-\infty}^{\infty} tr[F(j\w)F(j\w)^H]d\w }\] -With \(F = F_l(P, K)\).

-
-

For a particular problem, the generalized plant \(P\) will include the plant model, the interconnection structure, and the designer specified weighting functions.

-

The \(\htwo\) norm can be given different deterministic interpretations. -It also has the following stochastic interpretation.

-

Suppose in the general control configuration that the exogenous input \(w\) is white noise of unit density. That is -\[ E\{w(t)w(\tau)^T\} = I \delta(t-\tau) \]

-

Expected power in the error signal \(z\) is then given by

-

\begin{align*} -P_z &= E\bigg\{ \lim_{T\rightarrow\infty} \frac{1}{2T} \int_{-T}^{T} z(t)^T z(t) dt \bigg\} \\\
-&= \text{tr}\ E\{z(t)z(t)^H\}\\\
-&= \frac{1}{2\pi} \int_{-\infty}^{\infty}\text{tr}\left[F(j\omega)F(j\omega)^H\right]d\omega\\\
-&= \normtwo{F}^2 = \normtwo{F_l(P,K)}^2 -\end{align*}

-
-
-

Thus, by minimizing the \(\htwo\) norm, the error power of the generalized system, due to a unit intensity white noise input, is minimized. -We are minimizing the Root Mean Square value of \(z\).

-
-

LQG: a Special \(\htwo\) Optimal Controller

-

An important special case of \(\htwo\) optimal control is the LQG problem. -For the stochastic system

-

\begin{align*} -\dot{x} &= A x + B u + w_d \\\
-y &= Cx + w_n -\end{align*}

-

where -\[ E \left\{ \begin{bmatrix} w_d(t)\w_n(t) \end{bmatrix} \begin{bmatrix} w_d(\tau)^T & w_n(\tau)^T \end{bmatrix} \right\} = \begin{bmatrix} W & 0 \ 0 & V \end{bmatrix} \delta (t - \tau) \]

-

The LQG problem is to find \(u = K(s) y\) such that -\[ J = E \left\{ \lim_{T\to \infty} \frac{1}{T} \int_0^T [x^T Q x + u^T R u] dt \right\} \] -is minimized with \(Q = Q^T \ge 0\) and \(R = R^T > 0\).

-

This problem can be cast as an \(\htwo\) optimization in the general framework in the following manner.

-

Define the error signal \(z\) as -\[ z = \begin{bmatrix} -Q^{\frac{1}{2}} & 0 \\\
-0 & R^{\frac{1}{2}} -\end{bmatrix} \begin{bmatrix} -x \ u -\end{bmatrix} \]

-

Represent the stochastic inputs as -\[ \begin{bmatrix} -w_d \ w_n -\end{bmatrix} = \begin{bmatrix} -W^{\frac{1}{2}} & 0 \\\
-0 & V^{\frac{1}{2}} -\end{bmatrix} w \] -where \(w\) is a white noise process of unit density.

-

Then the LQG cost function is -\[ K = E \left\{ \lim_{T\to \infty} \frac{1}{T} \int_0^T z(t)^T z(t) dt \right\} = \normtwo{F_l(P,K)}^2 \]

-

\(\hinf\) Optimal Control

-

With reference to the general control configuration on Fig. fig:general_control, the standard \(\hinf\) optimal control problem is to find all stabilizing controllers \(K\) which minimize -\[ \hnorm{F_l(P, K)} = \max_{\omega} \maxsv\big(F_l(P, K)(j\omega)\big) \]

-

The \(\hinf\) norm has several interpretations in terms of performance. -One is that it minimizes the peak of the maximum singular value of \(F_l(P(j\omega), K(j\omega))\).

-

It also has a time domain interpretation as the worst-cast 2-norm:

-

\begin{equation} -\hnorm{F_l(P,K)} = \max_{w(t)\ne0} \frac{\normtwo{z(t)}}{\normtwo{w(t)}} -\end{equation}

-

where \(\normtwo{z(t)} = \sqrt{\int_0^\infty \sum_i \abs{z_i}^2 dt}\) is the 2-norm of the vector signal.

-

In practice, it is usually not necessary to obtain an optimal controller for the \(\hinf\) problem, and it is simpler to design a sub-optimal one.

-

Let \(\gamma_\text{min}\) be the minimum value of \(\hnorm{F_l(P,K)}\) over all stabilizing controllers \(K\). -Then the \(\hinf\) sub-optimal control problem is: given a \(\gamma > \gamma_\text{min}\), find all stabilizing controllers \(K\) such that

-

\begin{equation} -\hnorm{F_l(P, K)} < \gamma -\end{equation}

-

By reducing \(\gamma\) in an iterative way, an optimal solution is approached.

-

General \(\hinf\) algorithm. -For the general control configuration and with assumptions described above, there exists a stabilizing controller \(K(s)\) such that \(\hnorm{F_l(P,K)}<\gamma\) if and only if

-
    -
  1. \(X_\infty \ge 0\) is a solution to the algebraic Riccati equation \(A^T X_\infty + X_\infty A + C_1^T C_1 + X_\infty (\gamma^{-2} B_1 B_1^T - B_2 B_2^T)X_\infty = 0\) such that \(\text{Re } \lambda_i \left[ A + (\gamma^{-2}B_1B_1^T - B_2B_2^T)X_\infty \right] < 0, \ \forall i\)
  2. -
  3. \(Y_\infty \ge 0\) is a solution to the algebraic Riccati equation \(A Y_\infty + Y_\infty A^T + B_1 B_1^T + Y_\infty (\gamma^{-2} C_1^T C_1 - C_2^T C_2)Y_\infty = 0\) such that \(\text{Re } \lambda_i \left[ A + Y_\infty(\gamma^{-2}C_1^TC_1 - C_2^TC_2)Y_\infty \right] < 0, \ \forall i\)
  4. -
  5. \(\rho(X_\infty Y_\infty) < \gamma^2\)
  6. -
-

All such controllers are then given by \(K = F_l(K_c, Q)\) where

-

\begin{align*} -K_c(s) &= \left[ \begin{array}{c|cc} -A_\infty & -Z_\infty L_\infty & Z_\infty B_2 \ \hline -F_\infty & 0 & I \\\
--C_2 & I & 0 -\end{array} \right], \ L_\infty = -Y_\infty C_2^T \\\
-F_\infty &= -B_2^T X_\infty, \ Z_\infty = (I - \gamma^2 Y_\infty X_\infty)^{-1} \\\
-A_\infty &= A + \gamma^{-2} B_1 B_1^T X_\infty + B_2F_\infty + Z_\infty L_\infty C_2 -\end{align*}

-

and \(Q(s)\) is any stable proper transfer function such that \(\hnorm{Q} < \gamma\).

-

For \(Q(s) = 0\), we get

-

\begin{equation} -K(s) = K_{c11}(s) = -Z_\infty L_\infty (s I - A_\infty)^{-1} F_\infty -\end{equation}

-

This is called the central controller and has the same number of states as the generalized plant \(P(s)\).

-

The central controller can be separated into a state estimator (observer) of the form -\[ \dot{\hat{x}} = A\hat{x} + B_1 \gamma^{-2} B_1^T X_\infty \hat{x} + B_2 u + Z_\infty L_\infty (C_2 \hat{x} - y) \] -and a state feedback \(u = F_\infty \hat{x}\).

-
-
-

If we desire a controller that achieves \(\gamma_\text{min}\), to within specified tolerance, then we can perform a bisection on \(\gamma\) until its value is sufficiently accurate. -The above conditions provide a test for each value of \(\gamma\) to determine if \(\gamma<\gamma_\text{min}\) or \(\gamma>\gamma_\text{min}\).

-
-

There are mainly two methodologies for \(\hinf\) controller design: the transfer function shaping approach and the signal-based approach.

-

In the shaping approach, \(\hinf\) optimization is used to shape the singular values of specified transfer functions over frequency. -The maximum singular values are relatively easy to shape by forcing them to lie below user defined bounds, thereby ensuring desirable bandwidth and roll-off rates.

-

In the signal-based approach, we seek to minimize the energy in certain error signal given a set of exogenous input signals.

-

A difficulty that sometimes arises with \(\hinf\) control is the selection of weights such that the \(\hinf\) optimal controller provides a good trade-off between conflicting objectives in various frequency ranges. -Thus, for practical designs it is sometimes recommended to perform only a few iterations of the \(\hinf\) algorithm. -The justification for this is that the initial design, after one iteration, is similar to an \(\htwo\) design which does trade-off over various frequency ranges. -Therefore stopping the iterations before the optimal value is achieved gives the design an \(\htwo\) flavor which may be desirable.

-

Mixed-Sensitivity \(\hinf\) Control

-

Mixed-sensitivity is the name given to transfer function shaping problems in which the sensitivity function \(S = (I + GK)^{-1}\) is shaped along with one or more other closed-loop transfer functions such as \(KS\) or \(T = I - S\).

-

Suppose that we have a regulation problem in which we want to reject a disturbance \(d\) entering at the plant output and it is assumed that the measurement noise is relatively insignificant. -It makes sense to shape the closed-loop transfer functions \(S\) and \(KS\). -Recall that \(S\) is the transfer function between \(d\) and the output, and \(KS\) the transfer function from \(d\) and the control signal. -It is important to include \(KS\) as a mechanism for limiting the size and bandwidth of the controller, and hence the energy used. -The size of \(KS\) is also important for robust stability with respect to uncertainty modeled as additive plant perturbations.

-

The disturbance \(d\) is typically a low frequency signal, and therefore it will be successfully rejected if the maximum singular value of \(S\) is made small over the same low frequency range. -To do this, we could select a scalar low pass filter \(w_1(s)\) with a bandwidth equal to that of the disturbance, and then find a stabilizing controller that minimizes \(\hnorm{w_1 S}\). -This cost function alone is not very practical, it focuses on just one closed-loop transfer function and the controller may have infinite gain. -It is far more useful in practice to minimize

-

\begin{equation} -\hnorm{\begin{matrix} w_1 S \ w_2 KS \end{matrix}} -\end{equation}

-

where \(w_2(s)\) is a scalar high pass filter with a crossover frequency approximately equal to that of the desired closed-loop bandwidth.

-

In general, the scalar weighting functions \(w_1(s)\) and \(w_2(s)\) can be replaced by matrices \(W_1(s)\) and \(W_2(s)\). -This can be useful for systems with channels of quite different bandwidths. -In that case, diagonal weights are recommended as anything more complicated is usually not worth the effort.

-

To see how this mixed sensitivity problem can be formulated in the general setting, we can imagine the disturbance \(d\) as a single exogenous input and define and error signal \(z = [z_1^T\ z_2^T]^T\), where \(z_1 = W_1 y\) and \(z_2 = -W_2 u\) as illustrated in Fig. fig:mixed_sensitivity_dist_rejection. -We can then see that \(z_1 = W_1 S w\) and \(z_2 = W_2 KS w\) as required. -The elements of the generalized plant are

-

\begin{equation*} -\begin{array}{ll} -P_{11} = \begin{bmatrix}W_1\0\end{bmatrix} & P_{12} = \begin{bmatrix}W_1G\-W_2\end{bmatrix} \\\
-P_{21} = -I & P_{22} = -G -\end{array} -\end{equation*}

-

-
- Figure 44: \(S/KS\) mixed-sensitivity optimization in standard form (regulation)
-

Figure 44: \(S/KS\) mixed-sensitivity optimization in standard form (regulation)

-
-
- -

Another interpretation can be put on the \(S/KS\) mixed-sensitivity optimization as shown in the standard control configuration of Fig. fig:mixed_sensitivity_ref_tracking. -Here we consider a tracking problem. -The exogenous input is a reference command \(r\), and the error signals are \(z_1 = -W_1 e = W_1 (r-y)\) and \(z_2 = W_2 u\). -As the regulation problem of Fig. fig:mixed_sensitivity_dist_rejection, we have that \(z_1 = W_1 S w\) and \(z_2 = W_2 KS w\).

-

-
- Figure 45: \(S/KS\) mixed-sensitivity optimization in standard form (tracking)
-

Figure 45: \(S/KS\) mixed-sensitivity optimization in standard form (tracking)

-
-
- -

Another useful mixed sensitivity optimization problem, is to find a stabilizing controller which minimizes

-

\begin{equation} -\hnorm{\begin{matrix} W_1 S \ W_2 T \end{matrix}} -\end{equation}

-

The ability to shape \(T\) is desirable for tracking problems and noise attenuation. -It is also important for robust stability with respect to multiplicative perturbations at the plant output.

-

The \(S/T\) mixed-sensitivity minimization problem can be put into the standard control configuration as shown in Fig. fig:mixed_sensitivity_s_t.

-

The elements of the generalized plant are

-

\begin{equation*} -\begin{array}{ll} -P_{11} = \begin{bmatrix}W_1\0\end{bmatrix} & P_{12} = \begin{bmatrix}-W_1G\W_2G\end{bmatrix} \\\
-P_{21} = -I & P_{22} = -G \\\
-\end{array} -\end{equation*}

-

-
- Figure 46: \(S/T\) mixed-sensitivity optimization in standard form
-

Figure 46: \(S/T\) mixed-sensitivity optimization in standard form

-
-
- -

The shaping of closed-loop transfer functions as described above with the stacked cost functions becomes difficult with more than two functions whereas with two, the process is relatively easy. -The bandwidth requirements on each are usually complementary and simple, stable low-pass and high-pass filters are sufficient to carry out the required shaping and trade-offs.

-

The weights \(W_i\) in mixed-sensitivity \(\hinf\) optimal control must all be stable. -Therefore, if we wish, for example, to emphasize the minimization of \(S\) at low frequency by weighting with a term including integral action, we would have to approximate \(\frac{1}{s}\) by \(\frac{1}{s + \epsilon}\) where \(\epsilon \ll 1\). -Similarly, one might be interested in weighting \(KS\) with a non-proper weight to ensure that \(K\) is small outside of the system bandwidth. -The trick is to replace a non proper term such as \((1 + \tau_1 s)\) by \(\frac{1 + \tau_1 s}{1 + \tau_2 s}\) where \(\tau_2 \ll \tau_1\).

-

Signal-Based \(\hinf\) Control

-

The signal-based approach to controller design is very general and is appropriate for multivariable problems in which several objectives must be taken into account simultaneously. -In this approach, we define the plant, possibly the model uncertainty, the class of external signals affecting the system and the norm of the error signals we want to keep small.

-
-
-

The focus of attention has moved to the size of signals and away from the size and bandwidth of selected closed-loop transfer functions.

-
-

Weights are used to describe the expected or known frequency content of exogenous signals and the desired frequency content of error signals. -Weights are also used if a perturbation is used to model uncertainty, as in Fig. fig:input_uncertainty_hinf, where \(G\) represents the nominal model, \(W\) is a weighting function that captures the relative model fidelity over frequency, and \(\Delta\) represents unmodelled dynamics usually normalized such that \(\hnorm{\Delta} < 1\).

-

-
- Figure 47: Multiplicative dynamic uncertainty model
-

Figure 47: Multiplicative dynamic uncertainty model

-
-
- -

LQG control is a simple example of the signal based approach, in which the exogenous signals are assumed to be stochastic and the error signals are measured in terms of the 2-norm. -As we have seen, the weights \(Q\) and \(R\) are constant, but LQG can be generalized to include frequency dependent weights on the signals leading to what is called Wiener-Hopf design or \(\htwo\) control.

-

When we consider a system’s response to persistent sinusoidal signals of varying frequency, or when we consider the induced 2-norm between the exogenous input signals and the error signals, we are required to minimize the \(\hinf\) norm. -In the absence of model uncertainty, there does not appear to be an overwhelming case for using the \(\hinf\) norm rather than the more traditional \(\htwo\) norm. -However, when uncertainty is addressed, as it always should be, \(\hinf\) is clearly the more natural approach using component uncertainty models as in Fig. fig:input_uncertainty_hinf.

-

A typical problem using the signal-based approach to \(\hinf\) control is illustrated in the interconnection diagram of Fig. fig:hinf_signal_based. -\(G\) and \(G_d\) are nominal models of the plant and disturbance dynamics, and \(K\) is the controller to be designed. -The weights \(W_d\), \(W_r\), and \(W_n\) may be constant or dynamic and describe the relative importance and/or the frequency content of the disturbance, set points and noise signals. -The weight \(W_\text{ref}\) is a desired closed-loop transfer function between the weighted set point \(r_s\) and the actual output \(y\). -The weights \(W_e\) and \(W_u\) reflect the desired frequency content of the error \((y-y_\text{ref})\) and the control signals \(u\), respectively. -The problem can be cast as a standard \(\hinf\) optimization in the general control configuration by defining

-

\begin{equation*} -w = \begin{bmatrix}d\r\n\end{bmatrix},\ z = \begin{bmatrix}z_1\z_2\end{bmatrix}, \ v = \begin{bmatrix}r_s\y_m\end{bmatrix},\ u = u -\end{equation*}

-

-
- Figure 48: A signal-based \(\hinf\) control problem
-

Figure 48: A signal-based \(\hinf\) control problem

-
-
- -

Suppose we now introduce a multiplicative dynamic uncertainty model at the input to the plant as shown in Fig. fig:hinf_signal_based_uncertainty. -The problem we now want to solve is: find a stabilizing controller \(K\) such that the \(\hinf\) norm of the transfer function between \(w\) and \(z\) is less that 1 for all \(\Delta\) where \(\hnorm{\Delta} < 1\). -We have assumed in this statement that the signal weights have normalized the 2-norm of the exogenous input signals to unity. -This problem is a non-standard \(\hinf\) optimization. -It is a robust performance problem for which the \(\mu\text{-synthesis}\) procedure can be applied where we require the structured singular value: -\[ \mu(M(j\omega)) < 1, \quad \forall\omega \]

-

-
- Figure 49: A signal-based \(\hinf\) control problem with input multiplicative uncertainty
-

Figure 49: A signal-based \(\hinf\) control problem with input multiplicative uncertainty

-
-
- -

However, whilst the structured singular value is a useful analysis tool for assessing designs, \(\mu\text{-synthesis}\) is sometimes difficult to use and often too complex for the practical problems.

-

\(\hinf\) Loop-Shaping Design

-

The loop-shaping design procedure described in this section is based on \(\hinf\) robust stabilization combined with classical loop shaping. -It is essentially a two stage design process:

-
    -
  • First the open-loop plant is augmented by pre and post compensators to give a desired shape to the singular values of the open-loop frequency response
  • -
  • Then the resulting shaped plant is robustly stabilized with respect to coprime factor uncertainty using \(\hinf\) optimization
  • -
-

An important advantage is that no problem-dependent uncertainty modelling, or weight selection, is required in this second step.

-

Robust Stabilization

-

For multivariable systems, classical gain and phase margins are unreliable indicators of robust stability when defined for each channel (or loop), taken one at a time, because simultaneous perturbations in more than one loop are not then catered for.

-

It is now common practice to model uncertainty by stable norm-bounded dynamic (complex) matrix perturbations. -With a single perturbation, the associated robustness tests is in terms of the maximum singular values of various closed-loop transfer functions. -Use of a single stable perturbation restricts the plant and perturbed plant models to either have the same number of unstable poles or the same number of RHP zeros.

-

To overcome this, two stable perturbations can be used, one on each of the factors in a coprime factorization of the plant. -Although this uncertainty description seems unrealistic and less intuitive than the others, it is in fact quite general, and for our purposes it leads to a very useful \(\hinf\) robust stabilization problem.

-

Let’s consider the stabilization of a plant \(G\) which has a normalized left coprime factorization

-

\begin{equation} -G = M^{-1} N -\end{equation}

-

where we have dropped the subscripts from \(M\) and \(N\) for simplicity.

-

A perturbed plant model \(G_p\) can then we written has

-

\begin{equation} -G_p = (M + \Delta_M)^{-1} (N + \Delta_N) -\end{equation}

-

where \(\Delta_M\), \(\Delta_N\) are stable unknown transfer functions which represent the uncertainty in the nominal plant \(G\).

-

The objective of robust stabilization is to stabilize not only the nominal model \(G\), but a family of perturbed plants defined by

-

\begin{equation} -G_p = \{ (M + \Delta_M)^{-1} (N + \Delta_N) \ :\ \hnorm{\Delta_N\ \Delta_M} < \epsilon \} -\end{equation}

-

where \(\epsilon > 0\) is then the stability margin.

-

For the perturbed feedback system of Fig. fig:coprime_uncertainty_bis, the stability property is robust if and only if the nominal feedback system is stable and -\[ \gamma \triangleq \hnorm{\begin{bmatrix}K \ I\end{bmatrix} (I - GK)^{-1} M^{-1}} \le \frac{1}{\epsilon} \]

-

Notice that \(\gamma\) is the \(\hinf\) norm from \(\phi\) to \(\begin{bmatrix}u\y\end{bmatrix}\) and \((I-GK)^{-1}\) is the sensitivity function for this positive feedback arrangement.

-

-
- Figure 50: \(\hinf\) robust stabilization problem
-

Figure 50: \(\hinf\) robust stabilization problem

-
-
- -

The lowest achievable value of \(\gamma\) and the corresponding maximum stability margin \(\epsilon\) are given as

-

\begin{equation} -\gamma_\text{min} = \epsilon_{\text{max}}^{-1} = \left\{ 1 - \|N \ M\|_H^2 \right\}^{-\frac{1}{2}} = (1 + \rho(XZ))^{\frac{1}{2}} -\end{equation}

-

where \(\|\ \cdot\ \|_H\) denotes Hankel norm, \(\rho\) denotes the spectral radius (maximum eigenvalue), and for a minimal state space realization of G, Z is the unique positive definite solution of the algebraic Riccati equation

-

\begin{align*} -(A - BS^{-1} D^TC)Z &+ Z(A - BS^{-1}D^TC)^T \\\
-&- ZC^TR^{-1}CZ + BS^{-1}B^T = 0 -\end{align*}

-

where -\[ R = I + D D^T, \quad S = I + D^T D \] -\(X\) is the unique positive definite solution of the following algebraic Riccati equation

-

\begin{align*} -(A - BS^{-1} D^T C)X &+ X(A - BS^{-1}D^TC)^T \\\
-&- XBS^{-1} B^T X + C^TR^{-1}C = 0 -\end{align*}

-

A controller which guarantees that -\[ \hnorm{ \begin{bmatrix}K\I\end{bmatrix} (I-GK)^{-1} M^{-1} } \le \gamma \] -for a specified \(\gamma > \gamma_\text{min}\), is given by

-

\begin{subequations} -\begin{align} -K &\triangleq \left[ \begin{array}{c|c} -{\scriptstyle A + BF + \gamma^2L^{-T} Z C^T(C + DF)} & {\scriptstyle \gamma^2L^{-T} Z C^T} \ \hline -{\scriptstyle B^T X} & {\scriptstyle -D^T} -\end{array} \right] \label{eq:control_coprime_factor} \\\
-F &= -S^{-1}(D^T C + B^T X)\\\
-L &= (1-\gamma^2) I + XZ -\end{align} -\end{subequations}

-

The Matlab function coprimeunc can be used to generate the controller in \eqref{eq:control_coprime_factor}. -It is important to emphasize that since we can compute \(\gamma_\text{min}\) from \eqref{eq:gamma_min_coprime} we get an explicit solution by solving just two Riccati equations and avoid the \(\gamma\text{-iteration}\) needed to solve the general \(\mathcal{H}_\infty\) problem.

-

A Systematic \(\hinf\) Loop-Shaping Design Procedure

-

-Robust stabilization alone is not much used in practice because the designer is not able to specify any performance requirements.

-

To do so, pre and post compensators are used to shape the open-loop singular values prior to robust stabilization of the “shaped” plant.

-

If \(W_1\) and \(W_2\) are the pre and post compensators respectively, then the shaped plant \(G_s\) is given by

-

\begin{equation} -G_s = W_2 G W_1 -\end{equation}

-

as shown in Fig. fig:shaped_plant.

-

-
- Figure 51: The shaped plant and controller
-

Figure 51: The shaped plant and controller

-
-
- -

The controller \(K_s\) is synthesized by solving the robust stabilization problem for the shaped plant \(G_s\) with a normalized left coprime factorization \(G_s = M_s^{-1}N_s\). -The feedback controller for the plant \(G\) is then \(K = W_1 K_s W_2\).

-

Systematic procedure for \(\hinf\) loop-shaping design:

-
    -
  1. Scale the plant outputs and inputs. -This is very important for most design procedures. -In general, scaling improves the conditioning of the design problem, it enables meaningful analysis to be made of the robustness properties of the feedback system in the frequency domain, and for loop shaping it can simplify the selection of weights: -
      -
    • The outputs are scaled such that equal magnitudes of cross-coupling into each of the outputs is equally undesirable
    • -
    • Each input is scaled by a given percentage (say \(\SI{10}{%}\)) of its expected range of operation. -That is, the inputs are scaled to reflect the relative actuator capabilities.
    • -
    -
  2. -
  3. Order the inputs and outputs so that the plant is as diagonal as possible. -The relative gain array can be useful here. -The purpose of this pseudo-diagonalization is to ease the design of the pre and post compensators which, for simplicity, will be chosen to be diagonal. -Next, we discuss the selection of weights to obtain the shaped plant \(G_s = W_2 G W_1\) where \(W_1 = W_p W_a W_g\)
  4. -
  5. Select the elements of diagonal pre and post compensators \(W_p\) and \(W_2\) so that the singular values of \(W_2 G W_p\) are desirable. -This would normally mean high gain at low frequencies, a slope of about \(-1\) at the desired bandwidth(s), with higher rates at high frequencies. -The weights should be chosen so that no unstable hidden modes are created in \(G_s\) -
      -
    • \(W_2\) is usually chosen as a constant, reflecting the relative importance of the outputs to be controlled and the other measurements being fed back to the controller
    • -
    • \(W_p\) contains the dynamic shaping. Integral action, for low frequency performance; phase-advance for reducing the roll-off rates at crossover; and phase-lag to increase the roll-off rates at high frequencies should all be places in \(W_p\) is desired
    • -
    -
  6. -
  7. Optional: Align the singular values at a desired bandwidth using a further constant weight \(W_a\) cascaded with \(W_p\)
  8. -
  9. Optional: Introduce an additional gain matrix \(W_g\) cascaded with \(W_a\) to provide control over actuator range. \(W_g\) is diagonal and is adjusted so that actuator rate limits are not exceeded for reference demands and typical disturbances on the scaled plant outputs
  10. -
  11. Robustly stabilize the shaped plant \(G_s = W_2 G W_1\) where \(W_1 = W_p W_a W_g\) -
      -
    • First, calculate the maximum stability margin \(\epsilon_{\text{max}} = 1/\gamma_\text{min}\)
    • -
    • If the margin is too small, \(\epsilon_{\text{max}} < 0.25\), then go back to step 4 and modify the weights. Otherwise, select \(\gamma > \gamma_\text{min}\), by about \(\SI{10}{%}\), and synthesize a sub-optimal controller. There is usually no advantage to be gained by using the optimal controller
    • -
    • When \(\epsilon_{\text{max}} > 0.25\) (respectively \(\gamma_\text{min} < 4\)) the design is usually successful. In this case, at least \(\SI{25}{%}\) coprime factor uncertainty is allowed, and we also find that the shape of the open-loop singular values will not have changed much after robust stabilization
    • -
    • A small value of \(\epsilon_{\text{max}}\) indicates that the chosen singular value loop-shapes are incompatible with robust stability requirements
    • -
    -
  12. -
  13. Analyze the design and if not all the specification are met, make further modifications to the weights
  14. -
  15. Implement the controller. -The configuration shown in Fig. fig:shapping_practical_implementation has been found useful when compared with the conventional setup in Fig. fig:classical_feedback_small. -This is because the references do not directly excite the dynamics of \(K_s\), which can result in large amounts of overshoot. -The constant prefilter ensure a steady-state gain of \(1\) between \(r\) and \(y\), assuming integral action in \(W_1\) or \(G\)
  16. -
-

-
- Figure 52: A practical implementation of the loop-shaping controller
-

Figure 52: A practical implementation of the loop-shaping controller

-
-
- -

We will conclude this section with a summary of the advantages offered by the above \(\hinf\) loop-shaping design procedure:

-
    -
  • It is relatively easy to use, being based on classical loop-shaping ideas
  • -
  • There exists a closed formula for the \(\hinf\) optimal cost \(\gamma_\text{min}\), which in turn corresponds to a maximum stability margin \(\epsilon_{\text{max}} = 1/\gamma_\text{min}\)
  • -
  • No \(\gamma\text{-iteration}\) is required in the solution
  • -
  • Except for special systems, ones with all-pass factors, there are no pole-zero cancellations between the plant and controller. -Pole-zeros cancellations are common in many \(\hinf\) control problems and are a problem when the plant has lightly damped modes
  • -
-

Two Degrees-of-freedom Controllers

-

Many control design problems possess two degrees-of-freedom:

-
    -
  • on one hand, measurement of feedback signals
  • -
  • and on the other hand, commands and reference
  • -
-

Sometimes, one degree-of-freedom is left out of the design, and the controller is driven by an error signal i.e. the difference between a command and the output. -But in cases where stringent time-domain specifications are set on the output response, a one degree-of-freedom structure may not be sufficient.

-

A general two degrees-of-freedom feedback control scheme is depicted in Fig. fig:classical_feedback_2dof_simple. -The commands and feedbacks enter the controller separately and are independently processed.

-

-
- Figure 53: General two degrees-of-freedom feedback control scheme
-

Figure 53: General two degrees-of-freedom feedback control scheme

-
-
- -

The presented \(\mathcal{H}_\infty\) loop-shaping design procedure in section sec:hinf_loop_shaping_procedure is a one-degree-of-freedom design, although a constant pre-filter can be easily implemented for steady-state accuracy. -However, this may not be sufficient and a dynamic two degrees-of-freedom design is required.

-

The design problem is illustrated in Fig. fig:coprime_uncertainty_hinf. -The feedback part of the controller \(K_2\) is designed to meet robust stability and disturbance rejection requirements. -A prefilter is introduced to force the response of the closed-loop system to follow that of a specified model \(T_{\text{ref}}\), often called the reference model.

-

-
- Figure 54: Two degrees-of-freedom \(\mathcal{H}_\infty\) loop-shaping design problem
-

Figure 54: Two degrees-of-freedom \(\mathcal{H}_\infty\) loop-shaping design problem

-
-
- -

The design problem is to find the stabilizing controller \(K = [K_1,\ K_2]\) for the shaped plant \(G_s = G W_1\), with a normalized coprime factorization \(G_s = M_s^{-1} N_s\), which minimizes the \(\mathcal{H}_\infty\) norm of the transfer function between the signals \([r^T\ \phi^T]^T\) and \([u_s^T\ y^T\ e^T]^T\) as defined in Fig. fig:coprime_uncertainty_hinf. -This problem is easily cast into the general configuration.

-

The control signal to the shaped plant \(u_s\) is given by: -\[ u_s = \begin{bmatrix} K_1 & K_2 \end{bmatrix} \begin{bmatrix} \beta \ y \end{bmatrix} \] -where \(K_1\) is the prefilter, \(K_2\) is the feedback controller, \(\beta\) is the scaled reference and \(y\) is the measured output. -The purpose of the prefilter is to ensure that: -\[ \left\| (I - G_s K_2)^{-1} G_s K_1 - T_{\text{ref}} \right\|_\infty < \gamma \rho^2 \] -\(T_{\text{ref}}\) is the desired closed-loop transfer function and \(\rho\) is a scalar parameter that the designer can increase to place more emphasis on model matching in the optimization at the expense of robustness.

-

The main steps required to synthesize a two degrees-of-freedom \(\mathcal{H}_\infty\) loop-shaping controller are:

-
    -
  1. Design a one degree-of-freedom \(\mathcal{H}_\infty\) loop-shaping controller (section sec:hinf_loop_shaping_procedure) but without a post-compensator \(W_2\)
  2. -
  3. Select a desired closed-loop transfer function \(T_{\text{ref}}\) between the commands and controller outputs
  4. -
  5. Set the scalar parameter \(\rho\) to a small value greater than \(1\); something in the range \(1\) to \(3\) will usually suffice
  6. -
  7. For the shaped \(G_s = G W_1\), the desired response \(T_{\text{ref}}\), and the scalar parameter \(\rho\), solve the standard \(\mathcal{H}_\infty\) optimization problem to a specified tolerance to get \(K = [K_1,\ K_2]\)
  8. -
  9. Replace the prefilter \(K_1\) by \(K_1 W_i\) to give exact model-matching at steady-state.
  10. -
  11. Analyze and, if required, redesign making adjustments to \(\rho\) and possibly \(W_1\) and \(T_{\text{ref}}\)
  12. -
-

The final two degrees-of-freedom \(\mathcal{H}_\infty\) loop-shaping controller is illustrated in Fig. fig:hinf_synthesis_2dof.

-

-
- Figure 55: Two degrees-of-freedom \(\mathcal{H}_\infty\) loop-shaping controller
-

Figure 55: Two degrees-of-freedom \(\mathcal{H}_\infty\) loop-shaping controller

-
-
- -

Observer-Based Structure for \(\hinf\) Loop-Shaping Controllers

-

\(\mathcal{H}_\infty\) designs exhibit an observer/state feedback structure in the controller. -The clear structure of the \(\mathcal{H}_\infty\) loop-shaping controllers has several advantages:

-
    -
  • It is helpful in describing a controller’s function
  • -
  • It lends itself to implementation in a gain-schedule scheme
  • -
  • If offers computational savings in digital implementations
  • -
-

Let’s assume that the shaped plant is strictly proper, with a stabilizable and detectable state space realization -\[ G_s \triangleq \left[ \begin{array}{c|c} -A_s & B_s \ \hline -C_s & 0 -\end{array} \right] \]

-

The single degree-of-freedom \(\mathcal{H}_\infty\) loop-shaping controller can be realized as an observer for the shaped plant plus a state feedback control law:

-

\begin{align*} -\dot{\hat{x}}_s &= A_s \hat{x}_s + H_s(C_s \hat{x}_s - y_s) + B_s u_s \\\
-u_s &= K_s \hat{x}_s -\end{align*}

-

where \(\hat{x}_s\) is the observer state, \(u_s\) and \(y_s\) are respectively the input and output of the shaped plant, and

-

\begin{align*} -H_s &= -Z_s C_s^T \\\
-K_s &= -B_s^T [I - \gamma^{-2}I - \gamma^{-2} X_s Z_s]^{-1} X_s -\end{align*}

-

where \(Z_s\) and \(X_s\) are the appropriate solutions to the generalized algebraic Riccati equations for \(G_s\).

-

The same can be done for two degrees-of-freedom controllers.

-

Implementation Issues

-
Discrete-time controllers
-

For implementation purposes, discrete-time controllers are usually required. -These can be obtained from a continuous-time design using a bilinear transformation from the \(s\text{-domain}\) to the \(z\text{-domain}\), but there can be advantages in being able to design directly in discrete time.

-
Anti-windup
-

In \(\hinf\) loop-shaping the pre compensator weight \(W_1\) would normally include integral action in order to reject low frequency disturbances acting on the system. -However, in the case of actuator saturation, the integrators continue to integrate their input and hence cause windup problems. -An anti-windup scheme is therefore required on the weighting function \(W_1\). -The approach we recommend is to implement the weight \(W_1\) in its self-conditioned or Hanus form. -Let the weight \(W_1\) have a realization -\[ W_1 \triangleq \left[ \begin{array}{c|c} -A_w & B_w \ \hline -C_w & D_w -\end{array} \right] \] -and let \(u\) be the input to the plant actuators and \(u_s\) the input to the shaped plant. -Then \(u = W_1 u_s\). -When implemented in Hanus form, the expression for \(u\) becomes -\[ u = \left[ \begin{array}{c|cc} -A_w - B_wD_w^{-1}C_w & 0 & B_wD_w^{-1} \ \hline -C_w & D_w & 0 -\end{array} \right] \begin{bmatrix} -u_s \ u_a -\end{bmatrix} \] -where \(u_a\) is the actual plant input, that is the measurement at the output of the actuators which therefore contains information about possible actuator saturation.

-

The situation is illustrated in Fig. fig:weight_anti_windup, where the actuators are each modeled by a unit gain and a saturation.

-

-
- Figure 56: Self-conditioned weight \(W_1\)
-

Figure 56: Self-conditioned weight \(W_1\)

-
-
- -

The Hanus form prevents windup by keeping the states of \(W_1\) consistent with the actual plant input at all times. -When there is no saturation, \(u_a=u\), the dynamics of \(W_1\) remains unaffected. -But when \(u_a\neq u\), the dynamics are inverted and driven by \(u_a\) so that the states remain consistent with the actual plant input \(u_a\). -Notice that such an implementation requires \(W_1\) to be invertible and minimum phase.

-
Bumpless transfer
-

When multi-mode switched controller is designed, one should ensure smooth transition from one controller to the other (bumpless transfer). -It was found useful to condition the reference models and the observers in each of the controllers. -When on-line, the observer state evolves according to -\[ \dot{\hat{x}}_s = A_s \hat{x}_s + H_s (C_s \hat{x}_s - y_s) + B_s u_s \] -but when off-line, the state equation becomes -\[ \dot{\hat{x}}_s = A_s \hat{x}_s + H_s (C_s \hat{x}_s - y_s) + B_s u_{as} \] -where \(u_{as}\) is the actual input to the shaped plant governed by the on-line controller.

-

Doing so ensure that the inputs to the shaped plant for the off-line controller follows the actual shaped plant input \(u_{as}\) given by the on-line controller. -The observer based structure of the \(\mathcal{H}_\infty\) loop-shaping controller is then helpful for such technique.

-

Conclusion

-

Several methods and techniques for controller design have been described. -The emphasis has been on \(\hinf\) loop shaping which is easy to apply and works well in practice. -It combines classical loop-shaping ideas with an effective method for robustly stabilizing the feedback loop.

-

For complex problems, such as unstable plants with multiple gain crossover frequencies, it may not be easy to decide on a desired loop shape. -In which case, we would suggest doing an initial LQG design (with simple weights) and using the resulting loop shape as the desired one for the \(\hinf\) loop shaping.

-

And alternative to \(\hinf\) loop shaping is a standard \(\hinf\) design with a stacked cost function such as in \(S/KS\) mixed-sensitivity optimization. -In this approach, \(\hinf\) optimization is used to shape two or sometimes three closed-loop transfer functions. -However, with more functions, the shaping becomes increasingly difficult for the designer.

-

In other design situations where there are several performance objectives, it may be more appropriate to follow a signal-based \(\htwo\) or \(\hinf\) approach. -But again, the problem formulations become so complex that the designer has little direct influence on the design.

-

After a design, the resulting controller should be analyzed with respect to robustness and tested using nonlinear simulations. -For the study of robustness, we recommend \(\mu\text{-analysis}\). If the design is not robust, then the weights should be modified. -Sometimes, one might consider synthesizing a \(\mu\text{-optimal}\) controller, but this complexity is rarely necessary in practice. -Moreover, one should be careful about combining controller synthesis and analysis into a single step.

-

Controller Structure Design

-

-

Introduction

-

In previous sections, we considered the general problem formulation in Fig. fig:general_control_names_bis and stated that the controller design problem is to find a controller \(K\) which based on the information in \(v\), generates a control signal \(u\) which counteracts the influence of \(w\) on \(z\), thereby minimizing the closed loop norm from \(w\) to \(z\).

-

-
- Figure 57: General Control Configuration
-

Figure 57: General Control Configuration

-
-
- -

In this chapter we are concerned with the structural decisions associated with the following selection tasks of control structure design:

-
    -
  • Controlled outputs: What are the variables \(z\)?
  • -
  • Manipulations and measurements: What are the variable set \(u\) and \(v\)?
  • -
  • Control configuration: What is the structure of \(K\)?
  • -
  • Controller type: What algorithm is used for \(K\)?
  • -
-

The distinction between the words under control structure and control configuration are significant. -The control structure refers to all structural decisions included in the design of a control system. -On the other hand, the control configuration refers only to the structuring of the controller \(K\) itself.

-

Ideally, the tasks involved in designing a complete control system are performed sequentially; first a “top down” selection of controller outputs, measurements and inputs, and then a “bottom up” design of the control system in which the selection of the control configuration is the most important decision. -However, in practice the tasks are closely related so the procedure may involve iteration.

-

One important reason for decomposing the control system into a specific control configuration is that it may allow for simple tuning of the sub-controllers without the need for a detailed plant model describing the dynamics and interactions in the process. -Multivariable centralized controllers may always outperform decomposed (decentralized) controllers, bus this performance gain must be traded off against the cost of obtaining and maintaining a sufficiently detailed plant model.

-

The number of possible control structure is usually very large. -Fortunately, we can often from physical insight obtain a reasonable choice of controlled outputs, measurements and manipulated inputs.

-

Optimization and Control

-

The selection of controlled outputs involves selecting the variables \(y\) to be controlled at given reference values \(y \approx r\). -The reference value \(r\) is usually set at some higher layer in the control hierarchy which is often divided into two layers:

-
    -
  • Optimization layer: computes the desired reference commands \(r\)
  • -
  • Control layer: implements these commands to achieve \(y \approx r\)
  • -
-

Additional layers are possible, as is illustrated in Fig. fig:control_system_hierarchy which shows a typical control hierarchy for a chemical plant.

-

-
- Figure 58: Typical control system hierarchy in a chemical plant
-

Figure 58: Typical control system hierarchy in a chemical plant

-
-
- -

In general, the information flow in such a control hierarchy is based on the higher layer sending reference values (setpoints) to the layer below reporting back any problems achieving this (see Fig. fig:optimize_control_b). -There is usually a time scale separation between the layers which means that the setpoints, as viewed from a given layer, are updated only periodically.

-

The optimization tends to be performed open-loop with limited use of feedback. On the other hand, the control layer is mainly based on feedback information. -The optimization is often based on nonlinear steady-state models, whereas we often use linear dynamic models in the control layer.

-

From a theoretical point of view, the optimal performance is obtained with a centralized optimizing controller, which combines the two layers of optimizing and control (see Fig. fig:optimize_control_c). -All control actions in such an ideal control system would be perfectly coordinated and the control system would use on-line dynamic optimization based on nonlinear dynamic model of the complete plant. -However, this solution is normally not used for a number a reasons, included the cost of modeling, the difficulty of controller design, maintenance, robustness problems and the lack of computing power.

-

-
- Table 6: - Alternative structures for optimization and control -
- - - - - - - - - - - - - - - -
Open loop optimization Closed-loop implementation with separate control layer Integrated optimization and control
-

Selection of Controlled Outputs

-

A controlled output is an output variable (usually measured) with an associated control objective (usually a reference value). -In many cases, it is clear from a physical understanding of the process what the controlled outputs should be. -In other cases, it is less obvious because each control objective may not be associated with a measured output variable.

-

In the following, we let \(y\) denote the selected controller outputs in the control layer. -Two distinct questions arise:

-
    -
  1. What variables \(y\) should be selected?
  2. -
  3. What is the optimal reference value \(y_\text{opt}\)?
  4. -
-

For the first problem, we make the following assumptions:

-
    -
  1. The overall goal can be quantified in terms of a scalar cost function \(J\) which we want to minimize
  2. -
  3. For a given disturbance \(d\), there exists an optimal value \(u_\text{opt}(d)\) and corresponding value \(y_\text{opt}(d)\) which minimizes the cost function \(J\)
  4. -
  5. The reference values \(r\) for the controlled outputs \(y\) should be constant, i.e. \(r\) should be independent of the disturbances \(d\)
  6. -
-

The system behavior is a function of the independent variables \(u\) and \(d\): \(J = J(u, d)\). -For a given disturbance \(d\) the optimal value of the cost function is

-

\begin{equation} -J_\text{opt}(d) \triangleq J(u_\text{opt}, d) = \min_u J(u, d) -\end{equation}

-

In practice \(u \neq u_\text{opt}\), and we have a loss which can be quantified by \(L = J - J_\text{opt}\). -A reasonable objective for selecting controlled outputs \(y\) is to minimize some norm of the loss, for instance the worst-case loss:

-

\begin{equation} -\Phi \triangleq \max_{d \in \mathcal{D}} |\underbrace{J(u, d) - J(u_\text{opt}, d)}_{L}| -\end{equation}

-

where \(\mathcal{D}\) is the set of possible disturbances.

-

Direct Evaluation of Cost

-

The “brute force” approach for selecting controlled variables is to evaluate the loss for alternative sets of controlled variable. -By solving the non linear equations, we evaluate directly the cost function \(J\) for various disturbances \(d\). -The set of controlled outputs with smallest worst case or average value of \(J\) is then preferred. -This approach may be time consuming because the solution of the nonlinear equations must be repeated for each candidate set of controlled outputs.

-

Linear Analysis

-

Consider the loss \(L = J(u,d) - J_\text{opt}(d)\) where \(d\) is a fixed disturbance. -We make the following additional assumptions:

-
    -
  1. The cost function \\(J\\) is smooth (twice differentiable)
  2. -
  3. The optimization problem is unconstrained. -If it is optimal to keep some variable at a constant, then we assume that this is implemented and consider the remaining unconstrained problem
  4. -
  5. The dynamics of the problem can be neglected, that is, **we consider the steady-state control and optimization**
  6. -
-

For a fixed \(d\) we may express \(J(u, d)\) in terms of a Taylor series expansion in \(u\) around the optimal point. -By neglecting terms of third order and higher, we obtain: -\[ J(u, d) = J_\text{opt}(d) + \frac{1}{2} (u - u_\text{opt}(d))^T \left(\frac{\partial^2 J}{\partial u^2}\right)_\text{opt} (u - u_\text{opt}(d)) \] -This quantifies how \(u-u_\text{opt}\) affects the cost function. -For a fixed \(d\), we have: \(y - y_\text{opt} = G (u - u_\text{opt})\) where \(G\) is the steady state gain matrix. -Thus, we get: -\[ J - J_\text{opt} \approx \frac{1}{2} \big(G^{-1}(y-y_\text{opt})\big)^T \left(\frac{\partial^2 J}{\partial u^2}\right)_\text{opt} G^{-1} (y - y_\text{opt}) \]

-

We conclude that we should select \(y\) such that:

-
    -
  1. \(G^{-1}\) is small: the inputs have a large effect on \(y\)
  2. -
  3. \(e_\text{opt} = r - y_\text{opt}(d)\) is small: its optimal value \(y_\text{opt}(d)\) depends only weakly on the disturbances and other changes
  4. -
  5. \(e = y - r\) is small: it is easy to keep the control error \(e\) small
  6. -
-

Note that \(\bar{\sigma}(G^{-1}) = 1/\underline{\sigma}(G)\) and so we want the smallest singular value of the steady state gain matrix to be large.

-

As this depends of scaling, we should first scale the outputs such that the expected magnitude of \(y_i - y_{i_\text{opt}}\) is similar in magnitude for each output, and scale the inputs such that the effect of a given deviation \(u_j - u_{j_\text{opt}}\) on the cost function \(J\) is similar for each input.

-
-
-

The use of the minimum singular value to select controlled outputs may be summarized in the following procedure:

-
    -
  1. From a (nonlinear) model compute the optimal parameters (inputs and outputs) for various conditions (disturbances, operating points). -This yields a “look-up” table for optimal parameter values as a function of the operating conditions
  2. -
  3. From this data, obtain for each candidate output the variation in its optimal value -\[ v_i = \frac{(y_{i_{\text{opt,max}}} - y_{i_{\text{opt,min}}})}{2} \]
  4. -
  5. Scale the candidate outputs such that for each output the sum of the magnitudes of \(v_i\) and the control error (\(e_i\), including measurement noise \(n_i\)) is similar (e.g. \(|v_i| + |e_i| = 1\))
  6. -
  7. Scale the inputs such that a unit deviation in each input from its optimal value has the same effect on the cost function \(J\)
  8. -
  9. Select as candidates those sets of controlled outputs which corresponds to a large value of \(\underline{\sigma}(G)\). -\(G\) is the transfer function for the effect of the scaled inputs on the scaled outputs
  10. -
-
-

Summary

-

Generally, the optimal values of all variables will change with time during operation. -If the loss imposed by keeping constant setpoints is acceptable, then we have self-optimizing control. -The objective of the control layer is then to keep the controlled outputs at their reference values (which are computed by the optimization layer).

-

The controlled outputs are often measured, but we may also estimated their values based on other measured variables. -We may also use other measurements to improve the control of the controlled outputs, for example, by use of cascade control. -Thus, the selection of controlled and measured outputs are two separate issues.

-

Selection of Manipulations and Measurements

-

We are here concerned with the variable sets \(u\) and \(v\) in Fig. fig:general_control_names_bis. -Note that the measurements \(v\) used by the controller are in general different from the controlled variables \(z\) because we may not be able to measure all the controlled variables and we may want to measure and control additional variables in order to:

-
    -
  • Stabilize the plant, or more generally change its dynamics
  • -
  • Improve local disturbance rejection
  • -
-
Stabilization
-

We usually start of controller design by designing a lower-layer controller to stabilize the plant. -The issue is then: which outputs and inputs should be used for stabilization? -A reasonable objective is to minimize the required input usage of the stabilizing control system.

-
Local disturbance rejection
-

For measurements, the rule is generally to select those which have a strong relationship with the controlled outputs, or which may quickly detect a major disturbance.

-

The selected manipulations should have a large effect on the controlled outputs and should be located “close” (in terms of dynamic response) to the outputs and measurements.

-

To evaluate the combinations of manipulations and measurements, one may perform an input-output controllability analysis for each combination (e.g. consider the minimum singular values, RHP-zeros, interactions, etc). -A more involved approach would be to perform a achievable robust performance analysis. -An even more involved (and exact) approach would be to synthesize controllers for optimal robust performance for each candidate combination. -However, the number of combination has a combinatorial growth and the analysis may become very time-consuming.

-

RGA for Non-Square Plant

-

A simple but effective tool for selecting inputs and outputs, which avoids to combinatorial problem is the Relative Gain Array (RGA) of the “big” transfer matrix \(G_\text{all}\) with all candidates inputs and outputs included:

-

\begin{equation} -\tcmbox{\Lambda = G_{\text{all}} \times G_{\text{all}}^{\dagger^T}} -\end{equation}

-

Essentially, one may consider not using those manipulations \(u\) corresponding to columns in the RGA where the sum of the elements is much smaller than 1.

-

Similarly, one may consider not using those outputs \(v\) corresponding to rows in the RGA where the sum of the elements is much small than 1.

-

Control Configuration Elements

-

We now assume that the measurements, manipulations and controlled outputs are fixed. -The available synthesis theories presented in this book result in a multivariable controller \(K\) which connects all available measurements \(v\) with all available manipulations \(u\): -\[ u = K v \] -However, such a “big” controller may not be desirable.

-
-
-

We define the control configuration to be the restrictions imposed on the overall controller \(K\) by decomposing it into a set of local controllers with predetermined links and with a possibly predetermined design sequence where subcontrollers are designed locally.

-
-

Some elements used to build up a specific control configuration are:

-
    -
  • Cascade controllers. The output from one controller is the input to another
  • -
  • Decentralized controllers. The control system consists of independent feedback controllers which interconnect a subset of the output measurements with a subset of the manipulated inputs. -These subsets should not be used by any other controller
  • -
  • Feedforward elements. Link measured disturbances and manipulated inputs
  • -
  • Decoupling elements. Link one set of manipulated inputs with another set of manipulated inputs. -They are used to improve the performance of decentralized control systems.
  • -
  • Selectors: used to select for control, depending on the conditions of the system, a subset of the manipulated inputs or a subset of the outputs
  • -
-

In addition to restrictions on the structure of \(K\), we may impose restrictions on in which sequence the subcontrollers are designed. -For most decomposed control systems, we design the controllers sequentially, starting with the “fast” or “inner” or “lower-layer” control loops.

-

The choice of control configuration leads to two different ways of partitioning the control system:

-
    -
  • Vertical decomposition. This usually results from a sequential design of the control system
  • -
  • Horizontal decomposition. This usually involves a set of independent decentralized controllers
  • -
-

Of course, a performance loss is inevitable if we decompose the control system. -For example, if we select a poor configuration at the lower control layer, then this may pose fundamental limitations on the achievable performance (RHP zeros, strong interactions, etc).

-

Cascade Control Systems

-

We here use SISO controllers of the form

-

\begin{equation} -u_i = K_i(s) (r_i - y_i) -\end{equation}

-

where \(K_i(s)\) is a scalar. -Then when a SISO control loop is closed, we lose the input \(u_i\) as a degree-of-freedom but the reference \(r_i\) becomes a new degree-of-freedom.

-

A cascade control structure results when either of the following two situations arise:

-
    -
  • The reference \(r_i\) is an output from another controller. -This is the conventional cascade control (Fig. fig:cascade_extra_meas)
  • -
  • The “measurement” \(y_i\) is an output from another controller. -This is referred to as input resetting (Fig. fig:cascade_extra_input)
  • -
-

-
- Table 7: - Cascade Implementations -
- - - - - - - - - - - - - -
Extra measurements \(y_2\) Extra inputs \(u_2\)
-

Cascade Control: Extra Measurements

-

Let \(u\) be the manipulated input, \(y_1\) the controlled outputs and \(y_2\) the extra measurement. -In many cases, we may use \(y_2\) to provide local disturbance rejection, linearization, or to reduce the effect of measurement noise. -For example, velocity feedback is frequently used in mechanical systems.

-
Centralized (parallel) implementation
-

A centralized implementation where \(K\) is a 2-inputs-1-output controller may be written

-

\begin{align*} -u &= K(s)(r - y) \\\
-u &= K_{11}(s)(r_1 - y_1) + K_{12}(s)(r_2 - y_2) -\end{align*}

-

where in most cases \(r_2 = 0\) since we do not have a degree-of-freedom to control \(y_2\).

-
Cascade implementation
-

To obtain an implementation with two SISO controllers, we may cascade the controllers as illustrated in Fig. fig:cascade_extra_meas:

-

\begin{align*} -r_2 &= K_1(s)(r_1 - y_1) \\\
-u_2 &= K_2(s)(r_2 - y_2),\ r_2 = \hat{u}_1 -\end{align*}

-

Note that the output \(r_2\) from the slower primary controller \(K_1\) is not a manipulated plant input, but rather the reference input to the faster secondary controller \(K_2\). -Cascades based on measuring the actual manipulated variable (\(y_2 = u_m\)) are commonly used to reduce uncertainty and non-linearity at the plant input.

-

In the general case (Fig. fig:cascade_extra_meas) \(y_1\) and \(y_2\) are not directly related to each other, and this is sometimes referred to as parallel cascade control. -However, it is common to encounter the situation in Fig. fig:cascade_control where the primary output \(y_1\) depends directly on \(y_2\) which is a special case of Fig. fig:cascade_extra_meas.

-
-
-

With reference to the special (but common) case of cascade control shown in Fig. fig:cascade_control, the use of extra measurements is useful under the following circumstances:

-
    -
  • The disturbance \(d_2\) is significant and \(G_1\) is non-minimum phase. -If \(G_1\) is minimum phase, the input-output controllability of \(G_2\) and \(G_1 G_2\) are the same and there is no fundamental advantage in measuring \(y_2\)
  • -
  • The plant \(G_2\) has considerable uncertainty associated with it and the inner loop serves to remove the uncertainty. -The inner loop \(L_2 = G_2 K_2\) removes the uncertainty if it is sufficiently fast and yields a transfer function \((I + L_2)^{-1} L_2\) close to \(I\) at frequencies where \(K_1\) is active.
  • -
-
-

-
- Figure 59: Common case of cascade control where the primary output \(y_1\) depends directly on the extra measurement \(y_2\)
-

Figure 59: Common case of cascade control where the primary output \(y_1\) depends directly on the extra measurement \(y_2\)

-
-
- -

In terms of design, it is recommended to first design \(K_2\) to minimize the effect of \(d_2\) on \(y_1\) and then to design \(K_1\) to minimize the effect of \(d_1\) on \(y_1\).

-

Cascade Control: Extra Inputs

-

In some cases we have more manipulated inputs than controlled outputs. -These may be used to improve control performance.

-
Centralized implementation
-

A centralized implementation where \(K\) is a 1-input-2-outputs controller may be written -\[ u_1 = K_{11}(s)(r-y); \quad u_2 = K_{21}(s)(r-y) \] -Here two inputs are used to control one output. -We usually let \(K_{11}\) have integral control whereas \(K_{21}\) does not. -Then \(u_2(t)\) will only be used for transient control and will return to \(0\) as \(t \to \infty\).

-
Cascade implementation
-

To obtain an implementation with two SISO controllers we may cascade the controllers as shown in Fig. fig:cascade_extra_input. -We again let input \(u_2\) take care of the fast control and \(u_1\) of the long-term control. -The fast control loop is then -\[ u_2 = K_2(s)(r - y) \] -The objective of the other slower controller is then to use input \(u_1\) to reset input \(u_2\) to its desired value \(r_{u_2}\): -\[ u_1 = K_1(s)(r_{u_2} - y_1), \ y_1 = u_2 \] -and we see that the output from the fast controller \(K_2\) is the “measurement” for the slow controller \(K_1\).

-

The cascade implementation again has the advantage of decoupling the design of the two controllers. -It also shows more clearly that \(r_{u_2}\), the reference for \(u_2\), may be used as a degree-of-freedom at higher layers in the control system.

-
-
-

Consider the system in Fig. fig:cascade_control_two_layers with two manipulated inputs (\(u_2\) and \(u_3\)), one controlled output (\(y_1\) which should be close to \(r_1\)) and two measured variables (\(y_1\) and \(y_2\)). -Input \(u_2\) has a more direct effect on \(y_1\) than does input \(u_3\) (there is a large delay in \(G_3(s)\)). -Input \(u_2\) should only be used for transient control as it is desirable that it remains close to \(r_3 = r_{u_2}\). -The extra measurement \(y_2\) is closer than \(y_1\) to the input \(u_2\) and may be useful for detecting disturbances affecting \(G_1\).

-

Controller \(K_1\) controls the primary output \(y_1\) at its reference \(r_1\) by adjusting the “input” \(\hat{u}_1\), which is the reference value for \(y_2\). -Controller \(K_2\) controls the secondary output \(y_2\) using input \(u_2\). -Finally, controller \(K_3\) manipulates \(u_3\) slowly in order to reset input \(u_2\) to its desired value \(r_3\). -We would probably tune the three controllers in the order \(K_2\), \(K_3\), and \(K_1\).

-
-

-
- Figure 60: Control configuration with two layers of cascade control
-

Figure 60: Control configuration with two layers of cascade control

-
-
- -

Selectors

-
Slip-range control for extra input
-

Sometimes the input constraints make it necessary to add a manipulated input. -In this case the control range is often split such that, for example, \(u_1\) is used for control when \(y \in [y_\text{min}, y_1]\) and \(u_2\) is used when \(y \in [y_1, y_\text{max}]\).

-
Selector for too few inputs
-

A completely different situation occurs if there are fewer inputs than outputs. -In such case, we cannot control all the outputs independently, so we either need to control all the outputs in some average manner, or we need to make a choice about which outputs are the most important to control. -Selectors are often used for the latter option.

-

Why use Cascade and Decentralized Control?

-

Decomposed control configuration can easily become quite complex and difficult to maintain and understand. -It may therefore be both simpler and better in terms of control performance to set up the controller design problem as an optimization problem and let the computer do the job, resulting in a centralized multivariable controller.

-

However, there are a number of reason why cascade and decentralized control are used in practice. -The most important one is the cost associated with obtaining good plant models, which are a prerequisite for applying multivariable control. -Since cascade and decentralized control systems depend more strongly on feedback rather than models as their source of information, it is usually more important (relative to centralized multivariable control) that the fast control loops be tuned to respond quickly.

-

The cascade and decentralized control are often easier to understand, their tuning parameters have a direct and “localized” effect, and they tend to be less sensitive to uncertainty.

-

The main challenge is then to find a control configuration which allows the controllers to be tuned independently based on a minimum of model information. -To be able to tune the controllers independently, we must require that the loops interact only to a limited extent. -For example, one desirable property is that the steady-state gain from \(u_i\) to \(y_i\) in an “inner” loop does not change too much as outer loops are closed.

-

Hierarchical and Partial Control

-

Partial Control

-
-
-

Partial control involves controlling only a subset of the outputs for which there is a control objective.

-
-

We divide the outputs \(y\) into two classes:

-
    -
  • \(y_1\) - (temporarily) uncontrolled output
  • -
  • \(y_2\) - (locally) measured and controlled output
  • -
-

We also subdivide the available manipulated inputs \(u\):

-
    -
  • \(u_2\) - inputs used for controlling \(y_2\)
  • -
  • \(u_1\) - remaining inputs
  • -
-

Four applications of partial control are:

-
    -
  1. Sequential design on decentralized controllers. -Both \(y_1\) and \(y_2\) have an associated control objective. -First, a controller \(K_2\) is designed to control \(y_2\). -Then, a controlled \(K_1\) may be designed for the remaining outputs.
  2. -
  3. Sequential design of conventional cascade control. -The outputs \(y_2\) are additional measured variables which are not important variables in themselves. -The reason for controlling \(y_2\) is to improve the control of \(y_1\). -The references \(r_2\) are used as degrees-of-freedom for controlling \(y_1\).
  4. -
  5. “true” partial control. -Both \(y_1\) and \(y_2\) have an associated control objective. -We consider whether by controlling only the subset \(y_2\) we can indirectly achieve acceptable control of \(y_1\).
  6. -
  7. Indirect control. -The outputs \(y_1\) have an associated control objective but are not measured. -Instead, we aim at indirectly controlling \(y_1\) by controlling the secondary measured variables \(y_2\).
  8. -
-

The table tab:partial_control shows clearly the differences between the four applications of partial control. -In all cases, there is a control objective associated with \(y_1\) and a feedback involving measurement and control of \(y_2\) and we want:

-
    -
  • The effect of disturbances on \(y_1\) to be small (when \(y_2\) is controlled)
  • -
  • The control of \(y_2\) using \(u_2\) to be (dynamically) easy
  • -
-

-
- Table 8: - Applications of partial control -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ControlMeas. and control of \(y_1\)?Control objective for \(y_2\)?
Sequ. decentralizedYesYes
Sequ. cascadeYesNo
“True” partialNoYes
IndirectNoNo
-

By partitioning the inputs and outputs, the overall model \(y = G u\) can be written

-

\begin{equation} -\begin{aligned} -y_1 &= G_{11} u_1 + G_{12} u_2 + G_{d1} d\\\
-y_2 &= G_{21} u_1 + G_{22} u_2 + G_{d2} d -\end{aligned} -\end{equation}

-

Assume now that feedback control \(u_2 = K_2(r_2 - y_2 - n_2)\) is used for the “secondary” subsystem involving \(u_2\) and \(y_2\) (Fig. fig:partial_control). -We get:

-

\begin{equation} -\begin{aligned} -y_1 = &(G_{11} - G_{12}K_2(I + G_{22}K_2)^{-1}G_{21})u_1 \\\
-& + (G_{d1} - G_{12}K_2(I + G_{22}K_2)^{-1}G_{d2})d \\\
-& + G_{12} K_2 (I + G_{22}K_2)^{-1}(r_2 - n_2) -\end{aligned} -\end{equation}

-

-
- Figure 61: Partial Control
-

Figure 61: Partial Control

-
-
- -
Tight control of \(y_2\)
-

In some cases, we can assume that the control of \(y_2\) is fast compared to the control of \(y_1\) so we may let \(K_2 \to \infty\) to get: -\[ u_2 = -G_{22}^{-1} G_{d2} d - G_{22}^{-1} G_{21} u_1 + G_{22}^{-1} y_2 \]

-

The dynamics of the system becomes:

-

\begin{equation} -\begin{aligned} -y_1 = &\underbrace{(G_{11} - G_{12} G_{22}^{-1} G_{21})}_{\triangleq P_u} u_1 \\\
-& + \underbrace{(G_{d1} - G_{12} G_{22}^{-1} G_{d2})}_{\triangleq P_d} d + \underbrace{G_{12} G_{22}^{-1}}_{\triangleq P_r} \underbrace{(r_2 - e_2)}_{y_2} -\end{aligned} -\end{equation}

-

where

-
    -
  • \(P_d\) is called the partial disturbance gain, which is the disturbance gain for a system under perfect partial control
  • -
  • \(P_u\) is the effect of \(u_1\) on \(y_1\) with \(y_2\) perfectly controlled
  • -
-

The obtained dynamics is independent of \(K_2\), but this only applies at frequencies where \(y_2\) is tightly controlled.

-

Hierarchical Control and Sequential Design

-

A hierarchical control system results when we design the subcontrollers in a sequential manner, usually starting with the fast loops. -This means that the controller at some higher layer in the hierarchy is designed based on a partially controlled plant.

-

The idea is to first implement a local lower-layer control system for controlling the outputs \(y_2\). -Next, with this lower-layer in place, we design a controller \(K_1\) to control \(y_1\).

-

The objectives for this hierarchical decomposition are:

-
    -
  • to allow for simple or even on-line tuning of \(K_2\)
  • -
  • to allow the use of longer sampling intervals for \(K_1\)
  • -
  • to allow simple models when designing \(K_1\)
  • -
  • to “stabilize” the plant using \(K_2\) such that it is amenable to manual control
  • -
-
-
-

The selection of \(u_2\) and \(y_2\) for use in the lower-layer control system can be done with the following criteria:

-
    -
  • The lower-layer must quickly implement the setpoints computed by the higher layers, that is, the input-output controllability of the subsystem involving the use of \(u_2\) to control \(y_2\) should be good (consider \(G_{22}\) and \(G_{d2}\))
  • -
  • The control of \(y_2\) using \(u_2\) should provide local disturbance rejection, that is, it should minimize the effect of disturbances on \(y_1\)
  • -
  • The control of \(y_2\) using \(u_2\) should not impose unnecessary control limitations (RHP-zero, ill-conditioning, etc.) on the remaining control problem which involves using \(u_1\) to control \(y_1\)
  • -
-
-
Sequential design of cascade control systems
-

Consider the conventional cascade control system in Fig. fig:cascade_extra_meas where we have additional “secondary” measurements \(y_2\) with no associated control objective, and the objective is to improve the control of \(y_1\) by locally controlling \(y_2\). -The idea is that this should reduce the effect of disturbances and uncertainty on \(y_1\).

-

From \eqref{eq:partial_control}, it follows that we should select \(y_2\) and \(u_2\) such that \(\|P_d\|\) is small and at least smaller than \(\|G_{d1}\|\). -These arguments particularly apply at high frequencies. -More precisely, we want the input-output controllability of \([P_u\ P_r]\) with disturbance model \(P_d\) to be better that of the plant \([G_{11}\ G_{12}]\) with disturbance model \(G_{d1}\).

-

“True” Partial Control

-

We here consider the case where we attempt to leave a set of primary outputs \(y_1\) uncontrolled. -This may be possible in cases where the outputs are correlated such that controlling the outputs \(y_2\) indirectly gives acceptable control of \(y_1\).

-
-
-

A set of outputs \(y_1\) may be left uncontrolled only if the effects of all disturbances (including \(r_2\)) on \(y_1\), as expressed by the elements in the corresponding partial disturbance gain matrix \(P_d\) are less than \(1\) in magnitude at all frequencies.

-
-

To evaluate the feasibility of partial control, one must for each choice of \(y_2\) and \(u_2\), rearrange the system as in \eqref{eq:partial_control_partitioning} and \eqref{eq:partial_control}, and compute \(P_d\) using \eqref{eq:tight_control_y2}.

-

Measurement Selection for Indirect Control

-

Assume the overall goal is to keep some variable \(y_1\) at a given value \(r_1\), e.g. our objective is to minimize \(J = \|y_1 - r_1\|\). -We assume that we cannot measure \(y_1\), and instead we attempt to achieve our goal by controlling \(y_2\) at a constant value \(r_2\). -For small changes, we may assume linearity and write:

-

\begin{align*} -y_1 &= G_1 u + G_{d1} d\\\
-y_2 &= G_2 u + G_{d2} d -\end{align*}

-

With feedback control of \(y_2\) we get \(y_2 = r_2 + e_2\) where \(e_2\) is the control error. -From the above two equations, we obtain -\[ y_1 = (G_{d1} - G_1 G_2^{-1} G_{d2})d + G_1 G_2^{-1} (r_2 + e_2) \]

-

With \(e_2 = 0\) and \(d = 0\) this gives \(y_1 = G_1 G_2^{-1} r_2\), so \(r_2\) must be chosen such that -\[ r_1 = G_1 G_2^{-1} r_2 \]

-

The control error in the primary output is then

-

\begin{equation} -y_1 - r_1 = \underbrace{(G_{d1} - G_1 G_2^{-1} G_{d2})}_{P_d} d + \underbrace{G_1 G_2^{-1}}_{P_r} e_2 -\end{equation}

-

To minimize \(J\), we should therefore select controlled outputs such that \(\|P_d d\|\) and \(\|P_r e_2\|\) are small. -Note that \(P_d\) depends on the scaling of \(d\) and \(y_1\). -Also the magnitude of \(e_2\) depends on the choice of outputs \(y_2\).

-
-
-

Scale the disturbances \(d\) to be of magnitude 1, and scale the outputs \(y_2\) so that the expected control error \(e_2\) (measurement noise) is of magnitude 1 for each outputs. -Then to minimize the control error for the primary output, \(J = \|y_1 - r_1\|\), we should select sets of controlled outputs which minimizes \(\|[ P_d \ P_r]\|\).

-
-

Decentralized Feedback Control

-

In this section, \(G(s)\) is a square plant which is to be controlled using a diagonal controller (Fig. fig:decentralized_diagonal_control).

-

-
- Figure 62: Decentralized diagonal control of a \(2 \times 2\) plant
-

Figure 62: Decentralized diagonal control of a \(2 \times 2\) plant

-
-
- -

The design of decentralized diagonal control systems involves two steps:

-
    -
  1. The choice of pairing (control configuration selection)
  2. -
  3. The design of each controller \(k_i(s)\)
  4. -
-

\[ K(s) = \text{diag}\{k_i(s)\} = \begin{bmatrix} -k_1(s) & & & \\\
-& k_2(s) & & \\\
-& & \ddots & \\\
-& & & k_m(s) -\end{bmatrix} \]

-

Notations for decentralized diagonal control

-

\(G(s)\) denotes a square \(m \times m\) plant with elements \(g_{ij}\). -\(G^{ij}(s)\) denotes the remaining \((m-1) \times (m-1)\) plant obtained by removing row \(i\) and column \(j\) in \(G(s)\). -We introduce: -\[ \tilde{G} \triangleq \text{diag}\{g_{ii}\} = \begin{bmatrix} -g_{11} & & & \\\
-& g_{22} & & \\\
-& & \ddots & \\\
-& & & g_{mm} \\\
-\end{bmatrix} \] -The loop transfer function in loop \(i\) is denoted \(L_i = g_{ii} k_i\).

-

RGA as a Measure of the Interaction for Decentralized Control

-

Let \(u_j\) and \(y_i\) denote a particular input and output for the multivariable plant \(G(s)\) and assume that our task is to use \(u_j\) to control \(y_i\). -There are two extreme cases:

-
    -
  • Other loops open: \(u_k = 0, \forall k \neq j\)
  • -
  • Other loops closed: \(y_k = 0, \forall k \neq i\). -It is assumed that the other loop are closed with perfect control which is a good approximation at frequencies within the bandwidth of each loop
  • -
-

We now evaluate the effect \(\partial y_i / \partial u_j\) for the two cases:

-

\begin{subequations} -\begin{align} -& \left( \frac{\partial y_i}{\partial u_j} \right)_{u_k = 0, k \neq j} = g_{ij} = [G]_{ij}\\\
-& \left( \frac{\partial y_i}{\partial u_j} \right)_{y_k = 0, k \neq i} \triangleq \hat{g}_{ij} = 1/[G^{-1}]_{ji} -\end{align} -\end{subequations}

-

The ratio between the gains corresponding the two extreme cases is a useful measure of interactions and is defined as the \(ij\text{‘th}\) relative gain:

-

\begin{equation} -\tcmbox{\lambda_{ij} \triangleq \frac{g_{ij}}{\hat{g}_{ij}} = [G]_{ij}[G^{-1}]_{ji}} -\end{equation}

-

The Relative Gain Array (RGA) is the corresponding matrix of relative gains:

-

\begin{equation} -\tcmbox{\Lambda(G) = G \times (G^{-1})^T} -\end{equation}

-

where \(\times\) denotes element-by-element multiplication.

-
-
-

Intuitively, we would like to pair variables \(u_j\) and \(y_i\) so that \(\lambda_{ij}\) is close to \(1\), because this means that the gain from \(u_j\) to \(y_i\) is unaffected by closing the other loops. -More precisely, we would like to pair such that the rearranged system, with the pairings along the diagonal, has a RGA matrix close to identity.

-
-

Factorization of Sensitivity Function

-

The magnitude of the off-diagonal elements in \(G\) (the interactions) relative to its diagonal elements are given by the matrix

-

\begin{equation} -E \triangleq (G - \tilde{G})\tilde{G}^{-1} -\end{equation}

-

An important relationship for decentralized control is:

-

\begin{equation} -\tcmbox{\underbrace{(I + G K)}_{\text{overall}} = \underbrace{(I + E \tilde{T})}_{\text{interactions}} \quad \underbrace{(I + \tilde{G} K)}_{\text{individual loops}}} -\end{equation}

-

or equivalently in terms of the sensitivity function:

-

\begin{equation} -\tcmbox{S = \tilde{S} (I + E \tilde{T})^{-1}} -\end{equation}

-

with

-

\begin{align*} -\tilde{S} &\triangleq (I + \tilde{G}K)^{-1} = \text{diag}\left\{\frac{1}{1 + g_{ii} k_i}\right\} \\\
-\tilde{T} &= I - \tilde{S} -\end{align*}

-

which contain the sensitivity and complementary sensitivity functions for the individual loops. -Note that \(\tilde{S}\) is not equal to the matrix of diagonal elements of \(S\).

-

Stability of Decentralized Control Systems

-

Consider a \(m \times m\) plant with single-loop controllers. -There are \(m!\) alternative pairings possible. -Thus tools are needed for quickly evaluating alternative pairings. -In this section, we first derive sufficient conditions for stability which may be used to select promising pairings. -We then derive necessary conditions for stability which may be used to eliminate undesirable pairings.

-
Sufficient conditions for stability
-

For decentralized diagonal control, it is desirable that the system can be tuned and operated one loop at a time. -Assume therefore that \(G\) is stable and each individual loop is stable by itself (\(\tilde{S}\) and \(\tilde{T}\) are stable). -Using the spectral radius condition on the factorized \(S\) in \eqref{eq:S_factorization}, we have that the overall system is stable (\(S\) is stable) if

-

\begin{equation} -\rho(E\tilde{T}(j\omega)) < 1, \forall\omega -\end{equation}

-

Sufficient conditions in terms of \(E\). -Assume \(G\) is stable and that the individual loops are stable (\(\tilde{T}\) is stable). -The least conservative approach is to use \(\rho(E\tilde{T}) \leq \mu(E) \maxsv(\tilde{T})\). -Then the entire system is closed-loop stable (\(T\) is stable) if

-

\begin{equation} -\tcmbox{\maxsv(\tilde{T}) = \max_i |\tilde{t}_i| < 1 / \mu(E) \quad \forall\omega} -\end{equation}

-

\(\mu(E)\) is called the structured singular value interaction measure, and is computed with respect to the diagonal structure of \(\tilde{T}\) where we may view \(\tilde{T}\) as the “design uncertainty”.

-

We usually would like to use integral action in the loops, that is we want \(\tilde{T} \approx I\) at low frequencies, i.e. \(\maxsv(\tilde{T}) \approx 1\). -Thus, we prefer pairings for which we have \(\mu(E) < 1\) at low frequencies where we have tight control. -This ensures a “generalized diagonal dominance”.

-

Sufficient conditions in terms of RGA. -Suppose the plant \(G(s)\) is stable. If the RGA-matrix \(\Lambda(G) = I\ \forall\omega\) (which can only arise for a triangular plant \(G(s)\)), then stability of each of the individual loops implies stability of the entire system.

-

In most cases, it is sufficient for overall stability to require that \(G(j\omega)\) is close to triangular (or \(\Lambda(G) \approx I\)) at crossover frequencies. -This gives the “first pairing rule”.

-
-
-

To achieve stability with decentralized control, prefer pairings such that at frequencies \(\omega\) around crossover, the rearranged matrix \(G(j\omega)\) (with the paired elements along the diagonal) is close to triangular. -This is equivalent to requiring \(\Lambda(G(j\omega)) \approx I\), i.e. the RGA-number \(\|\Lambda(G(j\omega)) - I\|_\text{sum}\) should be small.

-
-
Necessary steady-state conditions for stability
-

A desirable property of a decentralized control system is that it has integrity, i.e. the closed loop system should remain stable as subsystem controllers are brought in and out of service. -Mathematically, the system possesses integrity if it remains stable when the controller \(K\) is replace by \(\mathbb{E}K\) where \(\mathbb{E} = \text{diag}\{\epsilon_i\}, \ \epsilon_i=0,1\).

-

An even stronger requirement is that the system remains stable as the gain in various loops are reduced: \(0 \le \epsilon_i \le 1\).

-
-
-

The plant \(G(s)\) (corresponding to a given pairing with the paired elements along its diagonal) is Decentralized Integral Controllability (DIC) if there exists a stabilizing decentralized controller with integral action in each loop such that each individual loop may be detuned independently by a factor \(\epsilon_1\) (\(0 \le \epsilon_i \le 1\)) without introducing instability.

-
-

Steady-State RGA and DIC. -Consider a stable square plant \(G\) and a diagonal controller \(K\) with integral action in all elements, and assume that the loop transfer function \(GK\) is strictly proper. -If a pairing of outputs and manipulated inputs corresponds to a negative steady-state relative gain, then the closed-loop system has at least one of the following properties:

-
    -
  • The overall closed-loop system is unstable
  • -
  • The loop with the negative relative gain is unstable by itself
  • -
  • The closed-loop system is unstable if the loop with the negative relative gain is opened
  • -
-

This can be summarized as follows:

-
-
-

\begin{equation} -\begin{aligned} -&\text{A stable (reordered) plant } G(s)\\\
-&\text{is DIC only if } \lambda_{ii}(0) \ge 0 \text{ for all } i -\end{aligned} -\end{equation}

-
-

The RGA and RHP-zeros: Further reasons for not pairing on negative RGA elements

-

With decentralized control, we usually design and implement the controller by tuning and closing one loop at a time in a sequential manner. -Assume that we pair on a negative steady-state RGA-element, \(\lambda_{ij}(0) < 0\), assume that \(\lambda_{ij}(\infty)\) is positive, and assume that the element \(g_{ij}\) has no RHP-zero. -We have the following implications:

-
    -
  • If we start by closing the loop involving input \(u_i\) and \(y_j\), then we will get a RHP-zero in \(G^{ij}(s)\) which will limit the performance in the other outputs
  • -
  • If we end by closing this loop, then we will get a RHP-zero in \(\hat{g}_{ij}(s)\) which will limit the performance in output \(y_i\)
  • -
-
-
-

For a stable plant, avoid pairings that corresponds to negative steady-state RGA-elements \(\lambda_{ij}(0) < 0\)

-
-
-
-

\begin{align*} -G(0) &= \begin{bmatrix} -10.2 & 5.6 & 1.4 \\\
-15.5 & -8.4 & -0.7 \\\
-18.1 & 0.4 & 1.8 -\end{bmatrix} \\\
-\Lambda(0) &= \begin{bmatrix} -0.96 & 1.45 & -1.41 \\\
-0.94 & -0.37 & 0.43 \\\
--0.90 & -0.07 & 1.98 -\end{bmatrix} -\end{align*}

-

For a \(3 \times 3\) plant there are 6 alternative pairings. -From the steady state RGA, we see that there is only one positive element in columns 2, and only positive element in row 3, and therefore there is only on possible pairing if we require DIC: -\[ u_1 \leftrightarrow y_2,\ u_2 \leftrightarrow y_1,\ u_3 \leftrightarrow y_3 \]

-
-
-
-

\begin{align*} -G(s) &= \frac{-s + 1}{(5 s + 1)^2} \begin{bmatrix} -1 & 4 & -26 \\\
-6.2 & 1 & -26 \\\
-1 & 1 & 1 -\end{bmatrix}\\\
-\Lambda(G) &= \begin{bmatrix} -1 & 5 & -5 \\\
--5 & 1 & 5 \\\
-5 & -5 & 1 -\end{bmatrix} -\end{align*}

-

Only two of the six possible pairings gives positive steady-state RGA-elements: the diagonal pairing on all \(\lambda_{ii} = 1\) or the pairing on all \(\lambda_{ii} = 5\). -Intuitively, one may expect pairing with \(\lambda_{ii} = 1\) since it corresponds to pairing on RGA-elements equal to \(1\). -However, the RGA matrix is far from identify, and the RGA-number \(\| \Lambda - I \|_\text{sum} = 30\) for both alternative. -Thus none of the two alternatives satisfy Pairing Rule 1, and decentralized control should not be used for this plant.

-
-

Performance of Decentralized Control Systems

-

To study performance, we use the following factorization

-

\begin{equation} -S = (I + \tilde{S}(\Gamma - I)^{-1}) \tilde{S} \Gamma -\end{equation}

-

where \(\Gamma\) is the Performance Relative Gain Array (PRGA)

-

\begin{equation} -\tcmbox{\Gamma(s) \triangleq \tilde{G}(s) G^{-1}(s)} -\end{equation}

-

which is a scaled inverse of the plant.

-

At frequencies where feedback is effective (\(\tilde{S} \approx 0\)), \(S \approx \tilde{S} \Gamma\) which shows that \(\Gamma\) is important when evaluating performance with decentralized control.

-

Note that the diagonal elements of the PRGA-matrix are equal to the diagonal elements of the RGA and that the off-diagonal elements of the PRGA depend on the relative scaling on the outputs which is not the case for the RGA.

-

We will also use the related Closed-Loop Disturbance Gain (CLDG) matrix:

-

\begin{equation} -\tcmbox{\tilde{G}_d(s) \triangleq \Gamma(s)G_d(s) = \tilde{G}(s) G^{-1}(s) G_d(s)} -\end{equation}

-

which depends on both output and disturbance scaling.

-

Suppose the system has been scaled such that:

-
    -
  • Each disturbance magnitude is less than \(1\), \(|d_k| < 1\)
  • -
  • Each reference change is less than the corresponding diagonal element in \(R\), \(|r_j| < R_j\)
  • -
  • For each output the acceptable control error is less than \(1\), \(|e_i| < 1\)
  • -
-
Single disturbance
-

Consider a single disturbance, in which case \(G_d\) is a vector, and let \(g_{di}\) denote the \(i\text{‘th}\) element of \(G_d\). -Let \(L_i = g_{ii} k_i\) denote the loop transfer function in loop \(i\). -Consider frequencies where feedback is effective so \(\tilde{S}\Gamma\) is small. -Then for acceptable disturbance rejection (\(|e_i| < 1\)) we must with decentralized control required for each loop \(i\)

-

\begin{equation} -\tcmbox{|1 + L_i| > |\tilde{g}_{di}| \quad \forall i} -\end{equation}

-

which is the same as the SISO-condition except that \(G_d\) is replaced by the CLDG. -In words, \(\tilde{g}_{di}\) gives the “apparent” disturbance gain as seen from the loop \(i\) when the system is controlled using decentralized control.

-
Single reference change
-

Consider a change in reference for output \(j\) of magnitude \(R_j\). -Consider frequencies where feedback is effective. -Then for acceptable reference tracking (\(|e_i|<1\)) we must require for each loop \(i\)

-

\begin{equation} -\tcmbox{|1 + L_i| > |\gamma_{ij}| \cdot |R_j| \quad \forall i} -\end{equation}

-

which is the same as the SISO-condition except for the PRGA-factor \(|\gamma_{ij}|\).

-

Consequently, for performance it is desirable to have small elements in \(\Gamma\), at least at frequencies where feedback is effective. -However, at frequencies close to crossover, stability is the main issue and since the diagonal elements of the PRGA and RGA are equal, we usually prefer to have \(\gamma_{ii}\) close to \(1\).

-

Summary: Controllability Analysis for Decentralized Control

-

When considering decentralized diagonal control of a plant, one should first check that the plant is controllable with any controller. -The next step is to compute the RGA matrix as a function of frequency, and to determine if one can find a good set of input-output pairs bearing in mind the following:

-
    -
  1. Prefer pairings which have the RGA-matrix close to identity at frequencies around crossover, i.e. the RGA-number \(\|\Lambda(j\omega)-I\|\) should be small
  2. -
  3. Avoid a pairing \(ij\) with negative steady-state RGA elements \(\lambda_{ij}(G(0)\)
  4. -
  5. Prefer a pairing \(ij\) where \(g_{ij}(s)\) puts minimal restrictions on the achievable bandwidth. -Specifically, the frequency \(\omega_{uij}\) where \(\angle g_{ij}(j\omega_{uij}) = \SI{-180}{\degree}\) should be as large as possible -This rule favors parings on variables “close to each other”
  6. -
-

When a reasonable choice of pairings have been made, one should rearrange \(G\) to have the paired elements along the diagonal and perform a controllability analysis:

-
    -
  1. Compute the CLDG and PRGA, and plot these as a function of frequency
  2. -
  3. For systems with many loops, it is best to perform the analysis one loop at the time, that is, for each loop \\(i\\), plot \\(|\tilde{g}\_{dik}|\\) for each disturbance \\(k\\) and plot \\(|\gamma\_{ij}|\\) for each reference \\(j\\). -For performance, we need \\(|1 + L\_i|\\) to be larger than each of these: -

    \begin{equation} -|1 + L_i| > \max_{k,j}\{|\tilde{g}_{dik}|, |\gamma_{ij}|\} -\end{equation}

    -

    To achieve stability of the individual loops, one must analyze \(g_{ii}(s)\) to ensure that the bandwidth required by \eqref{eq:decent_contr_one_loop} is achievable. -Note that RHP-zeros in the diagonal elements may limit achievable decentralized control, whereas they may not pose any problems for a multivariable controller. -Since with decentralized control, we usually want to use simple controllers, the achievable bandwidth in each loop will be limited by the frequency where \(\angle g_{ii}\) is \(\SI{-180}{\degree}\)

  4. -
  5. Check for constraints by considering the elements of \\(G^{-1} G\_d\\) and make sure that they do not exceed one in magnitude within the frequency range where control is needed. -Equivalently, one may for each loop \\(i\\), plot \\(|g\_{ii}|\\) and the requirement is then that -

    \begin{equation} -|g_{ii}| > |\tilde{g}_{dik}| \quad \forall k -\end{equation}

    -

    at frequencies where \(|\tilde{g}_{dik}|\) is larger than \(1\). -This provides a direct generalization of the requirement \(|G| > |G_d|\) for SISO systems.

  6. -
-

If the plant is not controllable, then one may consider another choice of pairing and go back to Step 4. -If one still cannot find any pairing which are controllable, then one should consider multivariable control.

-
    -
  1. If the chosen pairing is controllable, then \eqref{eq:decent_contr_one_loop} tells us how large \\(|L\_i| = |g\_{ii} k\_i|\\) must be. -This can be used as a basis for designing the controller \\(k\_i(s)\\) for loop \\(i\\)
  2. -
-

Sequential Design of Decentralized Controllers

-

Usually the local controllers \(k_i(s)\) are designed locally and then all the loops are closed. -One problem with this is that the interactions may cause the overall system \(T\) so be unstable, even though the local loops \(\tilde{T}\) are stable. -This will not happen if the plant is diagonally dominant, such that we satisfy, for example \(\maxsv(\tilde{T}) < 1/\mu(E)\).

-

The stability problem is avoided if the controllers are designed sequentially when, for example, the bandwidths of the loops are quite different. -In this case, the outer loops are tuned with the inner loops in place, and each step may be considered as a SISO control problem. -In particular, overall stability is determined by \(m\) SISO stability conditions. -However, the issue of performance is more complicated because the closing of a loop may cause “disturbances” (interactions) into a previously designed loop. -The engineer must then go back and redesign a loop that has been designed earlier. -Thus sequential design may involve many iterations.

-

Conclusion on Decentralized Control

-

A number of conditions for the stability, e.g. \eqref{eq:decent_contr_cond_stability} and \eqref{eq:decent_contr_necessary_cond_stability}, and performance, e.g. \eqref{eq:decent_contr_cond_perf_dist} and \eqref{eq:decent_contr_cond_perf_ref}, of decentralized control systems have been derived.

-

The conditions may be useful in determining appropriate pairings of inputs and outputs and the sequence in which the decentralized controllers should be designed.

-

The conditions are also useful in an input-output controllability analysis for determining the viability of decentralized control.

-

Model Reduction

-

-

Introduction

-

Modern controller design methods such as \(\mathcal{H}_\infty\) and LQG, produce controllers of order at least equal to that of the plant, and usually higher because of the inclusion of weights. -These control laws may be too complex with regards to practical implementation and simpler designs are then sought. -For this purpose, one can either reduce the order of the plant model prior to controller design, or reduce the controller in the final stage.

-
-
-

Given a high-order linear time-invariant stable model \(G\), find a low-order approximation \(G_a\) such that the infinity (\(\mathcal{H}_\infty\) or \(\mathcal{L}_\infty\)) norm of the difference \(\|G - G_a\|_\infty\) is small.

-
-

By model order, we mean the dimension of the state vector in a minimal realization. -This is sometimes called the McMillan degree.

-

So far we have only been interested in the infinity (\(\mathcal{H}_\infty\)) norm of stable systems. -But the error \(G-G_a\) may be unstable and the definition of the infinity norm needs to be extended to unstable systems.

-
-
-

\(\mathcal{L}_\infty\) defines the set of rational functions which have no poles on the imaginary axis, it includes \(\mathcal{H}_\infty\), and its norm (like \(\mathcal{H}_\infty\)) is given by

-

\begin{equation} -\|G\|_\infty = \sup_\omega \maxsv(G(j\omega)) -\end{equation}

-
-

We will describe three main methods for this problem:

-
    -
  • Balanced truncation
  • -
  • Balanced residualization
  • -
  • Optimal Hankel norm approximation
  • -
-

Each method gives a stable approximation and a guaranteed bound on the error in the approximation. -We will further show how the methods can be employed to reduce the order of an unstable model \(G\).

-

All these methods start from a special state-space realization of \(G\) referred to as balanced. -We will describe this realization, but first we will show how the techniques of truncation and residualization can be used to remove the high frequency or fast modes of a state-space realization.

-

Truncation and Residualization

-

Let \((A,B,C,D)\) be a minimal realization of a stable system \(G(s)\), and partition the state vector \(x\), of dimension \(n\), into \(\colvec{x_1 \ x_2}\) where \(x_2\) is the vector of \(n-k\) states we wish to remove. -With approximate partitioning of \(A\), \(B\) and \(C\), the state space equations become

-

\begin{equation} -\begin{aligned} -\dot{x}_1 &= A_{11} x_1 + A_{12} x_2 + B_1 u \\\
-\dot{x}_2 &= A_{21} x_1 + A_{22} x_2 + B_2 u \\\
-y &= C_1 x_1 + C_2 x_2 + D u -\end{aligned} -\end{equation}

-

Truncation

-

A k-th order truncation of the realization \(G \triangleq (A, B, C, D)\) is given by \(G_a \triangleq (A_{11}, B_1, C_1, D)\). -The truncated model \(G_a\) is equal to \(G\) at infinite frequency \(G(\infty) = G_a(\infty) = D\), but apart from this, we cannot say anything for the general case about the relationship between \(G\) and \(G_a\).

-

If however, \(A\) is in Jordan form, then it is easy to order the states so that \(x_2\) corresponds to high frequency or fast modes.

- -

For simplicity, assume that \(A\) has been diagonalized so that

-

\begin{align*} -A &= \begin{bmatrix} -\lambda_1 & 0 & \dots & 0 \\\
-0 & \lambda_2 & \dots & 0 \\\
-\vdots & \vdots & \ddots & \vdots \\\
-0 & 0 & \dots & \lambda_n \\\
-\end{bmatrix},\quad B = \begin{bmatrix} -b_1^T \ b_2^T \ \vdots \ b_n^T -\end{bmatrix} \\\
-C &= \begin{bmatrix} -c_1, c_2, \dots, c_n -\end{bmatrix} -\end{align*}

-

Then, if the \(\lambda_i\) are ordered so that \(|\lambda_1| < |\lambda_2| < \dots\), the fastest modes are removed from the model after truncation. -The difference between \(G\) and \(G_a\) following a k-th order model truncation is given by -\[ G - G_a = \sum_{i = k+1}^n \frac{c_i b_i^T}{s - \lambda_i} \] -and therefore

-

\begin{equation} -\| G - G_a \|_\infty \le \sum_{i = k+1}^n \frac{\maxsv(c_i b_i^t)}{|\text{Re}(\lambda_i)|} -\end{equation}

-

It is interesting to note that the error depends on the residues \(c_i b_i^T\) as well as the \(\lambda_i\). -The distance of \(\lambda_i\) from the imaginary axis is therefore not a reliable indicator of whether the associated mode should be included in the reduced order model or not.

-

An advantage of modal truncation is that the poles of the truncated model are a subset of the poles of the original model and therefore retain any physical interpretation they might have.

-

Residualization

-

In truncation, we discard all the states and dynamics associated with \(x_2\). -Suppose that instead of this, we simply set \(\dot{x}_2 = 0\), i.e. we residualize \(x_2\), in the state-space equations. -One can then solve for \(x_2\) in terms of \(x_1\) and \(u\), and back substitution of \(x_2\), then gives

-

\begin{align*} -\dot{x}_1 &= (A_{11} - A_{12} A_{22}^{-1} A_{21}) x_1 + (B_1 - A_{12} A_{22}^{-1} B_2) u \\\
-y &= (C_1 - C_2 A_{22}^{-1} A_{21}) x_1 + (D - C_2 A_{22}^{-1} B_2) u -\end{align*}

-

And let assume \(A_{22}\) is invertible and define

-

\begin{alignat*}{3} -&A_r \triangleq A_{11} - A_{12}A_{22}^{-1}A_{21} & & \quad B_r \triangleq B_1 - A_{12}A_{22}^{-1}B_2\\\
-&C_r \triangleq C_1 - C_2A_{22}^{-1}A_{21} & & \quad D_r \triangleq D - C_2A_{22}^{-1}B_2 -\end{alignat*}

-

The reduced order model \(G_a(s) = (A_r, B_r, C_r, D_r)\) is called a residualization of \(G(s) = (A, B, C, D)\). -Usually \((A, B, C, D)\) will have been put into Jordan form, with the eigenvalues ordered so that \(x_2\) contains the fast modes.

-

Model reduction by residualization is then equivalent to singular perturbation approximation, where the derivatives of the fastest states are allowed to approach zero with some parameter \(\epsilon\).

-

An important property of residualization is that it preserves the steady-state gain of the system:

-

\begin{equation} -\tcmbox{G_a(0) = G(0)} -\end{equation}

-

This should be no surprise since the residualization process sets derivatives to zero, which are zero anyway at steady-state. -But it is in stark contrast to truncation which retains the system behavior at infinite frequency. -This contrast between truncation and residualization follows from the simple bilinear relationship \(s \to \frac{1}{s}\) which relates the two.

-

It is clear that truncation is to be preferred when accuracy is required at high frequencies, whereas residualization is better for low frequency modelling.

-

Both methods depend to a large extent on the original realization and we have suggested to use of the Jordan form. -A better realization, with many useful properties, is the balanced realization.

-

Balanced Realization

-

A balanced realization is an asymptotically stable minimal realization in which the controllability and observability Gramiams are equal and diagonal.

-

Let \((A,B,C,D)\) be a minimal realization of a stable, rational transfer function \(G(s)\), then \((A,B,C,D)\) is called balanced if the solutions to be following Lyapunov equations

-

\begin{subequations} -\begin{align} -AP + PA^T + BB^T &= 0 \\\
-A^TQ + QA + C^TC &= 0 -\end{align} -\end{subequations}

-

are \(P = Q = \text{diag}(\sigma_1, \sigma_2, \dots, \sigma_n) \triangleq \Sigma\), where \(\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_n > 0\). -\(P\) and \(Q\) are the controllability and observability Gramiams, also defined by

-

\begin{subequations} -\begin{align} -P &\triangleq \int_0^\infty e^{At} B B^T e^{A^Tt} dt \\\
-Q &\triangleq \int_0^\infty e^{A^Tt} C^T C e^{At} dt -\end{align} -\end{subequations}

-

\(\Sigma\) is therefore simply referred to as the Gramiam of \(G(s)\). -The \(\sigma_i\) are the ordered Hankel singular values of \(G(s)\), more generally defined as \(\sigma_i \triangleq \lambda_i^{\frac{1}{2}}(PQ)\), \(i = 1, \dots, n\). -Notice that \(\sigma_1 = \|G\|_H\) is the Hankel norm of \(G(s)\).

-

In balanced realization the value of each \(\sigma_i\) is associated with a state \(x_i\) of the balanced system.

-
-
-

The size of \(\sigma_i\) is a relative measure of the contribution that \(x_i\) makes to the input-output behavior of the system.

-
-

Therefore if \(\sigma_1 \gg \sigma_2\), then the state \(x_1\) affects the input-output behavior much more than \(x_2\), or indeed any other state because of the ordering of the \(\sigma_i\).

-

After balancing a system, each state is just as controllable as it is observable, and a measure of a state’s joint observability and controllability is given by its associated Hankel singular value. -This property is fundamental to the model reduction methods in the remainder of this chapter which work by removing states having little effect on the system’s input-output behavior.

-

Balanced Truncation and Balanced Residualization

-

Let the balanced realization \((A,B,C,D)\) of \(G(s)\) and the corresponding \(\Sigma\) be partitioned compatibly as

-

\begin{equation} -\begin{aligned} -A &= \begin{bmatrix} -A_{11} & A_{12} \\\
-A_{21} & A_{22} -\end{bmatrix}, \quad B = \begin{bmatrix} -B_1 \ B_2 -\end{bmatrix} \\\
-C &= \begin{bmatrix} -C_1 & C_2 -\end{bmatrix}, \quad \Sigma = \begin{bmatrix} -\Sigma_1 & 0 \\\
-0 & \Sigma_2 -\end{bmatrix} -\end{aligned} -\end{equation}

-

where

-

\begin{align*} -\Sigma_1 &= \text{diag}(\sigma_1, \sigma_2, \dots, \sigma_k)\\\
-\Sigma_2 &= \text{diag}(\sigma_{k+1}, \sigma_{k+2}, \dots, \sigma_n),\ \sigma_k > \sigma_{k+1} -\end{align*}

-
Balanced Truncation
-

The reduced order model given by \((A_{11},B_1,C_1,D)\) is called a balanced truncation of the full order system \(G(s)\). -The idea of balancing truncation is thus to first make a balanced realization of the system and then to discard the states corresponding to small Hankel singular values.

-

A balanced truncation is also a balanced realization, and the infinity norm of the error between \(G(s)\) and the reduced order system \(G_a(s)\) is bounded by twice the sum of the last \(n-k\) Hankel singular values, i.e. twice the trace of \(\Sigma_2\):

-

\begin{equation} -\|G(s) - G_a(s)\|_\infty \le 2 \cdot \text{Tr}\big( \Sigma_2 \big) -\end{equation}

-

For the case of repeated Hankel singular values, each repeated Hankel singular value is to be counted only once in calculating the sum.

-

Useful algorithms that compute balanced truncations without first computing a balanced realization still require the computation of the observability and controllability Gramiam, which can be a problem if the system to be reduced is of very high order.

-
Balanced Residualization
-

In balanced truncation above, we discarded the least controllable and observable states corresponding to \(\Sigma_2\). -In balanced residualization, we simply set to zero the derivatives of all these states.

-
Theorem
-

Let \(G(s)\) be a stable rational transfer function with Hankel singular values \(\sigma_1 > \sigma_2 > \dots > \sigma_N\) where each \(\sigma_i\) has multiplicity \(r_i\) and let \(G_a^k(s)\) be obtained by truncating or residualizing the balanced realization of \(G(s)\) to the first \((r_1 + r_2 + \dots + r_k)\) states. -Then

-

\begin{equation} -\|G(s) - G_a^k(s)\|_\infty \le 2(\sigma_{k+1} + \sigma_{k+2} + \dots + \sigma_N) -\end{equation}

-

Optimal Hankel Norm Approximation

-

In this approach to model reduction, the problem that is directly addressed is the following: given a stable model \(G(s)\) of order \(n\), find a reduced order model \(G_h^k(s)\) of degree \(k\) such that the Hankel norm of the approximation error, \(\| G(s) - G_h^k(s) \|_H\), is minimized.

-
-
-

The Hankel norm of any stable transfer function \(E(s)\) is defined as

-

\begin{equation} -\| E(s) \|_H \triangleq \rho^{\frac{1}{2}} (PQ) -\end{equation}

-

where \(P\) and \(Q\) are the controllability and observability Gramiams of \(E(s)\).

-
-

So in the optimization we seek an error which is in some sense closest to being completely unobservable and completely uncontrollable.

-

The infinity norm bound on the approximate error for the optimal Hankel norm approximation is better than for balanced truncation and residualization. This is shown with the following theorem.

-
Theorem
-

Let \(G(s)\) be a stable, square, transfer function \(G(s)\) with Hankel singular values \(\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_k \ge \sigma_{k+1} = \sigma_{k+2} = \dots = \sigma_{k+l} > \sigma_{k+l+1} \ge \dots \ge \sigma_n > 0\). -An optimal Hankel norm approximation of order \(k\), \(G_h^k(s)\), can be constructed as follows.

-

Let \((A,B,C,D)\) be a balanced realization of \(G(s)\) with the Hankel singular values reordered so that the Gramiam matrix is

-

\begin{align*} -\Sigma &= \text{diag}(\sigma_1,\dots,\sigma_k,\sigma_{k+l+1},\dots,\sigma_n,\sigma_{k+1},\dots,\sigma_{k+l})\\\
-&\triangleq \text{diag}(\Sigma_l, \sigma_{k+1}I) -\end{align*}

-

Partition \((A,B,C,D)\) to conform with \(\Sigma\) -\[ A = \begin{bmatrix} A_{11} & A_{12} \ A_{21} & A_{22} \end{bmatrix},\ B = \begin{bmatrix} B_1 \ B_2 \end{bmatrix},\ C = \begin{bmatrix} C_1 & C_2 \end{bmatrix} \] -Define \((\hat{A},\hat{B},\hat{C},\hat{D})\) by

-

\begin{subequations} -\begin{align} -\hat{A} &\triangleq \Gamma^{-1} \left( \sigma_{k+1}^2 A_{11}^T + \sigma_1 A_{11} \Sigma_1 - \sigma_{k+1} C_{1}^T U B_{1}^T \right) \\\
-\hat{B} &\triangleq \Gamma^{-1} \left( \sigma_1 B_1 + \sigma_{k+1} C_1^T U \right) \\\
-\hat{C} &\triangleq C_1 \Sigma_1 + \sigma_{k+1} U B_1^T \\\
-\hat{D} &\triangleq D - \sigma_{k+1} U -\end{align} -\end{subequations}

-

where \(U\) is a unitary matrix satisfying -\[ B_2 = - C_2^T U \ \text{ and } \ \Gamma \triangleq \Sigma_1^2 - \sigma_{k+1}^2 I \]

-

The matrix \(\hat{A}\) has \(k\) “stable” eigenvalues; the remaining ones are in the open right-half plane. -Then -\[ G_h^k(s) + F(s) = \left[ \begin{array}{c|cc} -\hat{A} & \hat{B} \ \hline -\hat{C} & \hat{D} -\end{array} \right] \] -where \(G_h^k(s)\) is a stable optimal Hankel norm approximation of order \(k\), and \(F(s)\) is an anti-stable (all poles in the open right-half plane) transfer function of order \(n-k-l\). -The Hankel norm of the error between \(G\) and the optimal approximation \(G_h^k\) is equal to the \((k+1)\text{‘th}\) Hankel singular value of \(G\):

-

\begin{equation} -\tcmbox{\| G - G_h^k \|_H = \sigma_{k+1}(G)} -\end{equation}

-

Model Reduction - Practical Summary

-

Reduction of model

-

Three reduction techniques have been discussed here: balanced residualization, balance truncation and optimal Hankel norm approximation.

-

It is sometimes desirable to have the steady-state gain of the reduced plant model the same as the full order model. -For instance, this is the case if we want to use feedforward control. -The truncated and optimal Hankel norm approximated systems do not preserve the steady-state gain and they have to be scaled, i.e. the model approximation \(G_a\) is replaced by \(G_a W_s\) where \(W_a = G_a(0)^{-1} G(0)\), \(G(s)\) being the full order model.

-

However, this scaling generally introduced large model errors at other frequencies.

-
-
-

Hence residualization is to be preferred whenever low frequency matching is desired.

-
-

Reduction of a 2 degrees-of-freedom controller

-

Let’s consider a 2 degrees-of-freedom controller \(K = [K_1\ K_2]\). -In order ensure perfect steady-state tracking, i.e. to match \(T_{\text{ref}}\) at steady-state, a prefilter \(W_i\) is added to scale the controller: \(K = [K_1 W_i\ K_2]\).

-

There are two approaches for order reduction:

-
    -
  1. the scaled controller \([K_1 W_i\ K_2]\) is reduced. -A balanced residualization of the controller preserves the controller’s steady state gain and would not need to be scaled again. -Reductions via truncation and optimal Hankel norm approximation techniques, however, lose the steady-state gain and reduced controllers would need to be re-scaled to match \(T_{\text{ref}}(0)\)
  2. -
  3. the full order controller \([K_1\ K_2]\) is reduced without first scaling the prefilter. -In which case, scaling is done after reduction. -A larger scaling is generally required for the truncated and optimal Hankel norm approximated controllers and this gives poorer model matching at other frequencies.
  4. -
-

In both cases, the balanced residualization is preferred.

-

Reduction of Unstable Models

-

Balanced truncation, balanced residualization and optimal Hankel norm approximation only apply to stable models. -In this section we briefly present two approaches for reducing the order of an unstable model.

-

Stable Part Model Reduction

-

The unstable model can be first decomposed into its stable and anti-stable parts:

-

\begin{equation} -G(s) = G_u(s) + G_s(s) -\end{equation}

-

where \(G_u(s)\) has all its poles in the closed right-half plane and \(G_s(s)\) has all its poles in the open left-half plane. -Balanced truncation, balanced residualization or optimal Hankel norm approximation can then be applied to the stable part \(G_s(s)\) to find a reduced order approximation \(G_{sa}(s)\). -This is then added to the anti-stable part to give

-

\begin{equation} -G_a(s) = G_u(s) + G_{sa}(s) -\end{equation}

-

as an approximation to the full order model \(G(s)\).

-

Coprime Factor Model Reduction

-

The coprime factors of a transfer function \(G(s)\) are stable, and therefore we could reduce the order of these factors using balanced truncation, balanced residualization or optimal Hankel norm approximation:

-
    -
  • Let \(G(s) = M^{-1}(s) N(s)\), where \(M(s)\) and \(N(s)\) are stable left-coprime factors of \(G(s)\)
  • -
  • Approximate \([N\ M]\) of degree \(n\) by \([N_a \ M_a]\) of degree \(k<n\), using balanced truncation, balanced residualization or optimal Hankel norm approximation
  • -
  • Realize the reduced order transfer function \(G_a(s)\), or degree \(k\), by \(G_a(s) = M_a^{-1}(s) N_a(s)\)
  • -
-
Theorem
-

Let \((N,M)\) be a normalized left-coprime factorization of \(G(s)\) of degree \(n\). -Let \([N_a,\ M_a]\) be a degree \(k\) balanced truncation of \([N\ M]\) which has Hankel singular values \(\sigma_1 \ge \sigma_2 \ge \dots \ge \sigma_k \ge \sigma_{k+1} \ge \dots \ge \sigma_n > 0\). -Then \((N_a, M_a)\) is a normalized left-coprime factorization of \(G_a = M_a^{-1} N_a\), and \([N_a,\ M_a]\) has Hankel singular values \(\sigma_1, \sigma_2, \dots, \sigma_k\).

-

Conclusion

-

We have presented and compared three main methods for model reduction based on balanced realizations: balanced truncation, balanced residualization and optimal Hankel norm approximation.

-

Residualization, unlike truncation and optimal Hankel norm approximation, preserves the steady-state gain of the system, and like truncation, it is simple and computationally inexpensive. -It is observed that truncation and optimal Hankel norm approximation perform better at high frequencies, where residualization performs better at low and medium frequencies, i.e. up to the critical frequencies.

-

Thus for plant model reduction, where models are not accurate at high frequencies to start with, residualization would seem to be a better option. -Further, if the steady state gains are to be kept unchanged, truncated and optimal Hankel norm approximated systems require scaling, which may result in large errors. -In such a case, too, residualization would be preferred choice.

-

For controller reduction, we have shown in a two degrees-of-freedom example, the importance of scaling and steady-state gain matching.

-

In general, steady-state gain matching may not be crucial, but the matching should usually be good near the desired closed-loop bandwidth. -Balanced residualization has been seen to perform close to the full order system in this frequency range. -Good approximation at high frequencies may also sometimes be desired. -In such a case, using truncation or optimal Hankel norm approximation with appropriate frequency weightings may yield better results.

-

Bibliography

-

Skogestad, S., & Postlethwaite, I., Multivariable feedback control: analysis and design (2007), : John Wiley.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/book/taghirad13_paral/index.html b/public/book/taghirad13_paral/index.html deleted file mode 100644 index 4b29acb..0000000 --- a/public/book/taghirad13_paral/index.html +++ /dev/null @@ -1,2277 +0,0 @@ - - - - - - Parallel robots : mechanics and control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-
-
Tags
-
Stewart Platforms, Reference Books
-
Reference
-
(Taghirad, 2013)
-
Author(s)
-
Taghirad, H.
-
Year
-
2013
-
-

Introduction

-

-

This book is intended to give some analysis and design tools for the increase number of engineers and researchers who are interested in the design and implementation of parallel robots. -A systematic approach is presented to analyze the kinematics, dynamics and control of parallel robots. -To define the motion characteristics of such robots, it is necessary to represent 3D motion of the robot moving platform with respect to a fixed coordinate. -This issue leads to the requirements for 3D representation of position, orientation and motion of bodies in space. -In chapter sec:motion_representation, such representation are introduced with emphasis on screw coordinates, which makes the representation of the general motion of the robot much easier to follow.

-

Kinematic analysis refers to the study of robot motion geometry without considering the forces and torques that cause the motion. -In this analysis (chapter sec:kinematics), the relation between the geometrical parameters of the manipulator and the final motion of the moving platform is derived and analyzed.

-

In Chapter sec:jacobian, the kinematics analysis of robot manipulators is further examined beyond static positioning. -Jacobian analysis not only reveals the relation between the joint variable velocities of a parallel manipulator and the moving platform linear and angular velocities, but also constructs the transformation needed to find the actuator forces from the forces and moments acting on the moving platform. -A systematic means to perform Jacobian analysis of parallel manipulators is given in this chapter.

-

Dynamic analysis of parallel manipulators presents an inherent complexity due to their closed-loop structure and kinematic constraints. -Nevertheless, dynamic modeling is quite important for the control, in particular because parallel manipulators are preferred in applications where precise positioning and suitable dynamic performance under high loads are the prime requirements. -In Chapter sec:dynamics, the dynamic analysis of such robots is examined through three methods, namely the Newton-Euler principle of virtual work and Lagrange formations. -Furthermore, a method is presented in this chapter to formulate the dynamic equation of parallel robots into closed form, by which the dynamic matrices are more tractable, and dynamics verification becomes feasible.

-

The control of parallel robots is elaborated in the last two chapters, in which both the motion and force control are covered.

-

Motion Representation

-

-

Spatial Motion Representation

-

Six independent parameters are sufficient to fully describe the spatial location of a rigid body.

-

Consider a rigid body in a spatial motion as represented in Figure fig:rigid_body_motion. -Let us define:

-
    -
  • A fixed reference coordinate system \((x, y, z)\) denoted by frame \(\{\bm{A}\}\) whose origin is located at point \(O_A\)
  • -
  • A moving coordinate system \((u, v, z)\) denoted by frame \(\{\bm{B}\}\) attached to the rigid body at point \(O_B\)
  • -
-

The absolute position of point \(P\) of the rigid body can be constructed from the relative position of that point with respect to the moving frame \(\{\bm{B}\}\), and the position and orientation of the moving frame \(\{\bm{B}\}\) with respect to the fixed frame \(\{\bm{A}\}\).

-

-
- Figure 1: Representation of a rigid body spatial motion
-

Figure 1: Representation of a rigid body spatial motion

-
-
- -

Position of a point

-

The position of a point \(P\) with respect to a frame \(\{\bm{A}\}\) can be described by a \(3 \times 1\) position vector. -The name of the frame is usually added as a leading superscript: \({}^A\bm{P}\) which reads as vector \(\bm{P}\) in frame \(\{\bm{A}\}\).

-

\begin{equation} -\tcmbox{{}^A\bm{P} = \begin{bmatrix} P_x\ P_y\ P_z \end{bmatrix}} -\end{equation}

-

Orientation of a Rigid Body

-

The orientation of the whole rigid body is the same for all its points (by definition). -Hence, representation of the orientation of a rigid body can be viewed as that for the orientation of a moving frame attached to the rigid body. -It can be represented in several different ways: the rotation matrix, the screw axis representation and Euler angles are common descriptions.

-
Rotation Matrix
-

We consider a rigid body that has been exposed to a pure rotation. -Its orientation has changed from a state represented by frame \(\{\bm{A}\}\) to its current orientation represented by frame \(\{\bm{B}\}\) (Figure 2).

-

A \(3 \times 3\) rotation matrix \({}^A\bm{R}_B\) is defined by

-

\begin{equation} -\tcmbox{{}^A\bm{R}_B = \left[ {}^A\hat{\bm{x}}_B | {}^A\hat{\bm{y}}_B | {}^A\hat{\bm{z}}_B \right] = \begin{bmatrix} -u_{x} & v_{x} & z_{x} \\\
-u_{y} & v_{y} & z_{y} \\\
-u_{z} & v_{z} & z_{z} -\end{bmatrix}} -\end{equation}

-

in which \({}^A\hat{\bm{x}}_B, {}^A\hat{\bm{y}}_B\) and \({}^A\hat{\bm{z}}_B\) are the Cartesian unit vectors of frame \(\{\bm{B}\}\) represented in frame \(\{\bm{A}\}\).

-

\begin{align*} -{}^A\hat{\bm{x}}_B &= {}^A\hat{u} = u_x \hat{i} + u_y \hat{j} + u_z \hat{k} \\\
-{}^A\hat{\bm{y}}_B &= {}^A\hat{v} = v_x \hat{i} + v_y \hat{j} + v_z \hat{k} \\\
-{}^A\hat{\bm{z}}_B &= {}^A\hat{w} = w_x \hat{i} + w_y \hat{j} + w_z \hat{k} -\end{align*}

-

The nine elements of the rotation matrix can be simply represented as the projections of the Cartesian unit vectors of frame \(\{\bm{B}\}\) on the unit vectors of frame \(\{\bm{A}\}\).

-

-
- Figure 2: Pure rotation of a rigid body
-

Figure 2: Pure rotation of a rigid body

-
-
- -

The rotation matrix has a number of properties linking each of its nine elements:

-
    -
  • Orthonormality: the rotation matrix is an orthonormal matrix
  • -
  • Transposition: \({}^B\bm{R}_A = {}^A\bm{R}_B^{T}\)
  • -
  • Inverse: \({}^B\bm{R}_A = {}^A\bm{R}_B^{-1} = {}^A\bm{R}_B^{T}\)
  • -
  • Pure Rotation Mapping: Suppose that the point of a rigid body with respect to the moving frame \(\{\bm{B}\}\) is given and denoted by \({}^B\bm{P}\) and we wish to express the position of this point with respect to the fixed frame \(\{\bm{A}\}\). Consider that the rigid body has been exposed to a pure rotation (\(\{\bm{A}\}\) and \(\{\bm{B}\}\) are coincident at their origins). Then -\[ \tcmbox{{}^A\bm{P} = {}^A\bm{R}_B {}^B\bm{P}} \]
  • -
  • Determinant: \(\det({}^A\bm{R}_B) = 1\)
  • -
  • Eigenvalues: The eigenvalues of a rotation matrix \({}^A\bm{R}_B\) are equal to \(1\), \(e^{i\theta}\) and \(e^{-i\theta}\) where \(\theta\) is calculated from \(\theta = \cos^{-1}\frac{\text{tr}({}^A\bm{R}_B) - 1}{2}\).
  • -
-
Screw Axis Representation
-

As seen previously, there exist an invariant angle \(\theta\) corresponding to the rotation matrix. This angle is an equivalent angle of rotation. -The rotation is a spatial change of orientation about an axis which is called the screw axis. -It can be shown that this screw axis is also an invariant of the rotation matrix, it is the eigenvector corresponding to the eigenvalue \(\lambda = 1\).

-

The term screw axis for this axis of rotation has the benefit that a general motion of a rigid body, which is composed as a pure translation and a pure rotation, can be further represented by the same axis of rotation.

-

The screw axis representation has the benefit of using only four parameters to describe a pure rotation. -These parameters are the angle of rotation \(\theta\) and the axis of rotation which is a unit vector \({}^A\hat{\bm{s}} = [s_x, s_y, s_z]^T\).

-

-
- Figure 3: Pure rotation about a screw axis
-

Figure 3: Pure rotation about a screw axis

-
-
- -

The Rodrigue’s rotation formula for spatial rotation of a rigid body gives us the new position \(\bm{P}_2\) of point \(\bm{P}_1\) after a rotation represented by the screw axis \(\hat{\bm{s}}\) and the angle \(\theta\):

-

\begin{equation} -\tcmbox{\bm{P}_2 = \bm{P}_1 \cos \theta + (\hat{\bm{s}} \times \bm{P}_1)\sin\theta + (\bm{P}_1 \cdot \hat{\bm{s}})\hat{\bm{s}}} -\end{equation}

-
Euler Angles
-

Since rotation in space is a motion with three-degrees-of-freedom, a set of three independent parameters is sufficient to represent the orientation.

-

In an Euler angle representation, three successive rotations about the coordinate system of either fixed or moving frame are used to describe the orientation of the rigid body.

-

One type of Euler angle corresponds to rotations considered with respect to the fixed frame. The representation is called pitch-roll-yaw, or fixed X-Y-Z Euler angles.

-

Three other types of Euler angles are consider with respect to a moving frame: they are denoted \(w-v-u\), \(w-v-w\) and \(w-u-w\) Euler angles.

-

Pitch-Roll-Yaw Euler Angles

-

The pitch, roll and yaw angles are defined for a moving object in space as the rotations along the lateral, longitudinal and vertical axes attached to the moving object.

-

-
- Figure 4: Definition of pitch, roll and yaw angles on an air plain
-

Figure 4: Definition of pitch, roll and yaw angles on an air plain

-
-
- -

Since all three rotations take place about the axes of a fixed coordinate frame, the resulting rotation matrix is obtained by multiplying the three basic rotation matrices as follows: -\[ \tcmbox{\bm{R}_{PRY}(\alpha, \beta, \gamma) = \bm{R}_z(\gamma) \bm{R}_y(\beta) \bm{R}_x(\alpha)} \]

-

To go from rotation matrix to Pitch-Roll-Yaw angles, the following set of equations can be used:

-

\begin{align*} -\alpha &= \atan2\left( \frac{r_{32}}{\cos \beta}, \frac{r_{33}}{\cos \beta} \right) \\\
-\beta &= \atan2\left( -r_{31}, \pm \sqrt{r_{11}^2 + r_{21}^2} \right) \\\
-\gamma &= \atan2\left( \frac{r_{21}}{\cos \beta}, \frac{r_{11}}{\cos \beta} \right) -\end{align*}

-

u-v-w Euler Angles

-

Another way to describe the orientation of a moving object is to consider three successive rotations about the coordinate axes of the moving frame. -Since the rotations do not occur about fixed axes, pre-multiplications of the individual rotation matrices fails to give the correct solution. It can be shown that the resulting matrix can be derived by post-multiplication of the individual rotation matrices as follows: -\[ {}^A\bm{R}_B(\alpha, \beta, \gamma) = \bm{R}_u(\alpha) \bm{R}_v(\beta) \bm{R}_w(\gamma) \]

-

The inverse solution for the u-v-w Euler angles is the following (for \(\cos \beta \ne 0\)):

-

\begin{align*} -\alpha &= \atan2\left( -\frac{r_{23}}{\cos \beta}, \frac{r_{33}}{\cos \beta} \right) \\\
-\beta &= \atan2\left( r_{13}, \pm \sqrt{r_{11}^2 + r_{12}^2} \right) \\\
-\gamma &= \atan2\left( -\frac{r_{12}}{\cos \beta}, \frac{r_{11}}{\cos \beta} \right) -\end{align*}

-

w-v-w Euler Angles

-

Similarly: -\[ \bm{R}_{wvw}(\alpha, \beta, \gamma) = \bm{R}_w(\alpha) \bm{R}_v(\beta) \bm{R}_w(\gamma) \]

-

And for \(\sin\beta\ne0\):

-

\begin{align*} -\alpha &= \atan2\left( \frac{r_{23}}{\sin\beta}, \frac{r_{13}}{\sin\beta} \right) \\\
-\beta &= \atan2\left( \pm \sqrt{r_{31}^2 + r_{32}^2}, r_{33} \right) \\\
-\gamma &= \atan2\left( \frac{r_{32}}{\sin\beta}, -\frac{r_{31}}{\sin\beta} \right) -\end{align*}

-

w-u-w Euler Angles

-

Here, the second rotation is about the \(u\) axis: -\[ \bm{R}_{wuw}(\alpha, \beta, \gamma) = \bm{R}_w(\alpha) \bm{R}_u(\beta) \bm{R}_w(\gamma) \]

-

And for \(\sin\beta\ne0\):

-

\begin{align*} -\alpha &= \atan2\left( \frac{r_{13}}{\sin\beta}, -\frac{r_{23}}{\sin\beta} \right) \\\
-\beta &= \atan2\left( \pm \sqrt{r_{31}^2 + r_{32}^2}, r_{33} \right) \\\
-\gamma &= \atan2\left( \frac{r_{31}}{\sin\beta}, \frac{r_{32}}{\sin\beta} \right) -\end{align*}

-

Notes about Euler Angles

-

If the Euler angle is given, a unique rotation matrix is determined for the orientation of the rigid body. -However, the inverse map is not one-to-one, and at least two Euler angle sets can be found for each orientation.

-

If the Euler angle is chosen for the representation of the orientation, extra care should be taken. From the continuity of the motion, a suitable solution may be chosen, such that no abrupt changes are seen in the variation of the Euler angles in a typical maneuver.

-

The use of rotation matrix to represent the orientation of a rigid body is then generally preferred although there are nine parameters for that description.

-

Motion of a Rigid Body

-

Since the relative positions of a rigid body with respect to a moving frame \(\{\bm{B}\}\) attached to it is fixed for all time, it is sufficient to know the position of the origin of the frame \(O_B\) and the orientation of the frame \(\{\bm{B}\}\) with respect to the fixed frame \(\{\bm{A}\}\), to represent the position of any point \(P\) in the space.

-

Representation of the position of \(O_B\) is uniquely given by the position vector, while orientation of the rigid body is represented in different forms. -However, for all possible orientation representation, a rotation matrix \({}^A\bm{R}_B\) can be derived.

-
-
-

Therefore, the location or pose of a rigid body, can be fully determined by:

-
    -
  1. The position vector of point \(O_B\) with respect to frame \(\{\bm{A}\}\) which is denoted \({}^A\bm{P}_{O_B}\)
  2. -
  3. The orientation of the rigid body, or the moving frame \(\{\bm{B}\}\) attached to it with respect to the fixed frame \(\{\bm{A}\}\), that is represented by \({}^A\bm{R}_B\).
  4. -
-
-

The position of any point \(P\) of the rigid body with respect to the fixed frame \(\{\bm{A}\}\), which is denoted \({}^A\bm{P}\) may be determined thanks to the Chasles’ theorem.

-
-
-

If the pose of a rigid body \(\{{}^A\bm{R}_B, {}^A\bm{P}_{O_B}\}\) is given, then the position of any point \(P\) of this rigid body with respect to \(\{\bm{A}\}\) is given by:

-

\begin{equation} -{}^A\bm{P} = {}^A\bm{R}_B {}^B\bm{P} + {}^A\bm{P}_{O_B} -\end{equation}

-
-

Homogeneous Transformations

-

To describe general transformations, we introduce the \(4\times1\) homogeneous coordinates, and Eq. eq:chasles_therorem is generalized to

-

\begin{equation} -\tcmbox{{}^A\bm{P} = {}^A\bm{T}_B {}^B\bm{P}} -\end{equation}

-

in which \({}^A\bm{T}_B\) is a \(4\times4\) homogeneous transformation matrix.

-

Homogeneous Coordinates

-

There are two basic classes of vector quantities, the generalization to homogeneous coordinates of which are different.

-

The first type is called line vector. Line vectors refer to a vector of which its value depends on the line of action, or the position of where it is applied. Examples are the position vector, linear velocity, force vector.

-

On the contrary, there exist quantities likes orientation that hold for the whole rigid body and do not correspond to a point. They can be positioned freely throughout the whole rigid body, without any change in their quantity. These types of vectors are called free vectors.

-

For line vectors, both orientation and translation of the moving frame contribute to their value. -Homogeneous coordinate of such vectors is generated by appending \(1\) to the three components of that vector:

-

\begin{equation} -\tcmbox{\bm{V} = \begin{bmatrix} v_x \ v_y \ v_z \ 1 \end{bmatrix}} -\end{equation}

-

For free vectors, only the orientation of the moving frame contributes to their value. -The homogeneous coordinate is then

-

\begin{equation} -\tcmbox{\bm{\omega} = \begin{bmatrix} \omega_x \ \omega_y \ \omega_z \ 0 \end{bmatrix}} -\end{equation}

-

Homogeneous Transformation Matrix

-
-
-

The homogeneous transformation matrix is a \(4\times4\) matrix, defined for the purpose of transformation mapping of a vector in a homogeneous coordinate from one frame to another in a compact form. -The matrix is composed of the rotation matrix \({}^A\bm{R}_B\) representing the orientation and the position vector \({}^A\bm{P}_{O_B}\) representing the translation. -It is partitioned as follows:

-

\begin{equation} -{}^A\bm{T}_B = -\left[ \begin{array}{ccc|c} -& & & \\\
-& {}^A\bm{R}_B & & {}^A\bm{P}_{O_B} \\\
-& & & \\\
-\hline -0 & 0 & 0 & 1 \\\
-\end{array} \right] -\end{equation}

-
-

The homogeneous transformation matrix \({}^A\bm{T}_B\) is a \(4\times4\) matrix operator mapping vector valued quantities represented by \(4\times1\) homogeneous coordinates.:

-

\begin{align*} -\left[ \begin{array}{c} \ {}^A\bm{P} \ \ \hline 1 \end{array} \right] -& = -\left[ \begin{array}{ccc|c} -& & & \\\
-& {}^A\bm{R}_B & & {}^A\bm{P}_{O_B} \\\
-& & & \\\
-\hline -0 & 0 & 0 & 1 \\\
-\end{array} \right] -\left[ \begin{array}{c} \ {}^B\bm{P} \ \ \hline 1 \end{array} \right] \\\
-{}^A\bm{P} &= {}^A\bm{R}_B {}^B\bm{P} + {}^A\bm{P}_{O_B} -\end{align*}

-

Using homogeneous coordinate for a free vector like angular velocity of a rigid body:

-

\begin{align*} -\left[ \begin{array}{c} \ {}^A\bm{\omega} \ \ \hline 0 \end{array} \right] -& = -\left[ \begin{array}{ccc|c} -& & & \\\
-& {}^A\bm{R}_B & & {}^A\bm{P}_{O_B} \\\
-& & & \\\
-\hline -0 & 0 & 0 & 1 \\\
-\end{array} \right] -\left[ \begin{array}{c} \ {}^B\bm{\omega} \ \ \hline 0 \end{array} \right] \\\
-{}^A\bm{P} &= {}^A\bm{R}_B {}^B\bm{P} -\end{align*}

-

Screw Displacement

-

The most general rigid body displacement can be produced by a translation along a line followed by a rotation about the same line. -The line is called the screw axis.

-

There exist transformations to from screw displacement notation to the transformation matrix.

-

Transformation Arithmetics

-
Consecutive transformations
-

Let us consider the motion of a rigid body described at three locations (Figure fig:consecutive_transformations). -Frame \(\{\bm{A}\}\) represents the initial location, frame \(\{\bm{B}\}\) is an intermediate location, and frame \(\{\bm{C}\}\) represents the rigid body at its final location.

-

-
- Figure 5: Motion of a rigid body represented at three locations by frame \(\{\bm{A}\}\), \(\{\bm{B}\}\) and \(\{\bm{C}\}\)
-

Figure 5: Motion of a rigid body represented at three locations by frame \(\{\bm{A}\}\), \(\{\bm{B}\}\) and \(\{\bm{C}\}\)

-
-
- -

Furthermore, suppose the position vector of a point \(P\) of the rigid body is given in the final location, that is \({}^C\bm{P}\) is given, and the position of this point is to be found in the fixed frame \(\{\bm{A}\}\), that is \({}^A\bm{P}\). -Since the locations of the rigid body is known relative to each other, \({}^C\bm{P}\) can be transformed to \({}^B\bm{P}\) using \({}^B\bm{T}_C\): -\[{}^B\bm{P} = {}^B\bm{T}_C {}^C\bm{P}\]

-

Now, \({}^B\bm{P}\) can be transformed into \({}^A\bm{P}\): -\[ {}^A\bm{P} = {}^A\bm{T}_B {}^B\bm{P} \]

-

And we have: -\[ {}^A\bm{P} = {}^A\bm{T}_B {}^B\bm{T}_C {}^C\bm{P} \]

-

From which, the consecutive transformation can be defined as follows:

-

\begin{equation} -\tcmbox{{}^A\bm{T}_C = {}^A\bm{T}_B {}^B\bm{T}_C} -\end{equation}

-
Inverse transformation
-

Direct inversion of the \(4\times4\) homogeneous transfer matrix \({}^A\bm{T}_B\) to obtain \({}^B\bm{T}_A\) might be computationally intensive. -It is much easier to use the specific structure of the transfer matrix for inversion.

-

To obtain \({}^B\bm{T}_A\), it is necessary to compute \({}^B\bm{R}_A\) and \({}^B\bm{P}_{O_A}\) from the known \({}^A\bm{R}_B\) and \({}^A\bm{P}_{O_B}\), then

-

\begin{equation*} -{}^B\bm{T}_A = -\left[ \begin{array}{ccc|c} -& & & \\\
-& {}^B\bm{R}_A & & {}^B\bm{P}_{O_A} \\\
-& & & \\\
-\hline -0 & 0 & 0 & 1 \\\
-\end{array} \right] -\end{equation*}

-

Moreover

-

\begin{align*} -{}^B\bm{R}_A &= {}^A\bm{R}_B^T \\\
-{}^B\bm{P}_{O_A} &= {}^B\bm{R}_A {}^A\bm{P}_{O_A} = - {}^B\bm{R}_A {}^A\bm{P}_{O_B} \\\
-&= -{}^A\bm{R}_B^T {}^A\bm{P}_{O_B} -\end{align*}

-

Hence, the inverse of the transformation matrix can be obtain by

-

\begin{equation} -{}^B\bm{T}_A = {}^A\bm{T}_B^{-1} = -\left[ \begin{array}{ccc|c} -& & & \\\
-& {}^A\bm{R}_B^T & & -{}^A \bm{R}_B^T {}^A\bm{P}_{O_B} \\\
-& & & \\\
-\hline -0 & 0 & 0 & 1 \\\
-\end{array} \right] -\end{equation}

-

Kinematics

-

-

Introduction

-
-
-

Kinematic analysis refers to the study of the geometry of motion of a robot, without considering the forces an torques that cause the motion. -In this analysis, the relation between the geometrical parameters of the manipulator with the final motion of the moving platform is derived and analyzed.

-
-

A parallel robot is a mechanism with a number of closed kinematic chains, and its moving platform is linked to the base by several independent kinematic chains. -Parallel robots for which the number of kinematic chains is equal to the number of degrees-of-freedom of the moving platform are called fully parallel robots.

-

If in addition to this condition, if the type and number of joints at each limb, and the number and location of the actuated joints are identical in all the limbs, such a parallel robot is called symmetric.

-

There are three main cases for fully parallel manipulators. -Planar robots with two translation and one rotational degree-of-freedom in the plane. -Spatial orientation manipulators with three rotational degrees-of-freedom in space. -And a general spatial robot with three translational and three rotational degrees-of-freedom in space.

-

It is known that unlike serial manipulators, inverse kinematic analysis of parallel robots is usually simple and straightforward. -In most cases, limb variable may be computed independently using the given pose of the moving platform, and the solution in most cases even for redundant manipulators is uniquely determined. -However, forward kinematics of parallel manipulators is generally very complicated, and its solution usually involves systems of nonlinear equations, which are highly coupled and in general have no closed form and unique solution.

-

Loop Closure Method

-

A typical parallel manipulator consists of two main bodies. -Body \(A\) is arbitrary designated as fixed and is called the base, while body \(B\) is designated to be movable and is called the moving platform.
-These two bodies are coupled via \(n\) limbs, each attached to points \(A_i\) and \(B_i\) and called fixed and moving attachment points of the limb \(i\).

-

At the displacement level, the forward kinematic problem permits the determination of the actual location or pose of the moving platform relative to the base from a set of joint-position readouts.

-

At the velocity level, the forward kinematic problem refers to the determination of the translational and angular velocities of the moving platform relative to the base, from a set of joint-velocity readouts and for a known configuration.

-

To describe the motion of the moving platform relative to the base, frame \(\{\bm{A}\}\) is attached to body \(A\) and frame \(\{\bm{B}\}\) to body \(B\). -The pose of the moving platform relative to the base is thus defined by:

-
    -
  • A position vector \(\bm{p}\) which denotes the position vector of the origin of \(\{\bm{B}\}\) with respect to frame \(\{\bm{A}\}\)
  • -
  • A \(3\times3\) rotation matrix \(R\) which denotes the rotation of \(\{\bm{B}\}\) with respect to \(\{\bm{A}\}\)
  • -
-

Each limb of a parallel manipulator defines a kinematic loop passing through the origins of frames \(\{\bm{A}\}\) and \(\{\bm{B}\}\), and through the two limb attachment points \(A_i\) and \(B_i\).

-

At the displacement level, the closure of each kinematic loop can be express in the vector form as -\[ \vec{AB} = \vec{AA_i} + \vec{A_iB_i} - \vec{BB_i} \quad \text{for } i = 1,2,\dots,n \] -in which \(\vec{AA_i}\) and \(\vec{BB_i}\) can be easily obtained from the geometry of the attachment points in the base and in the moving platform.

-

Let us defined \(\bm{a}_i = \vec{AA_i}\) in the fixed frame \(\{\bm{A}\}\), and \(\bm{b}_i = \vec{BB_i}\) in the moving frame \(\{\bm{B}\}\). -Furthermore, \(\bm{q}_i = \vec{A_iB_i}\) is defined as the limb variable, which indicated the geometry of the limb.

-
-
-

The loop closure can be written as the unknown pose variables \(\bm{p}\) and \(\bm{R}\), the position vectors describing the known geometry of the base and of the moving platform, \(\bm{a}_i\) and \(\bm{b}_i\), and the limb vector \(\bm{q}_i\)

-

\begin{equation} -\bm{p} = \bm{a}_i + \bm{q}_i - \bm{R} \bm{b}_i \quad \text{for } i=1,2,\dots,n -\end{equation}

-
-

For an inverse kinematic problem, it is assumed that the moving platform position \(\bm{p}\) and orientation \(\bm{R}\) are given and the problem is to solve the active limb variables. -This analysis is usually straightforward and results in unique solution for the limb variables.

-

However, the inverse solution is not straightforward, and usually numerical methods are used for forward kinematic solution.

-

Kinematic Analysis of a Stewart-Gough Platform

-

Mechanism Description

-

One frame \(\{\bm{A}\}\) is attached to the fixed base and frame \(\{\bm{B}\}\) is attached to the moving platform at points \(O_A\) and \(O_B\) respectively.

-

The number of actuators is equal to the degrees-of-freedom of the manipulator and hence the manipulator is fully parallel.

-
-
-

Since all the limbs are connected to the moving platform and to the base by spherical joints, no twisting torque can be transmitted and the force acting on each limb is directed along the longitudinal axis of the limb.

-
-

Geometry of the Manipulator

-
-
-

The position of the attachment points on the fixed base are denoted by the vectors \(\bm{a}_i\) and the position of moving attachment points are denoted by the vectors \(\bm{b}_i\). -The geometry of each limb is described by its length \(l_i\) and its direction is denoted by a unit vector \(\hat{\bm{s}}_i\).

-
-

The position of the point \(O_B\) of the moving platform is described by the position vector \({}^A\bm{P} = [p_x\ p_y\ p_z]^T\) and orientation of the moving platform is described by the rotation matrix \({}^A\bm{R}_B\) which can by represented by the components of the unit vectors \(\hat{\bm{u}}\), \(\hat{\bm{v}}\), \(\hat{\bm{z}}\) as follows:

-

\begin{equation} -^A\bm{R}_B = \begin{bmatrix} -u_x & v_x & w_x \\\
-u_y & v_y & w_y \\\
-u_z & v_z & w_z \\\
-\end{bmatrix} -\end{equation}

-

-
- Figure 6: Geometry of a Stewart-Gough platform
-

Figure 6: Geometry of a Stewart-Gough platform

-
-
- -

The geometry of the manipulator is shown Figure fig:stewart_schematic.

-

Inverse Kinematics

-
-
-

For inverse kinematic analysis, it is assumed that the position \({}^A\bm{P}\) and orientation of the moving platform \({}^A\bm{R}_B\) are given and the problem is to obtain the joint variables \(\bm{L} = \left[ l_1, l_2, l_3, l_4, l_5, l_6 \right]^T\).

-
-

From the geometry of the manipulator, one can write:

-

\begin{equation} -{}^A \bm{a}_i + l_i {}^A \hat{\bm{s}}_i = {}^A\bm{P} + {}^A\bm{b}_i -\end{equation}

-

Then, we can find \(l_i\) given \({}^A\bm{P}\) and \({}^A\bm{R}_B\):

-

\begin{equation} -\begin{aligned} -l_i = &\Big[ {}^A\bm{P}^T {}^A\bm{P} + {}^B\bm{b}_i^T {}^B\bm{b}_i + {}^A\bm{a}_i^T {}^A\bm{a}_i - 2 {}^A\bm{P}^T {}^A\bm{a}_i + \dots\\\
-&2 {}^A\bm{P}^T \left[{}^A\bm{R}_B {}^B\bm{b}_i\right] - 2 \left[{}^A\bm{R}_B {}^B\bm{b}_i\right]^T {}^A\bm{a}_i \Big]^{1/2} -\end{aligned} -\end{equation}

-

If the position and orientation of the platform lie in the feasible workspace, the solution is unique. -Otherwise, the solution gives complex numbers.

-

Forward Kinematics

-
-
-

In forward kinematic analysis, it is assumed that the vector of limb lengths \(\bm{L}\) is given and the problem is to find the position \({}^A\bm{P}\) and the orientation \({}^A\bm{R}_B\).

-
-

The size of the problem depends of the representation used for orientation (rotation matrix, Euler angles, …).

-

The forward kinematic problem is then to solve many highly nonlinear equations that are extremely difficult to solve.

-

The complexity of the problem depends widely on the manipulator architecture and geometry.

-

Jacobian: Velocities and Static Forces

-

-

Introduction

-
-
-

The Jacobian matrix not only reveals the relation between the joint variable velocities of a parallel manipulator to the moving platform linear and angular velocities, it also constructs the transformation needed to find the actuator forces from the forces and moments acting on the moving platform.

-
-

For specific configurations, local degeneracy can occur and leads to:

-
    -
  1. An instantaneous change in the degrees-of-freedom of the system and hence a loss of controllability
  2. -
  3. An important degradation of the natural stiffness that may lead to very high joint forces or torques
  4. -
-

Therefore, it is very important to identify singular configurations at the design stage to improve the performance.

-

Angular and Linear Velocities

-

To determine the absolute linear velocity of a point, the derivative must be calculated relative to a fixed frame. -Differentiation of a position vector with respect to a moving frame results in a relative velocity. -Therefore, it is necessary to define the arithmetics to transform the relative velocities to the absolute ones.

-

Angular Velocity of a Rigid Body

-

Angular velocity is an attribute of a rigid body that describes the rotational motion of the frame \(\{\bm{B}\}\) that is attached to the rigid body.

-
-
-

The angular velocity vector \(\bm{\Omega}\) describes the instantaneous rotation of frame \(\{\bm{B}\}\) with respect to the fixed frame \(\{\bm{A}\}\). -The direction of \(\bm{\Omega}\) indicates the instantaneous axis of rotation and its magnitude indicates the speed of rotation.

-
-

The angular velocity vector is related to the screw formalism by equation eq:angular_velocity_vector.

-

\begin{equation} -\tcmbox{\bm{\Omega} \triangleq \dot{\theta} \hat{\bm{s}}} -\end{equation}

-

The angular velocity can be expressed in any frame. For example \({}^A\bm{\Omega}\) denotes the angular velocity of the rigid body expressed in the frame \(\{\bm{A}\}\) and we have:

-

\begin{equation} -\begin{aligned} -^A \bm{\Omega} &= \Omega_x \hat{\bm{x}} + \Omega_y \hat{\bm{y}} + \Omega_z \hat{\bm{z}} \\\
-&= \dot{\theta}\left( s_x \hat{\bm{x}} + s_y \hat{\bm{y}} + s_z \hat{\bm{z}} \right) -\end{aligned} -\end{equation}

-

in which \(\Omega_x\), \(\Omega_y\) and \(\Omega_z\) are the three components of angular velocity of a rigid body expressed in frame \(\{\bm{A}\}\).

-

Linear Velocity of a Point

-

Linear velocity of a point P can be easily determined by the time derivative of the position vector \(p\) of that point with respect to a fixed frame:

-

\begin{equation} -v_p = \dot{p} = \left( \dv{p}{t} \right)_{\text{fix}} -\end{equation}

-

If the variation of the position vector is determined with respect to a moving frame, we obtain the relative velocity:

-

\begin{equation} -v_{\text{rel}} = \left( \pdv{p}{t} \right)_{\text{mov}} -\end{equation}

-

In classical mechanics, it is shown that the relation between absolute derivative of any vector to its relative derivative is given by:

-

\begin{equation} -\left( \dv{(\cdot)}{t} \right)_{\text{fix}} = \left( \pdv{(\cdot)}{t} \right)_{\text{mov}} + \bm{\Omega} \times (\cdot) -\end{equation}

-

in which \(\bm{\Omega}\) denotes the angular velocity of the moving frame with respect to the fixed frame.

-

The term \(\bm{\Omega}\times(\cdot)\) can be written in matrix form:

-

\begin{equation} -\tcmbox{\left( \dv{(\cdot)}{t} \right)_{\text{fix}} = \left( \pdv{(\cdot)}{t} \right)_{\text{mov}} + \bm{\Omega}^\times(\cdot)} -\end{equation}

-

The matrix \(\bm{\Omega}^\times\) denotes a skew-symmetric matrix defined by:

-

\begin{equation} -\tcmbox{\bm{\Omega}^\times = \begin{bmatrix} -0 & -\Omega_z & \Omega_y \\\
-\Omega_z & 0 & -\Omega_x \\\
--\Omega_y & \Omega_x & 0 -\end{bmatrix}} -\end{equation}

-

Now consider the general motion of a rigid body shown in Figure fig:general_motion, in which a moving frame \(\{\bm{B}\}\) is attached to the rigid body and the problem is to find the absolute velocity of point \(P\) with respect to a fixed frame \(\{\bm{A}\}\).

-

-
- Figure 7: Instantaneous velocity of a point \(P\) with respect to a moving frame \(\{\bm{B}\}\)
-

Figure 7: Instantaneous velocity of a point \(P\) with respect to a moving frame \(\{\bm{B}\}\)

-
-
- -

The rigid body perform a general motion which is a combination of a translation, denoted by the vector \({}^A\bm{P}_{O_B}\), and an instantaneous rotation. -To determine the velocity of point \(P\), we start with the relation between absolute and relative position vectors: -\[ ^A\bm{P} = {}^A\bm{P}_{O_B} + {}^A\bm{R}_B {}^B\bm{P} \]

-

To derive the velocity of point \(P\), we differentiate with respect to time: -\[ {}^A\bm{v}_P = {}^A\bm{v}_{O_B} + {}^A\dot{\bm{R}}_B{}^B\bm{P} + {}^A\bm{R}_B\underbrace{{}^B\bm{v}_P}_{=0} \]

-

The time derivative of the rotation matrix \({}^A\dot{\bm{R}}_B\) is:

-

\begin{equation} -\tcmbox{{}^A\dot{\bm{R}}_B = {}^A\bm{\Omega}^\times \ {}^A\bm{R}_B} -\end{equation}

-

And we finally obtain equation eq:absolute_velocity_formula.

-
-
-

\begin{equation} -{}^A\bm{v}_P = {}^A\bm{v}_{O_B} + {}^A\bm{\Omega}^\times \ {}^A\bm{R}_B {}^B\bm{P} -\end{equation}

-
-

Screw Coordinates

-

Finite rotation of a rigid body can be expressed as a rotation \(\theta\) about a screw axis \(\hat{\bm{s}}\). -Furthermore, it is shown that the angular velocity of a rigid body is also defined as the rate of instantaneous rotation angle \(\dot{\theta}\) about the same screw axis \(\hat{\bm{s}}\).

-
-
-

The most general rigid-body displacement can be produced by a translation along a line followed by a rotation about the same line. Since this displacement is reminiscent of the displacement of a screw, it is called a screw displacement, and the line of axis is called the screw axis.

-
-

Jacobian Matrices of a Parallel Manipulator

-

Let \(\bm{q} = \left[ q_1, q_2, \ldots, q_m \right]^T\) denote the vector of actuated joint coordinates (linear displacement of an actuator prismatic joint or angular rotation of an actuated revolute joint) and \(\bm{\mathcal{X}} = \left[ x_1, x_2, \ldots, x_n \right]^T\) denote the vector of moving platform motion variables (position or orientation).

-

\(m\) denotes the number of actuated joints in the manipulator, \(n\) denotes the number of degrees-of-freedom of the manipulator.

-

Generally \(m \geq n\), in which for a fully parallel manipulator \(m=n\) and for redundant manipulator \(m>n\).

-

\(\bm{q}\) and \(\bm{\mathcal{X}}\) are related through a system of nonlinear algebraic equations representing the kinematic constraints imposed by the limbs, which can be generally written as

-

\begin{equation} -f(\bm{q}, \bm{\mathcal{X}}) = 0 -\end{equation}

-

We can differentiate this equation with respect to time and obtain:

-

\begin{equation} -\tcmbox{\bm{J}_x \dot{\bm{\mathcal{X}}} = \bm{J}_q \dot{\bm{q}}} -\end{equation}

-

where

-

\begin{equation} -\bm{J}_x = \pdv{f}{\bm{\mathcal{X}}} \quad \text{and} \quad \bm{J}_q = -\pdv{f}{\bm{q}} -\end{equation}

-
-
-

The general Jacobian matrix is defined as:

-

\begin{equation} -\dot{\bm{q}} = \bm{J} \dot{\bm{\mathcal{X}}} -\end{equation}

-

From equation eq:jacobians, we have:

-

\begin{equation} -\bm{J} = {\bm{J}_q}^{-1} \bm{J}_x -\end{equation}

-
-

Velocity Loop Closure

-

The velocity loop closures are used for obtaining the Jacobian matrices in a straightforward manner. -Velocity loop closures are derived by direct differentiation of kinematic loop closures.

-

Kinematic loop closures are: -\[ \bm{p} = \bm{a}_i + \bm{d}_i - \bm{R} \bm{b}_i \quad \text{for}\ i = 1, \ldots, m \]

-

with

-
    -
  • \(\bm{p}\) the position vector of the moving platform w.r.t. frame \(\{\bm{A}\}\)
  • -
  • \(\bm{R}\) the rotation matrix of the moving platform
  • -
  • \(\bm{a}_i\) the position vector of the \(i\)‘th limb of the fixed platform w.r.t. frame \(\{\bm{A}\}\)
  • -
  • \(\bm{b}_i\) the position vector of the \(i\)‘th limb of the moving platform w.r.t. frame \(\{\bm{B}\}\)
  • -
  • \(\bm{d}_i\) the limb vector
  • -
-

By taking the time derivative, we obtain the following Velocity Loop Closure:

-

\begin{equation} -\tcmbox{\dot{\bm{p}} = \dot{\bm{d}_i} - \bm{\omega} \times \bm{R} \bm{b}_i \quad \text{for}\ i = 1, \ldots, m} -\end{equation}

-

Singularity Analysis of Parallel Manipulators

-

The singularities occur when:

-
    -
  • \(\bm{J}_q\) is rank deficient (Inverse kinematic singularity)
  • -
  • \(\bm{J}_x\) is rank deficient (Forward kinematic singularity)
  • -
-

Inverse Kinematic Singularity

-

Inverse kinematic singularity happens when \(\bm{J}_q\) (\(m \times m\) matrix) is rank deficient (\(\det \bm{J}_q = 0\)).

-

The corresponding configurations are located at the boundary of the manipulator workspace or on the internal boundaries between sub-regions of the workspace.

-

In such cases, there exist nonzero vectors \(\dot{\bm{q}}\) which correspond to a null Cartesian twist vector \(\dot{\bm{\mathcal{X}}}\). In other words, infinitesimal motion of the moving platform along certain directions cannot be accomplished. -The manipulator looses one or more degrees-of-freedom.

-

Forward Kinematic Singularity

-

Forward kinematic singularity happens when \(\bm{J}_x\) (\(m \times n\) matrix) is rank deficient (\(\det({\bm{J}_x}^T \bm{J}_x) = 0\)). -If the manipulator is not redundantly actuated (\(m=n\)), then the Jacobian matrix \(\bm{J}_x\) is square and the forward kinematic singularity happens when \(\det \bm{J}_x = 0\).

-

The degeneracy occur inside the manipulator’s Cartesian workspace and corresponds to the set of configurations for which two different branches of forward kinematic problem meet.

-

There exist nonzero cartesian twist vectors \(\dot{\bm{\mathcal{X}}}\) that are mapped into a vanishing actuator velocity vector \(\dot{\bm{\mathcal{q}}}\).

-

The corresponding configuration will be one in which an infinitesimal motion of the platform is possible even if the actuator are locked. The manipulator gains one or several degrees-of-freedom and its stiffness vanishes in the corresponding direction(s).

-

Jacobian Analysis of the Stewart-Gough Platform

-

Velocity Loop Closure

-

The input joint rate is denoted by \(\dot{\bm{\mathcal{L}}} = [ \dot{l}_1, \dot{l}_2, \dot{l}_3, \dot{l}_4, \dot{l}_5, \dot{l}_6 ]^T\), and the output twist vector is denoted by \(\dot{\bm{\mathcal{X}}} = [^A\bm{v}_p, {}^A\bm{\omega}]^T\).

-

The jacobian matrix can be derived by formulating a velocity loop closure equation of each limb. -The loop closure equations for each limb are:

-

\begin{equation} -{}^A\bm{P} + {}^A\bm{R}_B {}^B\bm{b}_i = l_i {}^A\hat{\bm{s}}_i + {}^A\bm{a}_i -\end{equation}

-

By differentiate this with respect to time:

-

\begin{equation} -{}^A\bm{v}_p + {}^A \dot{\bm{R}}_B {}^B\bm{b}_i = \dot{l}_i {}^A\hat{\bm{s}}_i + l_i {}^A\dot{\hat{\bm{s}}}_i -\end{equation}

-

Moreover, we have:

-
    -
  • \({}^A\dot{\bm{R}}_B {}^B\bm{b}_i = {}^A\bm{\omega} \times {}^A\bm{R}_B {}^B\bm{b}_i = {}^A\bm{\omega} \times {}^A\bm{b}_i\) in which \({}^A\bm{\omega}\) denotes the angular velocity of the moving platform expressed in the fixed frame \(\{\bm{A}\}\).
  • -
  • \(l_i {}^A\dot{\hat{\bm{s}}}_i = l_i \left( {}^A\bm{\omega}_i \times \hat{\bm{s}}_i \right)\) in which \({}^A\bm{\omega}_i\) is the angular velocity of limb \(i\) express in fixed frame \(\{\bm{A}\}\).
  • -
-

Then, the velocity loop closure eq:loop_closure_limb_diff simplifies to -\[ {}^A\bm{v}_p + {}^A\bm{\omega} \times {}^A\bm{b}_i = \dot{l}_i {}^A\hat{\bm{s}}_i + l_i ({}^A\bm{\omega}_i \times \hat{\bm{s}}_i) \]

-

By dot multiply both side of the equation by \(\hat{\bm{s}}_i\): -\[ \hat{\bm{s}}_i {}^A\bm{v}_p + ({}^A\bm{b}_i \times \hat{\bm{s}}_i) {}^A\bm{\omega} = \dot{l}_i \]

-

We then omit the superscript \(A\) and we can rearrange the 6 equations into a matrix form

-

\begin{equation} -\tcmbox{\dot{\bm{\mathcal{L}}} = \bm{J} \dot{\bm{\mathcal{X}}}} -\end{equation}

-
-
-

\begin{equation} -\bm{J} = \begin{bmatrix} -{\hat{\bm{s}}_1}^T & (\bm{b}_1 \times \hat{\bm{s}}_1)^T \\\
-{\hat{\bm{s}}_2}^T & (\bm{b}_2 \times \hat{\bm{s}}_2)^T \\\
-{\hat{\bm{s}}_3}^T & (\bm{b}_3 \times \hat{\bm{s}}_3)^T \\\
-{\hat{\bm{s}}_4}^T & (\bm{b}_4 \times \hat{\bm{s}}_4)^T \\\
-{\hat{\bm{s}}_5}^T & (\bm{b}_5 \times \hat{\bm{s}}_5)^T \\\
-{\hat{\bm{s}}_6}^T & (\bm{b}_6 \times \hat{\bm{s}}_6)^T -\end{bmatrix} -\end{equation}

-

\(\bm{J}\) then depends only on:

-
    -
  • \(\hat{\bm{s}}_i\) the orientation of the limbs
  • -
  • \(\bm{b}_i\) the position of the joints with respect to \(O_B\) and express in \(\{\bm{A}\}\).
  • -
-
-

Singularity Analysis

-

It is of primary importance to avoid singularities in a given workspace. -To study the singularity configurations of the Stewart-Gough platform, we consider the Jacobian matrix determined with the equation eq:jacobian_formula_stewart.

-

From equation eq:jacobians, it is clear that for the Stewart-Gough platform, \(\bm{J}_q = \bm{I}\) and \(\bm{J}_x = \bm{J}\). -Hence the manipulator has no inverse kinematic singularities within the manipulator workspace, but may possess forward kinematic singularity when \(\bm{J}\) becomes rank deficient. This may occur when -\[ \det \bm{J} = 0 \]

-

Static Forces in Parallel Manipulators

-

The relation between the forces/moments applied to the environment at the point of contact and the actuator forces/torques is determined and analyzed in the study of static force analysis.

-

It is assumed that the manipulator is at a static equilibrium, and that the actuator forces required to produce the desired contact forces are determined.

-

Two methods are usually applied: the free-body diagram and the principle of virtual work.

-

In the free-body diagram approach, the actuator forces are determined to produce desired contact forces/moments as well as the internal and interacting forces/torques applied at the limbs. The analysis of such forces is essential in the design of a manipulator to determine the stresses and deflection of each link and joint.

-

However, if only the actuator forces are desired to be determined, the principle of virtual work is more efficient and computationally less expensive.

-

Virtual Work Approach

-

A virtual displacement for a parallel manipulator refers to an infinitesimal change in the general displacement of the moving platform as a result of any arbitrary infinitesimal changes in the joint variables at a given instant of time.

-

The virtual displacement of the joints can be written as \(\delta \bm{q} = [\delta q_1, \delta q_2, \cdots, \delta q_m]^T\) and \(\delta \bm{\mathcal{X}} = [\delta x, \delta y, \delta z, \delta \theta_x, \delta \theta_y, \delta \theta_z ]^T\) denotes the virtual displacement of a contacting point of the moving platform. -\([\delta \theta_x, \delta \theta_y, \delta \theta_z ]^T = \delta \theta \hat{\bm{s}}\) are the orientation variables represented by screw coordinates.

-

Let the vector of actuator forces be denoted by \(\bm{\tau} = [\tau_1, \tau_2, \cdots, \tau_m]^T\), and the external forces/torque acting on the contact point of the moving platform denoted by a wrench in a screw coordinate as \(\bm{\mathcal{F}} = [\bm{f}, \bm{n}]^T\) in which \(\bm{f} = [f_x, f_y, f_z]^T\) denotes the external forces, and \(\bm{n} = [n_x, n_y, n_z]^T\) denotes the external torque action on the moving platform at the point of contact to the environment.

-

We assume that the frictional forces acting on the joints are negligible, and also that the gravitational forces of the limb links are much smaller than the interacting force of the moving platform to the environment. -The principle of virtual work states that the total virtual work, \(\delta W\), done by all actuators and external forces is equal to zero:

-

\begin{equation} -\tcmbox{\delta W = \bm{\tau}^T \delta \bm{q} - \bm{\mathcal{F}}^T \delta \bm{\mathcal{X}} = 0} -\end{equation}

-

Furthermore, from the definition of the Jacobian, the virtual displacements \(\delta \bm{q}\) and \(\delta \bm{\mathcal{X}}\) are related by the Jacobian: -\[ \delta \bm{q} = \bm{J} \cdot \delta \bm{\mathcal{X}} \]

-

We then have \(\left( \bm{\tau}^T \bm{J} - \bm{\mathcal{F}}^T \right) \delta \bm{\mathcal{X}} = 0\) that holds for any arbitrary virtual displacement \(\delta \bm{\mathcal{X}}\), hence -\[ \bm{\tau}^T \bm{J} - \bm{\mathcal{F}}^T = 0 \]

-
-
-

We obtain that the Jacobian matrix constructs the transformation needed to find the actuator forces \(\bm{\tau}\) from the wrench acting on the moving platform \(\bm{\mathcal{F}}\):

-

\begin{equation} -\bm{\mathcal{F}} = \bm{J}^T \bm{\tau} -\end{equation}

-
-

Static Forces of the Stewart-Gough Platform

-

As shown in Figure fig:stewart_static_forces, the twist of moving platform is described by a 6D vector \(\dot{\bm{\mathcal{X}}} = \left[ {}^A\bm{v}_P \ {}^A\bm{\omega} \right]^T\), in which \({}^A\bm{v}_P\) is the velocity of point \(O_B\), and \({}^A\bm{\omega}\) is the angular velocity of moving platform.

-

-
- Figure 8: Free-body diagram of forces and moments action on the moving platform and each limb of the Stewart-Gough platform
-

Figure 8: Free-body diagram of forces and moments action on the moving platform and each limb of the Stewart-Gough platform

-
-
- -

Consider an external wrench generated by the manipulator and applied to the environment at the point \(O_B\) denoted by \(\bm{\mathcal{F}} = [\bm{f} \ \bm{n}]^T\).

-

It is assumed that no external forces are applied to the limbs except the actuator forces. -Therefore, the static force can be assumed to be along the limb axis \(\hat{\bm{s}}_i\), and the limb is subject to a tension/compression force \(f_i\).

-

At static equilibrium, the summation of all acting forces on the moving platform shall be zero, therefore

-

\begin{equation} --\bm{f} + \sum_{i=1}^6 f_i \hat{\bm{s}}_i = 0 -\end{equation}

-

in which \(-\bm{f}\) if the external force applied to the moving platform from the environment.

-

The summation of moments contributed by all forces acting on the moving platform about \(O_B\) is as follows:

-

\begin{equation} --\bm{n} + \sum_{i=1}^6 b_i \times f_i \hat{\bm{s}}_i = 0 -\end{equation}

-

in which \(-n\) is the external moment applied to the moving platform by the environment, and \(b_i\) is the position vector from the point \(O_B\) to the attached point \(B_i\) on the moving platform.

-

Writing the two equations together in a matrix form results in

-

\begin{equation} -\begin{bmatrix} -\hat{\bm{s}}_1 & \hat{\bm{s}}_2 & \cdots & \hat{\bm{s}}_6 \\\
-\bm{b}_1 \times \hat{\bm{s}}_1 & \bm{b}_2 \times \hat{\bm{s}}_2 & \cdots & \bm{b}_6 \times \hat{\bm{s}}_6 -\end{bmatrix} \cdot \begin{bmatrix} -f_1 \ f_2 \ \vdots \ f_6 -\end{bmatrix} = \begin{bmatrix} -\bm{f} \ \bm{n} -\end{bmatrix} -\end{equation}

-

There we can recognize the transpose of the Jacobian matrix:

-

\begin{equation} -\tcmbox{\bm{\mathcal{F}} = \bm{J}^T \bm{\tau}} -\end{equation}

-

in which \(\bm{\tau} = [f_1, f_2, \cdots, f_6]^T\) is the vector of actuator forces, and \(\bm{\mathcal{F}} = [\bm{f}, \bm{n}]^T\) is the 6D wrench applied by the manipulator to the environment.

-

Stiffness Analysis of Parallel Manipulators

-

Here, we focus on the deflections of the manipulator moving platform that are the result of the applied wrench to the environment. -The amount of these deflections are a function of the applied wrench as well as the manipulator structural stiffness. -Thus, the stiffness of a manipulator has a direct impact on its overall positioning accuracy if the manipulator is in contact with a stiff environment.

-

Stiffness and Compliance Matrices

-

The relation between the applied actuator force \(\tau_i\) and the corresponding small deflection \(\Delta q_i\) along the applied force axis can be approximated as a linear function:

-

\begin{equation} -\tcmbox{\tau_i = k_i \cdot \Delta q_i} -\end{equation}

-

in which \(k_i\) denotes the stiffness constant of the actuator.

-

Re-writing the equation eq:stiffness_actuator for all limbs in a matrix form result in

-

\begin{equation} -\tcmbox{\bm{\tau} = \mathcal{K} \cdot \Delta \bm{q}} -\end{equation}

-

in which \(\bm{\tau}\) is the vector of actuator forces, and \(\Delta \bm{q}\) corresponds to the actuator deflections. -\(\mathcal{K} = \text{diag}\left[ k_1 \ k_2 \dots k_m \right]\) is an \(m \times m\) diagonal matrix composed of the actuator stiffness constants.

-

Writing the Jacobian relation given in equation eq:jacobian_disp for infinitesimal deflection read

-

\begin{equation} -\Delta \bm{q} = \bm{J} \cdot \Delta \bm{\mathcal{X}} -\end{equation}

-

in which \(\Delta \bm{\mathcal{X}} = [\Delta x\ \Delta y\ \Delta z\ \Delta\theta x\ \Delta\theta y\ \Delta\theta z]\) is the infinitesimal linear and angular deflection of the moving platform.

-

Furthermore, rewriting the Jacobian as the projection of actuator forces to the moving platform eq:jacobian_forces gives

-

\begin{equation} -\bm{\mathcal{F}} = \bm{J}^T \bm{\tau} -\end{equation}

-

Hence, by substituting eq:stiffness_matrix_relation and eq:jacobian_disp_inf in eq:jacobian_force_inf, we obtain:

-

\begin{equation} -\tcmbox{\bm{\mathcal{F}} = \underbrace{\bm{J}^T \mathcal{K} \bm{J}}_{\bm{K}} \cdot \Delta \bm{\mathcal{X}}} -\end{equation}

-

Equation eq:stiffness_jacobian implies that the moving platform output wrench is related to its deflection by the stiffness matrix \(K\).

-
-
-

\begin{equation} -\bm{K} = \bm{J}^T \mathcal{K} \bm{J} -\end{equation}

-
-

The stiffness matrix has desirable characteristics for analysis:

-
    -
  • It is a symmetric positive definite matrix, however, it is configuration dependent
  • -
  • If the manipulator actuators have all the same stiffness constants \(k\), the stiffness matrix is reduced to the form \(\bm{K} = k \bm{J}^T \bm{J}\)
  • -
-

If the stiffness matrix is inversible (\(\det( \bm{J}^T \bm{J}) \ne 0\)), the compliance matrix of the manipulator is defined as

-

\begin{equation} -\tcmbox{\bm{C} = \bm{K}^{-1} = (\bm{J}^T \mathcal{K} \bm{J})^{-1}} -\end{equation}

-

The compliance matrix of a manipulator shows the mapping of the moving platform wrench to its deflection by

-

\begin{equation} -\Delta \bm{\mathcal{X}} = \bm{C} \cdot \bm{\mathcal{F}} -\end{equation}

-

Transformation Ellipsoid

-

As seen previously, the Jacobian matrix \(\bm{J}\) transforms n-dimensional moving platform velocity vector \(\dot{\bm{\mathcal{X}}}\) into m-dimensional actuated joint velocity \(\dot{\bm{q}}\). -Also, the Jacobian transpose \(\bm{J}^T\) maps m-dimensional actuated joint forces \(\bm{\tau}\) into n-dimensional applied wrench \(\bm{\mathcal{F}}\).

-

One way to characterize these transformation is to compare the amplitude and direction of the moving platform velocity generated by a unit actuator joint velocity. -To achieve this goal, we confine the actuator joint velocity vector on a m-dimensional unit sphere -\[ \dot{\bm{q}}^T \dot{\bm{q}} = 1 \] -and compare the resulting moving platform velocity in n-dimensional space: -\[ \dot{\bm{\mathcal{X}}}^T \bm{J}^T \bm{J} \dot{\bm{\mathcal{X}}} = 1 \]

-

Similarly, we can confine the exerted moving platform wrench \(\bm{\mathcal{F}}^T \bm{\mathcal{F}} = 1\) and compare the required actuator forces: \(\bm{\tau}^T \bm{J} \bm{J}^T \bm{\tau} = 1\).

-

Consider the case of fully parallel manipulators. -Then \(\bm{J}\bm{J}^T\) and \(\bm{J}^T\bm{J}\) transformations are represented by \(n \times n\) matrices. -Geometrically, these transformations represent a hyper-ellipsoid in n-dimensional space, whose principal axes are the eigenvectors of \(\bm{J}^T\bm{J}\) and \(\bm{J}\bm{J}^T\) respectively. -Furthermore, the lengths of the principal axes are equal to the reciprocals of the square roots of the eigenvalues of \(\bm{J}\bm{J}^T\) and \(\bm{J}^T\bm{J}\), which are also equal to the reciprocals of the singular values of \(\bm{J}\).

-

The shape of this hyper-ellipsoid in space indicates the characteristics of the transformation. -As this hyper-ellipsoid is closer to a hyper-sphere, the transformation becomes more uniform in different directions. -Since Jacobian matrix is configuration dependent, the shape of the hyper-ellipsoid is also configuration dependent, and as the moving platform moves from one pose to the other, the shape of the hyper-ellipsoid changes accordingly.

-

A measure of the dexterity of the manipulator is the reciprocal of the Jacobian matrix condition number defined as:

-

\begin{equation} -\frac{1}{\kappa} = \frac{\sigma_{\text{min}}}{\sigma_{\text{max}}} -\end{equation}

-

in which \(\sigma_{\text{min}}\) and \(\sigma_{\text{max}}\) are the smallest and the largest singular values of the Jacobian matrix.

-

Stiffness Analysis of the Stewart-Gough Platform

-

In this section, we restrict our analysis to a 3-6 structure (Figure fig:stewart36) in which there exist six distinct attachment points \(A_i\) on the fixed base and three moving attachment point \(B_i\).

-

-
- Figure 9: Schematic of a 3-6 Stewart-Gough platform
-

Figure 9: Schematic of a 3-6 Stewart-Gough platform

-
-
- -

Denote the vector of actuated joint forces by \(\bm{\tau} = [f_1 \ f_2 \ f_3 \ f_4 \ f_5 \ f_6 ]\), and the corresponding vector of infinitesimal displacements of actuated limbs denoted by \(\Delta \bm{L} = [\Delta l_1 \ \Delta l_2 \ \Delta l_3 \ \Delta l_4 \ \Delta l_5 \ \Delta l_6 ]\). -The relation between \(\Delta \bm{L}\) and \(\bm{\tau}\) is described by a diagonal \(6 \times 6\) matrix \(\mathcal{K}\): -\[ \bm{\tau} = \mathcal{K} \cdot \Delta \bm{L} \]

-

Also, from the definition of the Jacobian, we have: -\[ \Delta \bm{L} = \bm{J} \cdot \Delta \bm{\mathcal{X}} \] -in which \(\Delta \bm{\mathcal{X}} = [\Delta_x \ \Delta_y \ \Delta_z \ \Delta \theta_x \ \Delta \theta_y \ \Delta \theta_z ]\) is the vector of infinitesimal linear and angular motions of the moving platform.

-

Also, the vector of the moving platform output wrench denoted by \(\bm{F} = [f_x \ f_y \ f_z \ n_x \ n_y \ n_z ]\) is related to the vector of actuated joint forces \(\bm{\tau}\) by: -\[ \bm{F} = \bm{J}^T \cdot \bm{\tau} \]

-

By substitution, we obtain: -\[ \bm{\mathcal{F}} = \bm{K} \cdot \Delta \bm{\mathcal{X}} \] -in which -\[ \bm{K} = \bm{J}^T \mathcal{K} \bm{J} \] -where \(K\) is called the stiffness matrix of the Stewart-Gough manipulator.

-

For a given configuration of the moving platform, the eigenvalue of the stiffness matrix represents the stiffness of the manipulator in the corresponding eigenvector direction. -Furthermore, the reciprocal of the stiffness matrix condition number may be used to represent the dexterity of the manipulator.

-

The maximum stiffness of the manipulator can be analyzed by the maximum singular value of the Jacobian matrix. -The largest axis of the stiffness transformation hyper-ellipsoid is given by this value at each configuration.

-

Dynamics

-

-

Introduction

-

The dynamic analysis of parallel manipulators presents an inherent complexity due to their closed-loop structure. -Several approaches have been proposed.

-

Traditional Newton-Euler formulation is used for dynamic analysis of general parallel manipulators. -In this formulation, the equation of motion of each limb and the moving platform must be derived, which inevitably leads to a large number of equations and less computational efficiency. -On the other hand, all the reaction forces can be computed, which is very useful in the design of a parallel manipulator.

-

The Lagrangian formulation eliminates all the unwanted reaction forces at the outset, and therefore, is quite efficient. -However, because of the constraints imposed by the closed-loop structure, deriving explicit equations of motions in terms of a set of generalized coordinates becomes a prohibitive task.

-

A third approach is to use the principle of virtual work, in which the computation of the constraint forces are bypassed. -In this method, inertial forces and moments are computed using linear and angular accelerations of the bodies. -Then, the whole manipulator is considered to be in static equilibrium by using the d’Alembert’s principle, and the principle of virtual work is applied to derive the input forces and torques.

-

Different objectives require different forms of formulations, there are three key issues pursued to derive dynamic formulation of parallel manipulators:

-
    -
  1. Calculation of internal forces either active or passive for the design process of the manipulator
  2. -
  3. Study on dynamical properties of the manipulator for controller design
  4. -
  5. Utilization of dynamic specifications in an inverse dynamics controller or any model-based control topology
  6. -
-

The first item is the main advantage of the Newton-Euler formulation, the second and third items are the benefits of using the Lagrange or virtual work approaches.

-

The dynamic equations in an explicit form can be written as:

-

\begin{equation} -\tcmbox{\bm{M}(\bm{\mathcal{X}}) \ddot{\bm{\mathcal{X}}} + \bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}) \dot{\bm{\mathcal{X}}} + \bm{G}(\bm{\mathcal{X}}) = \bm{\mathcal{F}}} -\end{equation}

-

in which:

-
    -
  • \(\bm{\mathcal{X}}\) is a vector of the generalized coordinates
  • -
  • \(\bm{M}(\bm{\mathcal{X}})\) denotes the system mass matrix
  • -
  • \(\bm{C}(\bm{X},\dot{\bm{X}})\) denotes the Coriolis and centrifugal matrix
  • -
  • \(\bm{G}(\bm{X})\) denotes the gravity vector
  • -
  • \(\bm{\mathcal{F}}\) denotes the generalized force
  • -
-

Deriving explicit dynamic equations for parallel manipulators is a very prohibitive task because of the closed-loop nature of the manipulator.

-

Dynamics of the Rigid Bodies

-

Acceleration of Rigid Bodies

-
-
-

The acceleration analysis consists of studying the variations of linear velocity of a point and angular velocity of a rigid body with respect to time.

-
-

Direct differentiation of these vectors with respect to time in a fixed frame leads to linear velocity of a point and angular velocity of a rigid body, respectively. -Note that, to determine the absolute linear velocity of a point, the derivative must be calculated relative to a fixed frame. -In the study of robotic manipulators, usually multiple moving frames are defined to carefully determine the motion of the moving platform. -Therefore, it is necessary to define the required arithmetics to transform the relative accelerations into absolute ones.

-
Angular Acceleration of a Rigid Body
-

To define angular acceleration of a rigid body, consider a moving frame \(\{\bm{B}\}\) attached to the rigid body, and the motion analyzed with respect to a fixed frame. -Angular acceleration is an attribute of a rigid body and describes the variation of angular velocity of frame \(\{\bm{B}\}\) with respect to time.

-
-
-

Angular acceleration vector, denoted by the symbol \(\dot{\bm{\Omega}}\), describes the instantaneous change of the angular velocity of frame \(\{\bm{B}\}\), denoted by \(\bm{\Omega}\), with respect to the fixed frame \(\{\bm{A}\}\):

-

\begin{equation} -\begin{aligned} -\dot{\bm{\Omega}} = \frac{d \bm{\Omega}}{dt} &= \ddot{\theta} \hat{\bm{s}} + \dot{\theta} \dot{\hat{\bm{s}}} \\\
-&= \ddot{\theta} \hat{\bm{s}} + \dot{\theta} (\bm{\Omega} \times \hat{\bm{s}}) \\\
-&= \ddot{\theta} \hat{\bm{s}} -\end{aligned} -\end{equation}

-

where \(\{\theta, \hat{\bm{s}}\}\) are the screw parameters representing the rotation of the rigid body.

-
-

As shown by eq:angular_acceleration, the angular acceleration of the rigid body is also along the screw axis \(\hat{\bm{s}}\) with a magnitude equal to \(\ddot{\theta}\).

-
Linear Acceleration of a Point
-

Linear acceleration of a point \(P\) can be easily determined by time derivative of the velocity vector \(\bm{v}_P\) of that point with respect to a fixed frame:

-

\begin{equation} -\bm{a}_p = \dot{\bm{v}}_p = \left( \frac{d\bm{v}_p}{dt} \right)_\text{fix} -\end{equation}

-

Note that this is correct only if the derivative is taken with respect to a fixed frame.

-

Now consider the general motion of a rigid body, in which a moving frame \(\{\bm{B}\}\) is attached to the rigid body and the problem is to find the absolute acceleration of point \(P\) with respect to the fixed frame \(\{\bm{A}\}\). -The rigid body performs a general motion, which is a combination of a translation, denoted by the velocity vector \({}^A\bm{v}_{O_B}\), and an instantaneous angular rotation denoted by \(\bm{\Omega}\) (see Figure fig:general_motion). -To determine acceleration of point \(P\), we start with the relation between absolute and relative velocities of point \(P\):

-

\begin{equation} -{}^A\bm{v}_P = {}^A\bm{v}_{O_B} + {}^A\bm{R}_B{}^B\bm{v}_P + {}^A\bm{\Omega}^\times {}^A\bm{R}_B {}^B\bm{P} -\end{equation}

-

In order to derive acceleration of point \(P\), we differentiate both sides with respect to time and we obtain

-

\begin{equation} -\begin{split} -{}^A\bm{a}_p\ &= {}^A\bm{a}_{O_B} \quad \text{(linear acc. of } \{\bm{B}\} \text{)} \\\
-&+ {}^A\bm{R}_B{}^B\bm{a}_p \quad \text{(relative acc. of } P \text{ w.r.t. } \{\bm{B}\} \text{)} \\\
-&+ {}^A\dot{\bm{\Omega}}^\times {}^A\bm{R}_B {}^B\bm{P} \quad \text{(angular acceleration of } \{\bm{B}\} \text{)} \\\
-&+ {}^A\bm{\Omega}^\times ({}^A\bm{\Omega}^\times {}^A\bm{R}_B {}^B\bm{P}) \quad \text{(centrifugal)} \\\
-&+ 2{}^A\bm{\Omega}^\times {}^A\bm{R}_B {}^B\bm{v}_P \quad \text{(Coriolis)} -\end{split} -\end{equation}

-

For the case where \(P\) is a point embedded in the rigid body, \({}^B\bm{v}_P = 0\) and \({}^B\bm{a}_P = 0\) and we obtain:

-

\begin{equation} -\begin{split} -{}^A\bm{a}_P = {}^A\bm{a}_{O_B} &+ {}^A\dot{\bm{\Omega}}^\times {}^A\bm{R}_B {}^B\bm{P} \\\
-&+ {}^A\bm{\Omega}^\times ({}^A\bm{\Omega}^\times {}^A\bm{R}_B {}^B\bm{P}) -\end{split} -\end{equation}

-

Mass Properties

-

In this section, the properties of mass, namely center of mass, moments of inertia and its characteristics and the required transformations are described.

-

-
- Figure 10: Mass properties of a rigid body
-

Figure 10: Mass properties of a rigid body

-
-
- -
Center of Mass
-

Consider a reference frame \(\{\bm{A}\}\) in which the mass distribution of a material body is measured, and let \(\bm{p}\) denote the position vector of a differential mass \(\rho dV\) with respect to a reference frame.

-

The center of mass of a rigid body is defined as the point \(C\) which satisfied the following condition

-

\begin{equation} -\bm{p}_c = \frac{1}{m} \int_V \bm{p} \rho dV -\end{equation}

-

in which the mass of the material body \(\{\bm{B}\}\) with density \(\rho\) and volume \(V\) is defined as

-

\begin{equation} -m = \int_V \rho dV -\end{equation}

-
Moments of Inertia
-

As opposed to the mass, which introduces inertia to linear accelerations, moment of inertia is the property of mass which introduces inertia to angular accelerations. -Basically, for rotational motion, the distribution of mass with respect to the axis of rotation introduces resistance to the angular acceleration.

-

Moments of inertia \(\bm{I}\) about \(\bm{A}\) is defined by the second moment of the mass with respect to a reference frame of rotation as:

-

\begin{equation} -{}^A\bm{I} = \begin{bmatrix} -I_{XX} & I_{XY} & I_{XZ} \\\
-I_{YX} & I_{YY} & I_{YZ} \\\
-I_{ZX} & I_{ZY} & I_{ZZ} -\end{bmatrix} -\end{equation}

-

in which

-

\begin{equation*} -\begin{aligned} -I_{XX} &= \int_V (y^2 + z^2) \rho dV, \quad I_{XY} = I_{YX} = -\int_V xy \rho dV \\\
-I_{YY} &= \int_V (x^2 + z^2) \rho dV, \quad I_{YZ} = I_{ZY} = -\int_V yz \rho dV \\\
-I_{ZZ} &= \int_V (x^2 + y^2) \rho dV, \quad I_{XZ} = I_{ZX} = -\int_V xz \rho dV -\end{aligned} -\end{equation*}

-
Principal Axes
-

As seen in equation eq:moment_inertia, the inertia matrix elements are a function of mass distribution of the rigid body with respect to the frame \(\{\bm{A}\}\). -Hence, it is possible to find orientations of frame \(\{\bm{A}\}\) in which the product of inertia terms vanish and inertia matrix becomes diagonal:

-

\begin{equation} -{}^A\bm{I} = \begin{bmatrix} -I_{XX} & 0 & 0 \\\
-0 & I_{YY} & 0 \\\
-0 & 0 & I_{ZZ} -\end{bmatrix} -\end{equation}

-

Such axes are called the principal axes of inertia, and diagonal terms are called the principal moments of inertia, which represent the maximum, minimum and intermediate values of the moments of inertia for a particular chosen origin \(\{\bm{A}\}\).

-

It can be shown that the principal moments of inertial and principal axes are invariant parameters and can be determined from an eigen value decomposition of the inertia matrix in any configuration of the reference frame \(\{\bm{A}\}\).

-
Inertia Matrix Transformations
-

The moment of inertia is usually given for frames passing through the center of mass of the rigid body. -The inertia matrix changes under change of the reference frame.

-

Consider frame \(\{\bm{C}\}\) parallel to \(\{\bm{A}\}\) and attached to the center of mass of a rigid body and let \(\bm{p}_c = [x_c, y_c, z_c]^T\) denote the vector of the position of the center of mass with respect to frame \(\{\bm{A}\}\). -The relation between the inertia matrix about \(A\) and that about \(C\) is given by the following relation:

-

\begin{equation} -\tcmbox{{}^A\bm{I} = {}^C\bm{I} + m(\bm{p}_c^T \bm{p}_c \bm{I}_{3 \times 3} - \bm{p}_c \bm{p}_c^T)} -\end{equation}

-

in which \(m\) denotes the mass of the rigid body and \(\bm{I}_{3 \times 3}\) denotes the identity matrix.

-

On the other hand, if the reference frame \(\{B\}\) has pure rotation with respect to the frame attached to the center of mass \(\{A\}\):

-

\begin{equation} -{}^A\bm{I} = {}^A\bm{R}_C {}^C\bm{I} {}^A\bm{R}_C^T -\end{equation}

-

Momentum and Kinetic Energy

-
Linear Momentum
-

Linear momentum of a material body, shown in Figure fig:angular_momentum_rigid_body, with respect to a reference frame \(\{\bm{A}\}\) is defined as

-

\begin{equation} -{}^A\bm{G} = \int_V \frac{d\bm{p}}{dt} \rho dV -\end{equation}

-

For any mass element \(\rho dV\), the position vector \(\bm{p}\) can be written as -\[ p = p_c + r \]

-

And because \(\int_V r \rho dV = 0\), we have by substitution -\[ {}^A\bm{G} = \frac{d\bm{p}_c}{dt} \int_V \rho dV \] -and thus

-

\begin{equation} -\tcmbox{{}^A\bm{G} = m \cdot {}^A\bm{v}_C} -\end{equation}

-

in which \({}^A\bm{v}_C\) denotes the velocity of the center of mass with respect to the frame \(\{\bm{A}\}\).

-

This result implies that the total linear momentum of differential masses is equal to the linear momentum of a point mass \(m\) located at the center of mass. -This highlights the important of the center of mass in dynamic formulation of rigid bodies.

-

-
- Figure 11: The components of the angular momentum of a rigid body about \(A\)
-

Figure 11: The components of the angular momentum of a rigid body about \(A\)

-
-
- -
Angular Momentum
-

Consider the solid body represented in Figure fig:angular_momentum_rigid_body. -Angular momentum of the differential masses \(\rho dV\) about a reference point \(A\), expressed in the reference frame \(\{\bm{A}\}\) is defined as -\[ {}^A\bm{H} = \int_V \left(\bm{p} \times \frac{d\bm{p}}{dt} \right) \rho dV \] -in which \(d\bm{p}/dt\) denotes the velocity of differential mass with respect to the reference frame \(\{\bm{A}\}\).

-

By substituting \(\bm{p} = \bm{p}_c + \bm{r}\) in the previous equations, be obtain: -\[ {}^A\bm{H} = \bm{p}_c \times m \bm{v}_c + \int_V \bm{r} \times (\bm{\Omega} \times \bm{r}) \rho dV \]

-

Therefore, angular momentum of the rigid body about point \(A\) is reduced to

-

\begin{equation} -\tcmbox{{}^A\bm{H} = \bm{p}_c \times \bm{G}_c + {}^C\bm{H}} -\end{equation}

-

in which -\[ {}^C\bm{H} = \int_V \bm{r} \times (\bm{\Omega} \times \bm{r}) \rho dV = {}^C\bm{I} \cdot \bm{\Omega} \]

-

Equation eq:angular_momentum reveals that angular momentum of a rigid body about a point \(A\) can be written as \(\bm{p}_c \times \bm{G}_c\), which is the contribution of linear momentum of the rigid body about point \(A\), and \({}^C\bm{H}\) which is the angular momentum of the rigid body about the center of mass.

-

This also highlights the important of the center of mass in the dynamic analysis of rigid bodies. -If the center of mass is taken as the reference point, the relation describing angular momentum eq:angular_momentum is very analogous to that of linear momentum eq:linear_momentum.

-
Kinetic Energy
-

The Kinetic energy of a rigid body is defined as

-

\begin{equation} -\tcmbox{\bm{K} = \frac{1}{2} \int_V \bm{v} \cdot \bm{v} \rho dV} -\end{equation}

-

The velocity of a differential mass \(\rho dV\) can be represented by linear velocity of the center of mass and angular velocity of the rigid body as -\[ \bm{v} = \bm{v}_p + \bm{\Omega} \times \bm{r} \]

-

By substitution, the kinetic energy of the rigid body may be obtained by:

-

\begin{equation} -\tcmbox{\bm{K} = \frac{1}{2} \bm{v}_c \times \bm{G}_c + \frac{1}{2} \bm{\Omega} \cdot {}^C\bm{H}} -\end{equation}

-

in which \(\bm{G}_C\) is the linear momentum of the rigid body and \({}^C\bm{H}\) is the angular momentum of the rigid body about the center of mass.

-

This equation reveals that kinetic energy of a moving body can be represented as the kinetic energy of a point mass located as the center of mass, in addition to the kinetic energy of a body rotating about the center of mass.

-

Newton-Euler Laws

-

The Newton and Euler laws can be written for three different cases where the angular motion:

-
    -
  1. is about a fixed point in space
  2. -
  3. is represented about the center of mass
  4. -
  5. is represented about an arbitrary moving point in space
  6. -
-

We only examine the case in which all rotations are represented about the center of mass.

-

Consider a rigid body under general motion, that is, a combination of translation and rotation.

-
-
-

The Newton’s law relates the change of linear momentum of the rigid body to the resulting external forces applied to it -\[ \sum \bm{f}_\text{ext} = \frac{d\bm{G}_c}{dt} \]

-
-

For the case of a constant mass rigid body, this law is reduced to -\[ \sum \bm{f}_\text{ext} = m \frac{d\bm{v}_c}{dt} = m \bm{a}_c \] -in which \(\bm{a}_c\) is the linear acceleration of the center of mass.

-
-
-

The Euler’s law relates the change of angular momentum of a rigid body about the center of mass, to the summation of all external moments applied to the rigid body about center of mass -\[ \sum {}^c\bm{n}_\text{ext} = \frac{d}{dt}({}^c\bm{H}) \]

-
-

For the case of a constant mass rigid body, this law is reduced to -\[ \sum {}^c\bm{n}_\text{ext} = \frac{d}{dt}({}^c\bm{I} \bm{\Omega}) = {}^c\bm{I} \dot{\bm{\Omega}} + \bm{\Omega} \times ({}^c\bm{I} \bm{\Omega}) \] -in which \(\sum {}^c\bm{n}_\text{ext}\) is the summation of all external moments applied to the rigid body about the center of mass, \({}^c\bm{I}\) is the moment of inertia about the center of mass, and \(\bm{\Omega}\) is the angular velocity of the rigid body.

-

Newton-Euler Formulation

-

The most popular approach used in robotics to derive the dynamic equation of motion of a parallel manipulator is the Newton-Euler formulation.

-

In the Newton-Euler formulation, the free-body diagrams of all the limbs and moving platform are considered and the Newton Euler laws are applied to each isolated body. -To apply the laws to each body, it is necessary to derive linear acceleration of links, center of mass, as well as angular acceleration of the links. -Hence, acceleration analysis would be performed on all the links of the manipulator and the moving platform.

-

Furthermore, all the external forces and moments applied to the links and to the moving platform must be carefully determined. -Gravitational forces acting on the center of masses, frictional forces and moments acting on the joints, and any possible disturbance force or moment applied to the links and to the moving platform would be identified. -The most important external forces or moments applied on the manipulator are the one applied by the actuators, denoted by \(\bm{\tau} = [\tau_{1}, \tau_{2}, \dots, \tau_{m}]^{T}\). -The forces and moments shall be derived from the set of Newton-Euler laws, which are written separately for each link and the moving platform.

-

Finally, by elimination of these constraints forces and moments on the Newton-Euler equations written for the moving platform, the dynamic equations relating the actuator forces and moments \(\bm{\tau}\) to the motion variables of the moving platform \(\bm{\mathcal{X}}\), \(\dot{\bm{\mathcal{X}}}\) and \(\ddot{\bm{\mathcal{X}}}\) are derived.

-

Dynamic Formulation of the Stewart-Gough Platform

-
Acceleration Analysis
-

In acceleration analysis, it is intended to derive expressions for linear and angular acceleration of the limbs, namely \(\ddot{l}_{i}\) and \(\dot{\bm{\omega}}_{i}\) as a function of the moving platform acceleration \(\ddot{\bm{\mathcal{X}}} = [\dot{\bm{v}}_{p}, \dot{\bm{\omega}}]^{T}\). -To obtain such a relation, let us rewrite the velocity loop closure:

-

\begin{equation} -\bm{v}_{p} + \bm{\omega} \times \bm{b}_{i} = \dot{l}_{i} \hat{\bm{s}}_{i} + l_{i}(\bm{\omega}_{i} \times \hat{\bm{s}}_{i}) -\end{equation}

-

Since there is no actuation torque about \(\hat{\bm{s}}_{i}\), the limb angular velocity and acceleration vectors (\(\bm{\omega}_i\) and \(\dot{\bm{\omega}}_i\)) are normal to \(\hat{\bm{s}}_{i}\) provided that the following assumption are considered for the platform:

-
    -
  • both end joints of the limb are spherical
  • -
  • the limbs are symmetric with respect to their axes
  • -
  • the effects of friction in spherical joints are neglected
  • -
-

Considering these assumptions, it can be concluded that the limbs cannot spin about their axes: \(\bm{\omega}_{i} \cdot \hat{\bm{s}}_{i} = 0\) and \((\hat{\bm{s}}_i \times (\bm{\omega}_i \times \hat{\bm{s}}_i)) = \bm{\omega}_i\).

-

To obtain the angular velocity of the limbs \(\bm{\omega}_{i}\), we cross multiply \(\hat{\bm{s}}_{i}\) to both sides of the previous equation:

-

\begin{equation} -\bm{\omega}_{i} = \frac{1}{l_i} ( \hat{\bm{s}}_i \times \bm{v}_{b_i} ) -\end{equation}

-

With \(\bm{v}_{b_{i}}\) an intermediate variable corresponding to the velocity of point \(\bm{b}_{i}\):

-

\begin{equation} -\bm{v}_{b_{i}} = \bm{v}_{p} + \bm{\omega} \times \bm{b}_{i} -\end{equation}

-

As illustrated in Figure fig:free_body_diagram_stewart, the piston-cylinder structure of the limbs is decomposed into two separate parts, the masses of which are denoted by \(m_{i_1}\) and \(m_{i_2}\). -The position vector of these two center of masses can be determined by the following equations:

-

\begin{align} -\bm{p}_{i_1} &= \bm{a}_{i} + c_{i_1} \hat{\bm{s}}_{i} \\\
-\bm{p}_{i_2} &= \bm{a}_{i} + ( l_i - c_{i_2}) \hat{\bm{s}}_{i} -\end{align}

-

-
- Figure 12: Free-body diagram of the limbs and the moving platform of a general Stewart-Gough manipulator
-

Figure 12: Free-body diagram of the limbs and the moving platform of a general Stewart-Gough manipulator

-
-
- -

By differentiating the previous equations and doing some manipulations, we obtain:

-

\begin{align} -\ddot{l}_i &= \bm{a}_{b_i} \times \hat{\bm{s}}_i + l_i (\bm{\omega_i} \cdot \bm{\omega_i}) \\\
-\dot{\bm{\omega}}_i &= \frac{1}{l_i} (\hat{\bm{s}}_i \times \bm{a}_{b_i} - 2 \dot{l}_i \bm{\omega}_i) \\\
-\bm{a}_{i_1} &= c_{i_1} ( \dot{\bm{\omega}}_i \times \hat{\bm{s}}_{i} + \bm{\omega}_i \times (\bm{\omega}_i \times \hat{\bm{s}}_i)) \\\
-\bm{a}_{i_2} &= ( l_i - c_{i_2}) (\dot{\bm{\omega}}_i \times \hat{\bm{s}}_{i} - (\bm{\omega}_i \cdot \bm{\omega}_i) \hat{\bm{s}}_i) + 2 \dot{l}_i (\bm{\omega}_i \times \hat{\bm{s}}_i) + \ddot{l}_i \hat{\bm{s}}_i -\end{align}

-

with

-

\begin{equation} -\bm{a}_{b_i} = \bm{a}_p + \dot{\bm{\omega}} \times \bm{b}_i + \bm{\omega} \times (\bm{\omega} \times \bm{b}_i) -\end{equation}

-
Dynamic Formulation of the Limbs
-

To derive the dynamic formulation of the Stewart-Gough platform, the manipulator is decomposed into a moving platform and six identical limbs. -We assume that each limb consists of two parts, the cylinder and the piston, where the velocities and the accelerations of their centers of masses are determined. -We also assume that the centers of masses of the cylinder and the piston are located at a distance of \(c_{i_1}\) and \(c_{i_2}\) above their foot points, and their masses are denoted by \(m_{i_1}\) and \(m_{i_2}\). -Moreover, consider that the pistons are symmetric about their axes, and their centers of masses lie at their midlengths.

-

The free-body diagrams of the limbs and the moving platforms is given in Figure fig:free_body_diagram_stewart. -The reaction forces at fixed points \(A_i\) are denoted by \(\bm{f}_{a_i}\), the internal force at moving points \(B_i\) are dentoed by \(\bm{f}_{b_i}\), and the internal forces and moments between cylinders and pistons are denoted by \(\bm{f}_{c_i}\) and \(\bm{M_{c_i}}\) respectively.

-

Assume that the only existing external disturbance wrench is applied on the moving platform and is denoted by \(\bm{\mathcal{F}}_d = [\bm{F}_d, \bm{n}_d]^T\).

-
-
-

\begin{equation} -\begin{aligned} -\bm{f}_{b_i} &= \frac{1}{l_i}(I_{xx_i} + l_i^2 m_{c_e}) \hat{\bm{s}}_i \times \dot{\bm{\omega}}_i \\\
-&\quad + \frac{2}{l_i} m_{i_2} c_{i_2} \dot{l}_i \hat{\bm{s}}_i \times \bm{\omega}_i \\\
-&\quad - m_{g_e} \hat{\bm{s}}_i \times (\hat{\bm{s}}_i \times \bm{g}) -\end{aligned} -\end{equation}

-

in which \(m_{c_e}\) is defined as

-

\begin{equation} -m_{c_e} = \frac{1}{l_i^2} \left( m_{i_1} c_{i_1}^2 + m_{i_2} c_{i_2}^2 \right) -\end{equation}

-
-
Dynamic Formulation of the Moving Platform
-

Assume that the moving platform center of mass is located at the center point \(P\) and it has a mass \(m\) and moment of inertia \({}^A\bm{I}_{P}\). -Furthermore, consider that gravitational force and external disturbance wrench are applied on the moving platform, \(\bm{\mathcal{F}}_d = [\bm{F}_d, \bm{n}_d]^T\) as depicted in Figure fig:free_body_diagram_stewart.

-

The Newton-Euler formulation of the moving platform is as follows:

-

\begin{align} -\sum \bm{F}_{\text{ext}} &= \sum_{i=1}^6 \bm{f}_{b_i} + m \bm{g} + \bm{F}_{d} = m \bm{a}_p \\\
-\sum {}^p\bm{n}_{\text{ext}} &= \bm{n}_d + \sum_{i=1}^6 \bm{b}_i \times \bm{f}_{b_i} \nonumber \\\
-& = {}^{A}\bm{I}_{P} \dot{\bm{\omega}} + \bm{\omega} \times {}^{A}\bm{I}_{P} \bm{\omega} -\end{align}

-

in which \({}^A\bm{I}_P\) is considered in the fixed frame \(\{\bm{A}\}\) and can be calculated by:

-

\begin{equation} -{}^A\bm{I}_P = {}^A\bm{R}_B {}^B\bm{I}_P {}^A\bm{R}_B^T -\end{equation}

-

These equations can be rewritten in an implicit form as

-
-
-

\begin{align} -& m(\bm{a}_p - \bm{g}) - \bm{F}_d - \sum_{i=1}^{6} \bm{f}_{b_i} = \bm{0} \label{eq:dyn_form_implicit_trans}\\\
-& {}^A\bm{I}_P \dot{\bm{\omega}} + \bm{\omega} \times {}^A\bm{I}_P\bm{\omega} - \bm{n}_d - \sum_{i=1}^{6} \bm{b}_{i} \times \bm{f}_{b_i} = \bm{0} \label{eq:dyn_form_implicit_rot} -\end{align}

-
-

These two equations are the governing dynamic formulation of the Stewart-Gough platform, in which \(\bm{\mathcal{F}}_d = [\bm{F}_{d}, \bm{n}_{d}]^T\) denotes the disturbance wrench exerted on the moving plateform.

-

They can be viewed in an implicit vector form of

-

\begin{equation} -\bm{f}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}, \ddot{\bm{\mathcal{X}}}, \bm{\mathcal{F}}_d, \bm{\tau}) = \bm{0} -\end{equation}

-

in which \(\bm{\mathcal{X}} = [\bm{x}_P, \bm{\theta}]^T\) is the motion variable of the moving platform consisting of the linear position of point \(P\) and the moving platform orientation represented by screw coordinates.

-

Closed-Form Dynamics

-

While dynamic formulation in the form of Equation eq:dynamic_formulation_implicit can be used to simulate inverse dynamics of the Stewart-Gough platform, its implicit nature makes it unpleasant for the dynamic analysis and control.

-
Closed-Form Dynamics of the Limbs
-

To derive a closed-form dynamic formulation for the Stewart-Gough platform as

-

\begin{equation} -\bm{M}(\bm{\mathcal{X}})\ddot{\bm{\mathcal{X}}} + \bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \bm{G}(\bm{\mathcal{X}}) = \bm{\mathcal{F}} -\end{equation}

-

first consider an intermediate generalized coordinate \(x_i\), which is in fact the position of point \(b_i\). -This generalized coordinate is used to harmonize the limb and the moving platform dynamic formulation and to derive an closed-form structure for the whole manipulator.

-

Now, manipulate each limb dynamic equations to convert them into the closed form. -Let us first introduce some relations to substitute kinematic parameters like \(\dot{\bm{\omega}}_i\), \(\ddot{\bm{\omega}}_i\), \(\ddot{l}_i\) with the intermediate generalized coordinate \(x_i\) and its time derivatives.

-

After some manipulations, we obtain the following closed form equation:

-

\begin{equation} -\bm{M}_i \ddot{\bm{x}}_i + \bm{C}_i \dot{\bm{x}}_i + \bm{G}_i = \bm{F}_i -\end{equation}

-

the corresponding mass matrix \(\bm{M}_i\), the Coriolis matrix \(\bm{C}_i\), and the gravity vector \(\bm{G}_i\) can be simplified into the following form:

-

\begin{align} -\bm{M}_i &= m_{i_2}\hat{\bm{s}}_i \hat{\bm{s}}_i^T - \frac{1}{l_i^2} I_{xx_i} \hat{\bm{s}}_{i \times}^2 \\\
-\bm{C}_i &= -\frac{2}{l_i} m_{c_o}\dot{l}_i \hat{\bm{s}}_{i\times}^2 - \frac{1}{l_i^2} m_{i_2} c_{i_2} \hat{\bm{s}}_i \dot{\bm{x}}_i^T \hat{\bm{s}}_{i \times}^2 \\\
-\bm{G}_i &= \big( m_{g_e} \hat{\bm{s}}_{i\times}^2 - m_{i_2} \hat{\bm{s}}_i \hat{\bm{s}}_i^T \big) \bm{g} \\\
-\bm{F}_i &= -\bm{f}_{b_i} + \tau_i \hat{\bm{s}}_i -\end{align}

-

in which

-

\begin{align} -m_{c_e} &= \frac{1}{l_i^2} (m_{i_1} c_{i_1}^2 + m_{i_2} c_{i_2}^2) \\\
-m_{c_o} &= \frac{1}{l_i} m_{i_2} c_{i_2} - \frac{1}{l_i^2} (I_{xx_i} + l_i^2 m_{c_e}) \\\
-m_{g_e} &= \frac{1}{l_i} (m_{i_1} c_{i_1} + m_{i_2}(l_i - c_{i_2})) -\end{align}

-
Closed-Form Dynamics of the Moving Platform
-

In this section, the dynamic equations of the moving platform are transformed in the following closed-form formulation

-

\begin{equation} -\bm{M}_{p}\ddot{\bm{\mathcal{X}}} + \bm{C}_{p}\dot{\bm{\mathcal{X}}} + \bm{G}_{p} = \bm{\mathcal{F}}_{p} -\end{equation}

-

in which \(\bm{\mathcal{X}}\) consists of six coordinates: the first three \(\bm{x}_p\) represent linear motion of the moving platform, and the last three \(\bm{\theta}\) its angular motion. -It is preferable to use the screw coordinates for representing the angular motion as its derivative is also a vector representing angular velocity:

-

\begin{equation} -\tcmbox{\bm{\mathcal{X}} = \begin{bmatrix}\bm{x}_p \ \bm{\theta}\end{bmatrix}; \quad -\dot{\bm{\mathcal{X}}} = \begin{bmatrix}\bm{v}_p \ \bm{\omega}\end{bmatrix}; \quad -\ddot{\bm{\mathcal{X}}} = \begin{bmatrix}\bm{a}_p \ \dot{\bm{\omega}}\end{bmatrix}} -\end{equation}

-

Equations eq:dyn_form_implicit_trans and eq:dyn_form_implicit_rot can be simply converted into a closed form of Equation eq:close_form_dynamics_platform with the following terms:

-

\begin{equation} -\begin{aligned} -&\bm{M}_p = \begin{bmatrix} m\bm{I}_{3 \times 3} & \bm{O}_{3\times 3} \ \bm{O}_{3\times 3} & {}^A \bm{I}_p \end{bmatrix}_{6\times 6}; \bm{C}_p = \begin{bmatrix} \bm{O}_{3\times 3} & \bm{O}_{3\times 3} \ \bm{O}_{3\times 3} & \omega_{\times} {}^A\bm{I}_p \end{bmatrix}_{6 \times 6} \\\
-&\bm{G}_p = \begin{bmatrix}-m\bm{g} \ \bm{O}_{3\times 1}\end{bmatrix}_{6 \times 1}; \bm{\mathcal{F}}_p = \begin{bmatrix} \bm{F}_d + \sum \bm{f}_{b_i} \ \bm{n}_d + \sum \bm{b}_{i \times} \bm{f}_{b_i} \end{bmatrix}_{6\times 1} -\end{aligned} -\end{equation}

-
Closed-Form Dynamics of the Stewart-Gough Manipulator
-

To derive the closed-form dynamic formulation for the whole manipulator, a transformation is required to map the intermediate generalized coordinates \(x_i\) into the principal generalized coordinates \(\bm{\mathcal{X}}\).

-

Using such a transformation, and by adding the resulting equations of the limbs and the moving platform, the internal forces \(\bm{f}_{b_i}\) can be eliminated, and closed-form dynamic formulation for the whole manipulator can be derived.

-

To generate such a transformation define a Jacobian matrix \(\bm{J}_i\) relating the intermediate coordinates to that of the principal generalized coordinate:

-

\begin{equation} -\dot{\bm{x}}_i = \bm{J}_i \dot{\bm{\mathcal{X}}} -\end{equation}

-

in which

-

\begin{equation} -\bm{J}_i = \begin{bmatrix} \bm{I}_{3 \times 3} & -\bm{b}_{i \times} \end{bmatrix} -\end{equation}

-

\begin{equation} -\bm{M}_{li} \ddot{\bm{x}}_i + \bm{C}_{li} + \dot{\bm{x}}_i + \bm{G}_{li} = \bm{\mathcal{F}}_{li} -\end{equation}

-

in which

-

\begin{equation} -\begin{aligned} -\bm{M}_{li} = \bm{J}_i^T \bm{M}_i \bm{J}_i; \quad & \bm{C}_{li} = J_i^T \bm{M}_i \dot{\bm{J}}_i + \bm{J}_i^T \bm{C}_i \bm{J}_i \\\
-\bm{G}_{li} = \bm{J}_i^T G_i; \quad & \bm{\mathcal{F}}_{li} = \bm{J}_i^T \bm{F}_i -\end{aligned} -\end{equation}

-
-
-

\begin{equation} -\begin{aligned} -\bm{M}(\bm{\mathcal{X}}) &= \bm{M}_p + \sum_{i=1}^6 \bm{M}_{li} \\\
-\bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}) &= \bm{C}_p + \sum_{i=1}^6 \bm{C}_{li} \\\
-\bm{G}(\bm{\mathcal{X}}) &= \bm{G}_p + \sum_{i=1}^6 \bm{G}_{li} \\\
-\bm{\mathcal{F}}(\bm{\mathcal{X}}) &= \bm{\mathcal{F}}_d + \sum_{i=1}^6 \bm{\mathcal{F}}_{\tau_i} -\end{aligned} -\end{equation}

-
-
Forward Dynamics Simulations
-

As shown in Figure fig:stewart_forward_dynamics, it is assumed that actuator forces and external disturbance wrench applied to the manipulator are given and the resulting trajectory of the moving platform is to be determined.

-

-
- Figure 13: Flowchart of forward dynamics implementation sequence
-

Figure 13: Flowchart of forward dynamics implementation sequence

-
-
- -

The closed-form dynamic formulation of the Stewart-Gough platform corresponds to the set of equations given in eq:closed_form_dynamic_stewart_wanted, whose terms are given in eq:close_form_dynamics_stewart_terms.

-
Inverse Dynamics Simulation
-

In inverse dynamics simulations, it is assumed that the trajectory of the manipulator is given, and the actuator forces required to generate such trajectories are to be determined.

-

As illustrated in Figure fig:stewart_inverse_dynamics, inverse dynamic formulation is implemented in the following sequence. -The first step is trajectory generation for the manipulator moving platform. -Many different algorithms are developed for a smooth trajectory generation. -For such a trajectory, \(\bm{\mathcal{X}}_{d}(t)\) and the time derivatives \(\dot{\bm{\mathcal{X}}}_{d}(t)\), \(\ddot{\bm{\mathcal{X}}}_{d}(t)\) are known.

-

The next step is to solve the inverse kinematics of the manipulator and to find the limbs’ linear and angular positions, velocity and acceleration as a function of the manipulator trajectory. -The manipulator Jacobian matrix \(\bm{J}\) is also calculated in this step.

-

Next, the dynamic matrices given in the closed-form formulations of the limbs and the moving platform are calculated using equations eq:closed_form_intermediate_parameters and eq:close_form_dynamics_stewart_terms, respectively.

-

To combine the corresponding matrices, an to generate the whole manipulator dynamics, it is necessary to find intermediate Jacobian matrices \(\bm{J}_i\), given in eq:jacobian_intermediate, and then compute compatible matrices for the limbs given in eq:closed_form_stewart_manipulator. -Now that all the terms required to computed to actuator forces required to generate such a trajectory is computed, let us define \(\bm{\mathcal{F}}\) as the resulting Cartesian wrench applied to the moving platform. -This wrench can be calculated from the summation of all inertial and external forces excluding the actuator torques \(\bm{\tau}\) in the closed-form dynamic formulation eq:closed_form_dynamic_stewart_wanted.

-

By this definition, \(\bm{\mathcal{F}}\) can be viewed as the projector of the actuator forces acting on the manipulator, mapped to the Cartesian space. -Since there is no redundancy in actuation in the Stewart-Gough manipulator, the Jacobian matrix \(\bm{J}\), squared and actuator forces can be uniquely determined from this wrench, by \(\bm{\tau} = \bm{J}^{-T} \bm{\mathcal{F}}\), provided \(\bm{J}\) is non-singular. -Therefore, actuator forces \(\bm{\tau}\) are computed in the simulation from

-

\begin{equation} -\bm{\tau} = \bm{J}^{-T} \left( \bm{M}(\bm{\mathcal{X}})\ddot{\bm{\mathcal{X}}} + \bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \bm{G}(\bm{\mathcal{X}}) - \bm{\mathcal{F}}_d \right) -\end{equation}

-

-
- Figure 14: Flowchart of inverse dynamics implementation sequence
-

Figure 14: Flowchart of inverse dynamics implementation sequence

-
-
- -

Virtual Work Formulation

-

Lagrange Formulation

-

\begin{equation} -K(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}) = \frac{1}{2} \dot{\bm{\mathcal{X}}}^T \bm{M}(\bm{\mathcal{X}}) \dot{\bm{\mathcal{X}}} -\end{equation}

-

\begin{equation} -\bm{G}(\bm{\mathcal{X}}) = \frac{\partial P(\bm{\mathcal{X}})}{\partial \bm{\mathcal{X}}} -\end{equation}

-

\begin{equation} -\bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}) = \frac{1}{2} (\dot{\bm{M}} + \bm{U}^T - \bm{U}) -\end{equation}

-

Motion Control

-

-

Introduction

-

Parallel robots are designed for two different types of applications.

-

In the first type, the moving platform of the robot accurately follows a desired position and orientation path in a specific time frame, while no interacting forces need to be applied to the environment.

-

The second type of application include situations where the robot moving platform is in contact with a stiff environment (e.g. precision machining). -In such application, the contact force describe the state of interaction more effectively than the position and orientation of the moving platform. -The problem of force control can be described as to derive the actuator forces for such a manipulator required to generate a prescribed desired wrench (force and torque) at the manipulator moving platform, while the manipulator is performing its motion.

-

Although a multiple degrees-of-freedom robotic manipulator can usually be represented by a MIMO and nonlinear model, many industrial controllers for such robots consist of a number of linear controller designed to control individual joint motions. -One of the reasons why such decentralization can perform well in practice is the use of large gear reductions in robot actuators, which significantly reduces the coupling and non linear behavior of robot dynamics.

-

However, using advanced techniques in nonlinear and MIMO control permits to overcome limitations of the SISO approach.

-

Controller Topology

-

-
-
-

In motion control of parallel manipulator, it is assumed that the controller computes the required actuator forces or torques to cause the robot motion to follow a desired position and orientation trajectory.

-
-

Let us use the motion variables as the generalized coordinate of the moving platform defined by \(\bm{\mathcal{X}} = [\bm{x}_P, \bm{\theta}]^T\), in which the linear motion is represented by \(\bm{x}_p = [x_p, y_p, z_p]^T\), while the moving platform orientation is represented by screw coordinates \(\bm{\theta} = \theta[s_x, s_y, s_z]^T = [\theta_x, \theta_y, \theta_z]^T\).

-

Consider the general closed-form dynamics formulation of a parallel robot

-

\begin{equation} -\tcmbox{\bm{M}(\bm{\mathcal{X}})\ddot{\bm{\mathcal{X}}} + \bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \bm{G}(\bm{\mathcal{X}}) = \bm{\mathcal{F}}} -\end{equation}

-

where

-
    -
  • \(\bm{M}(\bm{\mathcal{X}})\) denotes the mass matrix
  • -
  • \(\bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\) denotes the Coriolis and centrifugal matrix
  • -
  • \(\bm{G}(\bm{\mathcal{X}})\) denotes the gravity vector
  • -
  • \(\bm{\mathcal{F}}\) denotes the generalized forces applied to the moving platform center of mass
  • -
-

The generalized forces can be decomposed as follow -\[ \bm{\mathcal{F}} = \bm{J}^T \bm{\tau} + \bm{\mathcal{F}}_d \] -with

-
    -
  • \(\bm{J}\) is the Jacobian
  • -
  • \(\bm{\tau}\) are the actuator forces
  • -
  • \(\bm{\mathcal{F}}_d\) are any external wrenches
  • -
-
-
-

Control topology is referred to the structure of the control system used to compute the actuator forces/torques from the measurements, and the required pre and post processing.

-
-

For motion control of a manipulator, the controller has to compute the actuator force/torques required to cause the motion of the moving platform according to the desired trajectory. -In general, the desired motion of the moving platform may be represented by the desired generalized coordinate of the manipulator, denoted by \(\bm{\mathcal{X}}_d\).

-

To perform such motion in closed loop, it is necessary to measure the output motion \(\bm{\mathcal{X}}\) of the manipulator by an instrumentation system. -Such instrumentation usually consists of two subsystems: the first subsystem may use accurate accelerometers, or global positioning systems to calculate the position of a point on the moving platform; and a second subsystem may use inertial or laser gyros to determine orientation of the moving platform.

-

Figure fig:general_topology_motion_feedback shows the general topology of a motion controller using direct measurement of the motion variable \(\bm{\mathcal{X}}\), as feedback in the closed-loop system. -In such a structure, the measured position and orientation of the manipulator is compared to its desired value to generate the motion error vector \(\bm{e}_\mathcal{X}\). -The controller uses this error information to generate suitable commands for the actuators to minimize the tracking error.

-

-
- Figure 15: The general topology of motion feedback control: motion variable \(\bm{\mathcal{X}}\) is measured
-

Figure 15: The general topology of motion feedback control: motion variable \(\bm{\mathcal{X}}\) is measured

-
-
- -

However, it is usually much easier to measure the active joint variable rather than measuring the final position and orientation of the moving platform. -The relation between the joint variable \(\bm{q}\) and motion variable of the moving platform \(\bm{\mathcal{X}}\) is dealt with the forward and inverse kinematics. -The relation between the differential motion variables \(\dot{\bm{q}}\) and \(\dot{\bm{\mathcal{X}}}\) is studied through the Jacobian analysis.

-

It is then possible to use the forward kinematic analysis to calculate \(\bm{\mathcal{X}}\) from the measured joint variables \(\bm{q}\), and one may use the control topology depicted in Figure fig:general_topology_motion_feedback_bis to implement such a controller.

-

-
- Figure 16: The general topology of motion feedback control: the active joint variable \(\bm{q}\) is measured
-

Figure 16: The general topology of motion feedback control: the active joint variable \(\bm{q}\) is measured

-
-
- -

In this topology, the forward kinematic analysis of the manipulator has to be performed to implement the feedback loop. -As described earlier, this is a complex task for parallel manipulators. -It is even more complex when a solution has to be found in real time.

-

However, as shown herein before, the inverse kinematic analysis of parallel manipulators is much easier to carry out. -To overcome the implementation problem of the control topology in Figure fig:general_topology_motion_feedback_bis, another control topology is usually implemented for parallel manipulators.

-

In this topology, depicted in Figure fig:general_topology_motion_feedback_ter, the desired motion trajectory of the robot \(\bm{\mathcal{X}}_d\) is used in an inverse kinematic analysis to find the corresponding desired values for joint variable \(\bm{q}_d\). -Hence, the controller is designed based on the joint space error \(\bm{e}_q\).

-

-
- Figure 17: The general topology of motion feedback control: the active joint variable \(\bm{q}\) is measured, and the inverse kinematic analysis is used
-

Figure 17: The general topology of motion feedback control: the active joint variable \(\bm{q}\) is measured, and the inverse kinematic analysis is used

-
-
- -

Therefore, the structure and characteristics of the controller in this topology is totally different from that given in the first two topologies.

-

The input and output of the controller depicted in Figure fig:general_topology_motion_feedback_ter are both in the joint space. -However, this is not the case in the previous topologies where the input to the controller is the motion error in task space, while its output is in the joint space.

-

For the topology in Figure fig:general_topology_motion_feedback_ter, independent controllers for each joint may be suitable.

-

To generate a direct input to output relation in the task space, consider the topology depicted in Figure fig:general_topology_motion_feedback_quater. -A force distribution block is added which maps the generated wrench in the task space \(\bm{\mathcal{F}}\), to its corresponding actuator forces/torque \(\bm{\tau}\).

-

-
- Figure 18: The general topology of motion feedback control in task space: the motion variable \(\bm{\mathcal{X}}\) is measured, and the controller output generates wrench in task space
-

Figure 18: The general topology of motion feedback control in task space: the motion variable \(\bm{\mathcal{X}}\) is measured, and the controller output generates wrench in task space

-
-
- -

For a fully parallel manipulator such as the Stewart-Gough platform, this mapping can be constructed from the Jacobian transpose of the manipulator: -\[ \bm{\mathcal{F}} = \bm{J}^T \bm{\tau}; \quad \bm{\tau} = \bm{J}^{-T} \bm{\mathcal{F}} \]

-

Motion Control in Task Space

-

-

Decentralized PD Control

-

In the control structure in Figure fig:decentralized_pd_control_task_space, a number of linear PD controllers are used in a feedback structure on each error component. -The decentralized controller consists of six disjoint linear controllers acting on each error component \(\bm{e}_x = [e_x,\ e_y,\ e_z,\ e_{\theta_x},\ e_{\theta_y},\ e_{\theta_z}]\). -The PD controller is denoted by \(\bm{K}_d s + \bm{K}_p\), in which \(\bm{K}_d\) and \(\bm{K}_p\) are \(6 \times 6\) diagonal matrices denoting the derivative and proportional controller gains for each error term.

-

-
- Figure 19: Decentralized PD controller implemented in task space
-

Figure 19: Decentralized PD controller implemented in task space

-
-
- -

Hence, by this structure, each tracking error component is treated separately. -The output of the controller is denoted by \(\bm{\mathcal{F}} = [F_x\ F_y\ F_z\ \tau_x\ \tau_y\ \tau_z]\).

-

In practice, the calculated output wrench is transformed into actuator forces through the force distribution block. -This mapping is implemented through inverse of the manipulator Jacobian transpose by \(\bm{\tau} = \bm{J}^{-T} \bm{\mathcal{F}}\).

-

Different alternatives of linear controllers can be used instead of the PD controller used in this structure, however PD controller is the simplest form which can preserve the manipulator stability while providing suitable tracking performance.

-

The proposed decentralized PD controller is very simple in structure and therefore easily implementable. -The design of such a controller needs no detailed information on the manipulator dynamics. -The controller gains are generally tuned experimentally based on physical realization of the controller by trial and error.

-

Feed Forward Control

-

A feedforward wrench denoted by \(\bm{\mathcal{F}}_{ff}\) may be added to the decentralized PD controller structure as depicted in Figure fig:feedforward_control_task_space. -This term is generated from the dynamic model of the manipulator in the task space, represented in a closed form by the following equation: -\[ \bm{\mathcal{F}}_{ff} = \bm{\hat{M}}(\bm{\mathcal{X}}_d)\ddot{\bm{\mathcal{X}}}_d + \bm{\hat{C}}(\bm{\mathcal{X}}_d, \dot{\bm{\mathcal{X}}}_d)\dot{\bm{\mathcal{X}}}_d + \bm{\hat{G}}(\bm{\mathcal{X}}_d) \]

-

-
- Figure 20: Feed forward wrench added to the decentralized PD controller in task space
-

Figure 20: Feed forward wrench added to the decentralized PD controller in task space

-
-
- -

The desired trajectory in task space \(\bm{\mathcal{X}}_d\), and its derivatives \(\dot{\bm{\mathcal{X}}}_d\), \(\ddot{\bm{\mathcal{X}}}_d\) are the required inputs for the feedforward block. -This term is called feedforward since no online information of the output motion trajectory \(\bm{\mathcal{X}}\) is needed for its computation.

-

In order to generate this term, dynamic formulation of the robots and its kinematic and dynamic parameters are needed. -In practice, exact knowledge of dynamic matrices are not available, and therefore, estimate of these matrices are used in practice, denoted by \(\hat{\bm{M}}\), \(\hat{\bm{C}}\) and \(\hat{\bm{G}}\).

-

The information required to generate the feedforward wrench \(\bm{\mathcal{F}}_{ff}\) is usually available beforehand and can be derived offline. -The closed-loop dynamic formulation for the manipulator becomes:

-

\begin{equation} -\begin{aligned} -\bm{M}(\bm{\mathcal{X}})\ddot{\bm{\mathcal{X}}} &+ \bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \bm{G}(\bm{\mathcal{X}}) \\\
-&= \bm{\mathcal{F}} + \bm{\mathcal{F}}_d \\\
-&= \bm{\mathcal{F}}_{pd} + \bm{\mathcal{F}}_{ff} + \bm{\mathcal{F}}_d \\\
-&= \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x + \bm{\mathcal{F}}_{ff} + \bm{\hat{M}}\ddot{\bm{\mathcal{X}}}_d + \bm{\hat{C}}\dot{\bm{\mathcal{X}}}_d + \bm{\hat{G}} -\end{aligned} -\end{equation}

-

If the knowledge of the dynamic matrices is complete, we may assume that \(\hat{\bm{M}} = \bm{M}\), \(\hat{\bm{C}} = \bm{C}\) and \(\hat{\bm{G}} = \bm{G}\). -Furthermore, if we consider that the controller performs well such that \(\bm{\mathcal{X}}(t) \simeq \bm{\mathcal{X}}_d(t)\) and \(\dot{\bm{\mathcal{X}}}(t) \simeq \dot{\bm{\mathcal{X}}}_d(t)\), the simplified closed-loop dynamics become:

-

\begin{equation} -\begin{aligned} -\bm{M} (\ddot{\bm{\mathcal{X}}}_d - \ddot{\bm{\mathcal{X}}}) + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x + \bm{\mathcal{F}}_d &= 0 \\\
-\bm{M} \ddot{\bm{e}}_x + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x + \bm{\mathcal{F}}_d &= 0 -\end{aligned} -\end{equation}

-

This equation implies that, if the mentioned assumptions hold, the error dynamics satisfies a set of second-order system in the presence of disturbance. -By choosing appropriate gains for PD controller, the transient and steady-state performance of tracking error can be designed so as to satisfy the application requirements.

-

Note that except the mass matrix, the error dynamic terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains to work well within the whole workspace of the robot.

-

However, this method faces a number of limitations in practice. -The most important limitation of this control technique is the stringent assumption of a complete knowledge requirement of the dynamic matrices. -In practice, derivation of these matrices is a prohibitive task.

-

Finally, because of the dependency of the mass matrix to the configuration of the robot, the error dynamics are not completely decoupled. -This means that correction in one error component may be considered as a disturbance effect to the other components. -To overcome these limitations, inverse dynamic approach is given in the following section.

-

Inverse Dynamics Control

-
-
-

In inverse dynamics control (IDC), nonlinear dynamics of the model is used to add a corrective term to the decentralized PD controller. -By this means, nonlinear and coupling behavior of the robotic manipulator is significantly attenuated, and therefore, the performance of linear controller is greatly improved.

-
-

General structure of IDC applied to a parallel manipulator is depicted in Figure fig:inverse_dynamics_control_task_space. -A corrective wrench \(\bm{\mathcal{F}}_{fl}\) is added in a feedback structure to the closed-loop system, which is calculated from the Coriolis and centrifugal matrix and gravity vector of the manipulator dynamic formulation.

-

Furthermore, mass matrix is added in the forward path in addition to the desired trajectory acceleration \(\ddot{\bm{\mathcal{X}}}_d\).

-

As for the feedforward control, the dynamics and kinematic parameters of the robot are needed, and in practice estimates of these matrices are used.

-

-
- Figure 21: General configuration of inverse dynamics control implemented in task space
-

Figure 21: General configuration of inverse dynamics control implemented in task space

-
-
- -

The controller output wrench applied to the manipulator may be derived as follows:

-

\begin{subequations} -\begin{align} -\bm{\mathcal{F}} &= \hat{\bm{M}}(\bm{\mathcal{X}}) \bm{a} + \bm{\mathcal{F}}_{fl} \\\
-&= \hat{\bm{M}}(\bm{\mathcal{X}}) \bm{a} + \hat{\bm{C}}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}) \dot{\bm{\mathcal{X}}} + \hat{\bm{G}}(\bm{\mathcal{X}}) \\\
-\bm{a} &= \ddot{\bm{\mathcal{X}}}_d + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x -\end{align} -\end{subequations}

-

The closed-loop dynamic formulation for the manipulator becomes:

-

\begin{equation} -\begin{aligned} -\bm{M}(\bm{\mathcal{X}})\ddot{\bm{\mathcal{X}}} &+ \bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \bm{G}(\bm{\mathcal{X}}) \\\
-&= \bm{\mathcal{F}} + \bm{\mathcal{F}}_d \\\
-&= \hat{\bm{M}}(\bm{\mathcal{X}}) \left(\ddot{\bm{\mathcal{X}}}_d + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x \right) \\\
-&\quad + \hat{\bm{C}}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \hat{\bm{G}}(\bm{\mathcal{X}}) + \bm{\mathcal{F}}_d \\\
-\end{aligned} -\end{equation}

-

If the knowledge of the dynamic matrices is complete, the closed-loop dynamic formulation simplifies to:

-

\begin{equation} -\hat{\bm{M}}(\bm{\mathcal{X}}) \left(\ddot{\bm{e}}_d + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x \right) + \bm{\mathcal{F}}_d = 0 -\end{equation}

-

This control technique is very popular in practice because of the fact that this technique can significantly linearize and decouple dynamic formulation of the closed-loop error dynamics. -Furthermore, the error dynamic terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains for suitable performance in the whole workspace of the robot.

-

However, note that for a good performance, and accurate model of the system is required, and the overall procedure is not robust to modeling uncertainty. -Furthermore, this technique is computationally intensive in terms of the online computations needed to carry out the closed-loop control structure.

-

Partial Linearization IDC

-

Inverse dynamics control has several features making it very attractive in practice. -However, to apply this method, complete knowledge of the dynamic formulation matrices is required. -This requirement has the main drawbacks that the dynamic formulation of the parallel manipulator is a complicated step to be carried out.

-

To implement all the terms in IDC structure, not only the structure and components of such matrices must be carefully determined, but also the kinematics and inertial parameters of the robot are needed to be identified and calibrated. -This step requires the use of high-precision calibration equipment which are not usually accessible. -Finally, if all the terms and parameters are well known, implementation of full inverse dynamic linearization is computationally intensive.

-

These are the reasons why, in practice, IDC control is extended to different forms where the above-mentioned stringent requirements are reduced.

-

To develop the simplest possible implementable IDC, let us recall dynamic formulation complexities:

-
    -
  • the manipulator mass matrix \(\bm{M}(\bm{\mathcal{X}})\) is derived from kinetic energy of the manipulator (Eq. eq:kinetic_energy)
  • -
  • the gravity vector \(\bm{G}(\bm{\mathcal{X}})\) is derived from potential energy (Eq. eq:gravity_vectory)
  • -
  • the Coriolis and centrifugal matrix \(\bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\) is derived from Eq. eq:gravity_vectory
  • -
-

The computation of the Coriolis and centrifugal matrix is more intensive than that of the mass matrix. -Gravity vector is more easily computable.

-

However, it is shown that certain properties hold for mass matrix, gravity vector and Coriolis and centrifugal matrix, which might be directly used in the control techniques developed for parallel manipulators. -One of the most important properties of dynamic matrices is the skew-symmetric property of the matrix \(\dot{\bm{M}} - 2 \bm{C}\) .

-

Consider dynamic formulation of parallel robot given in Eq. eq:closed_form_dynamic_formulation, in which the skew-symmetric property of dynamic matrices is satisfied. -The simplest form of IDC control effort \(\bm{\mathcal{F}}\) consists of: -\[ \bm{\mathcal{F}} = \bm{\mathcal{F}}_{pd} + \bm{\mathcal{F}}_{fl} \] -in which the first term \(\bm{\mathcal{F}}_{pd}\) is generated by the simplified PD form on the motion error: -\[ \bm{\mathcal{F}}_{pd} = \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p + \bm{e}_x \]

-

The second term \(\bm{\mathcal{F}}_{fl}\) is considered to be only the gravity vector of the manipulator \(\bm{G}(\bm{\mathcal{X}})\), at any configuration, and the computationally intensive Coriolis and centrifugal term is not used: -\[ \bm{\mathcal{F}}_{fl} = \bm{G}(\bm{\mathcal{X}}) \]

-

Note that for an appreciable tracking performance with no static error at steady state, it is required to have complete knowledge of only the gravity term. -By this means, computations required in this control technique are significantly less than that of the general IDC.

-

Despite the simple structure of such a controller, the resulting control technique is very well performed, especially at steady state. -We can show that this control topology achieves asymptotic tracking for a constant desired trajectory motion, that is, \(\dot{\bm{\mathcal{X}}}_d = 0\).

-

This reveals the fact that even if the mass matrix and Coriolis and centrifugal matrix are not used in the feedback, and the closed-loop dynamics is not completely linearized, the PD control structure with gravity compensation can still lead to asymptotic tracking. -However, to suitable transient performance, more information of the system dynamics must be used in the linearization technique given in IDC.

-

Robust and Adaptative Control

-

Inverse dynamics control faces the stringent requirement that for a good performance, an accurate model of the system is required, and the overall procedure is not robust to modeling uncertainty. -Furthermore, this technique is computationally intensive in terms of online computation needed to carry out the closed-loop control structure. -The proposed modified inverse dynamics control, while being beneficial in terms of computational cost, is not suitable in terms of a closed-loop transient performance.

-

Another approach to modify IDC is to consider a complete linearization, but assume that complete knowledge of dynamic formulation matrices is not available. -To compensate for the lack of knowledge, two advanced control methods, namely robust and adaptive control are proposed:

-
    -
  • In the robust approach, a fixed controller is designed to satisfy the control objectives for the worst possible case of modeling uncertainty and disturbance wrenches.
  • -
  • In the adaptive approach, the estimates of dynamic formulation matrices are updated such that the difference between the true values of these matrices to their estimates converges to zero.
  • -
-

A global understanding of the trade-offs involved in each method is needed to employ either of them in practice.

-

Robust Inverse Dynamics Control

-

Various sources of uncertainties such as unmodelled dynamics, unknown parameters, calibration error, unknown disturbance wrenches, and varying payloads may exist, and are not seen in dynamic model of the manipulator.

-

To consider these modeling uncertainty in the closed-loop performance of the manipulator, recall the general closed-form dynamic formulation of the manipulator given in Eq. eq:closed_form_dynamic_formulation, and modify the inverse dynamics control input \(\bm{\mathcal{F}}\) as

-

\begin{align*} -\bm{\mathcal{F}} &= \hat{\bm{M}}(\bm{\mathcal{X}}) \bm{a}_r + \hat{\bm{C}}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}) \dot{\bm{\mathcal{X}}} + \hat{\bm{G}}(\bm{\mathcal{X}})\\\
-\bm{a}_r &= \ddot{\bm{\mathcal{X}}}_d + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x + \bm{\delta}_a -\end{align*}

-

in which \(\bm{a}_r\) is the robustified control input.

-

Comparing this equation to the usual IDC, a robustifying term \(\bm{\delta}_a\) is added to compensate for modeling uncertainties.

-

Note that, as defined earlier, the notation \(\hat{(.)}\) represents the estimated value of \((.)\) and \(\tilde{(.)}\) is defined as the error mismatch between the estimated value and the true value as \(\tilde{(.)} = \hat{(.)}- (.)\).

-

In a similar manner \(\tilde{(.)}\) notation may be applied to the motion variables as -\[ \tilde{\bm{\mathcal{X}}} = \bm{\mathcal{X}} - \bm{\mathcal{X}}_d = - \bm{e}_x \]

-

The closed-loop dynamic formulation of the manipulator can be written as: -\[ \ddot{\bm{\mathcal{X}}} = \bm{a}_r + \bm{\eta}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}, \bm{a}_r) \] -in which -\[ \bm{\eta} = \bm{M}^{-1} \left( \tilde{\bm{M}} \bm{a}_r + \tilde{\bm{C}} \dot{\bm{\mathcal{X}}} + \tilde{\bm{G}} \right) \] -is a measure of modeling uncertainty.

-

-
- Figure 22: General configuration of robust inverse dynamics control implemented in the task space
-

Figure 22: General configuration of robust inverse dynamics control implemented in the task space

-
-
- -

Adaptive Inverse Dynamics Control

-

-
- Figure 23: General configuration of adaptative inverse dynamics control implemented in task space
-

Figure 23: General configuration of adaptative inverse dynamics control implemented in task space

-
-
- -

Motion Control in Joint Space

-

Although the motion control schemes developed in section sec:control_task_space are very effective for tracking performance, they suffer from an implementation constraint that the motion variable \(\bm{\mathcal{X}}\) must be measured in practice.

-

If this measurement is available without any doubt, such topologies are among the best routines to be implemented in practice. -However, as explained in Section sec:control_topology, in many practical situations measurement of the motion variable \(\bm{\mathcal{X}}\) is difficult or expensive, and usually just the active joint variables \(\bm{q}\) are measured. -In such cases, the controllers developed in the joint space may be recommended for practical implementation.

-

To generate a direct input to output relation in the joint space, consider the topology depicted in Figure fig:general_topology_motion_feedback_bis. -In this topology, the controller input is the joint variable error vector \(\bm{e}_q = \bm{q}_d - \bm{q}\), and the controller output is directly the actuator force vector \(\bm{\tau}\), and hence there exists a one-to-one correspondence between the controller input to its output.

-

The general form of dynamic formulation of parallel robot is usually given in the task space. -For motion control in joint space, we need to transform the dynamic formulation in the joint space, by which the actuator forces \(\bm{\tau}\) are directly related to the active joint variables \(\bm{q}\).

-

Dynamic Formation in the Joint Space

-

The relation between the task space variables to their counterparts in the joint space can be derived by forward and inverse kinematics relations. -Although both analyses involve solution to a set of non-linear equations, for parallel manipulators, inverse kinematic solution proves to be much easier to obtain than that of forward kinematic solution.

-

This relation in differential kinematics is much simpler and can be completely determined by the Jacobian matrix: -\[ \tcmbox{\dot{\bm{q}} = \bm{J} \dot{\bm{\mathcal{X}}} \Longrightarrow \dot{\bm{\mathcal{X}}} = \bm{J}^{-1} \dot{\bm{q}}} \]

-

The acceleration variables are then: -\[ \ddot{\bm{q}} = \dot{\bm{J}} \dot{\bm{\mathcal{X}}} + \bm{J} \ddot{\mathcal{X}} \Longrightarrow \ddot{X} = \bm{J}^{-1} \ddot{\bm{q}} - \bm{J}^{-1} \dot{\bm{J}} \dot{\bm{\mathcal{X}}} \]

-

Furthermore, the relation between the actuator force vector \(\bm{\tau}\) to the corresponding task space wrench is given by: -\[ \tcmbox{\bm{\mathcal{F}} = \bm{J}^T \bm{\tau} \Longrightarrow \bm{\tau} = \bm{J}^{-T} \bm{\mathcal{F}}} \]

-

Substituting \(\dot{\bm{\mathcal{X}}}\) and \(\ddot{\bm{\mathcal{X}}}\) from the above equations into the dynamic formulation of the parallel robot gives:

-

\begin{equation*} -\begin{aligned} -& \left( \bm{J}^{-T} \bm{M} \bm{J}^{-1} \right) \ddot{\bm{q}} \\\
-& \quad + \bm{J}^{-T} \left( \bm{C} - \bm{M} \bm{J}^{-1} \dot{\bm{J}} \right) \bm{J}^{-1} \dot{\bm{q}} \\\
-& \quad + \bm{J}^{-T} \bm{G} + \bm{J}^{-T} \bm{\mathcal{F}}_d = \bm{\tau} -\end{aligned} -\end{equation*}

-
-
-

\begin{equation} -\bm{M}_q \ddot{\bm{q}} + \bm{C}_q \dot{\bm{q}} + \bm{G}_q + \bm{\tau}_d = \bm{\tau} \label{eq:dynamics_joint_space} -\end{equation}

-

with:

-

\begin{subequations} -\begin{align} -\bm{M}_q =& \bm{J}^{-T} \bm{M} \bm{J}^{-1} \\\
-\bm{D}_q =& \bm{J}^{-T} \left( \bm{C} - \bm{M} \bm{J}^{-1} \dot{\bm{J}} \right) \bm{J}^{-1} \\\
-\bm{G}_q =& \bm{J}^{-T} \bm{G} \\\
-\bm{\tau}_q =& \bm{J}^{-T} \bm{\mathcal{F}}_d -\end{align} -\end{subequations}

-
-

Equation eq:dynamics_joint_space represents the closed form dynamic formulation of a general parallel robot in the joint space.

-

Note that the dynamic matrices are not explicitly represented in terms of the joint variable vector \(\bm{q}\). -In fact, to fully derive these matrices, the Jacobian matrices must be computed and are generally derived as a function of the motion variables \(\bm{\mathcal{X}}\). -Furthermore, the main dynamic matrices are all functions of the motion variable \(\bm{\mathcal{X}}\). -Hence, in practice, to find the dynamic matrices represented in the joint space, forward kinematics should be solved to find the motion variable \(\bm{\mathcal{X}}\) for any given joint motion vector \(\bm{q}\).

-

Since in parallel robots the forward kinematic analysis is computationally intensive, there exist inherent difficulties in finding the dynamic matrices in the joint space as an explicit function of \(\bm{q}\). -In this case it is possible to solve forward kinematics in an online manner, it is recommended to use the control topology depicted in fig:general_topology_motion_feedback_bis, and implement control law design in the task space.

-

However, one implementable alternative to calculate the dynamic matrices represented in the joint space is to use the desired motion trajectory \(\bm{\mathcal{X}}_d\) instead of the true value of motion vector \(\bm{\mathcal{X}}\) in the calculations. -This approximation significantly reduces the computational cost, with the penalty of having mismatch between the estimated values of these matrices to their true values.

-

Decentralized PD Control

-

The first control strategy introduced in the joint space consists of the simplest form of feedback control in such manipulators. -In this control structure, depicted in Figure fig:decentralized_pd_control_joint_space, a number of PD controllers are used in a feedback structure on each error component.

-

The PD controller is denoted by \(\bm{K}_d s + \bm{K}_p\), where \(\bm{K}_d\) and \(\bm{K}_p\) are \(n \times n\) diagonal matrices denoting the derivative and proportional controller gains, respectively.

-

-
- Figure 24: Decentralized PD controller implemented in joint space
-

Figure 24: Decentralized PD controller implemented in joint space

-
-
- -

By this structure, each tracking error component is treated separately by its disjoint PD controller. -The proposed decentralized PD controller is very simple in structure, and therefore very easy to be implemented on the manipulator. -The design of such a controller needs no detailed information on the manipulator dynamic formulation and parameters. -However, the tracking performance of such a controller is relatively poor, and static tracking errors might be unavoidable. -Also, the performance of the closed-loop system is configuration dependent.

-

In practice, the gains are tuned experimentally and obtained as a trade-off between transient behavior and steady-state errors at different configurations. -As the dynamics of the system in the joint space is configuration dependent, finding suitable controller gains to result in required performance in all configurations is a difficult task.

-

The performance of the controller to attenuate measurement noise and external disturbance wrenches are also poor in practice. -To remedy these shortcomings, some modifications have been proposed to this structure and further described.

-

Feedforward Control

-

The tracking performance of the simple PD controller implemented in the joint space is usually not sufficient at different configurations. -To improve the tracking performance, a feedforward actuator force denoted by \(\bm{\tau}_{ff}\) may be added to the structure of the controller as depicted in Figure fig:feedforward_pd_control_joint_space.

-

-
- Figure 25: Feed forward actuator force added to the decentralized PD controller in joint space
-

Figure 25: Feed forward actuator force added to the decentralized PD controller in joint space

-
-
- -

The feedforward term is generated from the dynamic formulation of the manipulator. -The desired trajectory in the task space \(\bm{\mathcal{X}}_d\) and its derivatives \(\dot{\bm{\mathcal{X}}}_d\), \(\ddot{\bm{\mathcal{X}}}_d\) are thus required.

-

In practice, exact knowledge of dynamic matrices are not available, and therefore, estimates of these matrices are used in this derivation denoted by \(\hat{\bm{M}}\), \(\hat{\bm{C}}\) and \(\hat{\bm{G}}\).

-

The information required to generate the feedforward actuator force \(\bm{\tau}_{ff}\) is usually available beforehand, and in such a case, the feedforward term corresponding to a given trajectory can be determined off-line, while the computation of the decentralized feedback term would be executed online.

-

If complete information of the dynamic matrices is available, and if we assume that the system is performing well, meaning that \(\bm{\mathcal{X}}(t) \simeq \bm{\mathcal{X}}_d(t)\) and \(\dot{\bm{\mathcal{X}}}(t) \simeq \dot{\bm{\mathcal{X}}}_d(t)\), we can write the closed loop dynamics as follow: -\[ \bm{M}_q \ddot{\bm{e}}_q + \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q = \bm{\tau}_d \]

-

The error dynamics satisfy a set of second-order differential equations in the presence of disturbance. -Therefore, by choosing appropriate gains of the PD controller, the transient and steady-state performance of the tracking error can be suitably designed.

-

Note that except for the mass matrix, the error dynamics terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains to work well in the whole workspace of the robot in such a structure.

-

However, this method suffers from a number of limitations in practice. -The most important limitation is the stringent assumption of the complete information requirement of dynamics matrices. -Furthermore, even is all the assumption hold, because of the configuration dependence of the mass matrix, the error dynamics is still not completely decoupled. -This means that correction in one component may be considered as a disturbance effect to the other components. -To overcome these limitations, the inverse dynamic approach has been developed and is given in the following section.

-

Inverse Dynamics Control

-

As seen in the previous section, the tracking performance of a decentralized PD controller implemented in the joint space is not uniform at different configurations. -To compensate for such effects, a feedforward torque is added to the structure of the controller, by which the shortcomings of the decentralized controller is partially remedied. -However, the closed-loop performance still faces a number of limitations, which cannot be completely remedied because of the inherent conditions on feedforward structure of that proposed controller. -To overcome these limitations, in this section, a control technique based on inverse dynamic feedback of the manipulator in the joint space is presented.

-
-
-

In the inverse dynamics control (IDC) strategy, the nonlinear dynamics of the model is used to add a corrective term to the decentralized PD controller. -By this means, the nonlinear and coupling characteristics of robotic manipulator is significantly attenuated, and therefore, the performance of linear controller is significantly improved.

-
-

The general structure of inverse dynamics control applied to a parallel manipulator in the joint space is depicted in Figure fig:inverse_dynamics_control_joint_space.

-

A corrective torque \(\bm{\tau}_{fl}\) is added in a feedback structure to the closed-loop system, which is calculated from the Coriolis and Centrifugal matrix, and the gravity vector of the manipulator dynamic formulation in the joint space. -Furthermore, the mass matrix is acting in the forward path, in addition to the desired trajectory acceleration \(\ddot{\bm{q}}_q\). -Note that to generate this term, the dynamic formulation of the robot, and its kinematic and dynamic parameters are needed. -In practice, exact knowledge of dynamic matrices are not available, and there estimates are used.

-

-
- Figure 26: General configuration of inverse dynamics control implemented in joint space
-

Figure 26: General configuration of inverse dynamics control implemented in joint space

-
-
- -

The controller output torque applied to the manipulator may be calculated by:

-

\begin{subequations} -\begin{align} -\bm{\tau} &= \hat{\bm{M}}_q \bm{a}_q + \bm{\tau}_{fl} \\\
-\bm{\tau}_{fl} &= \hat{\bm{C}}_q \dot{\bm{q}} + \hat{\bm{G}}_q \\\
-\bm{a}_q &= \ddot{\bm{q}}_d + \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q -\end{align} -\end{subequations}

-

If the knowledge of dynamic matrices is complete, the closed-loop dynamic formulation is simplified to: -\[ \hat{\bm{M}}_q \left( \ddot{\bm{e}}_q + \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q \right) + \bm{\tau}_d = 0 \]

-

This equation implies that if there exist complete knowledge of the dynamic matrices, the tracking error dynamic equation satisfies a set of second-order systems in the presence of disturbance. -Consider the case where no disturbance wrench is applied to the manipulator, as the mass matrix \(\bm{M}_q\) is positive definite at all non-singular configurations, it can be inverted, and the error dynamics simplifies to: -\[ \ddot{\bm{e}}_q + \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q = 0 \]

-

This control technique is very popular in practice because of the fact that it can significantly linearize and decouple the dynamic formulation of the closed-loop system for error dynamics components. -Furthermore, the error dynamic terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains to perform well in the whole workspace of the robot.

-

However, note that for a good performance, an accurate model of the system is required, and the overall procedure is not robust to model uncertainties.

-

Summary of Motion Control Techniques

-

In this section, a number of control techniques have been developed for parallel robots. -Based on the dynamic formulation given in Section sec:dynamics, many model-based control techniques have been developed for implementation in the task space as well as in the joint space. -These control techniques are presented from the simplest form of decentralized PD control to more advanced robust and adaptive inverse dynamics control.

-

A summary of these techniques is given below.

-
Dynamic Formulations
-

The dynamic formulation of a parallel robot may be directly represented as a function of motion variable \(\bm{\mathcal{X}}\) in the task space as follows:

-

\begin{equation*} -\bm{M}(\bm{\mathcal{X}})\ddot{\bm{\mathcal{X}}} + \bm{C}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \bm{G}(\bm{\mathcal{X}}) = \bm{\mathcal{F}} + \bm{\mathcal{F}}_d -\end{equation*}

-

The dynamic formulation may be represented as a function of actuator motion variable \(\bm{q}\) as

-

\begin{equation*} -\bm{M}_q \ddot{\bm{q}} + \bm{C}_q \dot{\bm{q}} + \bm{G}_q = \bm{\tau} + \bm{\tau}_d -\end{equation*}

-

in which these two formulations are closely related to each other by the following relations:

-

\begin{equation*} -\begin{aligned} -\bm{M}_q &= \bm{J}^{-T} \bm{M} \bm{J}^{-1} \\\
-\bm{C}_q &= \bm{J}^{-T} \left( \bm{C} - \bm{M}\bm{J}^{-1}\dot{\bm{J}} \right) \bm{J}^{-1} \\\
-\bm{D}_q &= \bm{J}^{-T} \bm{G} \\\
-\bm{\tau}_q &= \bm{J}^{-T} \bm{\mathcal{F}} -\end{aligned} -\end{equation*}

-
Decentralized PD Control
-

The simplest controller for a parallel robot can be considered as a decentralized PD controller being implemented individually on each error component. -If such a structure is implemented in the task space, the control effort is calculated by

-

\begin{equation*} -\bm{\mathcal{F}} = \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x -\end{equation*}

-

and the actuator effort can be generally determined through a force distribution scheme.

-

For a completely parallel manipulator, the actuator forces can be generated by \(\bm{\tau} = \bm{J}^{-T} \bm{\mathcal{F}}\) at non-singular configurations.

-

Decentralized PD control can be directly implemented in the joint space by the following equation:

-

\begin{equation*} -\bm{\tau} = \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q -\end{equation*}

-
Feed Forward Control
-

The reduce the performance limitations of simple PD control, the control effort may be enforced with a feed forward wrench given by

-

\begin{equation*} -\bm{\mathcal{F}} = \bm{\mathcal{F}}_{pd} + \bm{\mathcal{F}}_{ff} -\end{equation*}

-

in which

-

\begin{equation*} -\begin{aligned} -\bm{\mathcal{F}}_{ff} &= \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x \\\
-&+ \hat{\bm{M}}(\bm{\mathcal{X}}_d)\ddot{\bm{\mathcal{X}}}_d + \hat{\bm{C}}(\bm{\mathcal{X}}_d, \dot{\bm{\mathcal{X}}}_d)\dot{\bm{\mathcal{X}}}_d + \hat{\bm{G}}(\bm{\mathcal{X}}_d) -\end{aligned} -\end{equation*}

-

where \(\hat{\bm{M}}\), \(\hat{\bm{C}}\) and \(\hat{\bm{G}}\) are estimation of the dynamic matrices.

-

This controller can be implemented in joint space as follows

-

\begin{equation*} -\begin{aligned} -\bm{\tau} &= \bm{\tau}_{pd} + \bm{\tau}_{ff} \\\
-&= \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q + \bm{J}^{-T} \bm{\mathcal{F}}_{ff} -\end{aligned} -\end{equation*}

-
Inverse Dynamics Control
-

In the inverse dynamics control, the nonlinear dynamics of the model is used to add a corrective term to the decentralized PD controller. -If such a structure is implemented in the task space, the control effort is calculated by

-

\begin{equation*} -\begin{aligned} -\bm{\mathcal{F}} &= \hat{\bm{M}}(\bm{\mathcal{X}})\bm{a} + \hat{\bm{C}}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \hat{\bm{G}}(\bm{\mathcal{X}}) \\\
-\bm{a} &= \ddot{\bm{\mathcal{X}}}_d + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x -\end{aligned} -\end{equation*}

-

In general, the tracking error dynamics can be represented by

-

\begin{equation*} -\ddot{\bm{e}}_x + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x + \hat{\bm{M}}^{-1} \left[ \tilde{\bm{M}} \ddot{\bm{\mathcal{X}}} + \tilde{\bm{C}} \dot{\bm{\mathcal{X}}} + \tilde{\bm{G}} + \bm{\mathcal{F}}_d \right] = 0 -\end{equation*}

-

This controller can be implemented in the joint space as follows:

-

\begin{equation*} -\begin{aligned} -\bm{\tau} &= \hat{\bm{M}}_q \bm{a}_q + \hat{\bm{C}}_q \dot{\bm{q}} + \hat{\bm{G}}_q \\\
-\bm{a}_q &= \ddot{\bm{q}}_d + \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q -\end{aligned} -\end{equation*}

-

by which the tracking error dynamics is summarized as

-

\begin{equation*} -\ddot{\bm{e}}_q + \bm{K}_d \dot{\bm{e}}_q + \bm{K}_p \bm{e}_q + \hat{\bm{M}}_{q}^{-1} \left[ \tilde{\bm{M}}_q \ddot{\bm{q}} + \tilde{\bm{C}}_q \dot{\bm{q}} + \tilde{\bm{G}}_q + \bm{\mathcal{\tau}}_d \right] = 0 -\end{equation*}

-
Partial Linearization IDC
-

To reduce the computational cost of the inverse dynamic control, it is possible to use partial linearization of dynamic formulation, just by gravity compensation, while keeping asymptotic tracking stability of the closed-loop system. -In which a case, the control input wrench in the task space is simplified to

-

\begin{equation*} -\bm{\mathcal{F}} = \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x + \hat{\bm{G}}(\bm{\mathcal{X}}) -\end{equation*}

-

The following Lyapunov function may be used to analyze the stability of tracking dynamics of the closed-loop system:

-

\begin{equation*} -\dot{V} = \dot{\bm{\mathcal{X}}}^T \bm{M} \ddot{\bm{\mathcal{X}}} + \frac{1}{2} \dot{\bm{\mathcal{X}}}^T \dot{\bm{M}} \dot{\bm{\mathcal{X}}} + \bm{e}_x^T \bm{K}_p \bm{e}_x -\end{equation*}

-

Stability analysis of the closed-loop system in this case reveals the fact that this simplified version of inverse dynamics control can lead to asymptotic tracking for constant desired trajectories.

-
Robust Inverse Dynamics Control
-

To accommodate modeling uncertainties in inverse dynamic control, the following robust control scheme in the task space is developed:

-

\begin{equation*} -\begin{aligned} -\bm{\mathcal{F}} &= \hat{\bm{M}}(\bm{\mathcal{X}}) \bm{a}_r + \hat{\bm{C}}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}})\dot{\bm{\mathcal{X}}} + \hat{\bm{G}}(\bm{\mathcal{X}}) \\\
-\bm{a}_r &= \ddot{\bm{\mathcal{X}}}_d + \bm{K}_d \dot{\bm{e}}_x + \bm{K}_p \bm{e}_x + \bm{\delta}_a -\end{aligned} -\end{equation*}

-

in which the robustifying corrective term \(\bm{\delta}_a\) is found through a Lyapunov stability analysis of tracking error dynamics. -The tracking error dynamics can be represented by the following linear and nonlinear components:

-

\begin{equation*} -\bm{A} = \begin{bmatrix} -\bm{0} & \bm{I} \\\
--\bm{K}_p & -\bm{K}_d -\end{bmatrix}, \quad \bm{B} = \begin{bmatrix} -\bm{0} \ \bm{I} -\end{bmatrix} -\end{equation*}

-

The corrective term \(\bm{\delta}_a\) can be found as

-

\begin{equation*} -\bm{\delta}_a = \left\{ \begin{matrix} -- \rho \frac{v}{\|v\|} & \text{if} \|v\| > \epsilon \\\
-- \rho \frac{v}{\epsilon} & \text{if} \|v\| \le \epsilon -\end{matrix} \right. -\end{equation*}

-

in which \(v\) is defined by \(v = \bm{B}^T \bm{P} \bm{\epsilon}\), where \(\bm{P}\) is the solution to the matrix Lyapunov equation and \(\epsilon\) is a smoothing threshold. -It is shown that by adding this corrective term to the regular inverse dynamics control, the closed-loop system achieves uniform ultimate bounded tracking errors.

-
Adaptive Inverse Dynamics Control
-

In the adaptive version of the inverse dynamics control, full feedback linearization is considered through adaptive update of dynamic formulation matrices. -The error dynamics in this case is

-

\begin{equation*} -\dot{\bm{\epsilon}} = \bm{A} \bm{\epsilon} + \bm{B} \bm{\Phi} \tilde{\bm{\theta}} -\end{equation*}

-

in which

-

\begin{equation*} -\begin{aligned} -\bm{A} &= \begin{bmatrix} -\bm{0} & \bm{I} \ -bm{K}_p & -\bm{K}_d -\end{bmatrix}, \quad \bm{B} = \begin{bmatrix} -\bm{0} \ \bm{I} -\end{bmatrix} \\\
-\bm{\Phi} &= \hat{\bm{M}}^{-1} \bm{\Upsilon}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}, \ddot{\bm{\mathcal{X}}}) -\end{aligned} -\end{equation*}

-

Based on the Lyapunov stability analysis, by using the following Lyapunov function

-

\begin{equation*} -V = \bm{\epsilon}^T \bm{P} \bm{\epsilon} + \tilde{\bm{\theta}}^T \bm{\Gamma} \bm{\theta} -\end{equation*}

-

the following parameter adaptation law is derived for updates

-

\begin{equation*} -\dot{\hat{\bm{\theta}}} = - \bm{\Gamma}^{-1} \bm{\Phi}^T \bm{B}^T \bm{P} \bm{\epsilon} -\end{equation*}

-

By this means, the closed-loop system achieves asymptotic tracking performance, while the parameter estimation errors remain bounded.

-

Motion Control of the Stewart-Gough Platform

-

Control in the Task space

-

For the Stewart-Gough platform, the motion variable in the task space is a six-dimensional vector -\[ \bm{\mathcal{X}} = \begin{bmatrix} \bm{x}_p \ \bm{\theta} \end{bmatrix} \] -with:

-
    -
  • \(\bm{x}_p = [x_p\ y_p\ z_p]^T\) is the position vector of the motion platform center of mass
  • -
  • \(\bm{\theta} = \theta [s_x\ s_y\ s_z]^T = [\theta_x\ \theta_y\ \theta_z]^T\) is the moving platform orientation expressed by screw coordinates
  • -
-

Therefore, the tracking error is defined as \(\bm{e} = [e_x\ e_y\ e_z\ e_{\theta_x}\ e_{\theta_y}\ e_{\theta_z}]^T\).

-

The decentralized controller consists of six disjoint proportional derivative controllers acting on each error component and is denoted by \(\bm{K}_d s + \bm{K}_p\).

-

The output of the controller is denoted by \(\bm{\mathcal{F}} = [F_x\ F_y\ F_z\ \tau_x\ \tau_y\ \tau_z]^T\). -Note that since the output of the controller is defined in the task space, each wrench component directly manipulates the corresponding tracking error component, and therefore, the overall tracking performance of the manipulator is suitable is high controller gains are used.

-

In practice, the calculated output wrench is transformed into actuator forces through the force distribution block corresponding to the inverse of Jacobian transpose.

-

Control in the Joint space

-

The joint variable \(\bm{q}(t)\) is a six-dimensional vector consisting of the limb lengths denoted by \(\bm{q} = [l_1\ l_2\ l_3\ l_4\ l_5\ l_6]^T\). -Therefore, the tracking error is defined as \(\bm{e}_q = \bm{q}_d - \bm{q}\), in which is the desired motion variable in the joint space \(\bm{q}_d\) is determined by the solution of inverse kinematics, and \(\bm{q}\) is given by direct measurement of the limb lengths.

-

The decentralized controller, therefore, consists of six disjoint PD controllers acting on each error component. -The output of the controller directly generates the actuator torques denoted by \(\tau\).

-

In simulation, it is observe that the orientation error significantly increase in the joint space control scheme. -The main reason is that the controller gains directly penalize the position error of the limb lengths, and not the orientation errors, and therefore, there is no direct controller action to be suitably tuned to reduce the orientation error.

-

Comparing the closed-loop performance of the PD controllers designed in the joint space to those designed in the task space, it can be concluded that tuning of the PD gains for a suitable performance is much easier in task space designs. -Furthermore, a very small error signature in the joint space may be accumulated to produce relatively larger tracking errors in the task space. -Hence, it is recommended to design and implement controllers in the task space, if the required motion variables can be directly measured or the forward kinematic solution can be calculated in an online routine.

-

Force Control

-

-

Introduction

-

In many applications, it may occur that the robot moving platform is in contact with a stiff environment and specific interacting wrench is required. -In such applications, the contact wrench describes the state of interaction more effectively than the position and orientation of the moving platform.

-
-
-

The problem of force control can be described as to derive the actuator forces required to generate a prescribed desired wrench at the manipulator moving platform, when the manipulator is carrying out its desired motion.

-
-

This problem and its extents are treated in the force control algorithms described in this chapter. -A force control strategy is one that modifies position trajectories based on the sensed wrench, or force-motion relations.

-

If a pure motion control scheme is used for manipulator, in case it contacts an environment, the robot does not sense the presence of the environment, and its driving forces become harshly high to reduce the tracking errors. -In such a case, the robot may break the object it is in contact or will break its internal structure. -Additional sensors should be included in the manipulator in order for it to be able to feel the interaction and to control the interacting forces. -Different wrench sensors are developed for such applications, and it is possible to use joint torque or link force measurement units to determine the projection of the interacting forces in the joint space.

-

The use of wrench sensors either in the task space or in the joint space open horizons to use different force control topologies for the manipulators. -Using such sensors does not imply that regular motion sensors used in motion control schemes are not necessary. -The use of motion sensors and the usual corresponding control topologies are usually necessary, since the motion of the manipulator is one of the outputs to be controlled. -Depending on the type and configuration of the wrench sensors, different force control topologies are developed.

-

Controller Topology

-

For a force control scheme, the desired interacting wrench of the moving platform and the environment may be of interest. -This quantity may be denoted by \(\bm{\mathcal{F}}_d\), which has the same dimension and structure of the manipulator wrench \(\bm{\mathcal{F}}\). -To carry out such a control task in a closed-loop structure, it is necessary to measure the output wrench of the manipulator through an instrumentation system.

-

Although there are many commercial six-degrees-of-freedom wrench sensors available in the market, they are usually more expensive than single joint force measurement units. -Another alternative for force measurement is direct measurement of the actuator forces. -Many commercial linear actuators are available in the market in which embedded force measurement is considered in their design. -Therefore, it might be preferable in some applications to use direct actuator force measurements to carry out the feedback control.

-

Cascade Control

-

In a general force control scheme, the prime objective is tracking of the interacting wrench between the moving platform and the environment. -However, note that the motion control of the robot when the robot is in interaction with the environment is also another less-important objective and when the contact of the robot moving platform is released, motion control becomes the prime objective.

-
-
-

To follow two objectives with different properties in one control system, usually a hierarchy of two feedback loops is used in practice. -This kind of control topology is called cascade control, which is used when there are several measurements and one prime control variable. -Cascade control is implemented by nesting the control loops, as shown in Figure fig:cascade_control. -The output control loop is called the primary loop, while the inner loop is called the secondary loop and is used to fulfill a secondary objective in the closed-loop system.

-
-

-
- Figure 27: Block diagram of a closed-loop system with cascade control
-

Figure 27: Block diagram of a closed-loop system with cascade control

-
-
- -

The measured variables are here the motion and interacting wrench that may be measured in the task space or in the joint space, and therefore, different control topologies may be advised for each set of measurement variables.

-

To improve the performance of the control system for a particular objective, it is important to choose the right variables for internal and external feedback loops, and to design suitable controllers for each feedback system. -Although these differ in different topologies described in the following sections, some general rules are applied to design a well performing cascade control system.

-

A general idea in cascade control design is the ideal case, in which the inner loop is designed so tight that the secondary (inner) loop behaves as a perfect servo, and responds very quickly to the internal control command. -This idea is effectively used in many applications, wherein a nearly-perfect actuator to respond to the requested commands is designed by using an inner control feedback.

-
-
-

The design criteria for the inner loop is to have a high control gain such that the time response of the secondary variable is at least 5 times more than that of the primary variable, and such that it can overcome the effect of disturbances and unmodelled dynamics in the internal feedback structure.

-
-

It is also necessary to have a well-defined relation between the primary and secondary variables, to have harmony in the objectives followed in the primary and secondary loops.

-

Force Feedback in Outer Loop

-

Consider the force control schemes, in which force tracking is the prime objective. -In such a case, it is advised that the outer loop of cascade control structure is constructed by wrench feedback, while the inner loop is based on position feedback. -Since different types of measurement units may be used in parallel robots, different control topologies may be constructed to implement such a cascade structure.

-

Consider first the cascade control topology shown in Figure fig:taghira13_cascade_force_outer_loop in which the measured variables are both in the task space. -The inner loop is constructed by position feedback while the outer loop is based on force feedback. -As seen in Figure fig:taghira13_cascade_force_outer_loop, the force controller block is fed to the motion controller, and this might be seen as the generated desired motion trajectory for the inner loop.

-

The output of motion controller is also designed in the task space, and to convert it to implementable actuator force \(\bm{\tau}\), the force distribution block is considered in this topology.

-

-
- Figure 28: Cascade topology of force feedback control: position in inner loop and force in outer loop. Moving platform wrench \(\bm{\mathcal{F}}\) and motion variable \(\bm{\mathcal{X}}\) are measured in the task space
-

Figure 28: Cascade topology of force feedback control: position in inner loop and force in outer loop. Moving platform wrench \(\bm{\mathcal{F}}\) and motion variable \(\bm{\mathcal{X}}\) are measured in the task space

-
-
- -

Other alternatives for force control topology may be suggested based on the variations of position and force measurements. -If the force is measured in the joint space, the topology suggested in Figure fig:taghira13_cascade_force_outer_loop_tau can be used. -In this topology, the measured actuator force vector \(\bm{\tau}\) is mapped into its corresponding wrench in the task space by the Jacobian transpose mapping \(\bm{\mathcal{F}} = \bm{J}^T \bm{\tau}\).

-

-
- Figure 29: Cascade topology of force feedback control: position in inner loop and force in outer loop. Actuator forces \(\bm{\tau}\) and motion variable \(\bm{\mathcal{X}}\) are measured
-

Figure 29: Cascade topology of force feedback control: position in inner loop and force in outer loop. Actuator forces \(\bm{\tau}\) and motion variable \(\bm{\mathcal{X}}\) are measured

-
-
- -

Consider the case where the force and motion variables are both measured in the joint space. -Figure fig:taghira13_cascade_force_outer_loop_tau_q suggests the force control topology in the joint space, in which the inner loop is based on measured motion variable in the joint space, and the outer loop uses the measured actuator force vector. -In this topology, it is advised that the force controller is designed in the task space, and the Jacobian transpose mapping is used to project the measured actuator force vector into its corresponding wrench in the task space. -However, as the inner loop is constructed in the joint space, the desired motion variable \(\bm{\mathcal{X}}_d\) is mapped into joint space using inverse kinematic solution.

-

Therefore, the structure and characteristics of the position controller in this topology is totally different from that given in the first two topologies.

-

-
- Figure 30: Cascade topology of force feedback control: position in inner loop and force in outer loop. Actuator forces \(\bm{\tau}\) and joint motion variable \(\bm{q}\) are measured in the joint space
-

Figure 30: Cascade topology of force feedback control: position in inner loop and force in outer loop. Actuator forces \(\bm{\tau}\) and joint motion variable \(\bm{q}\) are measured in the joint space

-
-
- -

Force Feedback in Inner Loop

-

Consider the force control scheme in which the motion-force relation is the prime objective. -In such a case, force tracking is not the primary objective, and it is advised that the outer loop of cascade control structure consists of a motion control feedback.

-

Since different type of measurement units may be used in parallel robots, different control topologies may be constructed to implement such cascade controllers.

-

Figure fig:taghira13_cascade_force_inner_loop_F illustrates the cascade control topology for the system in which the measured variables are both in the task space (\(\bm{\mathcal{F}}\) and \(\bm{\mathcal{X}}\)). -The inner loop is loop is constructed by force feedback while the outer loop is based on position feedback. -By this means, when the manipulator is not in contact with a stiff environment, position tracking is guaranteed through the primary controller. -However, when there is interacting wrench \(\bm{\mathcal{F}}_e\) applied to the moving platform, this structure controls the force-motion relation. -This configuration may be seen as if the outer loop generates a desired force trajectory for the inner loop.

-

-
- Figure 31: Cascade topology of force feedback control: force in inner loop and position in outer loop. Moving platform wrench \(\bm{\mathcal{F}}\) and motion variable \(\bm{\mathcal{X}}\) are measured in the task space
-

Figure 31: Cascade topology of force feedback control: force in inner loop and position in outer loop. Moving platform wrench \(\bm{\mathcal{F}}\) and motion variable \(\bm{\mathcal{X}}\) are measured in the task space

-
-
- -

Other alternatives for control topology may be suggested based on the variations of position and force measurements. -If the force is measured in the joint space, control topology shown in Figure fig:taghira13_cascade_force_inner_loop_tau can be used. -In such case, the Jacobian transpose is used to map the actuator force to its corresponding wrench in the task space.

-

-
- Figure 32: Cascade topology of force feedback control: force in inner loop and position in outer loop. Actuator forces \(\bm{\tau}\) and motion variable \(\bm{\mathcal{X}}\) are measured
-

Figure 32: Cascade topology of force feedback control: force in inner loop and position in outer loop. Actuator forces \(\bm{\tau}\) and motion variable \(\bm{\mathcal{X}}\) are measured

-
-
- -

If the force and motion variables are both measured in the joint space, the control topology shown in Figure fig:taghira13_cascade_force_inner_loop_tau_q is suggested. -The inner loop is based on the measured actuator force vector in the joint space \(\bm{\tau}\), and the outer loop is based on the measured actuated joint position vector \(\bm{q}\). -In this topology, the desired motion in the task space is mapped into the joint space using inverse kinematic solution, and both the position and force feedback controllers are designed in the joint space. -Thus, independent controllers for each joint may be suitable for this topology.

-

-
- Figure 33: Cascade topology of force feedback control: force in inner loop and position in outer loop. Actuator forces \(\bm{\tau}\) and joint motion variable \(\bm{q}\) are measured in the joint space
-

Figure 33: Cascade topology of force feedback control: force in inner loop and position in outer loop. Actuator forces \(\bm{\tau}\) and joint motion variable \(\bm{q}\) are measured in the joint space

-
-
- -

Stiffness Control

-

Single-Degree-of-Freedom Stiffness Control

-

General Stiffness Control

-

Stiffness Contorl of the Stewart-Gough Platform

-

Direct Force Control

-

-
- Figure 34: Direct force control scheme, force feedback in the outer loop and motion feedback in the inner loop
-

Figure 34: Direct force control scheme, force feedback in the outer loop and motion feedback in the inner loop

-
-
- -

Impedance Control

-

For the stiffness control and direct force control schemes, it is observed that when the manipulator-moving platform is in contact with a stiff environment, the motion variable \(\bm{\mathcal{X}}\) and the interacting force variable \(\bm{\mathcal{F}}\) are two dynamically dependent quantities.

-

In stiffness control, it is aimed to adjust the static relation between these two quantities. -In this scheme, no force measurement is required, however, careful design on the desired motion trajectory and PD controller gains is needed to tune the stiffness property of the interaction at steady stage.

-

In force control schemes, on the other hand, the force tracking is the prime objective, and force measurement is a stringent requirement to implement such schemes.

-

The main reason that the motion and force variables are not being gable to be controlled independently is that for an n-degrees-of-freedom manipulator, only n-independent control inputs are available, and therefore, only n-independent variables can be controlled, while the force and motion quantities count to \(2n\) independent variables.

-
-
-

The key idea behind impedance control schemes, is to tune the dynamic relation between the force and the motion variables, and not a hierarchy of tracking objectives in force and in position variables. -In this scheme, contrary to stiffness control schemes, both force and position variables are measured and used in the control structure.

-
-

The definition of mechanical impedance is given in an analogy of the well-known electrical impedance definition as the relationship between the effort and flow variables. -Since this relation can be well determined in the frequency domain, the dynamical relation of force and motion variable may be represented by mechanical impedance. -Impedance control schemes provide control topology to tune the mechanical impedance of a system to a desired value. -By this means, the force and the motion variables are not controlled independently, or in a hierarchy, but their dynamic relation represented by mechanical impedance is suitably controlled.

-

Impedance

-

Impedance was first defined in electrical networks as the measure of the opposition that an electrical circuit presents to the passage of a current when a voltage is applied. -To generalize the impedance definition to other disciplines, voltage is generalized to the effort and current is generalized to the flow.

-

Impedance is a complex function defined as the ratio of the Laplace transform of the effort to the Laplace transform of the flow.

-

Impedance is usually denoted by \(\bm{Z}(s)\) and it may be represented by writing its magnitude and phase in the form of \(\abs{\bm{Z}(s)}\) and \(\angle{\bm{Z}(s)}\). -The magnitude of the complex impedance \(\abs{\bm{Z}}\) is the ratio of the effort amplitude to that of the flow, while the phase \(\angle{\bm{Z}}\) is the phase shift by which the flow is ahead of the effort.

-
-
-

Mechanical Impedance is defined as the ratio of the Laplace transform of the mechanical effort to the Laplace transform of the mechanical flow:

-

\begin{equation} -\bm{Z}(s) = \frac{\bm{F}(s)}{\bm{v}(s)} -\end{equation}

-

in which effort in mechanical systems is represented by force \(\bm{F}\) and flow is represented by velocity \(\bm{v}\).

-
-

Note that this definition is given for a single-degree-of-freedom motion system. -The motion can be generalized to angular motion, in which the effort is represented by torque, while the flow is represented by angular velocity. -Furthermore, the impedance may be generalized to multiple-degrees-of-freedom system, in which for a general spatial motion effort is represented by a wrench \(\bm{\mathcal{F}}\), while flow is represented by motion twist \(\dot{\bm{\mathcal{X}}}\).

-

Nevertheless, note that Laplace transform is only applicable for linear time invariant systems, and for a parallel manipulator the dynamic formulation of which is nonlinear, the concept of mechanical impedance may be extended to the differential equation relating the mechanical wrench \(\bm{\mathcal{F}}\) to motion twist \(\dot{\bm{\mathcal{X}}}\).

-
-
-

Consider an RLC circuit depicted in Figure fig:taghirad13_impedance_control_rlc. -The differential equation relating voltage \(v\) to the current \(i\) is given by -\[ v = L\frac{di}{dt} + Ri + \int_0^t \frac{1}{C} i(\tau)d\tau \] -in which \(L\) denote the inductance, \(R\) the resistance and \(C\) the capacitance.

-

The impedance of the system may be found from the Laplace transform of the above equation:

-

\begin{equation} -Z(s) = \frac{v(s)}{i(s)} = Ls + R + \frac{1}{Cs} \label{eq:rlc_impedance} -\end{equation}

-
-
-
-

Consider the mass-spring-damper system depicted in Figure fig:taghirad13_impedance_control_rlc. -The governing dynamic formulation for this system is given by -\[ m \ddot{x} + c \dot{x} + k x = f \] -in which \(m\) denote the body mass, \(c\) the damper viscous coefficient and \(k\) the spring stiffness.

-

The impedance of the system may be found from the Laplace transform of the above equation:

-

\begin{equation} -Z(s) = \frac{f(s)}{v(s)} = ms + c + \frac{k}{s} \label{eq:mass_spring_damper_impedance} -\end{equation}

-
-

-
- Figure 35: Analogy of electrical impedance in (a) an electrical RLC circuit to (b) a mechanical mass-spring-damper system
-

Figure 35: Analogy of electrical impedance in (a) an electrical RLC circuit to (b) a mechanical mass-spring-damper system

-
-
- -

As inferred from the above two examples, although the physical nature of the system may differ from each other, they may be represented by similar impedances. -From this analogy, a terminology for impedance is introduced.

-
-
-

An impedance \(\bm{Z}(s)\) is called

-
    -
  • Inductive if \(\abs{\bm{Z}(0)} = 0\)
  • -
  • Resistive if \(\abs{\bm{Z}(0)} = R\)
  • -
  • Capacitive if \(\lim_{s\to 0} \abs{\bm{K}(s)} = \infty\)
  • -
-
-

Hence, for the mechanical system represented in Figure fig:taghirad13_impedance_control_rlc:

-
    -
  • mass represents inductive impedance
  • -
  • viscous friction represents resistive impedance
  • -
  • spring stiffness represents capacitive impedance
  • -
-

The environments that a robot interacts with may be represented by these classified impedance components. -A very stiff environment may be represented by high-capacitive impedance models, whereas an environment with high structural damping may be represented by high-resitive impedance.

-

Impedance Control Concept

-

The key idea behind impedance control schemes is to tune the dynamic relation between force and motion variables. -Impedance control schemes provide control topology to tune the mechanical impedance of a system toward a desired impedance.

-

A desired impedance could be adjusted by desired inductive, resistive and capacitive impedances, which forms a desired linear impedance for the closed-loop system as follows: -\[ \bm{Z}_d(s) = \bm{M}_d s + \bm{C}_d + \frac{1}{s} \bm{K}_d \] -where \(\bm{Z}_d\) denotes the desired impedance of the closed-loop system, which is composed of the desired inductive impedance \(\bm{M}_d\), desired resistive impedance \(\bm{C}_d\) and desired capacitive impedance \(\bm{K}_d\). -Impedance control structures may be used to tune the closed-loop impedance of the system suitably to follow such a desired impedance.

-

Impedance Control Structure

-

Consider a parallel robot with multiple-degrees-of-freedom interacting with a stiff environment. -In such a case, the motion of the robot end effector is represented by the motion vector \(\bm{\mathcal{X}}\), and the interacting wrench applied to the robot end effector is denoted by \(\bm{\mathcal{F}}_e\). -It is considered that the interacting wrench is measured in the task space and is used in the inner force feedback loop. -Furthermore, it is considered that the motion variable \(\bm{\mathcal{X}}\) is measured and is used in the outer feedback loop.

-

In the impedance control scheme, regulation of the motion-force dynamic relation is the prime objective, and since force tracking is not the primary objective, it is advised to used a cascade control structure with motion control feedback in the outer loop and force feedback in the inner loop.

-

Therefore, when the manipulator is not in contact with a stiff environment, position tracking is guaranteed by a primary controller. -However, when there is an interacting wrench \(\bm{\mathcal{F}}_e\) applied to the moving platform, this structure may be designed to control the force-motion dynamic relation.

-

As a possible impedance control scheme, consider the closed-loop system depicted in Figure fig:taghira13_impedance_control, in which the position feedback is considered in the outer loop, while force feedback is used in the inner loop. -This structure is advised when a desired impedance relation between the force and motion variables is required that consists of desired inductive, resistive, and capacitive impedances. -As shown in Figure fig:taghira13_impedance_control, the motion-tracking error is directly determined from motion measurement by \(\bm{e}_x = \bm{\mathcal{X}}_d - \bm{\mathcal{X}}\) in the outer loop and the motion controller is designed to satisfy the required impedance.

-

Moreover, direct force-tracking objective is not assigned in this control scheme, and therefore the desired force trajectory \(\bm{\mathcal{F}}_d\) is absent in this scheme. -However, an auxiliary force trajectory \(\bm{\mathcal{F}}_a\) is generated from the motion control law and is used as the reference for the force tracking. -By this means, no prescribed force trajectory is tracked, while the motion control scheme would advise a force trajectory for the robot to ensure the desired impedance regulation.

-

-
- Figure 36: Impedance control scheme; motion feedback in the outer loop and force feedback in the inner loop
-

Figure 36: Impedance control scheme; motion feedback in the outer loop and force feedback in the inner loop

-
-
- -

The required wrench \(\bm{\mathcal{F}}\) in the impedance control scheme, is based on inverse dynamics control and consists of three main parts. -In the inner loop, the force control scheme is based on a feedback linearization part in addition to a mass matrix adjustment, while in the outer loop usually a linear motion controller is considered based on the desired impedance requirements.

-

Although many different impedance structures may be considered as the basis of the control law, in Figure fig:taghira13_impedance_control, a linear impedance relation between the force and motion variables is generated that consists of desired inductive \(\bm{M}_d\), resistive \(\bm{C}_d\) and capacitive impedances \(\bm{K}_d\).

-

According to Figure fig:taghira13_impedance_control, the controller output wrench \(\bm{\mathcal{F}}\), applied to the manipulator may be formulated as -\[ \bm{\mathcal{F}} = \hat{\bm{M}} \bm{M}_d^{-1} \bm{e}_F + \bm{\mathcal{F}}_{fl} \] -with:

-

\begin{align*} -\bm{e}_F &= \bm{\mathcal{F}}_a - \bm{\mathcal{F}}_m \\\
-\bm{\mathcal{F}}_a &= \bm{M}_d \ddot{\bm{\mathcal{X}}}_{d} + \bm{C}_{d} \dot{\bm{e}}_{x} + \bm{K}_{d} \bm{e}_{x} -\end{align*}

-

\(\bm{M}_d\) denotes the desired inductive impedance, \(\bm{C}_d\) the desired resistive impedance and \(\bm{K}_d\) is desired capacitive impedance matrices.

-

The feedback linearizing term is given by: -\[ \bm{\mathcal{F}}_{fl} = \hat{\bm{C}}(\bm{\mathcal{X}}, \dot{\bm{\mathcal{X}}}) \dot{\bm{\mathcal{X}}} + \hat{\bm{G}}(\bm{\mathcal{X}}) + \bm{\mathcal{F}}_m \]

-

If the information on the dynamic matrices is complete, and if the force measurements are noise free (\(\bm{\mathcal{F}}_m = \bm{\mathcal{F}}_e\)), the closed-loop dynamic formulation simplifies to: -\[ \bm{M}_d \ddot{\bm{e}}_x + \bm{C}_d \dot{\bm{e}}_x + \bm{K}_d \bm{e}_x = \bm{\mathcal{F}}_e \]

-

And thus the closed-loop error dynamic equation satisfies a set of second-order systems with the desired impedance coefficients in relation to the interacting force. -In other words, the control structure guarantees that the force and motion relation follows a desired impedance. -Therefore, by choosing appropriate impedance matrices, the transient performance of the force-motion relation can be shaped so as to have a fast but stable interaction. -By this means, what is controlled is the dynamic relation between the force and motion variables, and not directly the position. -However, if the robot is moving freely in space and has no interaction with the environment, \(\bm{\mathcal{F}}_e = 0\), the closed-loop system will provide a suitable motion tracking thanks to the motion controller in the outer loop.

-

The impedance control scheme is very popular in practice, wherein tuning the force and motion relation in a robot manipulator interacting with a stiff environment is the prime objective. -However, note that for a good performance, an accurate model of the system is required, and the obtained force and motion dynamics are not robust to modeling uncertainty.

-

Bibliography

-

Taghirad, H., Parallel robots : mechanics and control (2013), Boca Raton, FL: CRC Press.

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/browserconfig.xml b/public/browserconfig.xml deleted file mode 100644 index e8b57e5..0000000 --- a/public/browserconfig.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - #b91d47 - - - diff --git a/public/categories/cat1/index.html b/public/categories/cat1/index.html deleted file mode 100644 index 87a55e9..0000000 --- a/public/categories/cat1/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - cat1 · My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

cat1

-
- -
- - 0001-01-01 - - - - Active structural vibration control: a review - - -
-
- - -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/categories/cat1/index.xml b/public/categories/cat1/index.xml deleted file mode 100644 index c0f17b8..0000000 --- a/public/categories/cat1/index.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - cat1 on My digital brain - /categories/cat1/ - Recent content in cat1 on My digital brain - Hugo -- gohugo.io - en - - - - - - Active structural vibration control: a review - /paper/alkhatib03_activ_struc_vibrat_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/alkhatib03_activ_struc_vibrat_contr/ - Tags : - Reference (Rabih Alkhatib &amp; Golnaraghi, 2003) Author(s) Alkhatib, R., &amp; Golnaraghi, M. F. Year 2003 Process of designing an active vibration control system Analyze the structure to be controled Obtain an idealized mathematical model with FEM or experimental modal analysis Reduce the model order is necessary Analyze the resulting model: dynamics properties, types of disturbances, &hellip; Quantify sensors and actuators requirements. Decide on their types and location Analyze the impact of the sensors and actuators on the overall dynamic characteristics Specify performance criteria and stability tradeoffs Device of the type of control algorythm to be employed and design a controller to meet the specifications Simulate the resulting controlled system on a computer If the controller does not meet the requirements, adjust the specifications or modify the type of controller Choose hardware and software and integrate the components on a pilot plant Formulate experiments and perform system identification and model updating Implement controller and carry out system test to evaluate the performance Feedback control Active damping The objective is to reduce the resonance peaks of the closed loop transfer function. - - - - \ No newline at end of file diff --git a/public/categories/cat1/page/1/index.html b/public/categories/cat1/page/1/index.html deleted file mode 100644 index 7dd18cf..0000000 --- a/public/categories/cat1/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -/categories/cat1/ \ No newline at end of file diff --git a/public/categories/cat2/index.html b/public/categories/cat2/index.html deleted file mode 100644 index e5d26e9..0000000 --- a/public/categories/cat2/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - cat2 · My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

cat2

-
- -
- - 0001-01-01 - - - - Active structural vibration control: a review - - -
-
- - -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/categories/cat2/index.xml b/public/categories/cat2/index.xml deleted file mode 100644 index e92c005..0000000 --- a/public/categories/cat2/index.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - cat2 on My digital brain - /categories/cat2/ - Recent content in cat2 on My digital brain - Hugo -- gohugo.io - en - - - - - - Active structural vibration control: a review - /paper/alkhatib03_activ_struc_vibrat_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/alkhatib03_activ_struc_vibrat_contr/ - Tags : - Reference (Rabih Alkhatib &amp; Golnaraghi, 2003) Author(s) Alkhatib, R., &amp; Golnaraghi, M. F. Year 2003 Process of designing an active vibration control system Analyze the structure to be controled Obtain an idealized mathematical model with FEM or experimental modal analysis Reduce the model order is necessary Analyze the resulting model: dynamics properties, types of disturbances, &hellip; Quantify sensors and actuators requirements. Decide on their types and location Analyze the impact of the sensors and actuators on the overall dynamic characteristics Specify performance criteria and stability tradeoffs Device of the type of control algorythm to be employed and design a controller to meet the specifications Simulate the resulting controlled system on a computer If the controller does not meet the requirements, adjust the specifications or modify the type of controller Choose hardware and software and integrate the components on a pilot plant Formulate experiments and perform system identification and model updating Implement controller and carry out system test to evaluate the performance Feedback control Active damping The objective is to reduce the resonance peaks of the closed loop transfer function. - - - - \ No newline at end of file diff --git a/public/categories/cat2/page/1/index.html b/public/categories/cat2/page/1/index.html deleted file mode 100644 index 1e9c252..0000000 --- a/public/categories/cat2/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -/categories/cat2/ \ No newline at end of file diff --git a/public/categories/index.html b/public/categories/index.html deleted file mode 100644 index b125d7f..0000000 --- a/public/categories/index.html +++ /dev/null @@ -1,151 +0,0 @@ - - - - - - Categories - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
- 2 Categories In Total -
- -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/categories/index.xml b/public/categories/index.xml deleted file mode 100644 index f93d1f4..0000000 --- a/public/categories/index.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - Categories on My digital brain - /categories/ - Recent content in Categories on My digital brain - Hugo -- gohugo.io - en - - - - - - cat1 - /categories/cat1/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /categories/cat1/ - - - - - cat2 - /categories/cat2/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /categories/cat2/ - - - - - \ No newline at end of file diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png deleted file mode 100644 index 6113ea6999a6a4b1a05f0cc5b481becad2f3027b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1806 zcmV+p2l4ocP)deu7TJFo47VKED3E5 zX-b`GN?|e$1QMVPE+sS>rcO~z4Rlh>G+{inlK^d5+R0=l(}bqe1e&m!5E7fk1}_Cm z#=9-c@}gbp4-;FmuQZ+ZXZrm*=e+OH`=0OK^W9JIRS)4mA?@A0d3CFKsJ5-cmN7c+ z77{cHPfn)#xp@9A*F0dW<}L&N8k9b4b&Jn#sBsE{XUD$DOE&Bczj7F zsmW0^-L>$~YhCz!6Fi9o9xX~`Zgw1&oRp)_VV4-Bi# zTVb&|r2u<27xDGHBmlm*EEAnp#mNua09e0j4jaFdGr6yDu9nK$YYYxMq#hgFfxV$L zB;gD=Jid%C#|1gsAZ*2=l&Nu1N)Q&vb$NWV!f8lD0sD48x2(O#_F~VVT@9d1h$JUN zJ&DJ~DA1~vl;$T>JUaY zcfP)B#h1?*U}bSCyEiTfcNl)W|02!i;Th`^L11a2{_N|&JGF8;HX{RDH?95bLVeE? zzaJu%GD`E3SXQWKU0F6NW!P5+%ZQWi!Es9Sl6iPu67gyU{Z*R1 zzx8I|o}dg=y}a@1ch0r{$?x}*KRcevO@(MRijacuoV$kvf$~SQLUIPJPWB%Cf}5=t z1VP}*$FkP%IdJUsWOf3{UH#)b{eC|&QF4sW7ljo!^^8*cb`yu+Zp73*8j`2gC@^j= zB3dQK@AuQ)H@+(n56Y=^)RhMCkRcv*Ohm{Z1#mj23X^5n$+g@4+-V=i?(nef`*TT6 zikieVu@O9Eh~vtwKCGjz^pFPRQi%(|VsirEcKc{*x003^6*e0$zws$vpMP>b-w?;T zvg{zv(1TkMArl-S4J5`ZuL9-GCM$YwWhvc)Sewt0z2O3eALmEiaByHEk4y>`-oRar1nkUy&5>+9^0pit4_WxuNv(wcx zurrs;9R5qw1TR+M)g?q#gfy_T`cUV(AC&i7ZO&wXqTB?2SeDJgX;pA~Jo`kBsQB=h zo0=0hC+Ck8=&FBiJkl4)3AzPUFFm`p@$OJEz_&}&Ik3H$!mlMD2vfJU**wgp>%9a# zat!IQqQ+uXGL{zVC+D|K)(WH17^E4LfzJNXEfX8%ys&m25=n5Obh*9k_)Q%yx0hIz zd~#jzBN~Dru;;l#j=kT)i8HOVn1?mFS*9wWQZxg@WA0RdoGdje#muTFmr0ms&;Vc? zcZ;iv#50f2L8qN~kGcm&p9;i+3`EE!b^y0W{78ZzaBxQnuWl_8H3-mavGdb|b?iUZ zfVpR)KuH9F%#>&V#vGowkOs6didz7U{~F?6*9ezy^s?)>SGavIxS#k&fsSXMm?LVS zp?Q#7Z5BSd+R2vc3tYV3gV*P$tz+UN6{C{(2l9iCkr1!i9U+&lcDcRmIr2FJ!*-l5 zA0H;&XYMRbkkEWXyr_W{52w)4H_E#oo3J}PRKL~0(uFz(trNv9NgH`OkROzRU+jDH z#)=~SX@JiDF`O6k8 zYhOqM0IwZBv3_N7%Da*WS8wS89hv%QQL%7gNQ+_VLfzy%J1y3>C|6TzG#Y(@Jkge{ zruI~Mx-M!Q!0q#iQRubUr^Z8eQI5+qu{R}A7#dJcpI2ror?G1MZK5@9b z{H*2*j}@mfCnFY%)yY4u+-G2T>Z8_bwz0wZG2bjnC0?zh)okPJ)lNKKACU^FKV2XF zLMWZE{|hR2Zg}OxPw&5KcX~v5rFlsW2!c>|qqjf|k5tI~-zrI~+l)5)`_b~V(UGzer^_2>clsnMrOcm`q3&N&ps%i}J^A$K^^HfKU$@*Xl?wS|c8|*K w@d*hUg(q)z!tKTRy7FKC`sk@}8vl=f1111rLiFYGPyhe`07*qoM6N<$f=z~Mz5oCK diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png deleted file mode 100644 index 6113ea6999a6a4b1a05f0cc5b481becad2f3027b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1806 zcmV+p2l4ocP)deu7TJFo47VKED3E5 zX-b`GN?|e$1QMVPE+sS>rcO~z4Rlh>G+{inlK^d5+R0=l(}bqe1e&m!5E7fk1}_Cm z#=9-c@}gbp4-;FmuQZ+ZXZrm*=e+OH`=0OK^W9JIRS)4mA?@A0d3CFKsJ5-cmN7c+ z77{cHPfn)#xp@9A*F0dW<}L&N8k9b4b&Jn#sBsE{XUD$DOE&Bczj7F zsmW0^-L>$~YhCz!6Fi9o9xX~`Zgw1&oRp)_VV4-Bi# zTVb&|r2u<27xDGHBmlm*EEAnp#mNua09e0j4jaFdGr6yDu9nK$YYYxMq#hgFfxV$L zB;gD=Jid%C#|1gsAZ*2=l&Nu1N)Q&vb$NWV!f8lD0sD48x2(O#_F~VVT@9d1h$JUN zJ&DJ~DA1~vl;$T>JUaY zcfP)B#h1?*U}bSCyEiTfcNl)W|02!i;Th`^L11a2{_N|&JGF8;HX{RDH?95bLVeE? zzaJu%GD`E3SXQWKU0F6NW!P5+%ZQWi!Es9Sl6iPu67gyU{Z*R1 zzx8I|o}dg=y}a@1ch0r{$?x}*KRcevO@(MRijacuoV$kvf$~SQLUIPJPWB%Cf}5=t z1VP}*$FkP%IdJUsWOf3{UH#)b{eC|&QF4sW7ljo!^^8*cb`yu+Zp73*8j`2gC@^j= zB3dQK@AuQ)H@+(n56Y=^)RhMCkRcv*Ohm{Z1#mj23X^5n$+g@4+-V=i?(nef`*TT6 zikieVu@O9Eh~vtwKCGjz^pFPRQi%(|VsirEcKc{*x003^6*e0$zws$vpMP>b-w?;T zvg{zv(1TkMArl-S4J5`ZuL9-GCM$YwWhvc)Sewt0z2O3eALmEiaByHEk4y>`-oRar1nkUy&5>+9^0pit4_WxuNv(wcx zurrs;9R5qw1TR+M)g?q#gfy_T`cUV(AC&i7ZO&wXqTB?2SeDJgX;pA~Jo`kBsQB=h zo0=0hC+Ck8=&FBiJkl4)3AzPUFFm`p@$OJEz_&}&Ik3H$!mlMD2vfJU**wgp>%9a# zat!IQqQ+uXGL{zVC+D|K)(WH17^E4LfzJNXEfX8%ys&m25=n5Obh*9k_)Q%yx0hIz zd~#jzBN~Dru;;l#j=kT)i8HOVn1?mFS*9wWQZxg@WA0RdoGdje#muTFmr0ms&;Vc? zcZ;iv#50f2L8qN~kGcm&p9;i+3`EE!b^y0W{78ZzaBxQnuWl_8H3-mavGdb|b?iUZ zfVpR)KuH9F%#>&V#vGowkOs6didz7U{~F?6*9ezy^s?)>SGavIxS#k&fsSXMm?LVS zp?Q#7Z5BSd+R2vc3tYV3gV*P$tz+UN6{C{(2l9iCkr1!i9U+&lcDcRmIr2FJ!*-l5 zA0H;&XYMRbkkEWXyr_W{52w)4H_E#oo3J}PRKL~0(uFz(trNv9NgH`OkROzRU+jDH z#)=~SX@JiDF`O6k8 zYhOqM0IwZBv3_N7%Da*WS8wS89hv%QQL%7gNQ+_VLfzy%J1y3>C|6TzG#Y(@Jkge{ zruI~Mx-M!Q!0q#iQRubUr^Z8eQI5+qu{R}A7#dJcpI2ror?G1MZK5@9b z{H*2*j}@mfCnFY%)yY4u+-G2T>Z8_bwz0wZG2bjnC0?zh)okPJ)lNKKACU^FKV2XF zLMWZE{|hR2Zg}OxPw&5KcX~v5rFlsW2!c>|qqjf|k5tI~-zrI~+l)5)`_b~V(UGzer^_2>clsnMrOcm`q3&N&ps%i}J^A$K^^HfKU$@*Xl?wS|c8|*K w@d*hUg(q)z!tKTRy7FKC`sk@}8vl=f1111rLiFYGPyhe`07*qoM6N<$f=z~Mz5oCK diff --git a/public/favicon.ico b/public/favicon.ico deleted file mode 100644 index cffc8fbae8ea8cc1888972199073c1d437f50e4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328299 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�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 z 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 diff --git a/public/fonts/chancery/apple-chancery-webfont.eot b/public/fonts/chancery/apple-chancery-webfont.eot deleted file mode 100644 index 39c3936b07576cd74607413ff9da2ff3e84d2680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26058 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 SZSu&8NkOHXN3MO`njm1}8|E1R diff --git a/public/fonts/chancery/apple-chancery-webfont.svg b/public/fonts/chancery/apple-chancery-webfont.svg deleted file mode 100644 index 2b18b6a..0000000 --- a/public/fonts/chancery/apple-chancery-webfont.svg +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/fonts/chancery/apple-chancery-webfont.ttf b/public/fonts/chancery/apple-chancery-webfont.ttf deleted file mode 100644 index 8238aa440733225fa3996010a9e279105a489f00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60780 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 z 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 diff --git a/public/fonts/chancery/apple-chancery-webfont.woff b/public/fonts/chancery/apple-chancery-webfont.woff deleted file mode 100644 index e476776e4008e13adbc3968072f37b2040933be0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30256 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 OO9TJ_0apOOvj70|+6+tp diff --git a/public/fonts/chancery/apple-chancery-webfont.woff2 b/public/fonts/chancery/apple-chancery-webfont.woff2 deleted file mode 100644 index 922dfb33c1d9f014faf12cccff06be0fa40eff23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23532 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 diff --git a/public/fonts/iconfont/iconfont.eot b/public/fonts/iconfont/iconfont.eot deleted file mode 100644 index 66e449b832e580e0e59a99961eef6343e399490f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10420 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 - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/fonts/iconfont/iconfont.ttf b/public/fonts/iconfont/iconfont.ttf deleted file mode 100644 index f8f81a42737f5e102de42719b41edf1e67b49059..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10256 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 BGhYAz diff --git a/public/fonts/iconfont/iconfont.woff b/public/fonts/iconfont/iconfont.woff deleted file mode 100644 index e400c037fbf6a87ceb9530a506b532795ab493ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10336 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 730e0d6..0000000 --- a/public/index.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- This is the main page. -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/index.json b/public/index.json deleted file mode 100644 index 828ba19..0000000 --- a/public/index.json +++ /dev/null @@ -1 +0,0 @@ -[{"categories":null,"contents":" Tags Stewart Platforms Reference (Legnani {\\it et al.}, 2012) Author(s) Legnani, G., Fassi, I., Giberti, H., Cinquemani, S., \u0026amp; Tosi, D. Year 2012 Concepts of isotropy and decoupling for parallel manipulators isotropy: the kinetostatic properties (same applicable force, same possible velocity, same stiffness) are identical in all directions (e.g. cubic configuration for Stewart platform) decoupling: each DoF of the end effector can be controlled by a single actuator (not the case for the Stewart platform) Example of generated isotropic manipulator (not decoupled).\n\n Figure 1: Location of the leg axes using an isotropy generator\n \n Figure 2: Isotropic configuration\n Bibliography Legnani, G., Fassi, I., Giberti, H., Cinquemani, S., \u0026amp; Tosi, D., A new isotropic and decoupled 6-dof parallel manipulator, Mechanism and Machine Theory, 58(nil), 64–81 (2012). http://dx.doi.org/10.1016/j.mechmachtheory.2012.07.008 ↩\n","permalink":"/paper/legnani12_new_isotr_decoup_paral_manip/","tags":null,"title":"A new isotropic and decoupled 6-dof parallel manipulator"},{"categories":null,"contents":" Tags Position Sensors Reference (Andrew Fleming, 2013) Author(s) Fleming, A. J. Year 2013 Define concise performance metric and provide expressions for errors sources (non-linearity, drift, noise) Review current position sensor technologies and compare their performance Sensor Characteristics Calibration and nonlinearity Usually quoted as a percentage of the fill-scale range (FSR):\n\\begin{equation} \\text{mapping error (%)} = \\pm 100 \\frac{\\max{}|e_m(v)|}{\\text{FSR}} \\end{equation}\nWith \\(e_m(v)\\) is the mapping error.\n\n Figure 1: The actual position versus the output voltage of a position sensor. The calibration function \\(f_{cal}(v)\\) is an approximation of the sensor mapping function \\(f_a(v)\\) where \\(v\\) is the voltage resulting from a displacement \\(x\\). \\(e_m(v)\\) is the residual error.\n Drift and Stability If the shape of the mapping function actually varies with time, the maximum error due to drift must be evaluated by finding the worst-case mapping error.\n\n Figure 2: The worst case range of a linear mapping function \\(f_a(v)\\) for a given error in sensitivity and offset.\n Bandwidth The bandwidth of a position sensor is the frequency at which the magnitude of the transfer function \\(P(s) = v(s)/x(s)\\) drops by \\(3,dB\\).\nAlthough the bandwidth specification is useful for predicting the resolution of sensor, it reveals very little about the measurement errors caused by sensor dynamics.\nThe frequency domain position error is\n\\begin{equation} \\begin{aligned} e_{bw}(s) \u0026amp;= x(s) - v(s) \\\\\\\n\u0026amp;= x(s) (1 - P(s)) \\end{aligned} \\end{equation}\nIf the actual position is a sinewave of peak amplitude \\(A = \\text{FSR}/2\\):\n\\begin{equation} \\begin{aligned} e_{bw} \u0026amp;= \\pm \\frac{\\text{FSR}}{2} |1 - P(s)| \\\\\\\n\u0026amp;\\approx \\pm A n \\frac{f}{f_c} \\end{aligned} \\end{equation}\nwith \\(n\\) is the low pass filter order corresponding to the sensor dynamics and \\(f_c\\) is the measurement bandwidth.\nThus, the sensor bandwidth must be significantly higher than the operating frequency if dynamic errors are to be avoided.\nNoise In addition to the actual position signal, all sensors produce some additive measurement noise. In many types of sensor, the majority of noise arises from the thermal noise in resistors and the voltage and current noise in conditioning circuit transistors. These noise processes can usually be approximated by a Gaussian random process.\nA Gaussian random process is usually described by its autocorrelation function or its Power Spectral Density.\nThe autocorrelation function of a random process \\(\\mathcal{X}\\) is\n\\begin{equation} R_{\\mathcal{X}}(\\tau) = E[\\mathcal{X}(t)\\mathcal{X}(t + \\tau)] \\end{equation}\nwhere \\(E\\) is the expected value operator.\nThe variance of the process is equal to \\(R_\\mathcal{X}(0)\\) and is the expected value of the varying part squared:\n\\begin{equation} \\text{Var} \\mathcal{X} = E \\left[ (\\mathcal{X} - E[\\mathcal{X}])^2 \\right] \\end{equation}\nThe standard deviation \\(\\sigma\\) is the square root of the variance:\n\\begin{equation} \\sigma_\\mathcal{X} = \\sqrt{\\text{Var} \\mathcal{X}} \\end{equation}\nThe standard deviation is also the Root Mean Square (RMS) value of a zero-mean random process.\nThe Power Spectral Density \\(S_\\mathcal{X}(f)\\) of a random process represents the distribution of power (or variance) across frequency \\(f\\).\nFor example, if the random process under consideration was measured in volts, the power spectral density would have the units of \\(V^2/\\text{Hz}\\).\nThe Power Spectral Density can be obtained from the autocorrelation function from the Wiener-Khinchin relation:\n\\begin{equation} S_{\\mathcal{X}} = 2 \\mathcal{F}\\{ R_\\mathcal{X}(\\tau) \\} = 2 \\int_{-\\infty}^{\\infty} R_\\mathcal{X}(\\tau) e^{-2j\\pi f \\tau} d\\tau \\end{equation}\nIf the power Spectral Density is known, the variance of the generating process can be found from the area under the curve:\n\\begin{equation} \\sigma_\\mathcal{X}^2 = E[\\mathcal{X}^2(t)] = R_\\mathcal{X}(0) = \\int_0^\\infty S_\\mathcal{X}(f) df \\end{equation}\nRather than plotting the frequency distribution of power, it is often convenient to plot the frequency distribution of the standard deviation, which is referred to as the spectral density. It is related to the power spectral density by a square root:\n\\begin{equation} \\text{spectral density} = \\sqrt{S_\\mathcal{X}(f)} \\end{equation}\nThe units of \\(\\sqrt{S_\\mathcal{X}(f)}\\) are \\(\\text{units}/\\sqrt{Hz}\\).\nThe spectral density if preferred in the electronics literature as the RMS value of a noise process can be determined directly from the noise density and effective bandwidth.\nResolution The random noise of a position sensor causes an uncertainty in the measured position. If the distance between two measured locations is smaller than the uncertainty, it is possible to mistake one point for the other.\nTo characterize the resolution, we use the probability that the measured value is within a certain error bound.\nIf the measurement noise is approximately Gaussian, the resolution can be quantified by the standard deviation \\(\\sigma\\) (RMS value).\nThe empirical rule states that there is a \\(99.7%\\) probability that a sample of a Gaussian random process lie within \\(\\pm 3 \\sigma\\). This if we define the resolution as \\(\\delta = 6 \\sigma\\), we will referred to as the \\(6\\sigma\\text{-resolution}\\).\nAnother important parameter that must be specified when quoting resolution is the sensor bandwidth. There is usually a trade-off between bandwidth and resolution (figure 3).\n\n Figure 3: The resolution versus banwidth of a position sensor.\n Many type of sensor have a limited full-scale-range (FSR) and tend to have an approximated proportional relationship between the resolution and range. As a result, it is convenient to consider the ratio of resolution to the FSR, or equivalently, the dynamic range (DNR). A convenient method for reporting this ratio is in parts-per-million (ppm):\n\\begin{equation} \\text{DNR}_{\\text{ppm}} = 10^6 \\frac{\\text{full scale range}}{6\\sigma\\text{-resolution}} \\end{equation}\nComparison and summary \nTable 1: Summary of position sensor characteristics. The dynamic range (DNR) and resolution are approximations based on a full-scale range of \\(100\\,\\mu m\\) and a first order bandwidth of \\(1\\,kHz\\) Sensor Type Range DNR Resolution Max. BW Accuracy Metal foil \\(10-500,\\mu m\\) 230 ppm 23 nm 1-10 kHz 1% FSR Piezoresistive \\(1-500,\\mu m\\) 5 ppm 0.5 nm \u0026gt;100 kHz 1% FSR Capacitive \\(10,\\mu m\\) to \\(10,mm\\) 24 ppm 2.4 nm 100 kHz 0.1% FSR Electrothermal \\(10,\\mu m\\) to \\(1,mm\\) 100 ppm 10 nm 10 kHz 1% FSR Eddy current \\(100,\\mu m\\) to \\(80,mm\\) 10 ppm 1 nm 40 kHz 0.1% FSR LVDT \\(0.5-500,mm\\) 10 ppm 5 nm 1 kHz 0.25% FSR Interferometer Meters 0.5 nm \u0026gt;100kHz 1 ppm FSR Encoder Meters 6 nm \u0026gt;100kHz 5 ppm FSR Bibliography Fleming, A. J., A review of nanometer resolution position sensors: operation and performance, Sensors and Actuators A: Physical, 190(nil), 106–126 (2013). http://dx.doi.org/10.1016/j.sna.2012.10.016 ↩\n","permalink":"/paper/fleming13_review_nanom_resol_posit_sensor/","tags":null,"title":"A review of nanometer resolution position sensors: operation and performance"},{"categories":null,"contents":" Tags Vibration Isolation, Stewart Platforms, Flexible Joints Reference (Preumont {\\it et al.}, 2007) Author(s) Preumont, A., Horodinca, M., Romanescu, I., Marneffe, B. d., Avraam, M., Deraemaeker, A., Bossens, F., … Year 2007 Summary:\n Cubic Stewart platform (Figure 3) Provides uniform control capability Uniform stiffness in all directions minimizes the cross-coupling among actuators and sensors of different legs Flexible joints (Figure 2) Piezoelectric force sensors Voice coil actuators Decentralized feedback control approach for vibration isolation Effect of parasitic stiffness of the flexible joints on the IFF performance (Figure 1) The Stewart platform has 6 suspension modes at different frequencies. Thus the gain of the IFF controller cannot be optimal for all the modes. It is better if all the modes of the platform are near to each other. Discusses the design of the legs in order to maximize the natural frequency of the local modes. To estimate the isolation performance of the Stewart platform, a scalar indicator is defined as the Frobenius norm of the transmissibility matrix \n Figure 1: Root locus with IFF with no parasitic stiffness and with parasitic stiffness\n \n Figure 2: Flexible joints used for the Stewart platform\n \n Figure 3: Stewart platform\n Bibliography Preumont, A., Horodinca, M., Romanescu, I., Marneffe, B. d., Avraam, M., Deraemaeker, A., Bossens, F., …, A six-axis single-stage active vibration isolator based on stewart platform, Journal of Sound and Vibration, 300(3-5), 644–661 (2007). http://dx.doi.org/10.1016/j.jsv.2006.07.050 ↩\n","permalink":"/paper/preumont07_six_axis_singl_stage_activ/","tags":null,"title":"A six-axis single-stage active vibration isolator based on stewart platform"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation Reference (Spanos {\\it et al.}, 1995) Author(s) Spanos, J., Rahman, Z., \u0026amp; Blackwood, G. Year 1995 Stewart Platform (Figure 1):\n Voice Coil Flexible joints (cross-blades) Force Sensors Cubic Configuration \n Figure 1: Stewart Platform\n Total mass of the paylaod: 30kg Center of gravity is 9cm above the geometry center of the mount (cube\u0026rsquo;s center?).\nLimitation of the Decentralized Force Feedback:\n high frequency pole due to internal resonances of the struts low frequency zero due to the rotational stiffness of the flexible joints After redesign of the struts:\n high frequency pole at 4.7kHz low frequency zero at 2.6Hz but non-minimum phase (not explained). Small viscous damping material in the cross blade flexures made the zero minimum phase again. \n Figure 2: Experimentally measured transfer function from voice coil drive voltage to collocated load cell output voltage\n The controller used consisted of:\n second order low pass filter to gain stabilize the plant at high frequencies and provide steep roll-off first order lead filter to provide adequate phase margin at the high frequency crossover first order lag filter to provide adequate phase margin at the low frequency crossover a first order high pass filter to attenuate the excess gain resulting from the low frequency zero The results in terms of transmissibility are shown in Figure 3.\n\n Figure 3: Experimentally measured Frobenius norm of the 6-axis transmissibility\n Bibliography Spanos, J., Rahman, Z., \u0026amp; Blackwood, G., A soft 6-axis active vibration isolator, In , Proceedings of 1995 American Control Conference - ACC'95 (pp. ) (1995). : . ↩\n","permalink":"/paper/spanos95_soft_activ_vibrat_isolat/","tags":null,"title":"A soft 6-axis active vibration isolator"},{"categories":null,"contents":"Tags :\n Reference (Devasia {\\it et al.}, 2007) Author(s) Devasia, S., Eleftheriou, E., \u0026amp; Moheimani, S. R. Year 2007 Talks about Scanning Tunneling Microscope (STM) and Scanning Probe Microscope (SPM) Piezoelectric actuators: Creep, Hysteresis, Vibrations, Modeling errors Interesting analysis about Bandwidth-Precision-Range tradeoffs Control approaches for piezoelectric actuators: feedforward, Feedback, Iterative, Sensorless controls \n Figure 1: Tradeoffs between bandwidth, precision and range\n Bibliography Devasia, S., Eleftheriou, E., \u0026amp; Moheimani, S. R., A survey of control issues in nanopositioning, IEEE Transactions on Control Systems Technology, 15(5), 802–823 (2007). ↩\n","permalink":"/paper/devasia07_survey_contr_issues_nanop/","tags":null,"title":"A survey of control issues in nanopositioning"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Active isolation and damping of vibrations via stewart platform Active damping based on decoupled collocated control ","permalink":"/zettels/active_damping/","tags":null,"title":"Active Damping"},{"categories":null,"contents":" Tags Active Damping Reference (Holterman \u0026amp; deVries, 2005) Author(s) Holterman, J., \u0026amp; deVries, T. Year 2005 Bibliography Holterman, J., \u0026amp; deVries, T., Active damping based on decoupled collocated control, IEEE/ASME Transactions on Mechatronics, 10(2), 135–145 (2005). http://dx.doi.org/10.1109/tmech.2005.844702 ↩\n","permalink":"/paper/holterman05_activ_dampin_based_decoup_colloc_contr/","tags":null,"title":"Active damping based on decoupled collocated control"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation, Active Damping Reference @phdthesis{hanieh03_activ_stewar, author = {Hanieh, Ahmed Abu}, school = {Universit{'e} Libre de Bruxelles, Brussels, Belgium}, title = {Active isolation and damping of vibrations via Stewart platform}, year = 2003, tags = {parallel robot}, } Author(s) Hanieh, A. A. Year 2003 Bibliography Hanieh, A. A., Active isolation and damping of vibrations via stewart platform (Doctoral dissertation) (2003). Universit{'e} Libre de Bruxelles, Brussels, Belgium, . ↩\n","permalink":"/paper/hanieh03_activ_stewar/","tags":null,"title":"Active isolation and damping of vibrations via stewart platform"},{"categories":["cat1","cat2"],"contents":"Tags :\n Reference (Rabih Alkhatib \u0026amp; Golnaraghi, 2003) Author(s) Alkhatib, R., \u0026amp; Golnaraghi, M. F. Year 2003 Process of designing an active vibration control system Analyze the structure to be controled Obtain an idealized mathematical model with FEM or experimental modal analysis Reduce the model order is necessary Analyze the resulting model: dynamics properties, types of disturbances, \u0026hellip; Quantify sensors and actuators requirements. Decide on their types and location Analyze the impact of the sensors and actuators on the overall dynamic characteristics Specify performance criteria and stability tradeoffs Device of the type of control algorythm to be employed and design a controller to meet the specifications Simulate the resulting controlled system on a computer If the controller does not meet the requirements, adjust the specifications or modify the type of controller Choose hardware and software and integrate the components on a pilot plant Formulate experiments and perform system identification and model updating Implement controller and carry out system test to evaluate the performance Feedback control Active damping The objective is to reduce the resonance peaks of the closed loop transfer function.\n\\[T(s) = \\frac{G(s)H(s)}{1+G(s)H(s)}\\]\nThen \\(T(s) \\approx G(s)\\) except near the resonance peaks where the amplitude is reduced.\nThis method can be realized without a model of the structure with guaranteed stability, granted that the actuators and sensors are collocated.\nModel based feedback Objective: keep a control variable (position, velocity, \u0026hellip;) to a desired value in spite of external disturbances \\(d(s)\\).\nWe have \\[\\frac{y(s)}{d(s)} = \\frac{1}{1+G(s)H(s)}\\] so we need large values of \\(G(s)H(s)\\) in the frequency range where the disturbance has considerable effect.\nTo do so, we need a mathematical model of the system, then the control bandwidth and effectiveness are restricted by the accuracy of the model. Unmodeled structural dynamics may destabilize the system.\nFeedforward Control We need a signal that is correlated to the disturbance. Then feedforward can improve performance over simple feedback control.\nAn adaptive filter manipulates the signal correlated to the disturbance and the output is applied to the system by the actuator. The filter coefficients are adapted in such a way that an error signal is minimized. The idea is to generate a secondary disturbance, which destructively interferes with the effect of the primary distance at the location of the error sensor. However, there is no guarantee that the global response is also reduced at other locations.\nThe method is considered to be a local technique, in contrast to feedback which is global.\nContrary to active damping which can only reduce the vibration near the resonance, feedforward control can be effective for any frequency. The major restriction to the application of feedforward adaptive filtering is the accessibility of a reference signal correlated to the disturbance.\n\nTable 1: Comparison of control strategies Type of control Advantages Disadvantages Active Damping Simple to implement Effective only near resonance Does not required accurate model Guaranteed stability (collocated) Model Based Global method Requires accurate model Attenuate all disturbance within bandwidth Required low delay Limited bandwidth Spillover Feedforward Adaptive filtering No model is necessary Error signal required Robust to change in plant transfer function Local method: may amplify vibration elsewhere More effective for narrowband disturbance Large amount of real-time computation Controllability and Observability Controllability and Observability are two fundamental qualitave properties of dynamic systems.\nA system is said to be controllable if every state vector can be transform to a desirate state in finite time by the application of unconstrained control inputs.\nA system is said to be observable at time \\(t_0\\) if for a state \\(z(t_0)\\), there is a finite time \\(t_1\u0026gt;t_0\\) such that the knowledge of the input \\(u(t)\\) and output \\(y(t)\\) from \\(t_0\\) to \\(t_1\\) are sufficient to determine the state \\(z(t_0)\\).\nCoordinate Coupling Control Coordinate coupling control (CCC) is an energy-basded method.\nThe idea is to transfer the vibrations from a low or undamped oscilatory system (the plant) to a damped system (the controller).\nThis can be implemented passively using tuned mass damper. But the key advantage of this technique is that one can replace the physical absorber with a computer model. The coupling terms can then be selected to maximise the energy transfer.\nRobust control Robust control concentrates on the tradeoffs between performance and stability in the presence of uncertainty in the system model as well as the exogenous inputs to which it is subjected.\nUncertainty can be divided into four types:\n parameter errors error in model order neglected disturbances neglected nonlinearities The \\(\\mathcal{H}_\\infty\\) controller is developed to address uncertainty by systematic means. A general block diagram of the control system is shown figure 1.\nA frequency shaped filter \\(W(s)\\) coupled to selected inputs and outputs of the plant is included. The outputs of this frequency shaped filter define the error ouputs used to evaluate the system performance and generate the cost that will be used in the design process.\n\n Figure 1: Block diagram for robust control\n The generalized plan \\(G\\) can be partitionned according to the input-output variables. And we have that the transfer function matrix from \\(d\\) to \\(z\\) is: \\[ H_{z/d} = G_{z/d} + G_{z/u} K (I - G_{y/u} K)^{-1} G_{y/d} \\] This transfer function matrix contains measures of performance and stability robustness.\nThe objective of \\(\\mathcal{H}_\\infty\\) control is to design an admissible control \\(u(s)=K(s)y(s)\\) such that \\(\\| H_{z/d} \\|_\\infty\\) is minimum.\nOptimal Control The control \\(u(t)\\) is designed to minimize a cost function \\(J\\), given the initial conditions \\(z(t_0)\\) and \\(\\dot{z}(t_0)\\) subject to the constraint that:\n\\begin{align*} \\dot{z} \u0026amp;= Az + Bu\\\\\\\ny \u0026amp;= Cz \\end{align*}\nOne such cost function appropriate to a vibration control is \\[J = 1/2 \\int_{t_0}^{t_f} ( z^T A z + u^T R u ) dt\\] Where \\(Q\\) and \\(R\\) and positive definite symmetric weighting matrices.\nState Observers (Estimators) It is not always possible to determine the entire state variables. There are usualy too many degrees of freedom and only limited measurements.\nThe state vector \\(z(t)\\) can be estimated independently of the control problem, and the resulting estimate \\(\\hat{z}(t)\\) can be used.\nIntelligent Structure and Controller Intelligent structure would have the capability to:\n recognize the present dynamic state of its own structure and evaluate the functional performance of the structure identify functional descriptions of external and internal disturbances detect changes in structural properties and changes in external and internal disturbances predict possible future changes in structural properties make intelligent decisions regarding compensations for disturbances and adequately generale actuation forces learn from past performance to improve future actions Two main methodologies:\n artificial neural networks fuzzy logic Adaptive Control Adaptive control is frequently used to control systems whose parameters are unknown, uncertain, or slowly varying.\nThe design of an adaptive controller involves several steps:\n selection of a controller structure with adjustable parameters selection of an adaptation law for adjusting those parameters selection of a performance index real-time evaluation of the performance with respect to some desired behavior real-time plant identification and model updating real-time adjustment of the controller parameters to bring the performance closer to the desired behavior It essentially consists of a real-time system identification technique integrated with a control algorithm.\nTwo different methods\n Direct method: the controller parameters are adjusted directly based on the error between the measured and desired outputs. Indirect method: the computations are divided into two consecutive phases. First, the plant model is first estimated in real time. Second, the controller parameters are modified based on the most recent updated plant parameters. Active Control Effects on the System \n Figure 2: 1 DoF control of a spring-mass-damping system\n Consider the control system figure 2, the equation of motion of the system is: \\[ m\\ddot{x} + c\\dot{x} + kx = f_a + f \\]\nThe controller force can be expressed as: \\(f_a = -g_a \\ddot{x} + g_v \\dot{x} + g_d x\\). The equation of motion becomes: \\[ (m+g_a)\\ddot{x} + (c+g_v)\\dot{x} + (k+g_d)x = f \\]\nDepending of the type of signal used, the active control adds/substracts mass, damping and stiffness.\nTime Delays One of the limits to the performance of active control is the time delay in controllers and actuators. Time delay introduces phase shift, which deteriorates the controller performance or even causes instability in the system.\nOptimal Placement of Actuators The problem of optimizing the locations of the actuators can be more significant than the control law itself.\nIf the actuator is placed at the wrong location, the system will require a greater force control. In that case, the system is said to have a low degree of controllability.\nBibliography Alkhatib, R., \u0026amp; Golnaraghi, M. F., Active structural vibration control: a review, The Shock and Vibration Digest, 35(5), 367–383 (2003). http://dx.doi.org/10.1177/05831024030355002 ↩\n","permalink":"/paper/alkhatib03_activ_struc_vibrat_contr/","tags":["tag1","tag2"],"title":"Active structural vibration control: a review"},{"categories":null,"contents":"Tags :\nHow to choose the correct actuator for my application? For vibration isolation:\n In (Shingo Ito \u0026amp; Georg Schitter, 2016), the effect of the actuator stiffness on the attainable vibration isolation is studied (Notes) Piezoelectric Suppliers Links Cedrat link PI link Piezo System link Noliac link A model of a multi-layer monolithic piezoelectric stack actuator is described in (Fleming, 2010) (Notes).\nVoice Coil Suppliers Links Geeplus link Maccon link TDS PP link H2tech link PBA Systems link Celera Motion link Beikimco link Electromate link Magnetic Innovations link Shaker Suppliers Links BKSV link Vibration Research link Sentek Dynamics link https://www.bksv.com/en/products/shakers-and-exciters/LDS-shaker-systems/permanent-magnet-shakers/V201\nBrush-less DC Motor (Yedamale, 2003) https://www.electricaltechnology.org/2016/05/bldc-brushless-dc-motor-construction-working-principle.html\nBibliography Ito, S., \u0026amp; Schitter, G., Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation, IEEE/ASME Transactions on Mechatronics, 21(2), 1169–1178 (2016). http://dx.doi.org/10.1109/tmech.2015.2478658 ↩\nFleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422 ↩\nYedamale, P., Brushless dc (bldc) motor fundamentals, Microchip Technology Inc, 20(), 3–15 (2003). ↩\nBacklinks Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation ","permalink":"/zettels/actuators/","tags":null,"title":"Actuators"},{"categories":null,"contents":" Tags Motion Control Reference (Tom Oomen, 2018) Author(s) Oomen, T. Year 2018 \n Figure 1: Envisaged developments in motion systems. In traditional motion systems, the control bandwidth takes place in the rigid-body region. In the next generation systemes, flexible dynamics are foreseen to occur within the control bandwidth.\n Bibliography Oomen, T., Advanced motion control for precision mechatronics: control, identification, and learning of complex systems, IEEJ Journal of Industry Applications, 7(2), 127–140 (2018). http://dx.doi.org/10.1541/ieejjia.7.127 ↩\n","permalink":"/paper/oomen18_advan_motion_contr_precis_mechat/","tags":null,"title":"Advanced motion control for precision mechatronics: control, identification, and learning of complex systems"},{"categories":null,"contents":" Tags Complementary Filters Reference (Sahaj Saxena \u0026amp; YogeshV Hote, 2012) Author(s) Saxena, S., \u0026amp; Hote, Y. Year 2012 Proposed Filter \\(F(s)\\) \\begin{align*} F(s) \u0026amp;= \\frac{1}{(\\lambda s + 1)^n} \\\\\\\nF(s) \u0026amp;= \\frac{n \\lambda + 1}{(\\lambda s + 1)^n} \\end{align*}\nInternal Model Control Central concept in IMC: control can be acheive only if the control system involves, either implicitly or explicitly, some representation of the process to be controlled.\nBasic IMC structure IMC can be considered as a special case of classical feedback structure with plant \\(G(s)\\) and controller \\(C(s)\\).\nThe plan model \\(G_M(s)\\) is added and substracted into the feedback path of feedback controller.\nThe structure can then be modified and we obtain a new controller \\(Q(s)\\).\nIMC is related to the classical controller through:\n\\begin{align*} Q(s) = \\frac{C(s)}{1+G_M(s)C(s)} \\\\\\\nC(s) = \\frac{Q(s)}{1-G_M(s)Q(s)} \\end{align*}\nInternal model control system is characterized by a control device consisting of the controller \\(Q(s)\\) and a predictive model \\(G_M(s)\\) of the process (internal model). The internal model loop uses the difference between the outputs of the process \\(G(s)\\) to be controlled and the internal model. This difference \\(E(s)\\) represents the effect of disturbance and mismatch of the model.\nFeatures of IMC Structure Three properties:\n Dual stability: assume that, if the plant model is perfect (\\(G_M(s) = G(s)\\)) and disturbance is absent, the system becomes open-loop and the closed-loop stability is characterized by the stability of \\(G(s)\\) and \\(Q(s)\\) Perfect control: assume that, if the controller is equal to the model inverse (\\(Q(s) = G_M^{-1}\\)) and \\(G(s) = G_M(s)\\) with \\(G(s)\\) stable, then the system is perfectly controlled. Zero Offset: assume that, if the steady state gain of the controller is equal to the inverse of model gain, then offset free control is obtained for constant step of ramp type inputs and disturbances. As expected, the equivalent classical controller leads to integral action. Issues:\n the plant model is never perfect inverting the model can cause instability control signal may have large magnitude Design procedure for IMC Compensator factorize the plant model as \\(G_M(s) = G_{M-}(s)G_{M+}(s)\\) where \\(G_{M-}(s)\\) is invertible and minimum phase and \\(G_{M+}(s)\\) is non-invertible and contains all non-minimum phase elements (delays, RHP zeros). Then, the controller is the inverse of the invertible portion of the plant model: \\(Q_1(s) = G_{M-}^{-1}(s)\\). Filter selection: to make the controller proper and robust against the plant-model mismatch, a low pass filter of the form \\(F(s) = \\frac{n \\lambda}{(\\lambda s + 1)^n}\\) is augmented with the inverted model \\(Q_1(s)\\): \\(Q(s) = Q_1(s) F(s)\\). \\(\\lambda\\) is a tuning parameter which has an inverse relationship with the speed of closed loop response, \\(n\\) is selected such that \\(Q(s)\\) becomes proper. Issues in IMC Filter selection and tuning guidelines Some advantages and future prospects Conclusion The interesting feature regarding IMC is that the design scheme is identical to the open-loop control design procedure and the implementation of IMC results in a feedback system, thereby copying the disturbances and parameter uncertainties, while open-loop control is not.\nBibliography Saxena, S., \u0026amp; Hote, Y., Advances in internal model control technique: a review and future prospects, IETE Technical Review, 29(6), 461 (2012). http://dx.doi.org/10.4103/0256-4602.105001 ↩\n","permalink":"/paper/saxena12_advan_inter_model_contr_techn/","tags":null,"title":"Advances in internal model control technique: a review and future prospects"},{"categories":null,"contents":" Tags Vibration Isolation Reference @phdthesis{poel10_explor_activ_hard_mount_vibrat, author = {van der Poel, Gerrit Wijnand}, doi = {10.3990/1.9789036530163}, isbn = {978-90-365-3016-3}, school = {University of Twente}, title = {An Exploration of Active Hard Mount Vibration Isolation for Precision Equipment}, url = {https://doi.org/10.3990/1.9789036530163}, year = 2010, year = 2010, tags = {parallel robot}, } Author(s) van der Poel, G. W. Year 2010 Bibliography van der Poel, G. W., An exploration of active hard mount vibration isolation for precision equipment (Doctoral dissertation) (2010). University of Twente, . ↩\n","permalink":"/paper/poel10_explor_activ_hard_mount_vibrat/","tags":null,"title":"An exploration of active hard mount vibration isolation for precision equipment"},{"categories":null,"contents":" Tags Nano Active Stabilization System, Positioning Stations Reference (Holler {\\it et al.}, 2012) Author(s) Holler, M., Raabe, J., Diaz, A., Guizar-Sicairos, M., Quitmann, C., Menzel, A., \u0026amp; Bunk, O. Year 2012 Instrument similar to the NASS. Obtain position stability of 10nm (standard deviation).\n\n Figure 1: Schematic of the tomography setup\n Limited resolution due to instrumentation: The resolution of ptychographic tomography remains above 100nm due to instabilities and drifts of the scanning systems.\n Need of a Metrology System:\n To achieve positioning accuracy and stability in the nanometer range, one cannot rely on the position encoders built into individual positioning stages. A precise exteroceptive measurement of the relative position of the optical elements with respect to the sample is mandatory. Thus, thermal drifts and parasitic motions can be measured and compensated for.\n Interferometer System Concept: The sample is aligned with the X-ray with the XYZ piezo stage. As a result, the metrology sphere will be usually off center with respect to the rotation axis of the spindle. That implies that the laser will not propagate back to the interferometer at all rotation angles. A position sensitive detector (PSD) is used, it provides a measurement of the position of the sphere in the plane perpendicular to the laser. The interferometer is positionned on top of a translation stage. The PSD information is used to close the loop so that the interferometer follows the displacement of the metrology sphere.\n Feedback Loop: Using the signals from the 2 interferometers, the loop is closed to compensate low frequency vibrations and thermal drifts.\n Bibliography Holler, M., Raabe, J., Diaz, A., Guizar-Sicairos, M., Quitmann, C., Menzel, A., \u0026amp; Bunk, O., An instrument for 3d x-ray nano-imaging, Review of Scientific Instruments, 83(7), 073703 (2012). http://dx.doi.org/10.1063/1.4737624 ↩\n","permalink":"/paper/holler12_instr_x_ray_nano_imagin/","tags":null,"title":"An instrument for 3d x-ray nano-imaging"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation Reference (Jason Geng {\\it et al.}, 1995) Author(s) Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., \u0026amp; Garba, J. A. Year 1995 \n Figure 1: Local force feedback and adaptive acceleration feedback for active isolation\n Bibliography Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., \u0026amp; Garba, J. A., An intelligent control system for multiple degree-of-freedom vibration isolation, Journal of Intelligent Material Systems and Structures, 6(6), 787–800 (1995). http://dx.doi.org/10.1177/1045389x9500600607 ↩\n","permalink":"/paper/geng95_intel_contr_system_multip_degree/","tags":null,"title":"An intelligent control system for multiple degree-of-freedom vibration isolation"},{"categories":null,"contents":" Tags Nano Active Stabilization System Reference (Jun Wang {\\it et al.}, 2012) Author(s) Wang, J., Chen, Y. K., Yuan, Q., Tkachuk, A., Erdonmez, C., Hornberger, B., \u0026amp; Feser, M. Year 2012 Introduction of Markers: That limits the type of samples that is studied\nThere is a need for markerless nano-tomography =\u0026gt; the key requirement is the precision and stability of the positioning stages.\nPassive rotational run-out error system: It uses calibrated metrology disc and capacitive sensors\nBibliography Wang, J., Chen, Y. K., Yuan, Q., Tkachuk, A., Erdonmez, C., Hornberger, B., \u0026amp; Feser, M., Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution, Applied Physics Letters, 100(14), 143107 (2012). http://dx.doi.org/10.1063/1.3701579 ↩\n","permalink":"/paper/wang12_autom_marker_full_field_hard/","tags":null,"title":"Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution"},{"categories":null,"contents":" Tags Precision Engineering Reference (Richard Leach \u0026amp; Stuart Smith, 2018) Author(s) Leach, R., \u0026amp; Smith, S. T. Year 2018 Bibliography Leach, R., \u0026amp; Smith, S. T., Basics of precision engineering - 1st edition (2018), : CRC Press. ↩\n","permalink":"/book/leach18_basic_precis_engin_edition/","tags":null,"title":"Basics of precision engineering - 1st edition"},{"categories":null,"contents":" Tags Vibration Isolation, Actuators Reference (Shingo Ito \u0026amp; Georg Schitter, 2016) Author(s) Ito, S., \u0026amp; Schitter, G. Year 2016 Classification of high-precision actuators Table 1: Zero/Low and High stiffness actuators Categories Pros Cons Zero stiffness No vibration transmission Large and Heavy Low stiffness High vibration isolation Typically for low load High Stiffness High control bandwidth High vibration transmission Time Delay of Piezoelectric Electronics In this paper, the piezoelectric actuator/electronics adds a time delay which is much higher than the time delay added by the voice coil/electronics.\nDefinition of low-stiffness and high-stiffness actuator Low Stiffness actuator is defined as the ones where the transmissibility stays below 0dB at all frequency High Stiffness actuator is defined as the ones where the transmissibility goes above 0dB at some frequency \n Figure 1: Definition of low-stiffness and high-stiffness actuator\n Low-Stiffness / High-Stiffness characteristics The low stiffness actuators achieve smooth transition from active isolation to passive isolation. The high stiffness actuators can have a gap between the passive and active isolation vibration where the vibrations are amplified in a certain frequency band. Controller Design \n Figure 2: Obtained transmissibility\n Discussion The stiffness requirement for low-stiffness actuators can be rephrased in the frequency domain as: \u0026ldquo;the cross-over frequency of the sensitivity function of the feedback system must be larger than \\(\\sqrt{2} \\omega_r\\) with \\(\\omega_r\\) is the resonant frequency of the uncontrolled system\u0026rdquo;.\nIn practice, this is difficult to achieve with piezoelectric actuators as their first resonant frequency \\(\\omega_r\\) is too close to other resonant frequencies to ensure close-loop stability. In contrast, the frequency band between the first and the other resonances of Lorentz actuators can be broad by design making them more suitable to construct a low-stiffness actuators.\nBibliography Ito, S., \u0026amp; Schitter, G., Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation, IEEE/ASME Transactions on Mechatronics, 21(2), 1169–1178 (2016). http://dx.doi.org/10.1109/tmech.2015.2478658 ↩\nBacklinks Actuators ","permalink":"/paper/ito16_compar_class_high_precis_actuat/","tags":null,"title":"Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Advances in internal model control technique: a review and future prospects ","permalink":"/zettels/complementary_filters/","tags":null,"title":"Complementary Filters"},{"categories":null,"contents":"Tags :\nhttps://www.youtube.com/playlist?list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m\nOverview Linear Systems Stability and Eigenvalues Linearizing Around a Fixed Point Controllability Controllability, Reachability, and Eigenvalue Placement Controllability and the Discrete-Time Impulse Response Degrees of Controllability and Gramians Controllability and the PBH Test Cayley-Hamilton Theorem Reachability and Controllability with Cayley-Hamilton Inverted Pendulum on a Cart Eigenvalue Placement for the Inverted Pendulum on a Cart Linear Quadratic Regulator (LQR) Control for the Inverted Pendulum on a Cart Motivation for Full-State Estimation Observability Full-State Estimation Kalman Filter Observability Example in Matlab Observability Example in Matlab (Part 2) Kalman Filter Example in Matlab Linear Quadratic Gaussian (LQG) LQG Example in Matlab Introduction to Robust Control Three Equivalent Representations of Linear Systems Example Frequency Response (Bode Plot) for Spring-Mass-Damper Laplace Transforms and the Transfer Function Benefits of Feedback on Cruise Control Example Benefits of Feedback on Cruise Control Example (Part 2) Cruise Control Example with Proportional-Integral (PI) control Sensitivity and Complementary Sensitivity Sensitivity and Complementary Sensitivity (Part 2) Loop shaping Loop Shaping Example for Cruise Control Sensitivity and Robustness Limitations on Robustness Cautionary Tale About Inverting the Plant Dynamics Control systems with non-minimum phase dynamics \u0026lt;./biblio/references.bib\u0026gt;\n","permalink":"/websites/control_bootcamp/","tags":null,"title":"Control Bootcamp"},{"categories":null,"contents":" Tags HAC-HAC Reference (Bryson, 1993) Author(s) Bryson, A. E. Year 1993 9.2.3 Roll-Off Filters Synthesizing control logic using only one vibration mode means we are consciously neglecting the higher-order vibration modes. When doing this, it is a good idea to insert \u0026ldquo;roll-off\u0026rdquo; into the control logic, so that the loop-transfer gain decreases rapidly with frequency beyond the control bandwidth. This reduces the possibility of destabilizing the unmodelled higher frequency dynamics (\u0026quot;spillover\u0026quot;).\n 9.5 Robust Compensator Synthesis LQG synthesis using feedback of estimated states will produce almost the same good response as LQR [\u0026hellip;] for systems with control system bandwidths that are well below the frequency of the first vibration mode. However, it may not be true for systems with higher control system bandwidths, even when one or more vibration modes are included in the control design model.\n If a rate sensor is co-located with an actuator on a flexible body, and its signal is fed back to the actuator, all vibration modes are stabilized. If a rate sensor is not co-located with an actuator on a flexible body, ans its signal is fed back to the actuator, some vibration modes are stabilized and others are destabilized, depending on the location of the sensor relative to the actuator.\n 9.5.2 Low-Authority Control/High-Authority Control Figure fig:bryson93_hac_lac shows the concept of Low-Authority Control/High-Authority Control (LAC/HAC) is the s-plane. LAC uses a co-located rate sensor to add damping to all the vibratory modes (but not the rigid-body mode). HAC uses a separated displacement sensor to stabilize the rigid body mode, which slightly decreases the damping of the vibratory modes but not enough to produce instability (called \u0026ldquo;spillover\u0026rdquo;)\n \n Figure 1: HAC-LAC control concept\n LAC/HAC is usually insensitive to small deviation of the plant dynamics away from the design values, that is, it is robust to plant parameter changes.\n Bibliography Bryson, A. E., Control of spacecraft and aircraft (1993), : Princeton university press Princeton, New Jersey. ↩\n","permalink":"/paper/bryson93_contr_spacec_aircr/","tags":null,"title":"Control of spacecraft and aircraft"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Sensors and control of a space-based six-axis vibration isolation system Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods ","permalink":"/zettels/cubic_architecture/","tags":null,"title":"Cubic Architecture"},{"categories":null,"contents":"Tags :\nData-Driven Control Overview Challenges With modern control (LQR, LQG, H-Infinity), we work with linear system (or linearized systems) and we develop a control law that minimize some cost function.\nChallenging systems where modern control is not efficient:\n Non-linear systems System with unknown dynamics High dimensional systems Limited measurements or control inputs For these kinds of systems, data-driven control seems to be a good alternative.\nWhat is control? It\u0026rsquo;s an optimization constrained by dynamics of the system.\nThe optimization is easy when the system is linear and the cost function is quadratic. When the system is non-linear or when the cost function is non quadratic, the optimization becomes complicated (non closed form). Then the optimization should be rerun on the fly, which is what is done with MPC (model predictive control).\nWhat is Machine-Learning? Machine-learning is powerful non-linear optimization based on data.\nOutline of this lecture Data Driven Models For the problem of unknown dynamics, we can use data driven models. The goal is to collect data to generate of model of the system.\nMachine Learning Control When we use the control inputs, the system changes and the system model might be not valid anymore. The idea is to use data driven machine learning directly to learn a good controller.\nSensor and actuator placement Use powerful optimization techniques from machine learning to learn what are good sensors and actuators.\nLinear System Identification The Goal of Balanced Model Reduction Change of Variables in Control Systems Change of Variables in Control Systems (Correction) Balancing Example Balancing Transformation Balanced Truncation Balanced Truncation Example Error Bounds for Balanced Truncation Balanced Proper Orthogonal Decomposition BPOD and Output Projection Balanced Truncation and BPOD Example Eigensystem Realization Algorithm ERA and the Discrete-Time Impulse Response Eigensystem Realization Algorithm Procedure Balanced Models with ERA Observer Kalman Filter Identification ERA_OKID Example in Matlab System Identification Full-State Models with Control Regression Models Dynamic Mode Decomposition with Control DMD Control Example Koopman with Control Sparse Nonlinear Models with Control Model Predictive Control Sparse Identification of Nonlinear Dynamics for Model Predictive Control Machine Learning Control Overview Genetic Algorithms Tuning a PID Controller with Genetic Algorithms Tuning a PID Controller with Genetic Algorithms (Part 2) Genetic Programming Genetic Programming Control Extremum Seeking Control Introduction Matlab Simulink Challenging Example Applications \u0026lt;./biblio/references.bib\u0026gt;\n","permalink":"/websites/data_driven_dynamical_systems_with_machine_learning/","tags":null,"title":"Data-Driven Dynamical Systems with Machine Learning"},{"categories":null,"contents":" Tags Stewart Platforms Reference (Jie Tang {\\it et al.}, 2018) Author(s) Tang, J., Cao, D., \u0026amp; Yu, T. Year 2018 Bibliography Tang, J., Cao, D., \u0026amp; Yu, T., Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments, Proceedings of the Institution of Mechanical Engineers, Part C: Journal of Mechanical Engineering Science, 233(1), 132–145 (2018). http://dx.doi.org/10.1177/0954406218756941 ↩\n","permalink":"/paper/tang18_decen_vibrat_contr_voice_coil/","tags":null,"title":"Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments"},{"categories":null,"contents":" Tags Precision Engineering Reference (Schellekens {\\it et al.}, 1998) Author(s) Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., \u0026amp; Pril, W. Year 1998 Bibliography Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., \u0026amp; Pril, W., Design for precision: current status and trends, Cirp Annals, (2), 557–586 (1998). http://dx.doi.org/10.1016/s0007-8506(07)63243-0 ↩\n","permalink":"/paper/schellekens98_desig_precis/","tags":null,"title":"Design for precision: current status and trends"},{"categories":null,"contents":"Tags :\n Reference (Andrew Fleming \u0026amp; Kam Leang, 2014) Author(s) Fleming, A. J., \u0026amp; Leang, K. K. Year 2014 Bibliography Fleming, A. J., \u0026amp; Leang, K. K., Design, modeling and control of nanopositioning systems (2014), : Springer International Publishing. ↩\n","permalink":"/book/fleming14_desig_model_contr_nanop_system/","tags":null,"title":"Design, modeling and control of nanopositioning systems"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation, Flexible Joints, Cubic Architecture Reference (Yang {\\it et al.}, 2019) Author(s) Yang, X., Wu, H., Chen, B., Kang, S., \u0026amp; Cheng, S. Year 2019 Discusses:\n flexible-rigid model of Stewart platform the impact of joint stiffness is compensated using a displacement sensor and a force sensor then the MIMO system is decoupled in modal space and 6 SISO controllers are applied for vibration isolation using force sensors The joint stiffness impose a limitation on the control performance using force sensors as it adds a zero at low frequency in the dynamics. Thus, this stiffness is taken into account in the dynamics and compensated for.\nStewart platform (Figure 1):\n piezoelectric actuators flexible joints (Figure 2) force sensors (used for vibration isolation) displacement sensors (used to decouple the dynamics) cubic (even though not said explicitly) \n Figure 1: Stewart Platform\n \n Figure 2: Flexible Joints\n The stiffness of the flexible joints (Figure 2) are computed with an FEM model and shown in Table 1.\n\nTable 1: Stiffness of flexible joints obtained by FEM \\(k_{\\theta u},\\ k_{\\psi u}\\) \\(72 Nm/rad\\) \\(k_{\\theta s}\\) \\(51 Nm/rad\\) \\(k_{\\psi s}\\) \\(62 Nm/rad\\) \\(k_{\\gamma s}\\) \\(64 Nm/rad\\) Dynamics: If the bending and torsional stiffness of the flexible joints are neglected: \\[ M \\ddot{x} + C \\dot{x} + K x = J^T f \\]\n \\(M\\) is the mass matrix \\(C\\) is the damping matrix \\(K\\) is the stiffness matrix \\(x\\) is the generalized coordinates, representing the displacement and orientation of the payload plate \\(f\\) is the actuator forces \\(J\\) is the Jacobian matrix In this paper, the parasitic bending stiffness of the flexible joints are considered: \\[ M \\ddot{x} + C \\dot{x} + (K + K_e) x = J^T f \\] where \\(K_e\\) is the stiffness matrix induced by the parasitic stiffness of the flexible joints.\nAnalytical expression for \\(K_e\\) are derived in the paper.\nController Design: There is a strong coupling between the input forces and the state variables in the task space. The traditional modal decoupled control strategy cannot work with the flexible Stewart platform because it is impossible to achieve simultaneous diagonalization of the mass, damped and stiffness matrices.\nTo make the six-dof system decoupled into six single-dof isolators, a controller based on the leg\u0026rsquo;s force and position feedback is designed.\n The idea is to synthesize the control force that can compensate the parasitic bending and torsional torques of the flexible joints and simultaneously achieve diagonalization of the matrices \\(M\\), \\(C\\) and \\(K\\)\n The force measured by the force sensors are: \\[ y = f - k J x - c J \\dot{x} \\] The displacements measured by the position sensors are: \\[ z = [\\Delta l_1\\ \\dots\\ \\Delta l_6]^T \\]\nLet\u0026rsquo;s apply the feedback control based on both the force sensor and the position sensor: \\[ f = -H(s) y + (1 + H(s)) K_{el} z \\] where \\(K_{el} = J^{-T} K_e J^T\\) is the stiffness matrix of the flexible joints expressed in joint space.\nWe thus obtain: \\[ f = \\frac{H(s)}{1 + H(s)} (k J x + c J \\dot{x}) + J^{-T} K_e x \\]\nIf we substitute \\(f\\) in the dynamic equation, we obtain that the parasitic stiffness effect of the flexible joints has been compensated by the actuation forces and the system can now be decoupled in modal space \\(x = \\Phi u\\). \\(\\Phi\\) is the modal matrix selected such that \\(\\Phi^T M \\Phi = I_6\\) and \\(k \\Phi^T J^T J \\Phi = \\text{diag}(\\omega_1^2\\ \\dots\\ \\omega_6^2)\\): \\[ s^2 + \\frac{1}{1 + H(s)} \\frac{c \\omega_i^2}{k} s + \\frac{1}{1 + H(s)} \\omega_i^2 = 0, \\quad i = 1,\\ \\dots,\\ 6 \\]\nThe six-dof system is now transformed into a six one-dof system where \\(H(s)\\) can be designed for control purpose.\nIn order to apply this control strategy:\n A force sensor and displacement sensor are need in each strut The joint stiffness has to be known The jacobian has to be computed No information about modal matrix is needed The block diagram of the control strategy is represented in Figure 3.\n\n Figure 3: Control Architecture used\n \\(H(s)\\) is designed as a proportional plus integral compensator: \\[ H(s) = k_p + k_i/s \\]\nSubstituting \\(H(s)\\) in the equation of motion gives that:\n an increase of \\(k_i\\) increase the damping and thus suppress the resonance peaks an increase of \\(k_p\\) lowers the resonance frequency and thus the bandwidth of vibration isolation is examped Experimental Validation: An external Shaker is used to excite the base and accelerometers are located on the base and mobile platforms to measure their motion. The results are shown in Figure 4. In theory, the vibration performance can be improved, however in practice, increasing the gain causes saturation of the piezoelectric actuators and then the instability occurs.\n\n Figure 4: Frequency response of the acceleration ratio between the paylaod and excitation (Transmissibility)\n A model-based controller is then designed based on the leg’s force and position feedback. The position feedback compensates the effect of parasitic bending and torsional stiffness of the flexible joints. The force feedback makes the six-DOF MIMO system decoupled into six SISO subsystems in modal space, where the control gains can be designed and analyzed more effectively and conveniently. The proportional and integral gains in the sub-controller are used to separately regulate the vibration isolation bandwidth and active damping simultaneously for the six vibration modes.\n Bibliography Yang, X., Wu, H., Chen, B., Kang, S., \u0026amp; Cheng, S., Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation, Journal of Sound and Vibration, 439(), 398–412 (2019). http://dx.doi.org/10.1016/j.jsv.2018.10.007 ↩\n","permalink":"/paper/yang19_dynam_model_decoup_contr_flexib/","tags":null,"title":"Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation"},{"categories":null,"contents":" Tags Stewart Platforms, Flexible Joints Reference (Jian Jiao {\\it et al.}, 2018) Author(s) Jiao, J., Wu, Y., Yu, K., \u0026amp; Zhao, R. Year 2018 Bibliography Jiao, J., Wu, Y., Yu, K., \u0026amp; Zhao, R., Dynamic modeling and experimental analyses of stewart platform with flexible hinges, Journal of Vibration and Control, 25(1), 151–171 (2018). http://dx.doi.org/10.1177/1077546318772474 ↩\n","permalink":"/paper/jiao18_dynam_model_exper_analy_stewar/","tags":null,"title":"Dynamic modeling and experimental analyses of stewart platform with flexible hinges"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks The art of electronics - third edition ","permalink":"/zettels/electronics/","tags":null,"title":"Electronics"},{"categories":null,"contents":"Tags :\n Reference (Andrew Fleming, 2012) Author(s) Fleming, A. J. Year 2012 Bibliography Fleming, A. J., Estimating the resolution of nanopositioning systems from frequency domain data, In , 2012 IEEE International Conference on Robotics and Automation (pp. ) (2012). : . ↩\n","permalink":"/paper/fleming12_estim/","tags":null,"title":"Estimating the resolution of nanopositioning systems from frequency domain data"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks A six-axis single-stage active vibration isolator based on stewart platform Nanometre-cutting machine using a stewart-platform parallel mechanism Dynamic modeling and experimental analyses of stewart platform with flexible hinges Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Identification and decoupling control of flexure jointed hexapods ","permalink":"/zettels/flexible_joints/","tags":null,"title":"Flexible Joints"},{"categories":null,"contents":" Tags Vibration Isolation Reference (Preumont {\\it et al.}, 2002) Author(s) Preumont, A., A. Francois, Bossens, F., \u0026amp; Abu-Hanieh, A. Year 2002 Summary:\n Compares the force feedback and acceleration feedback for active damping The use of a force sensor always give alternating poles and zeros in the open-loop transfer function between for force actuator and the force sensor which guarantees the stability of the closed loop Acceleration feedback produces alternating poles and zeros only when the flexible structure is stiff compared to the isolation system The force applied to a rigid body is proportional to its acceleration, thus sensing the total interface force gives a measured of the absolute acceleration of the solid body. Thus force feedback and acceleration feedback are equivalent for solid bodies. When there is a flexible payload, the two sensing options are not longer equivalent.\n For light payload (Figure 1), the acceleration feedback gives larger damping on the higher mode. For heavy payload (Figure 2), the acceleration feedback do not give alternating poles and zeros and thus for high control gains, the system becomes unstable \n Figure 1: Root locus for light flexible payload, (a) Force feedback, (b) acceleration feedback\n \n Figure 2: Root locus for heavy flexible payload, (a) Force feedback, (b) acceleration feedback\n Guaranteed stability of the force feedback:\n If two arbitrary flexible, undamped structures are connected with a single-axis soft isolator with force feedback, the poles and zeros of the open-loop transfer function from the force actuator to the force sensor alternate on the imaginary axis.\n The same is true for the transfer function from the force actuator to the relative displacement of the actuator.\n According to physical interpretation of the zeros, they represent the resonances of the subsystem constrained by the sensor and the actuator.\n Bibliography Preumont, A., A. Fran\\ccois, Bossens, F., \u0026amp; Abu-Hanieh, A., Force feedback versus acceleration feedback in active vibration isolation, Journal of Sound and Vibration, 257(4), 605–613 (2002). http://dx.doi.org/10.1006/jsvi.2002.5047 ↩\n","permalink":"/paper/preumont02_force_feedb_versus_accel_feedb/","tags":null,"title":"Force feedback versus acceleration feedback in active vibration isolation"},{"categories":null,"contents":"Tags :\nSuppliers PCB link Dynamics and Noise of a piezoelectric force sensor An analysis the dynamics and noise of a piezoelectric force sensor is done in (Fleming, 2010) (Notes).\nBibliography Fleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422 ↩\n","permalink":"/zettels/force_sensors/","tags":null,"title":"Force Sensors"},{"categories":null,"contents":" Tags Metrology Reference (Richard Leach, 2014) Author(s) Leach, R. Year 2014 Measurement of angles Unit:\n radian for plane angle steradian for solid angle \\(1 rad \\approx 55.3deg\\)\nInstrument principles:\n subdivision: index tacle, angular gratings, polygons, \u0026hellip; ratio of two lengths: angular interferometers, sin cars, small angle generators, \u0026hellip; autocollimators with a flat mirror Sources of error in displacement interferometry Two error sources:\n error sources that are proportional to the displacement being measured \\(L\\): cumulative errors error sources that are independent of the displacement being measured: non-cumulative errors Thermal expansion of the metrology frame Deadpath length Deadpath length, \\(d\\), is defined as the difference in distance in air between the reference and measurement reflectors and the beam splitter when the interferometer measurement is initiated. Deadpath error occurs when there is a non-zero deadpath and environmental conditions change during a measurement.\nCosine error \\(\\Delta l = l(1-\\cos(\\theta))\\)\nFor small angles: \\(\\Delta l = \\frac{l \\theta^2}{2}\\)\nThe cosine error is then a second-order effect, contrary to the Abbe error which is a first order effect. The second order nature means that cosine error quickly diminish as the alignment is improved.\nLatest advances in displacement interferometry Commercial interferometers =\u0026gt; fused silica optics housed in Invar mounts =\u0026gt; all the optical components are mounted to one central optic to reduce the susceptibility to thermal variations\nOne advantage that homodyme systems have over heterodyne systems is their ability to readily have the source fibre delivered to the interferometer.\nSpatially separated interferometers It uses heterodyne interferometer and one quadrant photodiode. By knowing the beam size and detector geometry, the measurement target\u0026rsquo;s angle change can be determined by differencing matched pairs of measured phase from the quadrant photodiode while the displacement is determined from the average phase over the four quadrants.\nAngular interferometers Determination of an angle by the ratio of two lengths. The angular optics is used to create two parallel beam paths between the angular interferometer and the angular reflector.\nThe beam that illuminates the angular optics contains two frequencies, \\(f1\\) and \\(f2\\). A polarising beam splitter in the angular interferometer splits the frequencies that travel along separate paths.\nThe measurement of angles is then relative.\nThis type of angular interferometer is used to measure small angles (less than \\(10deg\\)).\nBibliography Leach, R., Fundamental principles of engineering nanometrology (2014), : Elsevier. ↩\n","permalink":"/book/leach14_fundam_princ_engin_nanom/","tags":null,"title":"Fundamental principles of engineering nanometrology"},{"categories":null,"contents":" Tags H Infinity Control Reference (Bibel \u0026amp; Malyevac, 1992) Author(s) Bibel, J. E., \u0026amp; Malyevac, D. S. Year 1992 Properties of feedback control \n Figure 1: Control System Diagram\n From the figure 1, we have:\n\\begin{align*} y(s) \u0026amp;= T(s) r(s) + S(s) d(s) - T(s) n(s)\\\\\\\ne(s) \u0026amp;= S(s) r(s) - S(s) d(s) - S(s) n(s)\\\\\\\nu(s) \u0026amp;= S(s)K(s) r(s) - S(s)K(s) d(s) - S(s)K(s) n(s) \\end{align*}\nWith the following definitions\n \\(L(s) = G(s)K(s)\\) is the loop transfer matrix \\(S(s) = [I+G(s)K(s)]^{-1}\\) is the Sensitivity function matrix \\(T(s) = [I+G(s)K(s)]^{-1}G(s)K(s)\\) is the Transmissibility function matrix \\[ S(s) + T(s) = 1 \\]\n Command following: \\(S=0\\) and \\(T=1\\) =\u0026gt; large gains Disturbance rejection: \\(S=0\\) =\u0026gt; large gains Sensor noise attenuation: \\(T\\) small where the noise is concentrated Control Sensitivity minimization: \\(K S\\) small Robustness to modeling errors: \\(T\\) small in the frequency range of the expected model undertainties SISO tradeoff We want \\(S\\) small for command following and disturbance rejection. We want \\(T\\) small to remain insensitive to sensor noise and modeling errors and to reduce control sensitivity.\nHowever we cannot keep both \\(S\\) and \\(T\\) small as \\(S(s)+T(s)=1\\).\nWe must determine some tradeoff between the sensitivity and the complementary sensitivity functions.\nUsually, reference signals and disturbances occur at low frequencies, while noise and modeling errors are concentrated at high frequencies. The tradeoff, in a SISO sense, is to make \\(|S(j\\omega)|\\) small as low frequencies and \\(|T(j\\omega)|\\) small at high frequencies.\n\\(H_\\infty\\) and weighting functions \\(\\mathcal{H}_\\infty\\) control is a design technique with a state-space computation solution that utilizes frequency-dependent weighting functions to tune the controller\u0026rsquo;s performance and robustness characteristics.\n \n Figure 2: \\(\\mathcal{H}_\\infty\\) control framework\n New design framework (figure 2): \\(P(s)\\) is the generalized plant transfer function matrix:\n \\(w\\): exogenous inputs \\(z\\): regulated performance output \\(u\\): control inputs \\(y\\): measured output variables The plant \\(P\\) has two inputs and two outputs, it can be decomposed into four sub-transfer function matrices: \\[P = \\begin{bmatrix}P_{11} \u0026amp; P_{12} \\ P_{21} \u0026amp; P_{22} \\end{bmatrix}\\]\nLower Linear Fractional Transformation The transformation from the input \\(w\\) to the output \\(z\\), \\(T_{zw}\\) is called the Lower Linear Fractional Transformation \\(F_l (P, K)\\).\n \\[T_{zw} = F_l (P, K) = P_{11} + P_{12}K (I-P_{22})^{-1} P_{21}\\]\n The \\(H_\\infty\\) control problem is to find a controller that minimizes \\(\\| T_{zw} \\|_\\infty\\) over the space of all realizable controllers \\(K(s)\\) that stabilize the closed-loop system.\nWeights for inputs/outputs signals Since \\(S\\) and \\(T\\) cannot be minimized together at all frequency, weights are introduced to shape the solutions. Not only can \\(S\\) and \\(T\\) be weighted, but other regulated performance variables and inputs (figure 3).\n\n Figure 3: Input and Output weights in \\(\\mathcal{H}_\\infty\\) framework\n The weights on the input and output variables are selected to reflect the spatial and frequency dependence of the respective signals and performance specifications.\nThese inputs and output weighting functions are defined as rational, stable and minimum-phase transfer function (no poles or zero in the right half plane).\nGeneral Guidelines for Weight Selection: \\(W_S\\) \\(W_S\\) is selected to reflect the desired performance characteristics. The sensitivity function \\(S\\) should have low gain at low frequency for good tracking performance and high gain at high frequencies to limit overshoot. We have to select \\(W_S\\) such that \\({W_S}^-1\\) reflects the desired shape of \\(S\\).\n Low frequency gain: set to the inverse of the desired steady state tracking error High frequency gain: set to limit overshoot (\\(0.1\\) to \\(0.5\\) is a good compromise between overshoot and response speed) Crossover frequency: chosen to limit the maximum closed-loop time constant (\\(\\omega_c \\approx 1/\\tau\\)) General Guidelines for Weight Selection: \\(W_T\\) We want \\(T\\) near unity for good tracking of reference and near zero for noise suppresion.\n A high pass weight is usualy used on \\(T\\) because the noise energy is mostly concentrated at high frequencies. It should have the following characteristics:\n The crossover frequency is chosen to limit the closed-loop bandwidth The high frequency gain is set high to proide sensor noise rejection and high frequency gain attenuation When using both \\(W_S\\) and \\(W_T\\), it is important to make sure that the magnitude of theise weights at the crossover frequency is less that one to not violate \\(S+T=1\\).\nUnmodeled dynamics weighting function Another method of limiting the controller bandwidth and providing high frequency gain attenuation is to use a high pass weight on an unmodeled dynamics uncertainty block that may be added from the plant input to the plant output (figure 4).\n\n Figure 4: Unmodeled dynamics model\n The weight is chosen to cover the expected worst case magnitude of the unmodeled dynamics. A typical unmodeled dynamics weighting function is shown figure 5.\n\n Figure 5: Example of unmodeled dynamics weight\n Inputs and Output weighting function It is possible to weight the control input and actuator rate. This is used to prevent actuator saturation and limit amplification of sensor noise signals on the control input signal.\nTypically actuator input weights are constant over frequency and set at the inverse of the saturation limit.\nOrder of the weighting functions The order of the optimal controller is equal to the order of the nominal plant model plus the order of the weights. The complexity of the controller is increase as the order of the weights increases.\nThe order of the weights should be kept reasonably low to reduce the order of th resulting optimal compensator and avoid potential convergence problems in the DK interactions.\nBibliography Bibel, J. E., \u0026amp; Malyevac, D. S., Guidelines for the selection of weighting functions for h-infinity control (1992). ↩\n","permalink":"/paper/bibel92_guidel_h/","tags":null,"title":"Guidelines for the selection of weighting functions for h-infinity control"},{"categories":null,"contents":"Tags :\nNice Citations From Rosenbrock, H. H. (1974). Computer-Aided Control System Design, Academic Press, New York:\n Solutions are constrained by so many requirements that it is virtually impossible to list them all. The designer finds himself threading a maze of such requirements, attempting to reconcile conflicting demands of cost, performance, easy maintenance, and so on. A good design usually has strong aesthetic appeal to those who are competent in the subject.\n \u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Guidelines for the selection of weighting functions for h-infinity control ","permalink":"/zettels/h_infinity_control/","tags":null,"title":"H Infinity Control"},{"categories":null,"contents":"Tags :\nHigh-Authority Control/Low-Authority Control\nFrom (Andre Preumont, 2018):\n The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure 1. The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure. This approach has the following advantages:\n The active damping extends outside the bandwidth of the HAC and reduces the settling time of the modes which are outsite the bandwidth The active damping makes it easier to gain-stabilize the modes outside the bandwidth of the output loop (improved gain margin) The larger damping of the modes within the controller bandwidth makes them more robust to the parmetric uncertainty (improved phase margin) \n Figure 1: HAC-LAC Control Architecture\n Bibliography Preumont, A., Vibration control of active structures - fourth edition (2018), : Springer International Publishing. ↩\n","permalink":"/zettels/hac_hac/","tags":null,"title":"HAC-HAC"},{"categories":null,"contents":" Tags Stewart Platforms, Flexible Joints Reference (Yixin Chen \u0026amp; McInroy, 2000) Author(s) Chen, Y., \u0026amp; McInroy, J. Year 2000 Bibliography Chen, Y., \u0026amp; McInroy, J., Identification and decoupling control of flexure jointed hexapods, In , Proceedings 2000 ICRA. Millennium Conference. IEEE International Conference on Robotics and Automation. Symposia Proceedings (Cat. No.00CH37065) (pp. ) (2000). : . ↩\n","permalink":"/paper/chen00_ident_decoup_contr_flexur_joint_hexap/","tags":null,"title":"Identification and decoupling control of flexure jointed hexapods"},{"categories":null,"contents":" Tags Multivariable Control Reference (Sanjay Garg, 2007) Author(s) Garg, S. Year 2007 Discusses:\n When to use multivariable control and when not to? Two major issues with implementing multivariable control: gain scheduling and integrator wind up protection Inline simple gain and phase margin measured for SISO, \u0026ldquo;robustness\u0026rdquo; determination of multivariable control requires complex analyses using singular value techniques and Monte Carlo simulations.\n When to use multivariable control:\n System has high input/output coupling and not much separation between loop bandwidth System is complex with large number of states When sequential SISO loop closure will not meet performance requirements Importance of having a mechanism to limit the control rate in the synthesis process. The control rate should be weighted appropriately in order to not saturate the system and stay in the linearity regime.\n importance of scaling the plant prior to synthesis and also replacing pure integrators with slow poles Bibliography Garg, S., Implementation challenges for multivariable control: what you did not learn in school!, In , AIAA Guidance, Navigation and Control Conference and Exhibit (pp. ) (2007). : . ↩\n","permalink":"/paper/garg07_implem_chall_multiv_contr/","tags":null,"title":"Implementation challenges for multivariable control: what you did not learn in school!"},{"categories":null,"contents":" Tags Position Sensors Reviews (Collette {\\it et al.}, 2012) Accelerometers Micromega Dynamics link MMF link PCB link Wireless Accelerometers\n https://micromega-dynamics.com/products/recovib/miniature-vibration-recorder/ \n Figure 1: Characteristics of commercially available accelerometers (Collette {it et al.}, 2011)\n Geophones Sercel link Wilcoxon link \n Figure 2: Characteristics of commercially available geophones (Collette {it et al.}, 2011)\n Bibliography Collette, C., Janssens, S., Fernandez-Carmona, P., Artoos, K., Guinchard, M., Hauviller, C., \u0026amp; Preumont, A., Review: inertial sensors for low-frequency seismic vibration measurement, Bulletin of the Seismological Society of America, 102(4), 1289–1300 (2012). http://dx.doi.org/10.1785/0120110223 ↩\nCollette, C., Artoos, K., Guinchard, M., Janssens, S., Carmona Fernandez, P., \u0026amp; Hauviller, C., Review of sensors for low frequency seismic vibration measurement (2011). ↩\n","permalink":"/zettels/inertial_sensors/","tags":null,"title":"Inertial Sensors"},{"categories":null,"contents":" Tags Nano Active Stabilization System, Positioning Stations Reference (Tomas Stankevic {\\it et al.}, 2017) Author(s) Stankevic, T., Engblom, C., Langlois, F., Alves, F., Lestrade, A., Jobert, N., Cauchon, G., … Year 2017 Similar Station than the NASS Similar Metrology with fiber based interferometers and cylindrical reference mirror \n Figure 1: Positioning Station\n Thermal expansion: Stabilized down to \\(5mK/h\\) using passive water flow through the baseplate below the sample stage and in the interferometry reference frame. Controller: Two Independant PID loops Repeatable errors =\u0026gt; feedforward (Look Up Table) Non-repeatable errors =\u0026gt; feedback Result: 40nm runout error Bibliography Stankevic, T., Engblom, C., Langlois, F., Alves, F., Lestrade, A., Jobert, N., Cauchon, G., …, Interferometric characterization of rotation stages for x-ray nanotomography, Review of Scientific Instruments, 88(5), 053703 (2017). http://dx.doi.org/10.1063/1.4983405 ↩\n","permalink":"/paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/","tags":null,"title":"Interferometric characterization of rotation stages for x-ray nanotomography"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation, Flexible Joints Reference (Wang {\\it et al.}, 2016) Author(s) Wang, C., Xie, X., Chen, Y., \u0026amp; Zhang, Z. Year 2016 Model of the Stewart platform:\n Struts are treated as flexible beams Payload and the base are treated as flexible plates The FRF synthesis method permits to derive FRFs of the Stewart platform The model is compared with a Finite Element model and is shown to give the same results. The proposed model is thus effective.\n\n Figure 1: Stewart Platform\n Control: Combines:\n the FxLMS-based adaptive inverse control =\u0026gt; suppress transmission of periodic vibrations direct feedback of integrated forces =\u0026gt; dampen vibration of inherent modes and thus reduce random vibrations Force Feedback (Figure 2).\n the force sensor is mounted between the base and the strut \n Figure 2: Feedback of integrated forces in the platform\n Sorts of HAC-LAC control:\n LAC: Decentralized integral force feedback HAC: Inertial control using accelerometers. Use of the Jacobian to decouple the motion and then Fx-LMS based adaptive control is used Experimental validation:\n All 6 transfer function from actuator force to force sensors are almost the same (gain offset) Effectiveness of control methods are shown Bibliography Wang, C., Xie, X., Chen, Y., \u0026amp; Zhang, Z., Investigation on active vibration isolation of a stewart platform with piezoelectric actuators, Journal of Sound and Vibration, 383(), 1–19 (2016). http://dx.doi.org/10.1016/j.jsv.2016.07.021 ↩\n","permalink":"/paper/wang16_inves_activ_vibrat_isolat_stewar/","tags":null,"title":"Investigation on active vibration isolation of a stewart platform with piezoelectric actuators"},{"categories":null,"contents":" Tags Position Sensors Reference (Gao {\\it et al.}, 2015) Author(s) Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., … Year 2015 Bibliography Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., …, Measurement technologies for precision positioning, CIRP Annals, 64(2), 773–796 (2015). http://dx.doi.org/10.1016/j.cirp.2015.05.009 ↩\n","permalink":"/paper/gao15_measur_techn_precis_posit/","tags":null,"title":"Measurement technologies for precision positioning"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Fundamental principles of engineering nanometrology ","permalink":"/zettels/metrology/","tags":null,"title":"Metrology"},{"categories":null,"contents":" Tags System Identification, Reference Books Reference (Ewins, 2000) Author(s) Ewins, D. Year 2000 Overview Introduction to Modal Testing The major objectives of modal testing are:\n Determining the nature and extent of vibration response levels in operation Verifying theoretical models and predictions of the vibrations Measurement of the essential materials properties under dynamic loading, such as damping capacity, friction and fatigue endurance For many applications, vibrations is directly related to performance and it is important that the vibration levels are anticipated and brought under satisfactory control.\nThe two major vibration measurement objectives corresponds to two types of test:\n Free vibration: responses are measured during operation of the machine Forced vibrations: the structure is vibrated with a known excitation, often out of its normal service environment. This type of testing is generally made under more closely-controlled conditions than the first one, and yields to more accurate information Modal Testing means \u0026ldquo;the processes involved in testing components or structure with the objective of obtaining a mathematical description of their dynamic of vibration behavior\u0026rdquo;. The form of \u0026ldquo;mathematical description\u0026rdquo; can vary from one application to the other: it can be an estimate of natural frequency and damping factor in one case and a full mass-spring-dashpot model for the next.\nApplications of modal testing We must remember that no single test or analysis procedure is best for all cases and so it is very important that a clear objective is defined before any industrial test is undertaken so that the optimum methods may be used.\nThe different objectives can be:\n Measurement of a structure\u0026rsquo;s vibration properties in order to compare these with a theoretical model (finite element model for instance). This is usually used to validate a model. What is required for the test are:\n accurate estimates of natural frequencies descriptions of the mode shapes At this stage, accurate mode shape data are not essential. It is generally not possible to \u0026ldquo;predict\u0026rdquo; the damping in each mode of vibration from a theoretical model.\n Adjust or correct the theoretical model in order to bring its modal properties closer into line with the measured results. A correlation technique can be used: the two sets of data are combined, quantitatively, in order to identify specifically the causes of the discrepancies between predicted and measured properties. This however, requires precise description of the mode shapes (the eigenvectors) from the modal analysis.\n Sub-structuring process: use modal testing in order to produce a mathematical model of a component which may be incorporated into a structural assembly. Here, as it is a fully quantitative model that is sought, accurate data are required for natural frequencies, modal damping factors and mode shapes. Also, all modes must be included simultaneously as out-of-range modes will influence the structure\u0026rsquo;s behavior in a given frequency range of interest for the complete assembly. This application is altogether more demanding than the previous ones.\n Predicting the effects of modifications to the original structure, as tested. For this application and the sub-structuring process, one need information about rotational degrees-of-freedom, i.e. moments and rotational displacements. These are generally ignore in experimental-based studies as they are much more difficult to measure.\n Force Determination. There are a number of situations where knowledge of the dynamic forces causing vibration is required but where direct measurement of these forces is not practical. For these cases, one solution is offered by a process whereby measurements of the response caused by the forces are combined with a mathematical description of the transfer functions of the structure in order to deduce the forces. This process can be very sensitive to the accuracy of the model used, and it is often essential that the model itself be derived from measurements\n Usually, the normal procedure for modal testing is:\n Measure Analyze the measured data Derive a mathematical model of the structure However, there are some cases where this is not the optimum procedure. The last step is usually taken in order to reduce a vast quantity of actual measurements to a small and efficient data set usually referred to as the \u0026ldquo;modal model\u0026rdquo;. This reduction process has an additional benefit of eliminating small inconsistencies which will inevitably occur in measured data.\nPhilosophy of Modal Testing One of the major requirements to apply modal testing is a thorough integration with an high level of understanding of three components:\n Theoretical basis of vibration Accurate measurement of vibration Realistic and detailed data analysis For instance, there are many features of a frequency response function that can be assessed rapidly understanding some theoretical basis. This could prevent the wasted effort of analyzing incorrect measurements.\nThen, for the practical side, there are many choices of test methods: harmonic, random, transient excitation. The experimenter should be aware of the limitations and implications of the various techniques used in the measurement phases.\nNext, we consider the analysis stage where the measured data (Frequency Response Functions or FRF) are subjected to a range of curve-fitting procedures in an attempt to find the mathematical model which provides the closest description of the actually-observed behavior. There are many approached, and one should be aware of the alternatives in order to choose the optimal one.\nOften, an analysis may be conducted on each measured curve individually. Then, there is a further step in the process: modeling. This is the final stage where all the measured and processed data are combined to yield the most compact and efficient mathematical model of the test structure.\nHowever, the averaging process is a valid and valuable technique only is provided that the data contain random vibrations. Data with systematic trends, such as those causes by poor testing practices or non-linearities, should no be averaged in the same way.\nSummary of Theory It is very important that a clear distinction is made between free vibrations and forced vibration analysis.\nFor the SDOF system, a free vibration analysis yields its natural frequency and damping factor, where a forced response analysis (assuming a harmonic excitation), leads to the definition of the frequency response function. These two types of results are referred to as modal properties and frequency response characteristics.\nNext, we consider the more general class of systems which have more than one degree-of-freedom. For these, it is customary that the spatial properties (the values of the mass, stiffness, and damper elements) be expressed as matrices. Those used are the mass matrix \\(M\\), the stiffness matrix \\(K\\), the viscous damping matrix \\(C\\) and the structural or hysteretic damping matrix \\(D\\).\nThere are three phases in the vibration analysis of such systems:\n Setting up the governing equations of motion, which means determining the elements of the above matrices\n Free vibration analysis using the equations of motion. This analysis produces first a set of \\(N\\) natural frequencies and damping factors, and secondly a matching set of \\(N\\) \u0026ldquo;mode shape\u0026rdquo; vectors, each one of these being associated with a specific natural frequency and damping factor. The complete free vibration solution is conveniently contained in two matrices \\(h^2\\) and \\(\\phi\\), which are again referred to as \u0026ldquo;modal properties\u0026rdquo;, or sometimes, as the eigenvalue and eigenvector matrices. One element from the diagonal eigenvalue matrix \\(\\lambda_r^2\\) contains both the natural frequency and the damping factor for the \\(r^{\\text{th}}\\) normal mode of vibration of the system while the corresponding column \\(\\phi_r\\) describes the shape of that same mode of vibration\n Forced response analysis, and in particular harmonic excitation. By solving the equations of motion when harmonic forcing is applied, we are able to describe the complete solution by a single matrix, known as the frequency response matrix \\(H(\\omega)\\). Thus, element \\(H_{jk}(\\omega)\\) represents the harmonic response, \\(X_j\\) in one of the DOF \\(j\\) caused by a single harmonic force \\(F_k\\) applied in the DOF \\(k\\). The particular relevance of these specific response characteristics is the fact that they are the quantities which are the most likely to be able to measure in practice. However, the same expressions can be drastically simplified if we use the modal properties instead of the spatial properties and it is possible to write an expressing for any FRF, \\(H_{jk}(\\omega)\\), which has the general form\n\\begin{equation*} H_{jk}(\\omega) = \\frac{X_j}{F_k} = \\sum_{r=1}^{N}\\frac{{}_rA_{jk}}{\\lambda_r^2 - \\omega^2} \\label{eq:frf_modal} \\end{equation*}\nwhere \\(\\lambda_r^2\\) is the eigenvalue of the \\(r^{\\text{th}}\\) mode, \\({}_rA_{jk}\\) (the modal constant) is constructed from \\(\\phi_{jk}\\) which is the \\(j^{\\text{th}}\\) element of the \\(r^{\\text{th}}\\) eigenvector \\(\\phi_r\\) and \\(N\\) is the number of degrees-of-freedom (or modes). This expression forms the foundation of modal analysis: it shows a direct connection between the modal properties of a system and its response characteristics.\n Thus, we find that by making a thorough study of the theory of structural vibration, we are able to \u0026ldquo;predict\u0026rdquo; what we might expect to find if we make FRF measurements on actual hardware. Indeed, we shall see later how these predictions can be quite detailed, to the point where it is possible to comment on the likely quality of measured data.\nSummary of measurement methods The main measurement technique studied are those which will permit to make direct measurements of the various FRF properties of the test structure.\nThe type of test best suited to FRF measurement is shown in figure fig:modal_analysis_schematic.\n\n Figure 1: Basic components of FRF measurement system\n Essentially, there are three aspect of the measurement process which demand particular attention in order to ensure the acquisition of the high-quality data which are required for the next stage (data analysis). These are:\n The mechanical aspect of supporting and correctly exciting the structure The correct transduction of the quantities to be measured (force input and motion response) The signal processing which is appropriate to the type of test used Mechanical Aspect We here encounter questions as how the testpiece should be suspended, or supported and how it should be excited. Usually, one of three options is chosen for the support:\n Free or unrestrained: usually means suspended on very soft springs, this has the advantage that free boundaries are easy to simulate Grounded: requires rigid clamping at certain points In situ: the testpiece is connected to some structure representing a non-rigid attachment The mechanics of the excitation are achieve either by connection a vibration generator or shaker, or by using some form of transient input, such as a hammer blow or sudden release from a deformed position. Both approaches have advantages and disadvantages and it can be very important to choose the best one in each case.\nTransducers Transducers are very important elements in the system as it is essential that accurate measurements be made of both the input to the structure and of its response. Nowadays, piezoelectric transducers are widely used to detect both force and acceleration and the major problems associated with them are to ensure that they interfere as little as possible with the test structure and that their performance is adequate for the ranges of frequency and amplitude of the test.\nSignal Processing The FRF parameters to be measured can be obtained directly by applying an harmonic excitation and then measuring the resulting harmonic response. This type of test is often referred to as sinewave testing and it requires the attachment of a shaker to the structure. The frequency range is covered by sweeping the frequency continuously or by step.\nAlternative excitation procedures are now widely used. Transient (including burst signals) periodic, pseudo-random or random excitation signals often replace the signal wave approach and are made practical by the existence of complex signal processing analyser which are capable of resolving the frequency content of both input and response signals using Fourier analysis.\nIn modal testing applications of vibrations measurements, accuracy of the measured data is of paramount importance. This is so because this data are generally to be submitted to a range of analysis procedures, in order to extract the results. Some of these analysis processes are themselves quite complex and can seldom be regarded as insensitive to the accuracy of the input data.\nSummary of Modal Analysis Processes The third skill required for modal testing is concerned with the analysis of the measured FRF data. This is quite separate from the signals processing which may be necessary to convert raw measurements into frequency response.\nIt is a procedure whereby the measured mobilities are analyzed in such a way as to find a theoretical model which most closely resembles the behavior of the actual testpiece. This process itself falls into two stages:\n Identify the appropriate type of model Determine the appropriate parameters of the chosen model Most of the effort goes into this second stage, which is widely referred to as \u0026ldquo;modal parameter extraction\u0026rdquo;, or simply as \u0026ldquo;modal analysis\u0026rdquo;.\nWe have seen that we can predict the form of the FRF plots for a multi degree-of-freedom system, and that these are directly related to the modal properties of that system. The great majority of the modal analysis effort involves curve-fitting an expression such as equation eq:frf_modal to the measured FRF and thereby finding the appropriate modal parameters.\nA completely general curve-fitting approach is possible but generally inefficient. Mathematically, we can take an equation of the form \\[ H(\\omega) = \\sum_{r=1}^N \\frac{A_r}{\\lambda_r^2 - \\omega^2} \\] and curve fit a set of measured values \\(H_m(\\omega_1), H_m(\\omega_2), \\dots\\) to this expression so that we obtain estimates for the coefficients \\(A_1, A_2, \\dots, \\lambda_1^2, \\lambda_2^2, \\dots\\). These coefficients are closely related to the modal properties of the system. However, although such approaches are made, they are inefficient and neither exploit the particular properties of resonant systems nor take due account of the unequal quality of the various measured points in the data set, both of which can have a significant influence on the overall analysis process. Thus there is no single modal analysis method, but rater a selection, each being the most appropriate in differing conditions.\nOne of the most widespread and useful approaches is known as the single-degree-of-freedom curve-fit, or often as the circle fit procedure. This method uses the fact that at frequencies close to a natural frequency, the FRF can often be approximated to that of a single degree-of-freedom system plus a constant offset term (which approximately accounts for the existence of other modes). This assumption allows us to use the circular nature of a modulus/phase polar plot of the frequency response function of a SDOF system (see figure fig:sdof_modulus_phase). This process can be repeated for each resonance individually until the whole curve has been analyzed. At this stage, a theoretical regeneration of the FRF is possible using the set of coefficients extracted.\n\n Figure 2: Curve fit to resonant FRF data\n These simple methods can be used for many of the cases encountered in practice but they become inadequate and inaccurate when the structure has mode which are close. Under these conditions, it becomes necessary to use a more complex process which accepts the simultaneous influence of more than one mode. These methods are referred to as MDOF curve-fits and are naturally more complicated and require more computation effort but, provided the data are accurate, they have the capability of producing more accurate estimates for the modal properties.\nSome of more detailed considerations include: compensating for slightly non-linear behavior, simultaneously analyzing more than one FRF and curve-fitting to actual time histories.\nReview of Test Procedures and Levels The overall objective of the test is to determine a set of modal properties for a structure. These consist of natural frequencies, damping factors and mode shapes. The procedure consists of three steps:\n Measure an appropriate set of mobilities, or FRF Analyze these using appropriate curve-fitting procedures Combine the results of the curve-fits to construct the required model Using our knowledge of the theoretical relationship between FRF functions and modal properties, it is possible to show that an \u0026ldquo;appropriate\u0026rdquo; set of FRFs to measure consists in most cases of just one row or one column in the FRF matrix \\(H(\\omega)\\). In practice this either means exciting the structure at one point and measuring responses at all points or measuring the response at one point while the excitation is applied separately at each point in turn. This last option is most conveniently achieve using a hammer.\nEven though the same overall procedure is always followed, there will be a different level of detail required for each different application.\nTheoretical Basis Introduction Theoretical foundations of modal testing are of paramount importance to its successful implementation.\nThe three phases through a typical theoretical vibration analysis progresses are shown on figure fig:vibration_analysis_procedure. Generally, we start with a description of the structure\u0026rsquo;s physical characteristics (mass, stiffness and damping properties), this is referred to as the Spatial model.\n\n Figure 3: Theoretical route to vibration analysis\n Then, it is customary to perform a theoretical modal analysis of the spatial model which leads to a description of the structure\u0026rsquo;s behavior as a set of vibration modes: the modal model.\n This model is defined a set of natural frequencies with corresponding modal damping factors and vibration mode shapes. This solution describes the various ways in which the structure is capable of vibrating naturally (without any external forces or excitations), and so these are called the natural or normal modes of the structure.\n The third stage is generally that in which we have the greatest interest; namely, the analysis of exactly how the structure will respond under given excitation conditions. It is convenient to present an analysis of the structure\u0026rsquo;s response to a \u0026ldquo;standard\u0026rdquo; excitation (from which the solution for any particular case can be constructed) and to describe this as the response model. The standard excitation chosen is a unit-amplitude sinusoidal force applied to each point on the structure individually, and at every frequency within a specified range. Thus our response model will consist of a set of frequency response functions.\n As indicated in figure fig:vibration_analysis_procedure, it is also possible to do an analysis in the reverse directly: from a description of the response properties (FRFs), we can deduce modal properties and the spatial properties: this is the experimental route to vibration analysis.\n Single Degree of Freedom System Theory Although very few practical structures could realistically be modeled by a SDOF system, the properties of such a system are very important because those for a more complex MDOF system can always be represented as a linear superposition of a number of SDOF characteristics.\n Three classes of system model will be described:\n Undamped Viscously-damped Hysteretically (or structurally) damped The basic model for the SDOF system is shown in figure fig:sdof_model where \\(f(t)\\) and \\(x(t)\\) are general time-varying force and displacement response quantities. The spatial model consists of a mass \\(m\\), a spring \\(k\\) and (when damped) either a viscous dashpot \\(c\\) or hysteretic damper \\(d\\).\n\n Figure 4: Single degree-of-freedom system\n Undamped Systems The governing equation of motion is\n\\begin{equation} m \\ddot{x} + k = 0 \\end{equation}\nThe trial solution \\(x(t) = X e^{i\\omega t}\\) leads to \\[ k - m \\omega^2 = 0 \\]\nHence the modal model consists of a single solution (mode of vibration) with a natural frequency \\[ \\omega_0 = \\sqrt{k/m} \\]\nTurning next to a frequency response analysis, we consider an excitation of the form \\[ f(t) = F e^{i\\omega t} \\] and assume a solution of the form \\[ x(t) = X e^{i\\omega t} \\] where \\(F\\) and \\(X\\) are complex. Now the equation of motion is\n\\begin{equation} (k - m \\omega^2) X e^{i\\omega t} = F e^{i\\omega t} \\end{equation}\nfrom which we extract the required response model in the form of a frequency response function.\n \\begin{equation} \\alpha(\\omega) = \\frac{X}{F} = \\frac{1}{x - \\omega^2 m} \\label{eq:receptance} \\end{equation}\n This particular form of FRF, where the response parameter is displacement (as opposed to velocity of acceleration) is called a receptance.\nViscous Damping If we add a viscous dashpot \\(c\\), the equation of motion becomes\n\\begin{equation} m \\ddot{x} + c \\dot{x} + k x = 0 \\end{equation}\nand we must now use a more general trial solution \\[ x(t) = X e^{st} \\] where \\(s\\) is complex. We obtain the condition \\[ ms^2 + cs + k = 0 \\] which leads to\n\\begin{align} s_{1, 2} \u0026amp;= -\\frac{c}{2 m} \\pm \\frac{\\sqrt{c^2 - 4 k m}}{2 m} \\\\\\\n\u0026amp;= - \\bar{\\omega}_0 \\xi \\pm i \\bar{\\omega}_0 \\sqrt{1 - \\xi^2} \\nonumber \\end{align}\nwhere \\[ \\bar{\\omega}_0^2 = \\frac{k}{m};\\quad \\xi = \\frac{c}{c_0} = \\frac{c}{2 \\sqrt{km}} \\]\nThis implies a modal solution of the form \\[ x(t) = X e^{-\\bar{\\omega}_0 \\xi t} e^{i (\\bar{\\omega}_0 \\sqrt{1 - \\xi^2})t} = X e^{-a t} e^{i \\omega_0^\\prime t} \\] which is a single mode of vibration with a complex natural frequency having two part:\n An imaginary or oscillatory part A real or decay part The physical significance of these two parts is illustrated in the typical free response plot shown in figure fig:sdof_response\n\n Figure 5: Oscillatory and decay part\n Lastly, we consider the forced response when \\(f(t) = F e^{i\\omega t}\\) and, as before, we assume \\(x(t) = Xe^{i\\omega t}\\): \\[ \\left( -\\omega^2 m + i \\omega c + k \\right) X e^{i\\omega t} = F e^{i \\omega t} \\] gives a receptance FRF of the form\n \\begin{equation} \\alpha(\\omega) = \\frac{1}{(k - \\omega^2 m) + i \\omega c} \\end{equation}\nwhich is now complex, containing both magnitude and phase information:\n\\begin{subequations} \\begin{align} \\frac{|X|}{|F|} \u0026amp;= \\frac{1}{\\sqrt{(k - \\omega^2 m)^2 + (\\omega c)^2}} \\\\\\\n\\angle{X} - \\angle{F} \u0026amp;= \\text{tg}^{-1} \\left( \\frac{\\omega c}{k - \\omega^2 m} \\right) \\end{align} \\end{subequations}\n Structural Damping All structures exhibit a degree of damping due to the hysteresis properties of the material(s) from which they are made.\nA typical example of this effect is shown in the force displacement plot in figure fig:material_histeresis in which the area contained by the loop represents the energy lost in one cycle of vibration between the extremities shown. The maximum energy stored corresponds to the elastic energy of the structure at the point of maximum deflection. The damping effect of such a component can conveniently be defined by the ratio of these two: \\[ \\tcmbox{\\text{damping capacity} = \\frac{\\text{energy lost per cycle}}{\\text{maximum energy stored}}} \\]\n\nTable 1: Force-deflection characteristics Material hysteresis Dry friction Viscous damper height=2cm height=2cm height=2cm Another common source of energy dissipation in practical structures, is the friction which exist in joints between components of the structure. It may be described very roughly by the simple dry friction model shown in figure fig:dry_friction.\nThe mathematical model of the viscous damper which we have used can be compared with these more physical effects by plotting the corresponding force-displacement diagram for it, and this is shown in figure fig:viscous_damper. Because the relationship is linear between force and velocity, it is necessary to suppose harmonic motion, at frequency \\(\\omega\\), in order to construct a force-displacement diagram. The resulting diagram shows the nature of the approximation provided by the viscous damper model and the concept of the effective or equivalent viscous damping coefficient for any of the actual phenomena as being which provides the same energy loss per cycle as the real thing.\n The problem which arises with the viscous damping model is that it has a frequency-dependence in the amount of energy loss per cycle whereas the dry friction mechanism is clearly unaffected by the frequency of loading and experiments suggests that the hysteresis effect is similarly independent of frequency. Thus, we find a problem in obtaining a single equivalent viscous dashpot model which will be valid over a range of frequencies, such as will be necessary to represent the damping of a MDOF system over all, or at least several, of its modes of vibration.\n An alternative theoretical damping model is provided by the hysteretic or structural damper which not only has the advantage that the energy lost per cycle is independent of the frequency, but also provides a much simpler analysis for MDOF systems. However, it presents difficulties to a rigorous free vibration analysis and its application is generally focused on the forced response analysis. In this case, we can write an equation of motion: \\[ (-\\omega^2 m + k + i d) X e^{i\\omega t} = F e^{i \\omega t} \\]\n \\begin{equation} \\alpha(\\omega) = \\frac{1/k}{1 - \\left(\\omega/\\bar{\\omega}_0\\right)^2 + i \\eta} \\end{equation}\nwhere \\(\\eta\\) is the structural damping loss factor and replaces the critical damping ratio used for the viscous damping model.\n Presentation and Properties of FRF data for SDOF system Alternative Forms of FRF So far we have defined our receptance frequency response function \\(\\alpha(\\omega)\\) as the ratio between a harmonic displacement response and the harmonic force eq:receptance. This ratio is complex: we can look at its amplitude ratio \\(|\\alpha(\\omega)|\\) and its phase angle \\(\\theta_\\alpha(\\omega)\\).\nWe could have selected the response velocity \\(v(t)\\) as the output quantity and defined an alternative frequency response function eq:mobility. Similarly we could use the acceleration parameter so we could define a third FRF parameter eq:inertance.\n \\begin{equation} \\text{mobility} = Y(\\omega) = \\frac{V}{F} = i \\omega \\alpha(\\omega) \\label{eq:mobility} \\end{equation}\n \\begin{equation} \\text{inertance} = A(\\omega) = \\frac{A}{F} = - \\omega^2 \\alpha(\\omega) \\label{eq:inertance} \\end{equation}\n Table tab:frf_alternatives gives details of all six of the FRF parameters and of the names used for them.\nInverse response can also be defined. For instance, the dynamic stiffness is defined as the force over the displacement.\n \\begin{equation} \\frac{\\text{force}}{\\text{displacement}} = (k - \\omega^2 m) + (i \\omega c) \\label{eq:dynamic_stiffness} \\end{equation}\n It should be noted that that the use of displacement as the response is greatly encouraged as the other options can lead to confusion when used in MDOF system.\n\nTable 2: Definition of Frequency Response Functions Standard FRF Inverse FRF: FIR Disp. Receptance Dynamic Stiffness Admittance Dynamic compliance Dynamic flexibility Vel. Mobility Mechanical Impedance Acc. Accelerance Apparent Mass Inertance Graphical Displays of FRF Data FRF data are complex and thus there are three quantities (frequency and two parts of the complex function) to display. Any simple plot can only show two of the three quantities and so there are different possibilities available for the presentation of such data:\n Modulus of FRF vs Frequency and Phase of FRF vs Frequency: the Bode plot Real Part of FRF vs Frequency and Imaginary Part of FRF vs Frequency Real Part of reciprocal FRF vs Frequency and Imaginary part of reciprocal FRF vs Frequency Real part of FRF vs Imaginary part of FRF: the Nyquist plot Bode Plot Bode plot are usually displayed using logarithmic scales as shown on figure fig:bode_plots.\n\nTable 3: FRF plots for undamped SDOF system Receptance FRF Mobility FRF Accelerance FRF width=\\linewidth width=\\linewidth width=\\linewidth Each plot can be divided into three regimes:\n a low frequency straight line characteristic a high frequency straight line characteristic the resonant region with its abrupt magnitude and phase variations Real part and Imaginary part of FRF Real and imaginary part of a receptance FRF of a damped SDOF system is shown on figure fig:plot_receptance_real_imag. This type of display is not widely used as we cannot use logarithmic axes (as we have to show positive and negative values).\n\nTable 4: Plot of real and imaginary part for the receptance of a damped SDOF Real part Imaginary part width=\\linewidth width=\\linewidth Real part and Imaginary part of reciprocal FRF It can be seen from the expression of the inverse receptance eq:dynamic_stiffness that the Real part depends entirely on the mass and stiffness properties while the Imaginary part is a only function of the damping.\nFigure fig:inverse_frf_mixed shows an example of a plot of a system with a combination of both viscous and structural damping. The imaginary part is a straight line whose slope is given by the viscous damping rate \\(c\\) and whose intercept at \\(\\omega = 0\\) is provided by the structural damping coefficient \\(d\\).\n\nTable 5: Inverse FRF plot for the system Mixed Viscous width=\\linewidth width=\\linewidth Real part vs Imaginary part of FRF Figure fig:nyquist_receptance shows Nyquist type FRF plots of a viscously damped SDOF system. The missing information (in this case, the frequency) must be added by identifying the values of frequency corresponding to particular points on the curve.\n\nTable 6: Nyquist FRF plots of the mobility for a SDOF system Viscous damping Structural damping width=\\linewidth width=\\linewidth The Nyquist plot has the particularity of distorting the plot so as to focus on the resonance area. This makes the Nyquist plot very effective for modal testing applications.\nUndamped MDOF Systems Free Vibration Solution - The modal Properties For an undamped MDOF system, with \\(N\\) degrees of freedom, the governing equations of motion can be written in matrix form eq:undamped_mdof.\n \\begin{equation} [M] \\{\\ddot{x}(t)\\} + [K] \\{x(t)\\} = \\{f(t)\\} \\label{eq:undamped_mdof} \\end{equation}\nwhere \\([M]\\) and \\([K]\\) are \\(N\\times N\\) mass and stiffness matrices, and \\(\\{x(t)\\}\\) and \\(\\{f(t)\\}\\) are \\(N\\times 1\\) vectors of time-varying displacements and forces.\n We shall consider first the free vibration solution by taking \\(f(t) = 0\\). In this case, we assume that a solution exists of the form \\(\\{x(t)\\} = \\{X\\} e^{i \\omega t}\\) where \\(\\{X\\}\\) is an \\(N \\times 1\\) vector of time-independent amplitudes. Substitution of this condition into eq:undamped_mdof leads to\n\\begin{equation} \\left( [K] - \\omega^2 [M] \\right) \\{X\\} e^{i\\omega t} = \\{0\\} \\end{equation}\nfor which the non trivial solutions are those which satisfy \\[ \\det \\left| [K] - \\omega^2 [M] \\right| = 0 \\] from which we can find \\(N\\) values of \\(\\omega^2\\) corresponding to the undamped system\u0026rsquo;s natural frequencies.\nSubstituting any of these back into eq:free_eom_mdof yields a corresponding set of relative values for \\(\\{X\\}\\): \\(\\{\\psi\\}_r\\) the so-called mode shape corresponding to that natural frequency.\n The complete solution can be expressed in two \\(N \\times N\\) eigen matrices.\n\\[ \\begin{bmatrix} \\omega_1^2 \u0026amp; \u0026amp; 0 \\\\\\\n\u0026amp; \\ddots \u0026amp; \\\\\\\n0 \u0026amp; \u0026amp; \\omega_n^2 \\end{bmatrix}; \\quad \\Psi = \\begin{bmatrix} \u0026amp; \u0026amp; \\\\\\\n\\{\\psi_1\\} \u0026amp; \\dots \u0026amp; \\{\\psi_n\\} \\\\\\\n\u0026amp; \u0026amp; \\end{bmatrix} \\]\nwhere \\(\\bar{\\omega}_r^2\\) is the \\(r^\\text{th}\\) eigenvalue squared and \\(\\{\\psi\\}_r\\) is a description of the corresponding mode shape\n Various numerical procedures are available which take the system matrices \\([M]\\) and \\([K]\\) (the Spatial Model), and convert them to the two eigen matrices \\([\\bar{\\omega}_r^2]\\) and \\([\\Psi]\\) which constitute the Modal Model.\nIt is important to realize that whereas the eigenvalue matrix is unique, the eigenvector matrix is not. Indeed, the natural frequencies are fixed quantities, and the mode shapes are subject to an indeterminate scaling factor.\nOrthogonality Properties The modal model possesses some very important properties known as the orthogonality properties:\n\\begin{subequations} \\begin{align} [\\Psi]^T[M][\\Psi] \u0026amp;= [m_r]\\\\\\\n[\\Psi]^T[K][\\Psi] \u0026amp;= [k_r] \\end{align} \\end{subequations}\nfrom which \\([\\bar{\\omega}_r^2] = [m_r]^{-1} [k_r]\\) where \\(m_r\\) and \\(k_r\\) are often referred to as the modal mass and modal stiffness of mode \\(r\\).\n Now, because the eigenvector matrix is subject to an arbitrary scaling factor, the values of \\(m_r\\) and \\(k_r\\) are not unique.\nAmong the many scaling or normalization processes, the mass-normalization has the most relevance.\n The mass-mormalized eigenvectors are written as \\([\\Phi]\\) and have the particular property that\n\\begin{subequations} \\begin{align} [\\Phi]^T[M][\\Phi] \u0026amp;= [I]\\\\\\\n[\\Phi]^T[K][\\Phi] \u0026amp;= [\\bar{\\omega}_r^2] \\end{align} \\end{subequations}\n The relationship between the mass-normalized mode shape for mode \\(r\\) \\(\\{\\Phi\\}_r\\) and its more general form \\(\\{\\Psi\\}_r\\) is simply\n\\begin{equation} \\{\\Phi\\}_r = \\frac{1}{\\sqrt{m_r}} \\{\\Psi\\}_r \\end{equation}\nModal, Generalized and Effective Mass and Stiffness The modal mass is based on the mode shape vector for mode \\(r\\) and the system mass matrix. As mentioned, there is no unique value for the modal mass as it is directly related to the scaling method which has been used to determine the mode shape eigenvector \\(\\{\\Psi\\}_r\\). However, the ratio between any modal stiffness and its associated modal mass is unique and is equal to the corresponding eigenvalue. The modal mass is generally used to convert the original mode shape vector \\(\\{\\Psi\\}_r\\) to the more useful mass-normalized mode shape vector \\(\\{\\Phi\\}_r\\).\n Using the mass-normalized mode shape vectors, we can see how to derive quantities which provide us with information about the effective mass (or stiffness) at any point on the structure (any DOF \\(j\\)). The effective mass at DOF \\(j\\) for mode \\(r\\) is define as \\[ (m_{jj})_r = \\frac{1}{(\\phi_{jr})^2}, \\text{ which as units of mass} \\] and the effective stiffness at DOF \\(j\\) for mode \\(r\\) \\[ (k_{jj})_r = \\frac{\\bar{\\omega}_r^2}{(\\phi_{jr}^2)} \\]\n It can be seen that since the mass-normalized eigenvectors are unique, these effective mass and stiffness properties are also unique and represent a useful description of the behavior of the structure point by point, and mode by mode.\n The other quantities which are sometimes referred to as unique properties of each mode are the generalized mass and generalized stiffness. The generalized mass (or stiffness) of the \\(r^{\\text{th}}\\) mode is defined as the effective mass (or stiffness) at the DOF with the largest amplitude of response. This quantity serves to provide a comparison of the relative strength of each mode of the structure.\n Repeated Roots or Multiple Modes There are situations where two (or more) different modes will have the same natural frequency. This occurs frequently in structures which exhibit a degree of symmetry (especially axi-symmetry). In these cases, there is no guarantee that the corresponding eigenvectors are orthogonal. However, linear combinations of these vectors can always be found such that orthogonality is observed between the mode shapes. It should be noted, that free vibration at that frequency is possible not only in each of the two vectors thus defined, but also in a deformation pattern which is given by any linear combination of these two vectors.\nForce Response Solution - The FRF Characteristics Let\u0026rsquo;s consider the case where the structure is excited sinusoidally by a set of forces all at the same frequency \\(\\omega\\), but with individual amplitudes and phases: \\(\\{f(t)\\} = \\{F\\} e^{i\\omega t}\\).\nAssuming solutions of the form \\(\\{x(t)\\} = \\{X\\} e^{i \\omega t}\\), equation of motion then becomes \\[ \\left( [K] - \\omega^2 [M] \\right) \\{X\\}e^{i\\omega t} = \\{F\\}e^{i\\omega t} \\] That can be written in the following form: \\[ \\{X\\} = \\left( [K] - \\omega^2 [M] \\right)^{-1} \\{F\\} \\]\n We define the \\(N \\times N\\) receptance FRF matrix as \\[ [\\alpha(\\omega)] = \\left( [K] - \\omega^2 [M] \\right)^{-1} \\]\nIt constitutes the Response Model of the system.\nThe general element in the receptance FRF matrix \\(\\alpha_{jk}(\\omega)\\) is defined as follows \\[ \\alpha_{jk}(\\omega) = \\frac{X_j}{F_k}, \\quad F_m = 0, m = 1 \\dots N \\neq k \\]\n It is possible to determine values for the elements of \\([\\alpha(\\omega)]\\) at any frequency of interest by computing the inverse system matrix \\([K] - \\omega^2[M]\\) at each frequency. This has several disadvantages:\n it becomes costly for large-order systems it is inefficient if only a few of the individual FRF are required it provides no insight into the form of the various FRF properties An alternative means of deriving the FRF parameters is used which makes use of the modal properties instead of the spatial properties. \\[ [K] - \\omega^2 [M] = [\\alpha(\\omega)]^{-1} \\] Pre-multiply both sides by \\([\\Phi]^T\\) and post-multiply both sides by \\([\\Phi]\\) to obtain \\[ [\\Phi]^T ([K] - \\omega^2 [M]) [\\Phi] = [\\Phi]^T [\\alpha(\\omega)]^{-1} [\\Phi] \\] which leads to eq:receptance_modal.\n \\begin{equation} [\\alpha(\\omega)] = [\\Phi] \\left[ \\bar{\\omega}_r^2 - \\omega^2 \\right]^{-1} [\\Phi]^T \\label{eq:receptance_modal} \\end{equation}\nEquation eq:receptance_modal permits us to compute any individual FRF parameters \\(\\alpha_{jk}(\\omega)\\) using the following formula\n\\begin{subequations} \\begin{align} \\alpha_{jk}(\\omega) \u0026amp;= \\sum_{r=1}^N \\frac{\\phi_{jr} \\phi_{kr}}{\\bar{\\omega}_r^2 - \\omega^2}\\\\\\\n\u0026amp;= \\sum_{r=1}^N \\frac{\\psi_{jr} \\psi_{kr}}{m_r (\\bar{\\omega}_r^2 - \\omega^2)}\\\\\\\n\u0026amp;= \\sum_{r=1}^N \\frac{{}_rA_{jk}}{\\bar{\\omega}_r^2 - \\omega^2} \\end{align} \\end{subequations}\nwhere \\({}_rA_{jk}\\) is called the modal constant.\n It is clear from equation eq:receptance_modal that the receptance matrix \\([\\alpha(\\omega)]\\) is symmetric and this will be recognized as the principle of reciprocity.\nThis principle of reciprocity applies to many structural characteristics.\nIts implications in this situation are that\n\\begin{equation} \\alpha_{jk} = X_j/F_k = \\alpha_{kj} = X_k/F_j \\label{eq:principle_reciprocity} \\end{equation}\n MDOF Systems with Proportional Damping General Concept and Features of Proportional Damping The modes of a structure with proportional damping are almost identical to those of the undamped version of the model. Specifically, the mode shapes are identical and the natural frequencies are very similar.\nThe equations of motion for an MDOF system with viscous damping is\n\\begin{equation} [M]\\{\\ddot{x}\\} + [C]\\{\\dot{x}\\} + [K]\\{x\\} = \\{f\\} \\end{equation}\nLet\u0026rsquo;s first study the special case where the damping matrix is directly proportional to the stiffness matrix: \\[ [C] = \\beta [K] \\] In this case, we have that \\[ [\\Psi]^T [C] [\\Psi] = \\beta [k_r] = [c_r] \\] where the diagonal elements \\(c_{jj}\\) represent the modal damping of the various modes of the system. The fact that this matrix is also diagonal means that the undamped system mode shapes are also those of the damped system, and this is a particular feature of this type of damping.\nFor the forced response analysis, we obtain \\[ [\\alpha(\\omega)] = [ K + i \\omega C - \\omega^2 M ]^{-1} \\] or\n\\begin{equation} \\alpha_{jk}(\\omega) = \\sum_{r=1}^N \\frac{\\psi_{jr}\\psi_{kr}}{(k_r - \\omega^2 m_r) + i \\omega c_r} \\end{equation}\nGeneral Forms of Proportional Damping If the damping matrix is proportional to the mass matrix, exactly the same type of result is obtained. A usual definition of proportional damping is that the damping matrix \\([C]\\) should be of the form\n\\begin{equation} \\tcmbox{[C] = \\beta [K] + \\gamma [M]} \\end{equation}\nIn this case, the damped system will have eigenvalues and eigenvectors as follows\n\\begin{align*} \u0026amp;\\omega_r^\\prime = \\bar{\\omega}_r \\sqrt{1 - \\xi_r^2} ; \\quad \\xi_r = \\frac{\\beta \\bar{\\omega}_r}{2} + \\frac{\\gamma}{2 \\bar{\\omega}_r}\\\\\\\n\u0026amp;[\\Psi_\\text{damped}] = [\\Psi_\\text{undamped}] \\end{align*}\nDistributions of damping of this type are sometimes, tough not always, found to be plausible from a practical standpoint. The actual damping mechanisms are usually to be found in parallel with stiffness elements (for internal material of hysteresis damping) or with mass elements (for friction damping).\nIdentical treatment can be made of an MDOF system with proportional hysteretic damping. If the general system equations of motion are expressed as \\[ [M]\\{\\ddot{x}\\} + [K + iD]\\{x\\} = \\{f\\} \\] and the hysteretic damping matrix \\([D]\\) has the form\n\\begin{equation} [D] = \\beta [K] + \\gamma [M] \\end{equation}\nthen, we find that the mode shapes for the damped system are again identical to those of the undamped system and that the eigenvalues take the complex form: \\[ \\lambda_r^2 = \\bar{\\omega}_r^2 (1 + i \\eta_r); \\quad \\bar{\\omega}_r^2 = \\frac{k_r}{m_r}; \\quad \\eta_r = \\beta + \\frac{\\gamma}{\\bar{\\omega}_r^2} \\] and the general FRF is written as\n\\begin{equation} \\alpha_{jk}(\\omega) = \\sum_{r=1}^N \\frac{\\psi_{jr}\\psi_{kr}}{(k_r - \\omega^2 m_r) + i \\eta_r k_r} \\end{equation}\nMDOF Systems with Structural (Hysteretic) Damping Free Vibration Solution - Complex Modal Properties We start by writing the general equation of motion for an MDOF system with hysteretic damping and harmonic excitation: \\[ [M] \\{\\ddot{x}\\} + [K]\\{x\\} +i[D]\\{x\\} = \\{F\\}e^{i\\omega t} \\]\nWe consider first the case where there is no excitation and assume a solution of the form \\[ \\{x\\} = \\{X\\} e^{i \\lambda t} \\] where \\(\\lambda\\) is complex.\nWe then obtain complex eigenvalues and eigenvectors.\nWe choose to write the \\(r^\\text{th}\\) eigenvalue as \\[ \\lambda_r^2 = \\omega_r^2(1 + i \\eta_r) \\] where \\(\\omega_r\\) is the natural frequency and \\(\\eta_r\\) is the damping loss factor for that mode. The natural frequency \\(\\omega_r\\) is not necessarily equal to the natural frequency of the undamped system \\(\\bar{\\omega}_r\\) although they are very close in practice.\nThe eigensolution can be seen to possess the same type of orthogonality properties as those demonstrated earlier for the undamped system: \\[ [\\Psi]^T[M][\\Psi] = [m_r] ; \\quad [\\Psi]^T[K + iD][\\Psi] = [k_r] \\]\nThe modal mass and stiffness parameters are now complex but still obey the relationship \\[ \\lambda_r^2 = \\frac{k_r}{m_r} \\] and we define the mass-normalized eigenvectors \\[ \\{\\phi\\}_r = \\frac{1}{\\sqrt{m_r}} \\{\\psi\\}_r \\]\nForced Response Solution - FRF Characteristics For the forced vibration analysis in the case of harmonic excitation and response, we obtain\n\\begin{equation} \\{X\\} = \\left( [K] + i[D] - \\omega^2[M] \\right)^{-1} \\{F\\} \\end{equation}\nBy multiplying both sides of the equation by the eigenvectors, we can write\n\\begin{equation} [\\alpha(\\omega)] = [\\Phi] [\\lambda_r^2 - \\omega^2]^{-1} [\\Phi]^T \\end{equation}\nFrom this full matrix equation, we have:\n\\begin{align*} \\alpha_{jk}(\\omega) \u0026amp;= \\sum_{r=1}^N \\frac{\\phi_{jr} \\phi_{kr}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2}\\\\\\\n\u0026amp;= \\sum_{r=1}^N \\frac{\\psi_{jr} \\psi_{kr}}{m_r\\left(\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2\\right)}\\\\\\\n\u0026amp;= \\sum_{r=1}^N \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2}\\\\\\\n\\end{align*}\nExcitation by a general Force Vector Operating deflection shape (ODS) Having derived an expression for the general term in the frequency response function matrix \\(\\alpha_{jk}(\\omega)\\), it is appropriate to consider next the analysis of a situation where the system is excited simultaneously at several points.\nThe general behavior for this case is governed by equation eq:force_response_eom with solution eq:force_response_eom_solution. However, a more explicit form of the solution is\n\\begin{equation} \\{X\\} = \\sum_{r=1}^N \\frac{\\{\\phi\\}_r^T \\{F\\} \\{\\phi\\}_r}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} \\end{equation}\nThis equation permits the calculation of one or more individual responses to an excitation of several simultaneous harmonic forces (all of which must have the same frequency but may vary in magnitude and phase). The resulting vector of responses is sometimes referred to as force vibration mode, or more commonly, as an Operating Deflection Shape (ODS).\nPure mode excitation 1 - Damped system normal modes It is possible to choose the vector of individual forces such that the response of the structure is entirely controlled by a single normal mode of the structure.\n The normal modes are the characteristic modes of the structure in its actual (damped) state. While it is possible to talk of the modes \u0026ldquo;that the structure would have if the damping could be removed\u0026rdquo;, these are not the \u0026ldquo;normal\u0026rdquo; modes of the structures. The properties of the normal modes of the undamped system are of interest because in most cases of test-analysis comparison, the analytical model will be undamped and so there is a desired to be able to extract the test structures \u0026ldquo;undamped\u0026rdquo; modes from the test data in order to do a direct comparison between prediction and measurement.\n We are seeking an excitation vector \\(\\{F\\}\\) such that the response \\(\\{X\\}\\) consists of a single modal component so that all terms in eq:ods but one is zero. This can be attained if \\(\\{F\\}\\) is chosen such that \\[ \\{\\phi_r\\}^T \\{F\\}_s = 0, \\ r \\neq s \\]\nPure mode excitation 2 - Associated undamped system normal modes We here consider an excitation vector of mono-phased forces. We basically impose that all forces have the same frequency and phase. What is of interest in this case it to see that there exist conditions under which it is possible to obtain a similarly mono-phase response.\nLet the force and response vectors be represented by\n\\begin{align*} \\{f\\} \u0026amp;= \\{\\hat{F}\\} e^{i\\omega t} \\\\\\\n\\{x\\} \u0026amp;= \\{\\hat{X}\\} e^{i(\\omega t - \\theta)} \\end{align*}\nwhere both \\(\\{\\hat{F}\\}\\) and \\(\\{\\hat{X}\\}\\) are vectors of real quantities. Substituting these into the equation of motion leads to a complex equation which can be split into real and imaginary parts to give\n\\begin{align*} \\left( (-\\omega^2 [M] + [K]) \\cos \\theta + [D] \\sin \\theta \\right) \\{\\hat{X}\\} \u0026amp;= \\{\\hat{F}\\} \\\\\\\n\\left( (-\\omega^2 [M] + [K]) \\sin \\theta - [D] \\cos \\theta \\right) \\{\\hat{X}\\} \u0026amp;= \\{0\\} \\end{align*}\nWe can show that if we consider that the phase lag between all the forces and all the responses is exactly \\(\\SI{90}{\\degree}\\), the equation reduces to \\[ (-\\omega^2 [M] + [K])\\{\\hat{X}\\} = 0 \\] which is clearly the equation to be solved to find the undamped system natural frequencies and the mode shapes.\nThus we have the important results that it is always possible to find a set of mono-phased forces which will cause a mono-phased set of responses and, moreover, if these two sets are separated by exactly \\(\\SI{90}{\\degree}\\), then the frequency at which the system is vibrating is identical to one of its undamped natural frequencies and the displacement shape is the corresponding undamped mode shape.\nThis most important result is the basic for many of the multi-shaker test procedures used to isolate the undamped modes of the structures for comparison with theoretical predictions. The physics of the technique are quite simple: the force vector is chosen so that it exactly balances all the damping forces.\nPostscript It is often observed that the analysis for hysteretic damping is less than rigorous when applied to the free vibration situation, as we have done above. However, it is an admissible model of damping for describing harmonic forced vibration and this is the objective of most of our studies. Moreover, it is always possible to express each of the receptance expression either as a ratio of two polynomials or as a series of simple terms. Each of the terms in the series may be identified with one of the modes we have defined in the earlier free vibration analysis for the system. Thus, whether or not the solution is strictly valid for a free vibration analysis, we can usefully and confidently consider each of the uncoupled terms or modes as being a genuine characteristic of the system. As will be seen in the next section, the analysis required for the general case of viscous damping, which is more rigorous, is considerably more complicated than that used here which is, in effect, a very simple extension of the undamped case.\nMDOF systems with Viscous Damping Free vibration solution - Complex modal properties The general equation of motion for an MDOF system with viscous damping is\n\\begin{equation} [M] \\{\\ddot{x}\\} + [C]\\{\\dot{x}\\} + [K]\\{x\\} = \\{f\\} \\end{equation}\nWe first consider the case with no excitation, and consider solutions of the form \\[ \\{x\\} = \\{X\\} e^{st} \\]\nSubstituting this into the equation of motion gives \\[ \\left( s^2 [M] + s[C] + [K] \\right) \\{X\\} = \\{0\\} \\]\nThere are now \\(2N\\) eigenvalues \\(s_r\\) (as opposed to \\(N\\) values of \\(\\lambda_r^2\\) before) but these now occur in complex conjugate pairs. The eigenvectors also occur as complex conjugates. The eigensolution can thus be described as \\[ s_r, s_r^*, \\quad \\{\\psi\\}_r, \\{\\psi\\}_r^*;\\quad r = 1, N \\]\nEach eigenvalue \\(s_r\\) is expressed in the form \\[ s_r = \\omega_r \\left( -\\xi_r + i\\sqrt{1 - \\xi_r^2} \\right) \\] where \\(\\omega_r\\) is the natural frequency and \\(\\xi_r\\) is the critical damping ratio for that mode.\nOrthogonality equations can also be derived:\n\\begin{subequations} \\begin{align} (s_r + s_q) \\{\\psi\\}_q^T [M] \\{\\psi\\}_r + \\{\\psi\\}_q^T [C] \\{\\psi\\}_r \u0026amp;= 0 \\\\\\\ns_r s_q \\{\\psi\\}_q^T [M] \\{\\psi\\}_r - \\{\\psi\\}_q^T [K] \\{\\psi\\}_r \u0026amp;= 0 \\end{align} \\end{subequations}\nWhen the modes \\(r\\) and \\(q\\) are a complex conjugate pair: \\[ s_r = \\omega_r \\left( -\\xi_r - i\\sqrt{1 - \\xi_r^2} \\right); \\quad \\{\\psi\\}_q = \\{\\psi\\}_r^* \\]\nFrom equations eq:viscous_damping_orthogonality, we can obtain\n\\begin{subequations} \\begin{align} 2 \\omega_r \\xi_r \u0026amp;= \\frac{\\{\\psi\\}_r^H [C] \\{\\psi\\}_r}{\\{\\psi\\}_r^H [M] \\{\\psi\\}_r} = \\frac{c_r}{m_r} \\\\\\\n\\omega_r^2 \u0026amp;= \\frac{\\{\\psi\\}_r^H [K] \\{\\psi\\}_r}{\\{\\psi\\}_r^H [M] \\{\\psi\\}_r} = \\frac{k_r}{m_r} \\end{align} \\end{subequations}\nForced response solution Assuming a harmonic response \\(\\{x(t)\\} = \\{X\\} e^{i\\omega t}\\), we can write the forced response solution directly as \\[ \\{X\\} = \\big( [K] - \\omega^2 [M] + i\\omega [C] \\big)^{-1} \\{F\\} \\] but this expression is not particularly convenient for numerical applications.\nWe then seek a similar series expansion that was found for the undamped, proportionally-damped and hysteretically damped systems.\nThe obtain result is \\[ \\alpha_{jk}(\\omega) = \\sum_{r=1}^N \\frac{({}_rR_{jk}) + i (\\omega/\\omega_r)({}_rS_{jk})}{\\omega_r^2 - \\omega^2 + 2 i \\omega \\omega_r \\xi_r} \\] where the coefficients \\(R\\) and \\(S\\) are obtained from:\n\\begin{align*} \\{{}_rR_k\\} \u0026amp;= 2 \\left( \\xi_r \\text{Re}\\{{}_rG_k\\} - \\text{Im}\\{{}_rG_k\\} \\sqrt{1 - \\xi_r^2} \\right)\\\\\\\n\\{{}_rS_k\\} \u0026amp;= 2 \\text{Re}\\{{}_rG_k\\}\\\\\\\n\\{{}_rG_k\\} \u0026amp;= (\\theta_{kr}/a_r) \\{\\theta\\}_r \\end{align*}\nThe main difference with the result obtained with the proportional damping is in the frequency dependence of the numerator in case of viscous damping.\nComplex Modes Real and Complex modes, stationary and traveling waves We saw that we can obtain complex eigenvalues whose real part represents the decay and imaginary part the oscillatory component. We can also obtain complex eigenvectors which means that the mode shapes are complex.\n A complex mode is one in which each part of the structure has not only its own magnitude of vibration but also its own phase. As a result, each part of a structure which is vibrating in a complex mode will reach its own maximum deflection at a different instant in the vibration cycle to that of its neighbors.\n A real mode is one in which the phase angles are all identically \\(\\SI{0}{\\degree}\\) or \\(\\SI{180}{\\degree}\\) and which there has the property that all parts in the structure do reach their own maxima at the same time. Equally, in a real mode, all parts of the structure pass through their zero deflection position at the same instant so that there are two moments in each vibration cycle when the structure is completely un-deformed.\n While the real mode has the appearance of a standing wave, the complex mode is better described as exhibiting traveling waves (illustrated on figure fig:real_complex_modes).\n\n Figure 6: Real and complex mode shapes displays\n Another method of displaying modal complexity is by plotting the elements of the eigenvector on an Argand diagram, such as the ones shown in figure fig:argand_diagram. Note that the almost-real mode shape does not necessarily have vector elements with near \\(\\SI{0}{\\degree}\\) or near \\(\\SI{180}{\\degree}\\) phase, what matters are the relative phases between the different elements.\n\nTable 7: Complex mode shapes plotted on Argand diagrams Almost-real mode Complex Mode Measure of complexity width=\\linewidth width=\\linewidth width=\\linewidth Measurement of modal complexity There exist few indicators of the modal complexity. The first one, a simple and crude one, called MCF1 consists of summing all the phase differences between every combination of two eigenvector elements: \\[ \\text{MCF1} = \\sum_{j=1}^N \\sum_{k=1 \\neq j}^N (\\theta_{rj} - \\theta_{rk}) \\]\nThe second measure is shown on figure fig:argand_diagram_c where a polygon is drawn around the extremities of the individual vectors. The obtained area of this polygon is then compared with the area of the circle which is based on the length of the largest vector element. The resulting ratio is used as an indication of the complexity of the mode, and is defined as MCF2.\nOrigins of complex modes Complex modes occur in practice for variety of physical reasons as well as poor measurement or analysis:\n The types of modes which are referred to as operating deflection shapes will frequently exhibit the relative phases differences between responses of adjacent parts of the structure which indicate a complex mode. Complex normal modes can exist even in simple structures which contain rotating components that are prone to gyroscopic forces. However, normal modes of non-rotating linear structures can be complex only if the damping is distributed in a non-proportional way. This situation can arise quite readily in practice because while the internal (hysteresis) damping of most structural elements is distributed in a way which is essentially proportional to the stiffness distribution, the majority of the damping in real structures is generally found to be concentrated at the joints between components of a structural assembly and this does not usually result in a proportional distribution. Another ingredient is found to be necessary to generate significant complexity in a structure\u0026rsquo;s mode and that is the requirement that two or mode of its modes are close. Close modes are those whose natural frequencies are separated by an amount which is less than the prevailing damping in either or both modes. Characteristics of MDOF FRF data A note about natural frequencies The basic definition derives from the undamped system\u0026rsquo;s eigenvalues which yield the frequencies at which free vibration of the system can take place. These undamped system natural frequencies are given by the square roots of the eigenvalues and are identified by the symbol \\(\\bar{\\omega}_r\\). This occurs in expressions for both free and forced vibration response: \\[ x(t) = \\sum_{r=1}^N x_r e^{i\\bar{\\omega}_r t}; \\quad \\alpha(\\omega) = \\sum_{r=1}^N \\frac{A_r}{\\bar{\\omega}_r^2 - \\omega^2} \\]\nFor damped systems, two alternative characteristics frequency are defined:\n \\(\\omega_r^\\prime\\) for free vibration \\(\\omega_r\\) for forced vibration The former constitutes the oscillatory part of the free vibration characteristic which, being complex, contains an exponential decay term as well: \\[ x(t) = \\sum_{r=1}^N x_r e^{-a_r t} e^{i \\omega_r^\\prime t} \\] where \\(\\omega_r^\\prime\\) may not be identical to \\(\\bar{\\omega}_r\\) depending on the type and distribution of the damping.\nThe second definition comes from the general form of the FRF expression: \\[ \\alpha(\\omega) = \\sum_{r=1}^N \\frac{C_r}{\\omega_r^2 - \\omega^2 + i D_r} \\] Here \\(C_r\\) may be complex whereas \\(D_r\\) is real. \\(\\omega_r\\) is in general different to both \\(\\bar{\\omega}_r\\) and \\(\\omega_r^\\prime\\).\nTable tab:frf_natural_frequencies summarizes all the different cases.\n\nTable 8: FRF Formulae and Natural Frequencies Case C D Free \\(\\omega_r^\\prime\\) Forced \\(\\omega_r\\) Undamped \\(\\mathbb{R}\\) 0 \\(\\bar{\\omega}_r\\) \\(\\bar{\\omega}_r\\) Prop. Hyst. \\(\\mathbb{R}\\) \\(\\mathbb{R}\\) \\(\\bar{\\omega}_r\\) \\(\\bar{\\omega}_r\\) Prop. Visc. \\(\\mathbb{R}\\) \\(\\mathbb{R}\\) (\\(\\omega\\)) \\(\\omega_r\\sqrt{1-\\xi_r^2}\\) \\(\\bar{\\omega}_r\\) Gen. Hyst. \\(\\mathbb{C}\\) \\(\\mathbb{R}\\) \\(\\omega_r\\) \\(\\omega_r\\) Gen. Visc. \\(\\mathbb{C}\\) (\\(\\omega\\)) \\(\\mathbb{R}\\) (\\(\\omega\\)) \\(\\omega_r\\sqrt{1-\\xi_r^2}\\) \\(\\omega_r\\) Mobility and Impedance FRF Parameters As well as for SDOF systems, there are three main forms of FRF: using displacement (receptance), velocity (mobility) or acceleration (inertance) response. There exist a further three formats for FRF data, these being the inverses of the standard receptance, mobility and inertance: the dynamic stiffness, mechanical impedance and apparent mass, respectively.\nHowever, for MDOF systems it is usually not feasible to measure the inverse properties. In general, we can determine the response of a structure to an excitation using the equation \\[ {\\dot{X}} = [Y(\\omega)] \\{F\\} \\] Equally, we can write the inverse equation using impedance instead of mobilities: \\[ \\{F\\} = [Z(\\omega)] \\{V\\} \\]\nThe problem arises because the general element in the mobility matrix \\(Y_{ik}(\\omega)\\) is not simply related to its counterpart in the impedance matrix \\(Z_{ik}(\\omega)\\) as was the case for SDOF systems (\\(Y_{ik}(\\omega) = Z_{jk}^{-1}(\\omega)\\)).\nThe reason for this is that \\[ Y_{kj}(\\omega) = \\left( \\frac{V_k}{F_j} \\right)_{F_l = 0}; \\quad Z_{jk}(\\omega) = \\left( \\frac{F_j}{V_k} \\right)_{V_l = 0}; \\ l \\neq k \\]\nThus, the measure of impedance property demands that all DOFs expect one are grounded which is almost impossible in practice. The only types of FRF which we can expect to measure directly are the mobilities.\nDisplay for Undamped System FRF data Construction of FRF plots for 2DOF system We can envisage the form which the total FRF curve will take as it is simply the summation of all the individual terms. However, the exact shape of the curve also depends on the phase of each term. Then the addition of various components is made to determine the complete receptance expression, the signs of the various terms are obviously of considerable importance.\nLet\u0026rsquo;s consider an example with two modes. We write \\(\\alpha_{11}\\) the point FRF and \\(\\alpha_{21}\\) the transfer FRF:\n\\begin{align*} \\alpha_{11}(\\omega) \u0026amp;= \\frac{0.5}{\\omega_1^2 - \\omega^2} + \\frac{0.5}{\\omega_2^2 - \\omega^2} \\\\\\\n\\alpha_{21}(\\omega) \u0026amp;= \\frac{0.5}{\\omega_1^2 - \\omega^2} - \\frac{0.5}{\\omega_2^2 - \\omega^2} \\end{align*}\nIt can be seen that the only difference between the point and transfer receptance is in the sign of the modal constant of the second mode.\nConsider the first point mobility (figure fig:mobility_frf_mdof_point), between the two resonances, the two components have opposite signs so that they are substractive rather than additive, and indeed, at the point where they cross, their sum is zero. On a logarithmic plot, this produces the antiresonance characteristic which reflects that of the resonance.\n\nTable 9: Mobility FRF plot for undamped 2DOF system Point FRF Transfer FRF width=\\linewidth width=\\linewidth For the plot in figure fig:mobility_frf_mdof_transfer, between the two resonances, the two components have the same sign and they add up, no antiresonance is present.\nFRF modulus plots for MDOF systems The same principle may be extended to any number of DOF. The fundamental rule is that if two consecutive modes have the same sign for the modal constants, then there will be an antiresonance at some frequency between the natural frequency of the two modes. If they have apposite signs, there will not be an antiresonance.\nDisplay of FRF Data for Damped systems Bode plots The resonances and antiresonances are blunted by the inclusion of damping, and the phase angles are no longer exactly \\(\\SI{0}{\\degree}\\) or \\(\\SI{180}{\\degree}\\), but the general appearance of the plot is a natural extension of that for the system without damping. Figure fig:frf_damped_system shows a plot for the same mobility as appears in figure fig:mobility_frf_mdof_point but here for a system with added damping.\nMost mobility plots have this general form as long as the modes are relatively well-separated.\nThis condition is satisfied unless the separation between adjacent natural frequencies is of the same order as, or less than, the modal damping factors, in which case it becomes difficult to distinguish the individual modes.\n\n Figure 7: Mobility plot of a damped system\n Nyquist diagrams Each of the frequency response of a MDOF system in the Nyquist plot is composed of a number of SDOF components.\nFigure fig:nyquist_point shows the result of plotting the point receptance \\(\\alpha_{11}\\) for the 2DOF system described above.\nThe plot for the transfer receptance \\(\\alpha_{21}\\) is presented in figure fig:nyquist_transfer where it may be seen that the opposing signs of the modal constants of the two modes have caused one of the modal circle to be in the upper half of the complex plane.\n\nTable 10: Nyquist FRF plot for proportionally-damped system Point receptance Transfer receptance width=\\linewidth width=\\linewidth In the two figures fig:nyquist_nonpropdamp_point and fig:nyquist_nonpropdamp_transfer, we show corresponding data for non-proportional damping. In this case, a relative phase has been introduced between the first and second elements of the eigenvectors: of \\(\\SI{30}{\\degree}\\) in mode 1 and of \\(\\SI{150}{\\degree}\\) in mode 2. Now we find that the individual modal circles are no longer \u0026ldquo;upright\u0026rdquo; but are rotated by an amount dictated by the complexity of the modal constants.\n\nTable 11: Nyquist FRF plot for non-proportionally-damped system Point receptance Transfer receptance width=\\linewidth width=\\linewidth Non-Sinusoidal vibration and FRF properties With receptance and other FRF data, we have a means of computing the response of a MDOF system to an excitation which consists of a set of harmonic forces of different amplitudes and phases but all of the same frequency. In the general case we can simply write \\[ \\{X\\} e^{i\\omega t} = [\\alpha(\\omega)] \\{F\\} e^{i\\omega t} \\]\nPeriodic vibration Periodic signals as Fourier series Let\u0026rsquo;s first consider the case of periodic vibration, in which the excitation (and thus the response) is not simply sinusoidal although it has a property of periodicity.\nThe easiest way of computing the responses in such a case is by mean of the Fourier Series.\nThe basic principle of Fourier analysis is that any periodic function can be represented by a series of sinudoids of suitable frequencies, amplitudes and phases based on the fundamental period \\(T\\):\n\\begin{equation} \\tcmbox{f_0(t) = \\sum_{n=1}^\\infty {}_0F_n e^{i\\omega_n t}; \\quad \\omega_n = \\frac{2 \\pi n}{T}} \\end{equation}\nOnce a frequency decomposition of the forcing function has been obtained, we may use the corresponding FRF data, computed at the specific frequencies present in the forcing spectrum, in order to compute the corresponding frequency components of the responses of interest:\n\\begin{equation} \\tcmbox{x_j(t) = \\sum_{n=1}^\\infty \\alpha_{j0}(\\omega_n) {}_0F_ne^{i\\omega_n t}; \\quad \\omega_n = \\frac{2 \\pi n}{T}} \\end{equation}\nTo derive FRF from periodic vibration signals It is possible to determine a system\u0026rsquo;s FRF properties from excitation and response measurements when the vibration is periodic. To do this, it is necessary to determine the Fourier Series components of both the input force signal and of the relevant output response signal. Both these series will contain components at the same set of discrete frequencies; these being integer multiples of \\(2\\pi/T\\).\nOne these two series are available, the FRF can be defined at the same set of frequency points by computing the ratio of the response component to the input component.\nTransient vibration Analysis via Fourier transform For most transient cases, the input function \\(f(t)\\) will satisfy the Dirichlet condition and so its Fourier Transform \\(F(\\omega)\\) can be computed from eq:fourier_transform.\n\\begin{equation} F(\\omega) = \\frac{1}{2 \\pi} \\int_{-\\infty}^\\infty f(t) e^{i\\omega t} dt \\end{equation}\nNow, at any frequency \\(\\omega\\), the corresponding Fourier Transform of the response \\(X(\\omega)\\) can be determined from\n\\begin{equation} \\tcmbox{X(\\omega) = H(\\omega) F(\\omega)} \\end{equation}\nwhere \\(H(\\omega)\\) represents the appropriate version of the FRF for the particular input and output parameters considered.\nWe may then derive an expression for the response itself \\(x(t)\\) from the Inverse Fourier Transform of \\(X(\\omega)\\)\n\\begin{equation} \\tcmbox{x(t) = \\int_{-\\infty}^\\infty \\left(H(\\omega) F(\\omega)\\right)e^{i\\omega t}d\\omega} \\end{equation}\nResponse via time domain This alternative analysis is referred to as convolution and is based on the ability to compute the response of a system to a simple unit impulse.\nLet consider a unit impulse excitation applied at \\(t = t^\\prime\\) with infinite magnitude and that lasts for an infinitesimal period of time although the area underneath it is equal to unity. The response of a system to such an excitation at \\(t\u0026gt;t^\\prime\\) is defined as the system\u0026rsquo;s unit Impulse Response Function (IRF) and has a direct relationship to the Frequency Response Function.\nThe IRF is written has \\[ h(t - t^\\prime) \\]\nIf we now consider a more general transient excitation, we see that it is possible to represent this as the superposition of several impulses, each of magnitude \\(f(t^\\prime)dt^\\prime\\) and occurring at different instants in time. The response of a system at time \\(t\\) to just one of these incremental impulses at time \\(t^\\prime\\) is \\[ \\delta x (t) = h(t - t^\\prime) f(t^\\prime) dt^\\prime \\] and the total response of the system will be given by superimposing or integrating all the incremental responses as follows \\[ x(t) = \\int_{-\\infty}^\\infty h(t-t^\\prime) f(t^\\prime) dt^\\prime; \\quad h(t-t^\\prime) = 0, \\ t \\leq t^\\prime \\]\nThere is a very close relationship between \\(H(\\omega)\\) and \\(h(t - t^\\prime)\\). Let\u0026rsquo;s use the Fourier Transform approach to compute the response of a system to a unit impulse. Thus, let \\(f(t) = \\delta(0)\\) and determine its Fourier Transform \\(F(\\omega)\\): \\[ F(\\omega) = \\frac{1}{2 \\pi} \\int_{-\\infty}^\\infty \\delta(0) e^{i\\omega t} dt = \\frac{1}{2\\pi} \\] Then \\[ x(t) = \\frac{1}{2\\pi} \\int_{-\\infty}^{\\infty} H(\\omega) e^{i\\omega t} d\\omega \\triangleq h(t) \\]\nThus, we find that the Impulse and Frequency Response Functions constitute a Fourier Transform pair.\nTo derive FRF from transient vibration signals In order to obtain the structure\u0026rsquo;s FRF properties using a transient vibration test, the calculation of the Fourier transforms of both the excitation and the response signals is required. Then, the ratio of these two function can be computed\n\\begin{equation} H(\\omega) = \\frac{X(\\omega)}{F(\\omega)} \\end{equation}\nThis can be done provided that the time period of the measurement both excitation and response signals are effectively zero at the start and the end of the sample.\nRandom vibration Random signals in time and frequency domains We here consider both excitation and response described by random processes. Neither excitation nor response signals can be subjected to a valid Fourier Transform calculation as they violate the Dirichlet condition.\nIt is necessary to introduce the Correlation Function and the Spectral Densities.\n The Autocorrelation Function \\(R_{ff}(\\tau)\\) of a random vibration parameter \\(f(t)\\), is defined as the expected value of the product \\(f(t) f(t + \\tau)\\) computed along the time axis. This will always be a real and even function of time, and is written\n\\begin{equation} R_{ff}(\\tau) = E[f(t) f(t + \\tau)] \\label{eq:autocorrelation} \\end{equation}\n This correlation function, unlike the original quantity \\(f(t)\\) does satisfy the requirements for Fourier transformation and thus we can obtain its Fourier Transform by the usual equation.\nThe resulting parameter we shall call a Spectral Density, in this case the Auto or Power Spectral Density (PSD) \\(S_{ff}(\\omega)\\).\n \\begin{equation} S_{ff}(\\omega) = \\frac{1}{2\\pi} \\int_{-\\infty}^\\infty R_{ff}(\\tau) e^{-i \\omega \\tau} d\\tau \\label{eq:powerspectraldensity} \\end{equation}\n The Spectral Density is a real and even function of frequency, and does in fact provides a description of the frequency composition of the original function \\(f(t)\\). It has units of \\(f^2/\\omega\\).\nExamples of random signals, autocorrelation function and power spectral density are shown on figure fig:random_signals.\n\nTable 12: Random signals Time history Autocorrelation Function Power Spectral Density width=\\linewidth width=\\linewidth width=\\linewidth A similar concept can be applied to a pair of functions such as \\(f(t)\\) and \\(x(t)\\) to produce cross correlation and cross spectral density functions.\n The cross correlation function \\(R_{xf}(\\tau)\\) between functions \\(f(t)\\) and \\(x(t)\\) is defined as\n\\begin{equation} R_{xf}(\\tau) = E[x(t) f(t + \\tau)] \\label{eq:crosscorelation} \\end{equation}\n The Cross Spectral Density (CSD) is defined as the Fourier Transform of the Cross Correlation function:\n\\begin{equation} S_{xf}(\\omega) = \\frac{1}{2\\pi} \\int_{-\\infty}^\\infty R_{xf}(\\tau) e^{-i \\omega \\tau} d\\tau \\label{eq:cross_spectral_density} \\end{equation}\n Cross correlation functions are real, but not always even, functions of time, and cross spectral densities, unlike auto spectral densities, are generally complex functions of frequency with the particular conjugate property that \\[ S_{xf}(\\omega) = S_{fx}^*(\\omega) \\]\nThe analysis to obtain the input/output relationships for systems undergoing random vibrations is based on the general excitation/response relationship in the time domain: \\[ x(t) = \\int_{-\\infty}^\\infty h(t - t^\\prime) f(t^\\prime) dt^\\prime \\]\nUsing this property, it is possible to derive an expression for $x(t) and for \\(x(t - \\tau)\\) and thus to calculate the response autocorrelation \\(R_{xx}(\\tau)\\) \\[ R_{xx}(\\tau) = E[x(t) x(t + \\tau)] \\]\nThis equation can be manipulated to describe the response autocorrelation in terms of the corresponding property of the excitation \\(R_{ff}\\), but the result is complicated. However, the same equation can be transform to the frequency domain\n\\begin{equation} \\tcmbox{ S_{xx}(\\omega) = \\left| H(\\omega) \\right|^2 S_{ff}(\\omega) } \\end{equation}\nAlthough very convenient, equation eq:psd_input_output does not provide a complete description of the random vibration conditions. Further, it is clear that is could not be used to determine the FRF from measurement of excitation and response because it contains only the modulus of \\(H(\\omega)\\), the phase information begin omitted from this formula.\nA second equation is required and this may be obtain by a similar analysis, two alternative formulas can be obtained eq:cross_relation_alternatives.\n \\begin{subequations} \\begin{align} S_{fx}(\\omega) \u0026amp;= H(\\omega) S_{ff}(\\omega) \\\\\\\nS_{xx}(\\omega) \u0026amp;= H(\\omega) S_{xf}(\\omega) \\end{align} \\end{subequations}\n To derive FRF from random vibration signals The pair of equations eq:cross_relation_alternatives provides the basic of determining a system\u0026rsquo;s FRF properties from the measurements and analysis of a random vibration test. Using either of them, we have a simple formula for determining the FRF from estimates of the relevant spectral densities eq:frf_estimates_spectral_densities.\n \\begin{subequations} \\begin{align} H(\\omega) \u0026amp;= \\frac{S_{fx}(\\omega)}{S_{ff}(\\omega)} = H_1(\\omega)\\label{eq:H1} \\\\\\\nH(\\omega) \u0026amp;= \\frac{S_{xx}(\\omega)}{S_{xf}(\\omega)} = H_2(\\omega)\\label{eq:H2} \\end{align} \\end{subequations}\n The existence of two equations presents an opportunity to check the quality of calculations made using measured data.\nInstrumental variable model for FRF There are difficulties to implement some of the above formulae in practice because of noise and other limitations concerned with the data acquisition and processing.\nOne technique involves three quantities, rather than two, in the definition of the output/input ratio. The system considered can best be described with reference to figure fig:frf_determination which shows first in fig:frf_siso_model the traditional single-input single-output model upon which the previous formulae are based. Then in fig:frf_feedback_model is given a more detailed and representative model of the system which is used in a modal test.\n\nTable 13: System for FRF determination Basic SISO model SISO model with feedback width=\\linewidth width=\\linewidth In this configuration, it can be seen that there are two feedback mechanisms which apply. We then introduce an alternative formula which is available for the determination of the system FRF from measurements of the input and output quantities eq:H3.\n \\begin{equation} H(\\omega) = \\frac{S_{x^\\prime v}(\\omega)}{S_{f^\\prime v(\\omega)}} = H_3(\\omega) \\end{equation}\nwhere \\(v\\) is a third signal in the system.\n Derivation of FRF from MIMO data A diagram for the general n-input case is shown in figure fig:frf_mimo.\nWe obtain two alternative formulas:\n\\begin{subequations} \\begin{align} \\left[ H_{xf}(\\omega) \\right]_{n \\times n} \u0026amp;= \\left[ S_{x^\\prime v}(\\omega) \\right]_{n \\times n} \\left[ S_{f^\\prime v}(\\omega) \\right]_{n \\times n}^{-1} \\\\\\\n\\left[ H_{xf}(\\omega) \\right]_{n \\times n} \u0026amp;= \\left[ S_{f^\\prime f^\\prime}(\\omega) \\right]_{n \\times n}^{-1} \\left[ S_{x^\\prime f^\\prime}(\\omega) \\right]_{n \\times n} \\end{align} \\end{subequations}\nIn practical application of both of these formulae, care must be taken to ensure the non-singularity of the spectral density matrix which is to be inverted, and it is in this respect that the former version may be found to be more reliable.\n\n Figure 8: System for FRF determination via MIMO model\n Complete and Incomplete models Some definitions Most of the preceding theory has been concerned with complete models; that is, the analysis has been presented for an \\(N\\) degree-of-freedom system with the implicit assumption that all the mass, stiffness and damping properties are known and that all the elements in the eigenmatrices and the FRF matrix are available. While this is a valid approach for a theoretical study, it is less generally applicable for experimentally-based investigations where it is not usually possible to measure all the DOFs, or to examine all the modes possessed by a structure. Because of this limitation, it is necessary to extend our analysis to examine the implications of having access to something less than a complete set of data, or model, and this leads us to the concept of a reduced or incomplete type of model.\n There are different types of incomplete models:\n There is the model which is reduced in size (from \\(N\\) to \\(n\\)) by simply deleting information about certain degrees-of-freedom. This process leads to a reduced model which retains full accuracy for the DOFs which are retained, but which looses access to those which have been deleted. The process can be applied only to the modal and response models and results in a modal model described by an \\(N\\times N\\) eigenvalue matrix but by an eigenvector matrix which is only \\(n\\times N\\). The corresponding response model is an incomplete FRF matrix of size \\(n \\times n\\), although all the elements of that reduced matrix are themselves fully accurate. Another type of reduced model is one in which the number of modes is reduced as well (from \\(N\\) to \\(m\\)), so that the eigenvalue matrix is only \\(m \\times m\\) in size. A consequence of this is that the elements in the reduced \\(n \\times n\\) FRF matrix in this case are only approximate. Another type of model reduction can be achieved by condensation from \\(N\\) to \\(n\\) DOFs. This is a process in which a number of DOFs are again eliminated from the complete description but an attempt is made to include the effects of the masses and stiffnesses which are thereby eliminated in the retained DOFs. This is the condensation process which is applied in the Guyan and other reduction techniques used to contain the size of otherwise very large finite element models. In such a condensed model, the spatial, modal and response models are all reduced to \\(n \\times n\\) matrices, and it must be noted that the properties of each are approximate in every respect. Incomplete Response models There are two ways in which a model can be incomplete: by the omission of some modes, and/or by the omission of some degrees-of-freedom.\nOmission of some DOFs Consider first the complete FRF matrix which is \\(N \\times N\\): \\[ \\left[ H(\\omega) \\right]_{N \\times N} \\] and then suppose that we decide to limit our description of the system to include certain DOFs only. Our reduced response model is now \\[ \\left[ H^R(\\omega) \\right]_{n \\times n} \\]\nNow it is clear that we have not altered the basic system, and it still has the same number of degrees-of-freedom even though we have foregone our ability to describe the system\u0026rsquo;s behavior at all of them. In this case, the elements which remain in the reduced FRF matrix are identical to the corresponding elements in the full \\(N \\times N\\) matrix.\nAt this point, it is appropriate to mention the consequences of this type of reduction on the impedance type of FRF data. The impedance matrix which corresponds to the reduced model defined by \\([H^R]\\) will be denoted as \\([Z^R]\\) and it is clear that \\[ [Z^R(\\omega)] = [H^R(\\omega)]^{-1} \\]\nIt is also clear that the elements in the reduced impedance matrix such as \\(Z_{jk}^R\\) are not the same quantities as the corresponding elements in the full impedance matrix, and indeed, a completely different impedance matrix applied to each specific reduction: \\[ H_{ij}^R(\\omega) = H_{ij}(\\omega); \\quad Z_{ij}(\\omega) \\neq Z_{ij}(\\omega) \\]\nWe can also consider the implications of this form of reduction on the other types of model, namely the modal model and the spatial model. For the modal model, elimination of the data pertaining to some of the DOFs results in a smaller eigenvector matrix, which then becomes rectangular of order \\(n \\times N\\). The corresponding eigenvalue matrix is still \\(N \\times N\\) because we still have all \\(N\\) modes included.\nFor the spatial model, it is more difficult to effect a reduction of this type. It is clearly not realistic simply to remove the rows and columns corresponding to eliminated DOFs from the mass and stiffness matrices as this would represent a drastic change to the system. It is possible, however, to reduce these spatial matrices by a number of methods which have the effect of redistributing the mass and stiffness properties which relate to the redundant DOFs among those which are retained. In this way, the total mass of the structure, and its correct-stiffness properties can be largely retained. The Guyan reduction procedure is perhaps the best known of this type. Such reduced spatial properties will be denoted as \\[ \\left[M^R\\right], \\ \\left[K^R\\right] \\]\nOmission of some modes Let\u0026rsquo;s consider the other form of reduction in which only \\(m\\) of the \\(N\\) modes of the system are included. Frequently, this is a necessary approach in that many of the high-frequency modes will be of little interest and almost certainly very difficult to measure. Consider first the FRF matrix and include initially all the DOFs but suppose that each element in the matrix is computed using only \\(m\\) of the \\(N\\) terms in the summation \\[ \\tilde{H}_{jk}(\\omega) = \\sum_{r=1}^{m\\leq N} \\frac{{{}_rA_{jk}}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} \\] In full, we can write the FRF matrix as \\[ \\left[\\tilde{H}(\\omega)\\right]_{N\\times N} = \\left[\\Phi\\right]_{N \\times m} \\left[\\lambda_r^2 - \\omega^2\\right]_{m \\times m}^{-1} \\left[\\Phi\\right]_{m \\times N}^T \\]\nCombination of both reduction Of course, both types of reduction can be combined, the resulting matrix obtained would be \\[ \\left[ \\hat{H}^R(\\omega) \\right]_{n \\times n} \\] However, \\([\\hat{H}^R(\\omega)]\\) will in general be rank deficient, and thus is will not be possible to obtain the impedance matrix by numerical inversion. In order to overcome this problem, it is often convenient to add a constant or residual term to each FRF: \\[ [H(\\omega)] = [\\hat{H}(\\omega)] + [R] \\]\nIncomplete modal and spatial models It has been shown that the orthogonality properties of the modal model provide a direct link between the modal and the spatial model: \\[ [\\Phi]^T [M] [\\Phi] = [I]; \\quad [\\Phi]^T [K] [\\Phi] = [\\omega_r^2] \\] Which can be inverted to yield\n\\begin{subequations} \\begin{align} [M] \u0026amp;= [\\Phi]^{-T}[\\Phi]^{-1}\\\\\\\n[K] \u0026amp;= [\\Phi]^{-T}[\\omega_r^2][\\Phi]^{-1} \\end{align} \\end{subequations}\nIf the modal model is incomplete, then we can note the implications for the orthogonality properties.\nFirst, if we have a modal incompleteness (\\(m\u0026lt;N\\) modes included), then we can write:\n\\begin{subequations} \\begin{align} [\\Phi]_{m\\times N}^T [M] [\\Phi]_{N\\times m} \u0026amp;= [I]_{m\\times m}\\\\\\\n[\\Phi]_{m\\times N}^T [K] [\\phi]_{N\\times m} \u0026amp;= [\\omega_r^2]_{m\\times m} \\end{align} \\end{subequations}\nHowever, if we have spatial incompleteness (only \\(n\u0026lt;N\\) DOFs included), then we cannot express any orthogonality properties at all because the eigenvector matrix is not commutable with the system mass and stiffness matrices.\nIn both reduced-model cases, it is not possible to use equation eq:spatial_model_from_modal to re-construct the system mass and stiffness matrices. First of all because the eigen matrices are generally singular and even if it is not, the obtained mass and stiffness matrices produced have no physical significance and should not be used.\nSensitivity of models Introduction The sensitivity of a model describe the rates of change of some of the key properties, such as the natural frequencies and mode shapes, with small changes in some of the modal parameters, such as individual masses of stiffnesses.\n The model sensitivities are required for various purposes:\n they help to locate errors in models the are useful in guiding design optimization procedures they are used in the course of curve-fitting for the purposes of testing the reliability of the modal analysis processes Modal sensitivities The most commonly used sensitivities are those which describe the rates of change of the modal parameters with the individual mass and stiffness elements in the spatial model. These quantities are defined as follows: \\[ \\frac{\\partial \\omega_r}{\\partial p} \\text{ and } \\frac{\\partial \\{\\phi\\}_r}{\\partial p} \\] where \\(p\\) represents any variable of interest\nSDOF system It is useful to approach the general expressions for these parameters via a simple example based on an undamped SDOF system. We can introduce the concept of sensitivity through the basic SDOF system comprising mass \\(m\\) and spring \\(k\\). We can define the basic sensitivities of the system\u0026rsquo;s natural frequency \\(\\omega_0\\): \\[ \\frac{\\partial \\omega_0}{\\partial m} \\text{ and } \\frac{\\partial \\omega_0}{\\partial k} \\]\nWe can show that: \\[ \\frac{\\partial \\omega_0^2}{\\partial m} = \\frac{-\\sqrt{k}}{m^2} ; \\quad \\frac{\\partial \\omega_0}{\\partial k} = \\frac{1}{2 \\sqrt{km}} \\]\nMDOF systems - eigenvalue sensitivity We can differentiate the following equation of motion of a MDOF system with respect to an arbitrary variable \\(p\\) that might be an individual mass \\(m_i\\) of stiffness \\(k_j\\). \\[ \\left( [K] - \\omega_r^2 [M] \\right) \\{\\phi\\}_r = \\{0\\} \\]\nWe then obtain \\[ \\frac{\\partial \\omega_r^2}{\\partial p} = \\{\\phi\\}_r^T \\left( \\frac{\\partial [K]}{\\partial p} - \\omega_r^2 \\frac{\\partial [M]}{\\partial p} \\right) \\{\\phi\\}_r \\]\nMDOF systems - eigenvector sensitivity A similar analysis can be made for the eigenvector sensitivity terms.\nFRF sensitivities It may be seen it is also possible to derive FRF sensitivities.\nIf we consider first the simple SDOF system with a receptance FRF \\(\\alpha(\\omega)\\) \\[ \\alpha(\\omega) = \\frac{1}{k + i \\omega c - \\omega^2 m} \\] We can differentiate this with respect to \\(m\\) and \\(k\\).\nThe same can be done with the more general case for \\(MDOF\\) system as follows: \\[ \\frac{\\partial [\\alpha(\\omega)]}{\\partial p} = [\\alpha(\\omega)] \\left( \\frac{\\partial [K]}{\\partial p} + i \\omega \\frac{\\partial [C]}{\\partial p} - \\omega^2\\frac{\\partial [M]}{\\partial p} \\right) [\\alpha(\\omega)] \\]\nModal sensitivities from FRF data There exists the possibility of deriving certain sensitivity parameters directly from FRF data such as can be measured in a modal test. Essentially, it is possible to derive expressions for the eigenvalue sensitivities to selected individual mass and stiffness parameters by analyzing the point FRF properties at the selected DOFs.\nFRF Measurement Techniques Introduction and Test Planning Introduction There are two types of vibration measurement:\n those in which just the response level is measured those in which both input and response output parameters are measured Recalling the basic relationship: \\[ \\tcmbox{ \\text{response} = \\text{properties} \\times \\text{input} } \\]\nWe can see that only when two of the three terms in this equation have been measured, we can defined completely what is going on in the vibration of the test object. If we measure only the response, then we are unable to say whether a particularly large response level is due to a strong excitation or to a resonance of the structure.\nFor the second type of vibration measurement, both the excitation and the response are measured simultaneously so that basic equation can be used to deduce the system properties.\nOur interest will first be on the mobility measurements or FRF measurements where the excitation is applied at a single point. In that case, FRF data are directly obtained by \u0026ldquo;dividing\u0026rdquo; the measured responses by the measured excitation force.\nResponses obtained using several simultaneous excitations yield Operation Deflection Shapes (ODSs) from which it is necessary to extract the required FRF data by sometimes complicated analysis procedures. These are referred to as MIMO tests.\nTest Planning It is clear that there will need to be an extensive test planning phase before full-scale measurements are made an decisions taken concerning the methods of excitation, signal processing and data analysis, as well as the proper selection of which data to measure, where to excite the structure and how to prepare and support it for those measurements.\nChecking the quality of the measured data Signal Quality It is sometimes found that the dynamic range of the measured quantities is extreme, especially when the frequency range being covered is wide. What often happens is that there is a very large component of signal in one frequency range that dictates the gain settings on amplifiers and analysers such that lower-level components are difficult to measure accurately.\nSignal fidelity This arise when the signals obtained do not truly represent the quantity which is to be measured. For example, large motion perpendicular to the measurement axis can contaminate the measurement and gives misleading indications.\nOne should verify that the labeling and the connection of transducers are correct. This can be check by looking at the pattern of resonances visible on the FRF curves:\n for excitation and response at the same DOF, resonances and anti-resonances must alternate excitation and response points which are well separated on the test structure will tend to possess fewer anti-resonances Measurement repeatability One essential check for any modal test is the repeatability of the measurements. Certain FRF should be re-measured from time to time, just to check that neither the structure nor the measurement system have experienced any significant changes.\nMeasurement reliability We here seek to establish that the measured data are independent of the measuring system. One should measure the same quantity (usually an FRF) with a slightly different setup, or procedure such as a different excitation signal. These checks are very important to demonstrate the underlying validity of the measurement method being used.\nMeasured data consistency, including reciprocity The various FRF data measured on a given structure should exhibit consistency, by which is meant that the underlying natural frequencies, damping factors and mode shapes visible in the FRF data must all derive from a common modal model.\nThe reciprocity expected to exist between FRFs such as \\(H_{jk}\\) and \\(H_{kj}\\) should be checked and found to be at an acceptable level.\nBasic Measurement System The experimental setup used for mobility measurement contains three major items:\n An excitation mechanism. This contains a source for the excitation signal (sinusoidal, periodic, random, transient), a power amplifier and a exciter (usually a shaker or an hammer) A transduction system. For the most part, piezoelectric transducer are used, although lasers and strain gauges are convenient because of their minimal interference with the test object. Conditioning amplifiers are used depending of the transducer used An analyzer A typical layout for the measurement system is shown on figure fig:general_frf_measurement_setup.\n\n Figure 9: General layout of FRF measurement system\n Structure preparation Free supports By \u0026ldquo;free\u0026rdquo; is meant that the test object is not attached to ground at any of its coordinates and is, in effect, freely suspended in space. In this condition, the structure will exhibit rigid body modes which are determined solely by its mass and inertia properties and in which there is no bending or flexing at all. Six rigid body modes are then obtained with a natural frequency of \\(\\SI{0}{Hz}\\). Mass and inertial properties can then be measured with such a support.\nHowever, in practice it is not feasible to provide a truly free support. Approximate to the free condition can be achieved by supporting the testpiece on very soft springs such that the frequency of the rigid body mode are less than \\(\\SI{10}{%}\\) of that of the lowest resonance frequency.\nGrounded supports The other type of support is referred to as \u0026ldquo;grounded\u0026rdquo; because it attempts to fix selected points on the structure to ground. In practice, it is very difficult to attach the test structure to a base structure which is sufficiently rigid to provide the necessary grounding.\nThe safest procedure is to measure the mobility FRF of the base structure itself over the frequency range for the test and to establish that this is a much lower mobility than the corresponding levels for the test structure at the point of attachment. If this condition is satisfied for all the coordinates to be grounded, then the base structure can reasonably be assumed to be grounded.\nLoaded boundaries A compromise procedure can be applied in which the test object is connected at certain coordinates to another simple component of known mobility, such as a specific mass. The effects of the added component is then removed analytically.\nExcitation of the structure Devices for exciting the structure can be divided into two type:\n Contacting: these involves the connection of an exciter of some form which remains attached to the structure throughout the test. Non-contacting: devices which are either out of contact throughout the vibration (such as provided by a voice coil) or which are only in contact for a short period (such as a hammer) Exciters are often limited at very low frequencies by the stroke rather than by the force generated.\nElectromagnetic Exciters The most common type of exciter is the electromagnetic shaker in which a magnetic force is applied is applied on the structure without any physical contact.\nThe frequency and amplitude of the excitation are controlled independently of each other, which gives flexibility.\nHowever, we need a direct measurement of the force applied to the structure (we cannot rely on the current going through the coil).\nThe shakers are usually stiff in the orthogonal directions to the excitation. This can modify the response of the system in those directions. In order to avoid that, a drive rod which is stiff in one direction and flexible in the other five directions is attached between the shaker and the structure as shown on figure fig:shaker_rod. Typical size for the rod are \\(5\\) to \\(\\SI{10}{mm}\\) long and \\(\\SI{1}{mm}\\) in diameter, if the rod is longer, it may introduce the effect of its own resonances.\n\n Figure 10: Exciter attachment and drive rod assembly\n The support of shaker is also of primary importance.\nThe setup shown on figure fig:shaker_mount_1 presents the most satisfactory arrangement in which the shaker is fixed to ground while the test structure is supported by a soft spring.\nFigure fig:shaker_mount_2 shows an alternative configuration in which the shaker itself is supported. It may be necessary to add an additional inertia mass to the shaker in order to generate sufficient excitation forces at low frequencies.\nFigure fig:shaker_mount_3 shows an unsatisfactory setup. Indeed, the response measured at \\(A\\) would not be due solely to force applied at \\(B\\), but would also be caused by the forces applied at \\(C\\).\n\nTable 14: Various mounting arrangement of exciter Ideal Configuration Suspended Configuration Unsatisfactory width=\\linewidth width=\\linewidth width=\\linewidth Hammer or Impactor Excitation Although this type of test places greater demands on the analysis phase of the measurement process, it is a relatively simple means of exciting the structure.\nA set of different tips and heads are used to extend the frequency and force level ranges for testing a variety of different structure. A load cell (or force transducer) which detects the magnitude of the force felt by the impactor is included.\nThe magnitude of the impact is determined by the mass of the hammer head and its velocity when it hits the structure.\nThe frequency range which is effectively excited is controlled by the stiffness of the contacting surface and the mass of the impactor head: there is a resonance at a frequency given by \\(\\sqrt{\\frac{\\text{contact stiffness}}{\\text{impactor mass}}}\\) above which it is difficult to deliver energy into the test structure.\nWhen the hammer tip impacts the test structure, this will experience a force pulse as shown on figure fig:hammer_impulse. A pulse of this type (half-sine shape) has a frequency content of the form illustrated on figure fig:hammer_impulse.\n\n Figure 11: Typical impact force pulse and spectrum\n The stiffer the materials, the shorter will be the duration of the pulse and the higher will be the frequency range covered by the impact. Similarly, the lighter the impactor mass, the higher the effective frequency range.\nGenerally, as soft a tip as possible will be used in order to inject all the input energy into the frequency range of interest: using a stiffer tip than necessary will result in energy being input to vibrations outside the range of interest at the expense of those inside of that range.\nOne of the difficulties of applying excitation using a hammer is ensuring that each impact is essentially the same as the previous ones, not much in magnitude as in position and orientation relative to the normal of the surface.\nTransducers and Amplifiers The piezoelectric type of transducer is by far the most popular and widely used transducer in modal tests.\nThree types of piezoelectric transducers are available for mobility measurements:\n Force gauges Accelerometers Impedance heads: simply a combination of force and acceleration sensitive elements in a single unit The basic principle of operation makes use of the fact that an element of piezoelectric material generates an electric charge across its end faces when subjected to a mechanical stress. By suitable design, such a material may be incorporated into a device which induces in it a stress proportional to the physical quantity to be measured.\nForce Transducers The force transducer is the simplest type of piezoelectric transducer. The transmitter force \\(F\\) is applied directly across the crystal, which thus generates a corresponding charge \\(q\\), proportional to \\(F\\) (figure fig:piezo_force_transducer).\n\n Figure 12: Force transducer\n There exists an undesirable possibility of a cross sensitivity, i.e. an electrical output when there is zero force \\(F\\) but, say, a transverse or shear loading.\nAccelerometers In an accelerometer, transduction is indirect and is achieved using a seismic mass (figure fig:piezo_accelerometer). In this configuration, the force exerted on the crystals is the inertia force of the seismic mass (\\(m\\ddot{z}\\)). Thus, so long as the body and the seismic mass move together, the output of the transducer will be proportional to the acceleration of its body \\(x\\).\n\n Figure 13: Compression-type of piezoelectric accelerometer\n Analysis of a simple dynamical model for this device shows that the ratio \\(\\ddot{x}/\\ddot{z}\\) is effectively unity over a wide range of frequency from zero upwards until the first resonant frequency of the transducer.\nThere is also a problem of cross or transverse sensitivity of accelerometers which can result from imperfections in the crystal geometry and from interaction through the casing.\nSelection of accelerometers Accelerometer sensitivities vary between \\(1\\) and \\(\\SI{10000}{pC/g}\\). In general, we require as high a sensitivity as possible, however, the heavier the transducer, the lower is the transducer\u0026rsquo;s resonant frequency and thus the maximum working frequency. For accurate measurements, especially on complex structures which are liable to vibrate simultaneously in several directions, transducers with low transverse sensitivity (less than \\(\\SI{1}{%}\\)) should be selected.\nConditioning Amplifiers One of the advantages of the piezoelectric transducer is that it is an active device and does not require a power supply in order to function. However, this means that it cannot measure truly static quantities and so there is a low frequency limit below which measurements are not practical. This limit is usually determined not simply by the properties of the transducer itself, but also by those of the amplifiers used to boost the small electric charge that is generated by the crystals.\nTwo types of amplifier are available for this role that both have very high input impedance:\n Voltage amplifiers Charge amplifiers Voltage amplifiers tend to be simpler and to have a better signal/noise characteristic than charge amplifiers. However, they cannot be used at such low frequencies as the charge amplifiers and the overall gain is affected by the length and properties of the transducer cable whereas that for a charge amplifier it is effectively independent of the cable.\nAttachment of transducers The correct installation of transducers, especially accelerometers is important.\nThere are various means of fixing the transducers to the surface of the test structure, some more convenient than others. Some of these methods are illustrated in figure fig:transducer_mounting_types.\nShown on figure fig:transducer_mounting_response are typical high frequency limits for each type of attachment.\n\nTable 15: Accelerometer attachment characteristics Attachment methods Frequency response characteristics width=\\linewidth width=\\linewidth Location of transducers Another problem which may require the removal of the transducer to another location is the possibility that it is positioned at or very close to a node of one or more of the structure\u0026rsquo;s modes. In that case, it will be very difficult to make an effective measurement of that particular mode.\nMost modal test require a point mobility measurement as one of the measured FRF. This is hard to achieve as both force and response transducer should be at the same point on the structure. Three possibilities exist:\n Use an impedance head Place the force and acceleration transducers in line but on opposite sides of the structure Place the accelerometer alongside, as close as possible as the force gauge The third option is the most practical but is the one that presents the problem. Particular care is required to ensure that the measurement is really representative of a point mobility: the accelerometer should be as close as possible as the force gauge.\nDigital Signal Processing Objective The task of the spectrum analyser is to estimate the Fourier transform or Spectral densities of signals.\nWe here relate the two most relevant versions of the fundamental Fourier transformation between the time and frequency domains.\nIn its simplest form, this states that a function \\(x(t)\\), periodic in time \\(T\\), can be written as an infinite series:\n\\begin{equation} x(t) = \\frac{a_0}{2} + \\sum_{n=1}^\\infty \\left( a_n \\cos\\frac{2 \\pi n t}{T} + b_n \\sin\\frac{2 \\pi n t}{T} \\right) \\end{equation}\nwhere \\(a_i\\) and \\(b_i\\) can be computed from knowledge of \\(x(t)\\) via the relationships:\n\\begin{subequations} \\begin{align} a_n \u0026amp;= \\frac{2}{T} \\int_0^T x(t) \\cos \\left(\\frac{2 \\pi n t }{T} \\right) \\\\\\\nb_n \u0026amp;= \\frac{2}{T} \\int_0^T x(t) \\sin \\left(\\frac{2 \\pi n t }{T} \\right) \\end{align} \\end{subequations}\nIn the situation where \\(x(t)\\) is discretised and of finite duration, so that it is defined only at a set of \\(N\\) particular values of time (\\(t_k; k = 1, \\dots, N\\)), we can write a finite Fourier series for \\(k = 1, \\dots, N\\):\n\\begin{align*} x_k \u0026amp;= x(t_k) \\\\\\\n\u0026amp;= \\frac{a_0}{2} + \\sum_{n=1}^{N/2} \\left( a_n \\cos\\left(\\frac{2 \\pi n t_k}{T}\\right) + b_n \\sin\\left(\\frac{2 \\pi n t_k}{T}\\right) \\right) \\end{align*}\nThe coefficients \\(a_i\\) and \\(b_i\\) are the Fourier or Spectral coefficients for the function \\(x(t)\\) and they are often displayed in modulus and phase form:\n\\begin{subequations} \\begin{align} x_n \u0026amp;= \\sqrt{a_n^2 + b_n^2} \\\\\\\n\\phi_n \u0026amp;= t g^{-1} \\left( \\frac{-b_n}{a_n} \\right) \\end{align} \\end{subequations}\nBasics of the DFT In each case, the input signal is digitized and recorded as a set of \\(N\\) discrete values, evenly spaced in the period \\(T\\) during which the measurement is made.\nThere is a basic relationship between the sample length \\(T\\), the number of discrete values \\(N\\), the sampling rate \\(\\omega_s\\) and the range and resolution of the frequency spectrum.\nThe range of the spectrum is \\([0, \\omega_\\text{max}]\\) (\\(\\omega_\\text{max}\\) is called the Nyquist frequency), and the resolution of lines in the spectrum is \\(\\Delta_\\omega\\):\n\\begin{subequations} \\begin{align} \\omega_{\\text{max}} \u0026amp;= \\frac{\\omega_s}{2} = \\frac{1}{2} \\left( \\frac{2\\pi N}{T} \\right) \\\\\\\n\\Delta_\\omega \u0026amp;= \\frac{\\omega_s}{N} = \\frac{2\\pi}{T} \\end{align} \\end{subequations}\nVarious algorithms can be used to determine the spectral composition of the sampled signal, however, the most widely used is the Fast Fourier Transform. That however requires \\(N\\) to be an integral power of \\(2\\).\nAliasing Aliasing originates from the discretisation of the originally continuous time history. With this discretisation process, the existence of very high frequencies in the original signal may well be misinterpreted if the sampling rate is too slow. These high frequencies will be indistinguishable from genuine low frequency components as shown on figure fig:aliasing.\n\n Figure 14: The phenomenon of aliasing. On top: Low-frequency signal, On the bottom: High frequency signal\n A signal of frequency \\(\\omega\\) and one of frequency \\(\\omega_s-\\omega\\) are indistinguishable and this causes a distortion of the spectrum measured via the DFT.\nAs a result, the part of the signal which has frequency components above \\(\\omega_s/2\\) will appear reflected or aliased in the range \\([0, \\omega_s/2]\\). This is illustrated on figure fig:effect_aliasing.\n\nTable 16: Alias distortion of spectrum by DFT True spectrum of signal Indicated spectrum from DFT width=\\linewidth width=\\linewidth The solution of the problem is to use an anti-aliasing filter which subjects the original time signal to a low-pass, sharp cut-off filter. Because the filters used are inevitably less than perfect, and have a finite cut-off rate, it remains necessary to reject the spectral measurement in a frequency range approaching the Nyquist frequency \\(\\omega_s/2\\). Typically, the cut-off rate is set to \\(0.5 \\times \\omega_s/2\\) for simple filters and \\(0.8 \\times \\omega_s/2\\) for more advance filters. As a results, frequencies near \\(\\omega_s/2\\) may still be contaminated by the imperfected anti-aliasing.\nLeakage Leakage is a problem which is a direct consequence of the need to take only a finite length of time history coupled with the assumption of periodicity.\n\nTable 17: Sample length and leakage of spectrum Ideal signal Awkward signal width=\\linewidth width=\\linewidth The problem is illustrated on figure fig:leakage. In the first case (figure fig:leakage_ok), the signal is perfectly periodic and the resulting spectrum is just a single line at the frequency of the sine wave. In the second case (figure fig:leakage_nok), the periodicity assumption is not strictly valid as there is a discontinuity at each end of the sample. As a result, the spectrum produced for this case does not indicate the single frequency which the original time signal possessed. Energy has \u0026ldquo;leaked\u0026rdquo; into a number of the spectral lines close to the true frequency and the spectrum is spread over several lines.\nLeakage is a serious problem in many applications, ways of avoiding its effects are:\n Changing the duration of the measurement sample length to match the periodicity of the signal. This can only work if the signal is periodic and if the period can be determined Increasing the duration of the measurement period \\(T\\) so that the separation between the spectral lines (the frequency resolution) is finer. Although this will not totally remove the leakage effect Adding zeroes to the end of the measured sample (\u0026ldquo;zero padding\u0026rdquo;), thereby partially achieving the preceding result but without requiring more data Modifying the sampled signal obtained in such a way as to reduce the severity of the leakage effect. This effect is referred to as windowing Windowing Windowing involves the imposition of a prescribed profile on the time signal prior to performing the Fourier transform.\nThe profiles, or \u0026ldquo;windows\u0026rdquo; are generally depicted as a time function \\(w(t)\\) as shown in figure fig:windowing_examples.\n\n Figure 15: Different types of window. (a) Boxcar, (b) Hanning, (c) Cosine-taper, (d) Exponential\n The analyzed signal is then \\(x^\\prime(t) = x(t) w(t)\\). The result of using a window is seen in the third column of figure fig:windowing_examples.\nThe Hanning and Cosine Taper windows are typically used for continuous signals, such as are produced by steady periodic or random vibration, while the Exponential window is used for transient vibration applications where much of the important information is concentrated in the initial part of the time record.\nIn all cases, a re-scaling is required to compensated for the attenuation of the signals by the application of the window. However, if both response and excitation signals are subjected to the same window, and the results are used only to compute an FRF ratio, then the re-scaling is not necessary.\nFiltering The process of filtering has a direct parallel with windowing. Common filters are: low-pass, high-pass, band-limited, narrow-band, notch.\nImproving Resolution \nIncreasing transform size An immediate solution to this problem would be to use a larger transform. However, this may not be possible in practice.\nZero padding It may be possible to achieve the same resolution increase by adding a series of zeros to the short sample of the actual signal. Care must be taken in such a procedure are it will smooth the resulting spectrum but no additional information is included. This can be misleading in some cases. For instance where two peaks are close and result in only one peak in the smooth data.\nZoom The common solution to the need for finer frequency resolution is to zoom on the frequency range of interest and to concentrate all the spectral lines into a narrow band between \\(\\omega_\\text{min}\\) and \\(\\omega_\\text{max}\\).\nThere are various ways of achieving this result. The easiest way is to use a frequency shifting process coupled with a controlled aliasing device.\nSuppose the signal to be analyzed \\(x(t)\\) has a spectrum \\(X(\\omega)\\) has shown on figure fig:zoom_range, and that we are interested in a detailed analysis between \\(\\omega_1\\) and \\(\\omega_2\\).\nIf we apply a band-pass filter to the signal, as shown on figure fig:zoom_bandpass, and perform a DFT between \\(0\\) and \\((\\omega_2 - \\omega_1)\\), then because of the aliasing phenomenon described earlier, the frequency components between \\(\\omega_1\\) and \\(\\omega_2\\) will appear between \\(0\\) and \\((\\omega_2 - \\omega_1)\\) with the advantage of a finer resolution (see figure fig:zoom_result).\n\nTable 18: Controlled aliasing for frequency zoom Spectrum of the signal Band-pass filter width=\\linewidth width=\\linewidth \n Figure 16: Effective frequency translation for zoom\n When using zoom the measure FRF in a narrow frequency range, it is important to ensure that there is as little vibration energy as possible outside the frequency range of interest.\nAveraging When analyzing random vibrations signals, it is not sufficient to compute Fourier transforms (strictly, they do not exist for a random process) and we must instead obtain estimates for the spectral densities and correlation functions which are used to characterize this type of signal.\nAlthough these properties are computed from the Fourier transforms, there are additional considerations concerning their accuracy and statistical reliability which must be given due attention.\nGenerally, it is necessary to perform an averaging process, involving several individual time records, or samples, before a result is obtained which can be used with confidence. The two major considerations which determine the number of average required are:\n the statistical reliability the removal of spurious random noise from the signals An indication of the requirements from a statistical standpoint may be provided by the \u0026ldquo;statistical degrees of freedom\u0026rdquo; \\(\\kappa\\) which is provided by\n\\begin{equation} \\kappa = 2 B T_t \\end{equation}\nwhere \\(B\\) is the frequency bandwidth and \\(T_t\\) is the total time encompassing all data. \\(T_t = mT\\) for \\(m\\) samples each of \\(T\\) duration.\nAs a guide, this quantity \\(\\kappa\\) should be a minimum of \\(10\\) and should approach \\(100\\) for reasonably reliable estimates.\nAn other way to average is to apply the DFT on overlapping data. This is called overlap averaging. It is clear that \\(100\\) averages performed in this way cannot have the same statistical properties as would \\(100\\) completely independent samples. Nevertheless, the procedure is more effective than if all the data points are only used once. This manifests by producing smoother spectra.\nUse of different excitation signals There are three different classes of signals used for the excitation signals:\n Periodic: stepped sine, slow sine sweep, periodic, pseudo random, periodic random Transient: burst sine, burst random, chirp, impulse Random: true random, white noise, narrow-band random All of these are in widespread use, each having its own particular merits and drawbacks.\nStepped-Sine testing Stepped-sine testing comes from the classical method of measuring the FRF where a discrete sinusoidal with a fixed amplitude and frequency is used.\nIn order to encompass a frequency range of interest, the command signal frequency is stepped from one discrete value to another in such a way as to provide the necessary density of points in the FRF plot. In this technique, it is necessary to ensure that steady-state conditions have been attained before the measurements are made and this means delaying the start of the measurement process for a short while after a new frequency has been selected as there will be a transient response. The extent of the unwanted transient response will depend on:\n the proximity of the excitation frequency to the natural frequency of the structure the abruptness of the changeover from the previous command signal to the new one the lightness of the damping of the nearby structural modes In practice, this is only in the vicinity of a lightly damped resonance that the necessary delay becomes significant and extra attention is needed.\nOne of the advantages is the facility of taking measurements where it is required. For instance, the typical FRF curve has large region of relatively slow changes of level with frequency (away from resonances and anti-resonances) and in these regions it is sufficient to take measurements at relatively widely spaced frequency points.\nSlow Sine Sweep testing This is the traditional method of FRF measurement and involves the use of a sweep oscillator to provide a sinusoidal command signal with a frequency that varies slowly in the range of interest. It is necessary to check that progress through the frequency range is sufficiently slow to check that steady-state response conditions are attained. If excessive sweep rate is used, then distortions of the FRF plot are introduced as shown on figure fig:sweep_distortions.\n\n Figure 17: FRF measurements by sine sweep test\n One way of checking the suitability of a sweep rate is to make the measurement twice, once sweeping up and the second time sweeping down through the frequency range. If both curves obtained are the same, the sweep rate is not excessive.\nPeriodic Excitation This is very similar to a sine wave test methods, however the input signal contains not one but many frequencies of interest.\nThe method of computing the FRF is quite simple: the discrete Fourier transform is computed for both the force and response signals and the ratio of these transforms gives the FRF.\nTwo types of periodic signals are used:\n Deterministic: all the components are mixed with ordered amplitude and phase relationships (e.g. a square wave) Pseudo-random: generation of a random mixture of amplitudes and phases for the various frequency components The sequence is generated for a duration which equals the period of one sample in the analysis process, and is output repeatedly for several successive cycles. A particular advantage of this type of excitation is its exact periodicity in the analyser bandwidth, resulting in zero leakage errors and therefore requiring no windows to be applied before its spectral analysis.\nOne should not that when there is no need to use a window of any form, as it is the case for periodic signals, then it is very important not to use one.\nRandom Excitation FRF estimates using random excitation True random excitation are generally applied to the structure using a shaker.\nFor a such a random excitation, a different approach is required in order to determine the FRF.\nThe principle upon which the FRF is determined using random excitation relies on the following equations\n\\begin{subequations} \\begin{align} S_{xx}(\\omega) \u0026amp;= |H(\\omega)|^2 S_{ff}(\\omega)\\\\\\\nS_{fx}(\\omega) \u0026amp;= H(\\omega) S_{ff}(\\omega)\\\\\\\nS_{xx}(\\omega) \u0026amp;= H(\\omega) S_{xf}(\\omega) \\end{align} \\end{subequations}\nwhere\n \\(S_{xx}(\\omega)\\) and \\(S_{ff}(\\omega)\\) are the autospectra of the response and excitation signals \\(S_{xf}(\\omega)\\) is the cross spectrum between these two signals \\(H(\\omega)\\) is the FRF linking the quantities \\(x\\) and \\(f\\) Such parameters can never be measured exactly with only a finite length of data. However, we have the possibility of providing a cross check on the results by using the fact that the FRF can be estimated using two sets of data:\n\\begin{subequations} \\begin{align} H_1(\\omega) \u0026amp;= \\frac{S_{fx}(\\omega)}{S_{ff}(\\omega)} \\\\\\\nH_2(\\omega) \u0026amp;= \\frac{S_{xx}(\\omega)}{S_{xf}(\\omega)} \\end{align} \\end{subequations}\nWe now introduce a quantity \\(\\gamma^2\\) which is called the coherence and which is defined as \\[ \\gamma^2 = \\frac{H_1(\\omega)}{H_2(\\omega)}; \\quad 0 \\le \\gamma^2 \\le 1 \\]\nClearly, if all is well with the measurement, the coherence should be unity and we shall be looking for this condition in our test to reassure us that the measurements have been well made. Small values of the coherence means that the FRF estimate obtained is unreliable and one should determine its cause.\nNoisy Data There are several situations in which an imperfect measurement might be made, and a low coherence recorded. There may well be noise on one or other of the two signals which could degrade the measured spectra:\n Near resonance: this is likely to influence the force signal so that \\(S_{ff}(\\omega)\\) becomes vulnerable and \\(H_1(\\omega)\\) will suffer the most, \\(H_2(\\omega)\\) might be a better indicator in that case Near anti-resonance: it is the response signal which will suffer, making \\(S_{xx}(\\omega)\\) liable to errors and this is the opposite for \\(H_1(\\omega)\\) and \\(H_2(\\omega)\\) This is shown by the following equations:\n\\begin{subequations} \\begin{align} H_1(\\omega) \u0026amp;= \\frac{S_{fx}(\\omega)}{S_{ff}(\\omega) + S_{nn}(\\omega)} \\\\\\\nH_2(\\omega) \u0026amp;= \\frac{S_{xx}(\\omega) + S_{mm}(\\omega)}{S_{xf}(\\omega)} \\end{align} \\end{subequations}\nwhere \\(S_{mm}(\\omega)\\) and \\(S_{nn}(\\omega)\\) are the autospectra of the noise on the output and input, \\(m(t)\\) and \\(n(t)\\) respectively.\nOne suggestion which has been made is to define the FRF as the geometric mean of the two standard estimates:\n\\begin{equation} H_v(\\omega) = \\sqrt{H_1(\\omega) H_2(\\omega)} \\end{equation}\nLow coherence can arise when more than one excitation is applied to the structure. Another possibility is that the structure is not completely linear. Here again, the measured response cannot be completely attributed to the measured excitation.\nNoise-free FRF estimates A third estimator for the FRF can be defined in cases of random excitation, which is called the instrumental variable estimate, or \\(H_3(\\omega)\\).\nThis formula for the FRF is only possible if more than the usual two channels are being measured simultaneously. The formula is of interest because it does provide an estimate for the FRF which is unbiased by noise on either the force or the response transducer signals. The formula is:\n\\begin{equation} H_3(\\omega) = \\frac{S_{xv}(\\omega)}{S_{fv}(\\omega)} \\end{equation}\nwhere \\(v(t)\\) is a third signal in the system, such as the voltage supplied to the exciter, and it exploits the fact that noise on either input (force) or output (response) channels does not contaminate cross-spectral density estimates in the way that auto spectra are affected.\nLeakage It is known that a low coherence can arise in a measurement where the frequency resolution of the analyzer is not fine enough to describe adequately the very rapidly changing functions such as are encountered near resonance and anti-resonance on lightly-damped structures.\nThis is known as a bias error and leakage is often the most likely source of low coherence on lightly-damped structures as shown on figure fig:coherence_resonance.\n\n Figure 18: Coherence \\(\\gamma^2\\) and FRF estimate \\(H_1(\\omega)\\) for a lightly damped structure\n It can be shown that near resonance, \\(H_2(\\omega)\\) is a much more accurate representation of the true FRF than \\(H_1(\\omega)\\). When this situation is encountered, the best solution is usually to make a zoom measurement as explained previously.\nPostscript It is sometimes though that a poor coherence can be eliminated by taking many averages, but this is only possible if the reason for the low coherence is random noise which can be averaged out over a period of time. If the reason if more systematic than that, the averaging will not help.\nLastly, mention should be made here of a type of excitation referred to as \u0026ldquo;periodic random\u0026rdquo; which is, in fact, a combination of pseudo-random and \u0026ldquo;true\u0026rdquo; random. In this process, a pseudo-random (or periodic) excitation is generated and after a few cycles, a measurement of the input and the now steady-state response is made. Then, a different pseudo-random sequence is generated, the procedure repeated and the result treated as the second sample in what will develop to be an ensemble of random samples. The advantage over the simple random excitation is that due to the essential periodic nature of each of the pseudo-random samples, there are no leakage or bias errors in any of the measurements. However, the cost is an increase in the measurement time as one has to wait for the steady response condition.\nTransient excitation There are three types of excitation to be included in this section because they all share the same principle for their signals processing. They are:\n Burst excitation: a short section of signal Rapid sine sweep (chirp) excitation Impact excitation from a hammer blow The first and second of these generally require an attached shaker, but the last one can be implemented with a hammer.\nThe principle which all these signals share is that the excitation and the consequent response are completely contained within the single sample of measurement which is made. In practice, it is common to repeat the transient even more than once and to average the results to get the final result. How they differ is in the exact form of the transient excitation signal and in the nature of the repeated application.\nIn the burst type of signal, we have an excitation which is applied and analyzed as if it were a continuous signal, taking the successive samples for averaging one immediately after the other. For the chirp and impulse excitations, each individual sample is collected and processed before making the next one, and averaged.\nBurst excitation signals Burst excitation signals consist of short sections of an underlying continuous signal (which may be a sine wave, a sine sweep or a random signal), followed by a period of zero output, resulting in a response which shows a transient build-up followed by a decay (see figure fig:burst_excitation).\n\n Figure 19: Example of burst excitation and response signals\n The duration of the burst is under the control of the operator and it is selected so as to provide the ideal signal processing conditions, which are essentially that the response signal has just died away by the end of the measurement period. If this condition has not been attained (burst too long), then leakage error will result. If it has been reached well before the end of the period (burst too short), then the signal quality will be poor.\nThe final measurement will be the result of averaging several samples. In the case of the burst sine excitation, each sample would be expected to be identical so that the averaging serves only to remove noise on the signals. In the case of burst random, however, each individual burst will be different to the other and so in this case there is an element of averaging randomly varying behavior, a feature which is believed in some cases to enhance the measurement in the presence of weak non-linearities in the test structure.\nChirp excitation The chirp consist of a short duration signal which has the form shown in figure fig:chirp_excitation.\nThe frequency content of the chirp can be precisely chosen by the starting and finishing frequencies of the sweep.\n\n Figure 20: Example of chirp excitation and response signals\n Impulsive excitation The hammer blow produces an input and response as shown in the figure fig:impulsive_excitation.\nThis and the chirp excitation are very similar in the analysis point of view, the main difference is that the chirp offers the possibility of greater control of both amplitude and frequency content of the input and also permits the input of a greater amount of vibration energy.\n\n Figure 21: Example of impulsive excitation and response signals\n The frequency content of the hammer blow is dictated by the materials involved and is rather more difficult to control. However, it should be recorded that in the region below the first cut-off frequency induced by the elasticity of the hammer tip structure contact, the spectrum of the force signal tends to be very flat.\nOn some structures, the movement of the structure in response to the hammer blow can be such that it returns and rebounds on the hammer tip before the user has had time to move that out of the way. In such cases, the spectrum of the excitation is seen to have \u0026ldquo;holes\u0026rdquo; in it at certain frequencies (figure fig:double_hits).\n\n Figure 22: Double hits time domain and frequency content\n In order to perform the required Fourier analysis of all these cases of transient signals, an assumption is made that the data obtained from a single event can be regarded as representing one period of a quasi-periodic process. This means that if exactly the same input was applied \\(T\\) seconds after the first one, then exactly the same response would be observed.\nThis can be difficult to obtain especially for lightly damped structures as the signal will take long time to die away. In that case, one solution is to lengthen the period \\(T\\), but often this is not easily changeable. A window applied to the raw data provides a more practical solution. It is recommended to apply an exponential window to both signals. By choosing an appropriate exponential decay rate, the modified signal can be made to have effectively died away by the end of the prescribed measurement period, thereby satisfying the signal processing needs.\nHowever, one should be cautious when using such windowing as complex modes can be extracted from data treated this way.\nAn alternative to this problem is to use the zoom facility. One of the consequences of using a zoom is that the frequency band is reduced by a proportionate amount. However, by making a number (equal to the zoom factor) of separate measurements, each one for a different zoom band, it is possible to construct and FRF over the entire frequency range of interest with both the advantage of it being a window-free measurement and having a much finer frequency resolution.\nOne the pseudo-periodicity is established, a discrete Fourier series description can be obtained of both the input and response signals. The FRF can be computed from \\[ H(\\omega_k) = \\frac{X(\\omega_k)}{F(\\omega_k)} \\]\nAlternately, the force signals can be treated in the same way as for random excitation, and the formulae for \\(H_1(\\omega)\\) and \\(H_2(\\omega)\\) are used. However, care must be exercise when interpreting the results since the coherence function has different significance here.\nOne of the parameters indicated by the coherence is the statistical reliability of an estimate based on a number of averages of a random process. In the case of an FRF estimate obtained by treating the signals from a succession of nominally identical impacts as a random process, we must note that, strictly, each such sample is a deterministic, and not probabilistic, calculation and should contain no statistical uncertainty.\nThus, the main source for low coherence in this instance can only be leakage errors, non-linearity or high noise levels, not the same situation as for random excitation.\nAnother feature usually employed in transient testing is that of making a whole series of repeat measurements under nominally identical conditions and then averaging FRF estimates. The idea behind this is that any one measurement is likely to be contaminated by noise, especially in the frequency regions away from resonance where the response levels are likely to be quite low. While this averaging technique does indeed enhance the resulting plots, it may well be that several tens of samples need to be acquired before a smooth FRF plot is obtained and this will diminish somewhat any advantage of speed which is a potential attraction to the method.\nCalibration For all measurement processes, it is necessary to calibrate the equipment which is used. In the case of FRF measurements, there are two levels of calibration which should be made:\n The first of these is a periodic absolute calibration of individual transducers (of force and response) to check that their sensitivities are sensibly the same as those specified by the manufacturer. Any marked deviation could indicate internal damage The second type of calibration is one which can and should be carried out during each test, preferably twice, once at the outset and again at the end. This type of calibration is one which provides the overall sensitivity of the complete instrumentation system without examining the performance of the individual elements. The first type of calibration is quite difficult to make accurately as it requires independent measurement of the quantity of interest. The use of another transducer of the same type is not satisfactory as it is not strictly an independent measure. Optical devices can be used for the calibration of displacement sensors.\nOne of the reasons why the absolute type of calibration has not been further developed for this particular application is the availability of a different type of calibration which is particularly attractive and convenient. The parameters measured in a modal analysis are usually ratios between response and force levels, and so what is required is the ability to calibrate the whole measurement system. The voltage measured are related to the physical quantities (force and acceleration) by the sensitivities of the respective transducers:\n\\begin{subequations} \\begin{align} v_f \u0026amp;= E_f f \\\\\\\nv_{\\ddot{x}} \u0026amp;= E_{\\ddot{x}} \\ddot{x} \\end{align} \\end{subequations}\nAs mentioned, the difficulty is to determine the individual values for \\(E_f\\) and \\(E_{\\ddot{x}}\\). In practice, we only ever use the measured voltages as a ratio to obtain the FRF \\[ \\frac{\\ddot{x}}{f} = \\frac{v_{\\ddot{x}}}{v_f} \\frac{E_f}{E_{\\ddot{x}}} = E \\frac{v_{\\ddot{x}}}{v_f} \\] and so what is required is the ratio of the two sensitivities:\n\\begin{equation} E = \\frac{E_f}{E_{\\ddot{x}}} \\end{equation}\nThe overall sensitivity can be more readily obtained by a calibration process because we can easily make an independent measurement of the quantity now being measured: the ratio of response to force. Suppose the response parameter is acceleration, then the FRF obtained is inertance which has the units of \\(1/\\text{mass}\\), a quantity which can readily be independently measured by other means.\nFigure fig:calibration_setup shows a typical calibration setup.\n\n Figure 23: Mass calibration procedure, measurement setup\n A calibration procedure of this type has the distinct advantage that it is very easy to perform and can be carried out with all the measurement equipment. Thus, frequent checks on the overall calibration factors are strongly recommended, ideally as the beginning and end of each test.\nMass Cancellation It is very important the ensure that the force is measured directly at the point at which it is applied to the structure, rather than deducing its magnitude from the current flowing in the shaker coil or other similar indirect processes. This is because near resonance, the actual applied force becomes very small and is thus very prone to inaccuracy.\nThis same argument applies on a lesser scale as we examine the detail around the attachment to the structure, as shown in figure fig:mass_cancellation.\n\n Figure 24: Added mass to be cancelled (crossed area)\n Here, we see part of the structure, an accelerometer and a force transducer. The dashed line shows the plane at which the force is actually measured. Now, assuming that the extra material (shown by the cross hatching) behaves as a rigid mass \\(m^*\\), we can state that the force actually applied to the structure \\(f_t\\) is different from that measured by the transducer \\(f_m\\) by an amount dependent on the acceleration level at the drive point \\(\\ddot{m}\\) according to\n\\begin{equation} f_t = f_m - m^* \\ddot{x} \\end{equation}\nPhysically, what is happening is that some of the measured force is being \u0026ldquo;used\u0026rdquo; to move the additional mass so that the force actually applied to the structure is the measured force minus the inertia force of the extra mass.\nNow, the frequency response quantity we actually require is \\(A_t(\\omega)\\) although we have measurements of \\(\\ddot{X}\\) and \\(F_m\\) only, yielding to \\(A_m(\\omega)\\). If we express it in its real and imaginary parts, we obtain:\n\\begin{align*} \\text{Re}(F_t) \u0026amp;= \\text{Re}(F_m) - m^* \\text{Re}(\\ddot{X}) \\\\\\\n\\text{Im}(F_t) \u0026amp;= \\text{Im}(F_m) - m^* \\text{Im}(\\ddot{X}) \\end{align*}\nAnd\n\\begin{align*} \\text{Re}(1/A_t) \u0026amp;= \\text{Re}(1/A_m) - m^* \\\\\\\n\\text{Im}(1/A_t) \u0026amp;= \\text{Im}(1/A_m) \\end{align*}\nMass cancellation is important when the mass to be cancelled (\\(m^*\\)) is of the same order as the apparent mass of the modes of the structure under test, and this latter is a quantity which varies from point to point on the structure. If we are near an anti-node of a particular mode, then the apparent mass (and stiffness) will tend to be relatively small and here mass cancellation may be important.\nOne important feature of mass cancellation is that it can only be applied to point measurements (where the excitation and response are both considered at the same point). This arises because the procedure described above corrects the measured force for the influence of the additional mass at the drive point.\nIt should be noted that the transducer\u0026rsquo;s inertia is also effective not only in the direction of the excitation but also laterally and in rotation even though they cannot easily be compensated for.\nRotational FRF measurement Significance of rotational FRF data \\(\\SI{50}{%}\\) of all DOFs are rotations (as opposed to translations) and \\(\\SI{75}{%}\\) of all frequency response functions involve rotation DOFs. However, it is relatively rate the find reference to methods for measurements of rotational DOFs. This situation arises from a considerable difficulty which is encountered when trying to measure either rotational responses or excitations and also when trying to apply rotational excitation.\nMeasurement of Rotational FRFs using two or more transducers There are two problems to be tackled:\n measurement of rotational responses generation of measurement of rotation excitation The first of these is less difficult and techniques usually use a pair a matched conventional accelerometers placed at a short distance apart on the structure to be measured as shown on figure fig:rotational_measurement.\n\n Figure 25: Measurement of rotational response\n The principle of operation is that by measuring both accelerometer signals, the responses \\(x_0\\) and \\(\\theta_0\\) can be deduced by taking the mean and difference of \\(x_A\\) and \\(x_B\\):\n\\begin{subequations} \\begin{align} x_0 \u0026amp;= 0.5(x_A + x_B) \\\\\\\n\\theta_0 \u0026amp;= (x_A - x_B)/l \\label{eq:rotational_diff} \\end{align} \\end{subequations}\nThis approach permits us to measure half of the possible FRFs: all those which are of the \\(X/F\\) and \\(\\Theta/F\\) type. The others can only be measured directly by applying a moment excitation.\nFigure fig:rotational_excitation shows a device to simulate a moment excitation. First, a single applied excitation force \\(F_1\\) corresponds to a simultaneous force \\(F_0 = F_1\\) and a moment \\(M_0 = -F_1 l_1\\). Then, the same excitation force is applied at the second position that gives a force \\(F_0 = F_2\\) and moment \\(M_0 = F_2 l_2\\). By adding and subtracting the responses produced by these two separate excitations conditions, we can deduce the translational and rotational responses to the translational force and the rotational moment separately, thus enabling the measurement of all four types of FRF: \\(X/F\\), \\(\\Theta/F\\), \\(X/M\\) and \\(\\Theta/M\\).\n\n Figure 26: Application of moment excitation\n Then, the full \\(6 \\times 6\\) mobility matrix can be measured, however this procedure is quite demanding.\nOther methods for measuring rotational effects include specially developed rotational accelerometers and shakers.\nHowever, there is a major problem that is encountered when measuring rotational FRF: the translational components of the structure\u0026rsquo;s movement tends to overshadow those due to the rotational motions. For example, the magnitude of the difference in equation eq:rotational_diff is often of the order of \\(\\SI{1}{%}\\) of the two individual values which is similar to the transverse sensitivity of the accelerometers: potential errors in rotations are thus enormous.\nMulti-point excitation methods Multi-point excitation in general Multi-excitation methods for modal testing, called MIMO test methods, have been developed for FRF data which possesses a high degree of consistency. There are other benefits:\n the excitation of large structure with multiple points does more closely simulates their vibration environment in service than the single point excitation test the facility of detecting and identifying double or repeated modes the need to complete some tests in a very minimum of on-structure time Although the majority of modal tests are still performed using single-point excitation procedure, multi-point excitation is today well developed and is largely used for aerospace structures.\nThe practical implementation of the different methods currently used are briefly discussed.\nAppropriation or Normal mode testing We here seek establish vibration in a pure mode of vibration by careful selection of the locations and magnitudes of a set of sinusoidal excitation forces.\nThis works for undamped system\u0026rsquo;s natural frequencies, and in that case the force and response vectors are exactly in quadrature: \\[ i\\{X\\} = [H_\\text{Re}(\\omega) + i H_\\text{Im}(\\omega)] \\{F\\} \\]\nIt follows that this equation is valid only if \\(\\det |H_{\\text{Re}}(\\omega)| = 0\\) and this condition provides the basis of a method to locate the undamped system natural frequencies from measured FRF data.\nMulti-phase stepped-sine (MPSS) testing We here excite a MDOF system at a single sinusoidal frequency \\(a\\) by a set of \\(p\\) excitation forces \\(\\{F\\}e^{i\\omega t}\\) such that there is a set of steady-state responses \\(\\{X\\}e^{i\\omega t}\\). The two vectors are related by the system\u0026rsquo;s FRF properties as:\n\\begin{equation} \\{X\\}_{n\\times 1} = [H(\\omega)]_{n\\times p} \\{F\\}_{p\\times 1} \\end{equation}\nHowever, it is not possible to derive the FRF matrix from the single equation eq:mpss_equation, because there will be insufficient data in the two vectors (one of length \\(p\\), the other of length \\(n\\)) to define completely the \\(n\\times p\\) FRF matrix.\nWhat is required is to make a series of \\(p^\\prime\\) measurements of the same basic type using different excitation vectors \\(\\{F\\}_i\\) that should be chosen such that the forcing matrix \\([F]_{p\\times p^\\prime} = [\\{F\\}_1, \\dots, \\{F\\}_p]\\) is non-singular. This can be assured if:\n there are at least as many vectors as there are forces: \\(p^\\prime \u0026gt; p\\) the individual force vectors are linearly independent of each other A second matrix is also constructed containing the response vectors \\([X]_{n\\times p^\\prime} = [\\{X\\}_1, \\dots, \\{X\\}_{p^\\prime}]\\). Now, these two collections of measured data can be used to determine the required FRF matrix:\n\\begin{equation} [H(\\omega)]_{n\\times p} = [X]_{n\\times p^\\prime} [F]_{p^\\prime \\times p}^+ \\end{equation}\nwhere \\(+\\) denotes the generalized inverse of the forcing matrix.\nMulti-point random (MPR) testing Concept In this method, advantage is taken of the incoherence of several uncorrelated random excitations which are applied simultaneously at several points. Then, the need to repeat the test several times, as was necessary for the MPSS method, is avoided.\nThe purpose of this methods is to obtain the FRF data in an optimal way and to reduce the probability of introducing systematic errors to the FRF measurements.\nLet\u0026rsquo;s consider the simplest form of a multi excitation as that of a system excited by two simultaneous forces \\(f_1(t)\\) and \\(f_2(t)\\) where the response \\(x_i(t)\\) is of particular interest. We can derive expressions for the required FRF parameters functions of the auto and cross spectral densities between of three parameters of interest:\n\\begin{subequations} \\begin{align} H_{i1}(\\omega) \u0026amp;= \\frac{S_{1i}S_{22} - S_{2i}S_{12}}{S_{11}S_{22} - S_{12}S_{21}}\\\\\\\nH_{i1}(\\omega) \u0026amp;= \\frac{S_{2i}S_{11} - S_{1i}S_{21}}{S_{11}S_{22} - S_{12}S_{21}} \\end{align} \\end{subequations}\nThese expressions can be used provided that \\(S_{11}S_{22}\\neq |S_{12}|^2\\) which is equivalent of that the two excitation forces must not be fully correlated.\nGeneral formulation In practice, the method is applied using different numbers of exciters, and several response points simultaneously. We have that\n\\begin{equation} [H_{xf}(\\omega)]_{n\\times p} = [S_{xf}(\\omega)]_{n\\times p} [S_{ff}(\\omega)]_{p\\times p}^{-1} \\end{equation}\nwhere it can be seen that the matrix of spectral densities for the forces \\([S_{ff}(\\omega)]_{p\\times p}\\) must be non singular. Thus, care must be taken in practice to ensure this condition, noting that it is the applied forces and not the signal sources which must meet the requirement.\nIn practice, this is difficult to obtain as even if the input signals to the exciters\u0026rsquo; amplifiers are uncorrelated, the forces applied to the structure will certainly not be. This is particularly true near the resonances as the dynamic response is dominated by the one mode which is independent of the actual force pattern.\nCoherence in MPR measurements In a similar way in which we defined coherence for the SISO system, we can make use of the same concepts for a MIMO system. During a MIMO test, we basically measure three matrices: \\[ [S_{ff}(\\omega)]; \\ [S_{xx}(\\omega)]; \\ [S_{fx}(\\omega)] \\] Then, we can derive an estimate for the FRF matrix: \\[ H_1(\\omega)^T = [S_{ff}(\\omega)]^{-1} [S_{fx}(\\omega)] \\] and then compute an estimate for the autospectrum of the response from:\n\\begin{align*} [\\tilde{S}_{xx}(\\omega)] \u0026amp;= [H_1^*(\\omega)] [S_{fx}(\\omega)] \\\\\\\n\u0026amp;= [S_{xf}(\\omega)] [S_{ff}(\\omega)]^{-1} [S_{fx}(\\omega)] \\end{align*}\nNow, by comparing the estimated response spectrum \\([\\tilde{S}_{xx}(\\omega)]\\) with the actual measurement \\([S_{xx}(\\omega)]\\), we obtain a formula for the multiple coherence between the two parameters \\(\\{f(t)\\}\\) and \\(\\{x(t)\\}\\):\n\\begin{equation*} \\tcmbox{[\\gamma^2(\\omega)] = [S_{xx}(\\omega)]^{-1} [S_{xf}(\\omega)] [S_{ff}(\\omega)]^{-1} [S_{fx}(\\omega)]} \\end{equation*}\nMultiple-reference impact tests This class of hammer excitation is referred to as Multi-reference Impact Tests (MRIT). Typically, three response references are measured (often, the \\(x\\), \\(y\\) and \\(z\\) components at the response measurement location) every time a hammer blow is applied to the structure.\nFRF data collected by performing a test in this way will be the equivalent of exciting the structure at three points simultaneously while measuring the response at each of the \\(n\\) points of interest. Thus, in the same sense that a multiple-input test is a multi-reference measurement (measuring several columns of the FRF matrix), so too is the MRIT since it provides a multi-reference measurement including several rows of the same FRF matrix.\nModal Parameter Extraction Methods Introduction Introduction to the concept of modal analysis This section describes some of the many procedures that are used for Modal Analysis and attempts to explain their various advantages and limitations. These methods generally consists of curve-fitting a theoretical expression for an individual FRF to the actual measured data.\n part of single FRF curve complete curve encompassing several resonances a set of many FRF plots all on the same structure In every case, the task is basically to find the coefficients in a theoretical expression for the FRF which then most closely matches the measured data.\nThis phase of the modal test procedure is often referred to as modal parameter extraction or modal analysis.\nTypes of modal analysis A majority of current curve-fitting methods operate on the response characteristics in the frequency domain, but there are other procedures which perform a curve-fit in the time domain. These latter methods are based on the fact that the Impulse Response Function is another characteristic function of the system.\nModal analysis methods can be classified into a series of different groups.\n It depends on the domain in which the analysis is performed:\n frequency domain of FRFs Time domain of IRFs Next, it is appropriate to consider the frequency range over which each individual analysis will be performed. Either a single mode is to be extracted at a time, or several:\n SDOF methods MDOF methods A further classification relates to the number of FRFs which are to be included in a single analysis:\n SISO: the FRF are measured individually SIMO: a set of FRF are measured simultaneously at several response points but under the same single-point excitation. This describes the FRFs in a column or row of the FRF matrix MIMO: the responses at several points are measured simultaneously while the structure is excited at several points, also simultaneously Difficulties due to damping Many of the problems encounter in practice are related to the difficulties associated with the reliable modeling of damping effects. In practice, we are obliged to make certain assumptions about what model is to be used for the damping effects. Sometimes, significant errors can be obtained in the modal parameter estimates (and not only in the damping parameters), as a result of a conflict between the assumed damping behavior and that which actually occurs in reality.\nAnother difficulty is that of real modes and complex modes. In practice, all modes of practical structures are expected to be complex, although in the majority of cases, such complexity will be very small, and often quite negligible.\nDifficulties of model order One problem is determining how many modes are there in the measured FRF.\nThis question is one of the most difficult to resolve in many practical situations where a combination of finite resolution and noise in the measured data combined to make the issue very unclear.\nMany modern modal analysis curve-fitters are capable of fitting any FRF of almost any order, however, it might fit fictitious modes introduced in the analysis process. Correct differentiation between genuine and fictitious modes remains a critical task in many modal tests.\nPreliminary checks of FRF data Visual Checks Before starting the modal analysis of any measured FRF data, it is always important to do a few simple checks in order to ensure that no obvious error is present in the data. Most of the checks are made using a log log plot of the modulus of the measured FRF.\nLow-frequency asymptotes If the structure is grounded, then we should clearly see a stiffness-like characteristic, appearing as asymptotic to a stiffness line at the lowest frequencies (below the first resonance) and the magnitude of this should correspond to that of the static stiffness of the structure at the point in question.\nIf the structure has been tested in a free condition, then we should expect to see a mass-line asymptote where its magnitude may be deduced from purely rigid-body considerations.\nDeviations from this expected behavior may be caused by the frequency range of measurement not extending low enough to see the asymptotic trend, or they may indicate that the required support conditions have not in fact been achieved.\nHigh-frequency asymptotes In the upper end of the frequency range, is it sometimes found (especially on point mobility measurements), that the curve becomes asymptotic to a mass line or, more usually to a stiffness line. Such situation can result in considerable difficulties for the modal analysis process and reflects a situation where the excitation is being applied at a point of very high mass of flexibility. Then, modal parameters are difficult to extracts as they are overwhelmed by the dominant local effects.\nIncidence of anti-resonances For a point FRF, there must be antiresonance after each resonances, while for transfer FRFs between two points well-separated on the structure, we should expect more minima than antiresonances.\nA second check to be made is that the resonance peaks and the antiresonances exhibit the same sharpness on a log-log plot:\n Frequency resolution limitation will cause blunt resonances Inadequate vibration levels results in poor definition of the antiresonance regions Overall shape of FRF skeleton The relative position of the resonance, antiresonances and ambient levels of the FRF curve can give information on the validity of the data. This will be further explained.\nNyquist plot inspection When plotting the FRF data in a Nyquist format, we expect that each resonance traces out at least part of a circular arc, the extent of which depends largely on the interaction between adjacent modes. For a system with well-separated modes, it is to be expected that each resonance will generate the major part of a circle, but when modal interference increases, only small segments will be identifiable. However, within these bounds, the Nyquist plot should ideally exhibit a smooth curve, and failure to do so may be an indication of a poor measurement technique.\nAssessment of multiple-FRF data set using SVD When several FRFs are acquired (either from SIMO or MIMO data), the Singular Value Decomposition has proved to be a very useful tool to check the quality, reliability and order of the data.\nThe set of FRF which are to be assessed is stored in a series of vectors \\(\\{H_{jk}(\\omega)\\}\\) each of which contains the values for one FRF at all measured frequencies \\(\\omega = \\omega_1, \\dots, \\omega_L\\). These vectors are assembled into a matrix \\[ [A]_{L\\times np} = [\\{H_{11}(\\omega)\\}_{L\\times 1} \\{H_{21}(\\omega)\\}_{L\\times 1} \\dots \\{H_{np}(\\omega)\\}_{L\\times 1} ] \\] where \\(n\\) and \\(p\\) represent the number of measured DOFs and the number of excitation points. \\(L\\) represents the number of frequencies at which the FRF data are defined.\n \\begin{equation} [A]_{L\\times np} = [U]_{L\\times L} [\\Sigma]_{L\\times np} [V]_{np\\times np}^T \\end{equation}\n The singular values \\(\\sigma_1, \\dots, \\sigma_w\\) describes the amplitude information Number of non-zero singular values represents the order of the system (i.e. the number of independent modes of vibration which effectively contribute to the measured FRFs) The columns of \\([U]\\) represent the frequency distribution of these amplitudes The columns of \\([V]\\) represent their spatial distribution From the SVD, we can compute a new matrix \\([P]_{L\\times np}\\) which is referred to as the Principal Response Function (PRF) matrix. Each column of the PRF contains a response function corresponding to one of the original FRFs:\n\\begin{equation} [U]_{L\\times L} [\\Sigma]_{L\\times np} = [P]_{L\\times np} \\end{equation}\nThen, each PRF is, simply, a particular combination of the original FRFs, and thus each FRF contains all the essential information included in those FRFs (eigenvalues for instance).\n On example of this form of pre-processing is shown on figure fig:PRF_numerical for a numerically-simulation test data, and another in figure fig:PRF_measured for the case of real measured test data.\nThe second plot fig:PRF_numerical_svd helps to determine the true order of the system because the number of non-zero singular values is equal to this parameter. The third plot fig:PRF_numerical_PRF shows the genuine modes distinct from the computational modes.\n It can be seen that the PRFs tend to tall into two groups:\n The most prominent are a set of response function, each of which has a small number of dominant peaks. It represents the physical modes of the system. The lower group shows less distinct and clear-cut behavior. It represents the noise or computational modes present in the data. The two groups are usually separated by a clear gap (depending of the noise present in the data):\n If such gap is present, then is will be possible to extract the properties of the \\(m\\) modes which are active in the measured responses over the frequency range covered. If not, then it may be impossible to perform a successful modal parameter extraction. \nTable 19: FRF and PRF characteristics for numerical model FRF Singular Values PRF width=\\linewidth width=\\linewidth width=\\linewidth \nTable 20: FRF and PRF characteristics for measured model FRF Singular Values PRF width=\\linewidth width=\\linewidth width=\\linewidth Mode Indicator Functions (MIFs) General The Mode Indicator Functions are usually used on \\(n\\times p\\) FRF matrix where \\(n\\) is a relatively large number of measurement DOFs and \\(p\\) is the number of excitation DOFs, typically 3 or 4.\nIn these methods, the frequency dependent FRF matrix is subjected to an eigenvalue or singular value decomposition analysis which thus yields a small number (3 or 4) of eigen or singular values, these also being frequency dependent.\nThese methods are used to determine the number of modes present in a given frequency range, to identify repeated natural frequencies and to pre process the FRF data prior to modal analysis.\nComplex mode indicator function (CMIF) The Complex Mode Indicator Function is defined simply by the SVD of the FRF (sub) matrix.\n This decomposition, is defined as\n\\begin{align*} [H(\\omega)]_{n\\times p} \u0026amp;= [U(\\omega)]_{n\\times n} [\\Sigma(\\omega)]_{n\\times p} [V(\\omega)]_{p\\times p}^H\\\\\\\n[CMIF(\\omega)]_{p\\times p} \u0026amp;= [\\Sigma(\\omega)]_{p\\times n}^T [\\Sigma(\\omega)]_{n\\times p} \\end{align*}\n The actual mode indicator values are provided by the squares of the singular values and are usually plotted as a function of frequency in logarithmic form as shown in figure fig:mifs:\n Natural frequencies are indicated by large values of the first CMIF (the highest of the singular values) double or multiple modes by simultaneously large values of two or more CMIF. Associated with the CMIF values at each natural frequency \\(\\omega_r\\) are two vectors:\n the left singular vector \\(\\{U(\\omega_r)\\}_1\\) which approximates the mode shape of that mode the right singular vector \\(\\{V(\\omega_r)\\}_1\\) which represents the approximate force pattern necessary to generate a response on that mode only \n Figure 27: Complex Mode Indicator Function (CMIF)\n In addition to identifying all the significant natural frequencies, the CMIF can also be used to generate a set of enhanced FRFs from the formula:\n\\begin{equation} [EFRF(\\omega)]_{n\\times p} = [H(\\omega)]_{n\\times p} [V(\\omega)]_{p\\times p} \\end{equation}\nThere is one non-trivial EFRF for each mode, the result of which is an almost SDOF characteristic response function which is then readily amenable to modal analysis by the simplest of methods.\nAs in the previous case, these modified FRFs are simply linear combinations of the original measured data and, as such, contain no more and no less information than in their original form.\nHowever, such an approach lends itself to a very reliable extraction of the global properties (eigenvalues) for the measured FRF data set which can then be re-visited in a second stage to determine the local properties (mode shapes) for all the measured DOFs.\n Other MIFs There are multiple variants on the mode indicator function concepts. Some use the eigenvalue decomposition instead of the singular value decomposition. Two are worth mentioning: the Multivariable Mode Indicator Function (MMIF) and the Real Mode Indicator Function (RMIF).\nSDOF Modal Analysis Methods Review of SDOF modal analysis methods The \u0026ldquo;SDOF\u0026rdquo; approach does not imply that the system being modeled is reduced to a single degree of freedom, that that just one resonance is considered at a time.\nThere are limitations to such simple approach, the principal one being that very close modes cannot easily be separated.\nThere are several implementations of the basic concept of SDOF analysis, ranging from the simple peak-picking method, through the classic circle-fit approach to more automatic algorithms such as the inverse FRF \u0026ldquo;he-fit\u0026rdquo; method and the general least-squares methods.\nAs the name implies, the method exploits the fact that in the vicinity of a resonance, the behavior of the system is dominated by a single mode (the magnitude is dominated by one of the terms in the series).\nThe general expression of the receptance FRF\n\\begin{equation} \\alpha_{jk}(\\omega) = \\sum_{s=1}^N \\frac{{}_sA_{jk}}{\\omega_s^2 - \\omega^2 + i \\eta_s \\omega_s^2} \\end{equation}\ncan be rewritten as:\n\\begin{equation} \\alpha_{jk}(\\omega) = \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} + \\sum_{\\substack{s=1\\s \\neq r}}^N \\frac{{}_sA_{jk}}{\\omega_s^2 - \\omega^2 + i \\eta_s \\omega_s^2} \\end{equation}\n Now, the SDOF assumption is that for a small range of frequency in the vicinity of the natural frequency of mode \\(r\\), \\(\\alpha_{jk}(\\omega)\\) can be approximated as\n\\begin{equation} \\alpha_{jk}(\\omega)_{\\omega\\approx\\omega_r} = \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} + {}_rB_{jk} \\end{equation}\n This does not mean that the other modes are unimportant or negligible (their influence can be considerable), but rather that their combined effect can be represented as a constant term around this resonance.\nSDOF Modal Analysis I - Peak-Amplitude method In this method, it is assumed that close to one local mode, any effects due to the other modes can be ignored. This is a method which works adequately for structures whose FRF exhibit well separated modes. This method is useful in obtaining initial estimates to the parameters.\nThe peak-picking method is applied as follows (illustrated on figure fig:peak_amplitude):\n First, individual resonance peaks are detected on the FRF plot and the maximum responses frequency \\(\\omega_r\\) is taken as the natural frequency of that mode\n Second, the local maximum value of the FRF \\(|\\hat{H}|\\) is noted and the frequency bandwidth of the function for a response level of \\(|\\hat{H}|/\\sqrt{2}\\) is determined. The two points thus identified as \\(\\omega_b\\) and \\(\\omega_a\\) are the \u0026ldquo;half power points\u0026rdquo;\n The damping of the mode in question can now be estimated from of the following formulae:\n\\begin{subequations} \\begin{align} \\eta_r \u0026amp;= \\frac{\\omega_a^2 - \\omega_b^2}{2 \\omega_r^2} \\approx \\frac{\\Delta\\omega}{\\omega_r} \\\\\\\n2\\xi_r \u0026amp;= \\eta_r \\end{align} \\end{subequations}\n We now obtain an estimate for the modal constant of the mode being analyzed by assuming that the total response in this resonant region is attributed to a single term in the general FRF series:\n\\begin{equation} |\\hat{H}| = \\frac{A_r}{\\omega_r^2 \\eta_r} \\Leftrightarrow A_r = |\\hat{H}| \\omega_r^2 \\eta_r \\end{equation}\n It must be noted that the estimates of both damping and modal constant depend heavily on the accuracy of the maximum FRF level \\(|\\hat{H}|\\) which is difficult to measure with great accuracy, especially for lightly damped systems. Only real modal constants and thus real modes can be deduced by this method.\n\n Figure 28: Peak Amplitude method of modal analysis\n Alternatives of this method can be applied using the real part of the receptance FRF instead of the modulus plot.\nSDOF Modal Analysis II - Circle Fit Method Properties of the modal circle MDOF systems produce Nyquist plots of FRF data which include sections of near circular arcs corresponding to the regions near the natural frequencies. This characteristic provides the basic of the \u0026ldquo;SDOF circle-fit method\u0026quot;.\nWe here use structural damping and we use the receptance form of FRF data as this will produces an exact circle in a Nyquist plot. However, if it is required to use a model incorporating viscous damping, then the mobility version of the FRF data should be used.\nIn the case of a system assumed to have structural damping, the basic function with which we are dealing is\n\\begin{equation} \\alpha(\\omega) = \\frac{1}{\\omega_r^2\\left( 1 - \\left(\\omega/\\omega_r\\right)^2 + i\\eta_r \\right)} \\end{equation}\nsince the only effect of including the modal constant \\({}_rA_{jk}\\) is to scale the size of the circle by \\(|{}_rA_{jk}|\\) and to rotate it by \\(\\angle {}_rA_{jk}\\). A plot of the quantity \\(\\alpha(\\omega)\\) is given in figure fig:modal_circle.\n\nTable 21: Modal Circle Properties \\(\\omega_b\\) and \\(\\omega_a\\) points width=\\linewidth width=\\linewidth For any frequency \\(\\omega\\), we have the following relationship:\n\\begin{subequations} \\begin{align} \\tan \\gamma \u0026amp;= \\frac{\\eta_r}{1 - (\\omega/\\omega_r)^2}\\\\\\\n\\tan(\\SI{90}{\\degree}-\\gamma) \u0026amp;= \\tan\\left(\\frac{\\theta}{2}\\right) = \\frac{1 - (\\omega/\\omega_r)^2}{\\eta_r} \\label{eq:modal_circle_tan} \\end{align} \\end{subequations}\nFrom eq:modal_circle_tan, we obtain:\n\\begin{equation} \\omega^2 = \\omega_r^2 \\left(1 - \\eta_r \\tan\\left(\\frac{\\theta}{2}\\right) \\right) \\end{equation}\nIf we differentiate eq:modal_circle_omega with respect to \\(\\theta\\), we obtain:\n\\begin{equation} \\frac{d\\omega^2}{d\\theta} = \\frac{-\\omega_r^2 \\eta_r}{2} \\frac{\\left(1 - (\\omega/\\omega_r)^2\\right)^2}{\\eta_r^2} \\end{equation}\nThe reciprocal of this quantity is a measure of the rate at which the locus sweeps around the circular arc. It may be seen to reach a maximum value when \\(\\omega=\\omega_r\\):\n\\begin{equation} \\tcmbox{\\frac{d}{d\\omega} \\left(\\frac{d\\omega^2}{d\\theta}\\right) = 0 \\text{ when } \\omega_r^2 - \\omega^2 = 0} \\end{equation}\nIt may also be seen that an estimate of the damping is provided by the sweep rate:\n\\begin{equation} \\tcmbox{\\left(\\frac{d\\theta}{d\\omega^2}\\right)_{\\omega=\\omega_r} = -\\frac{2}{\\omega_r^2 \\eta_r}} \\end{equation}\nSuppose now we have two specific points on the circle, one corresponding to a frequency \\(\\omega_b\\) below the natural frequency and the other one \\(\\omega_a\\) above the natural frequency. Referring to figure fig:modal_circle_bis, we can write:\n\\begin{subequations} \\begin{align} \\tan\\left(\\frac{\\theta_b}{2}\\right) \u0026amp;= \\frac{1 - (\\omega_b/\\omega_r)^2}{\\eta_r}\\\\\\\n\\tan\\left(\\frac{\\theta_a}{2}\\right) \u0026amp;= \\frac{(\\omega_a/\\omega_r)^2 - 1}{\\eta_r} \\end{align} \\end{subequations}\nFrom these two equations, we can obtain an expression for the damping of the mode:\n\\begin{equation} \\tcmbox{\\eta_r = \\frac{\\omega_a^2 - \\omega_b^2}{\\omega_r^2 \\left(\\tan(\\theta_a/2) + \\tan(\\theta_b/2)\\right)}} \\end{equation}\nwhich is an exact expression and applies for all levels of damping.\nIf we take two points for which \\(\\theta_a = \\theta_b = \\SI{90}{\\degree}\\), we obtain:\n\\begin{subequations} \\begin{align} \\eta_r \u0026amp;= \\frac{\\omega_2^2 - \\omega_1^2}{2 \\omega_r^2}\\\\\\\n\\eta_r \u0026amp;= \\frac{\\omega_2 - \\omega_1}{\\omega_r} \\text{ for light damping} \\end{align} \\end{subequations}\nWhen scaled by a modal constant \\({}_rA_{jk}\\) added in the numerator, the diameter of the circle will be \\[ {}_rD_{jk} = \\frac{\\left|{}_rA_{jk}\\right|}{\\omega_r^2 \\eta_r} \\] and the whole circle will be rotated so that the principal diameter (the one passing through the natural frequency point) is oriented at an angle \\(\\arg({}_rA_{jk})\\) to the negative Imaginary axis.\nFor SDOF system with viscous damping, rather than structural damping, the mobility is \\[ Y(\\omega) = \\frac{i\\omega}{(k - \\omega^2 m) + i \\omega c} \\]\nAnd we have\n\\begin{equation} \\tan\\left(\\frac{\\theta}{2}\\right) = \\frac{1 - (\\omega/\\omega_r)^2}{2 \\xi \\omega/\\omega_r} \\end{equation}\nFrom points at \\(\\omega_a\\) and \\(\\omega_b\\), we obtain\n\\begin{subequations} \\begin{align} \\xi \u0026amp;= \\frac{\\omega_a^2 - \\omega_b^2}{2 \\omega_r \\left( \\omega_a \\tan(\\theta_a/2) + \\omega_b \\tan(\\theta_b/2) \\right)}\\\\\\\n\u0026amp;= \\frac{\\omega_a - \\omega_b}{\\omega_r \\left( \\tan(\\theta_a/2) + \\tan(\\theta_b/2) \\right)} \\text{ for light damping} \\end{align} \\end{subequations}\nFinally, selecting two points for which \\(\\theta_a = \\theta_b = \\SI{90}{\\degree}\\):\n\\begin{equation} \\xi = \\frac{\\omega_2 - \\omega_1}{2 \\omega_r} \\end{equation}\nCircle-fit analysis procedure The sequence is:\n Select points to be used. Fit circle, calculate quality of fit. It is generally done by a least-square algorithm. Then we obtain the center and radius of the circle and the quality factor is the mean square deviation of the chosen points from the circle. Locate natural frequency, obtain damping estimate. The rate of sweep through the region is estimated numerically and the frequency at which it reaches the maximum is deduced. At the same time, an estimate of the damping is derived using eq:estimate_damping_sweep_rate. A typical example is shown on figure fig:circle_fit_natural_frequency. Calculate multiple damping estimates, and scatter. A set of damping estimates using all possible combination of the selected data points are computed using eq:estimate_damping. Then, we can choose the damping estimate to be the mean value. We also look at the distribution of the obtained damping estimates as is permits a useful diagnostic of the quality of the entire analysis: Good measured data should lead to a smooth plot of these damping estimates, any roughness of the surface can be explained in terms of noise in the original data. However, any systematic distortion of the plot is almost certainly caused by some form of error in the data, in the analysis or in the assumed behavior of the system. Determine modal constant modulus and argument. The magnitude and argument of the modal constant is determined from the diameter of the circle and from its orientation relative to the Real and Imaginary axis. \n Figure 29: Location of natural frequency for a Circle-fit modal analysis\n Then, the theoretically regenerated FRF can be plotted against the original measured data for comparison. In order to determines the contribution of other modes on the resonance of mode \\(r\\), the distance from the top of the principal diameter to the origin has to be measured and is equal to \\({}_rB_{jk}\\).\nSDOF Modal Analysis III - Inverse or Line-fit method Properties of inverse FRF plots The original version of this method uses the fact that a function which generates a circle when plotted in the complex plane will, when plotted as a reciprocal, trace out a straight line. Thus, if we were to plot the reciprocal of receptance of a SDOF system with structural damping, we would find that in the Argand diagram it produces a straight line:\n\\begin{subequations} \\begin{align} \\alpha(\\omega) \u0026amp;= \\frac{(k - \\omega^2 m) - i d}{(k - \\omega^2 m)^2 + d^2}\\\\\\\n\\frac{1}{\\alpha(\\omega)} \u0026amp;= (k - \\omega^2 m) + i d \\end{align} \\end{subequations}\nFirst, a least squares best-fit straight line is constructed through the data points and an estimate for the damping parameters is immediately available from the intercept of the line with the Imaginary axis. Furthermore, an indication of the reliability of that estimate may be gained from the nature of the deviations of the data points from the line itself. We can here determine whether the damping is structural (imaginary part constant with frequency) or viscous (imaginary part linear with frequency).\nThen, a second least squares operation is performed, this time on the deviation between the real part of the measured data points and that of the theoretical model. Resulting from this, we obtain estimates for the mass and stiffness parameters.\nIt should be noted that this approach is best suited to systems with real modes and to relatively well-separated modes.\nGeneral inverse analysis method It has been shown that if a purely SDOF system FRF is plotted in this way, then both plots demonstrate straight lines, and separately reveal useful information about the mass, stiffness and damping properties of the measured system.\nThe inverse FRF of a MDOF system is not as convenient as SDOF system as:\n\\begin{align*} H_{jk}^{-1} (\\omega) \u0026amp;= \\frac{1}{\\sum (k - \\omega^2 m) + i \\omega c}\\\\\\\n\u0026amp;\\neq \\sum \\frac{1}{(k - \\omega^2 m) + i \\omega c} \\end{align*}\nThus, in order to determine the modal parameters of a MDOF system using inverse method, some modifications to the basic formulation must be found.\nWe start with the basic formula for SDOF analysis: \\[ \\alpha_{jk}(\\omega)_{\\omega\\simeq\\omega_r} \\simeq \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} + {}_rB_{jk} \\] We can note that the presence of the \\({}_rB_{jk}\\) term is problematic for the inverse plot.\nThe trick is to define a new FRF term \\(\\alpha^\\prime_{ik}(\\omega)\\) which is the difference between the actual FRF and the value of the FRF at one fixed frequency \\(\\Omega\\) in the range of interest called \u0026ldquo;fixing frequency\u0026quot;: \\[ \\alpha^\\prime_{jk}(\\omega) = \\alpha_{jk}(\\omega) - \\alpha_{jk}(\\Omega) \\] from which the inverse FRF parameter that we shall use for the modal analysis \\(\\Delta(\\omega)\\), can be defined as:\n\\begin{align*} \\Delta(\\omega) \u0026amp;= (\\omega^2 - \\Omega^2)/\\alpha^\\prime_{jk}(\\omega)\\\\\\\n\u0026amp;= \\text{Re}(\\Delta) + i \\text{Im}(\\Delta) \\end{align*}\nIt can be seen that \\[ \\text{Re}(\\Delta) = m_R \\omega^2 + c_R; \\quad \\text{Im}(\\Delta) = m_I \\omega^2 + c_I \\] and that\n\\begin{align*} m_R \u0026amp;= a_R(\\Omega^2 - \\omega_r^2) - b_r (\\omega_r^2 \\eta_r) \\\\\\\nm_I \u0026amp;= -b_R(\\Omega^2 - \\omega_r^2) - a_r (\\omega_r^2 \\eta_r) \\\\\\\n{}_rA_{jk} \u0026amp;= a_R + i b_r \\end{align*}\nThe first step of our analysis procedure can be made, as follows:\n Using the FRF data measured in the vicinity of the resonance \\(\\omega_r\\), choose the fixing frequency \\(\\Omega_j\\) and then calculate \\(\\Delta(\\omega)\\) Plot these values on \\(\\text{Re vs } \\omega^2\\) and \\(\\text{Im vs }\\omega^2\\) plots and compute the best fit straight line in order to determine \\(m_R(\\Omega_j)\\) and \\(m_I(\\Omega_j)\\) Now it can be shown that both these straight line slopes \\(m_R\\) and \\(m_I\\) are simple functions of \\(\\Omega\\), and we can write: \\[ m_R = n_R \\Omega^2 + d_R \\text{ and } m_I = n_I \\Omega^2 + d_I \\] where\n\\begin{equation} \\begin{aligned} n_R \u0026amp;= a_r; \\quad n_I = -b_r \\\\\\\nd_R \u0026amp;= -b_r(\\omega_r^2 \\eta_r) - a_r \\omega_r^2; \\quad d_I = b_r \\omega_r^2 - a_r\\omega_r^2\\eta_r \\end{aligned} \\end{equation}\nNow let \\(p = n_I/n_R \\text{ and } q = d_I/d_R\\), and noting that\n\\begin{equation} \\begin{aligned} \\eta_r \u0026amp;= \\frac{q - p}{1 + pq}; \\quad \\omega_r^2 = \\frac{d_R}{(p\\eta_r - 1)n_R} \\\\\\\na_r \u0026amp;= \\frac{\\omega_r^2(p\\eta_r - 1)}{(1 + p^2)d_R}; \\quad b_r = -a_r p \\end{aligned} \\end{equation}\nwe now have sufficient information to extract estimates for the four parameters for the resonance which has been analyzed: \\(\\omega_r, \\eta_r, \\text{ and } {}_rA_{jk} = a_r + i b_r\\).\nPlot graphs of \\\\(m\\_R(\\Omega)\\\\) vs \\\\(\\Omega^2\\\\) and of \\\\(m\\_I(\\Omega)\\\\) vs \\\\(\\Omega^2\\\\) using the results from step 1., each time using a different measurement points as the fixing frequency \\\\(\\Omega\\_j\\\\) Determine the slopes of the best fit straight lines through these two plots, \\\\(n\\_R\\\\) and \\\\(n\\_I\\\\), and their intercepts with the vertical axis \\\\(d\\_R\\\\) and \\\\(d\\_I\\\\) Use these four quantities, and equation [eq:modal_parameters_formula](#eq:modal_parameters_formula), to determine the **four modal parameters** required for that mode This procedure which places more weight to points slightly away from the resonance region is likely to be less sensitive to measurement difficulties of measuring the resonance region.\nResiduals Concept of residual terms We need to introduce the concept of residual terms, necessary in the modal analysis process to take account of those modes which we do not analyze directly but which nevertheless exist and have an influence on the FRF data we use.\nThe first occasion on which the residual problem is encountered is generally at the end of the analysis of a single FRF curve, such as by the repeated application of an SDOF curve-fit to each of the resonances in turn until all modes visible on the plot have been identified. At this point, it is often desired to construct a theoretical curve (called \u0026ldquo;regenerated\u0026quot;), based on the modal parameters extracted from the measured data, and to overlay this on the original measured data to assess the success of the curve-fit process. Then the regenerated curve is compared with the original measurements, the result is often disappointing, as illustrated in figure fig:residual_without. However, by the inclusion of two simple extra terms (the \u0026ldquo;residuals\u0026quot;), the modified regenerated curve is seen to correlate very well with the original experimental data as shown on figure fig:residual_with.\n\nTable 22: Effects of residual terms on FRF regeneration without residual with residuals width=\\linewidth width=\\linewidth If we regenerate an FRF curve from the modal parameters we have extracted from the measured data, we shall use a formula of the type\n\\begin{equation} H_{jk}(\\omega) = \\sum_{r = m_1}^{m_2} \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} \\end{equation}\nin which \\(m_1\\) and \\(m_2\\) reflects that we do not always start at the first mode (\\(r = 1\\)) and continue to the highest mode (\\(r = N\\)).\nHowever, the equation which most closely represents the measured data is:\n\\begin{equation} H_{jk}(\\omega) = \\sum_{r = 1}^{N} \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} \\end{equation}\nwhich may be rewritten as\n\\begin{equation} H_{jk}(\\omega) = \\left( \\sum_{r=1}^{m_1-1} + \\sum_{r=m_1}^{m_2} + \\sum_{r = m_2+1}^{N} \\right) \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} \\end{equation}\nThe three terms corresponds to:\n the low frequency modes not identified the high frequency modes not identified the modes actually identified These three terms are illustrated on figure fig:low_medium_high_modes.\n\n Figure 30: Numerical simulation of contribution of low, medium and high frequency modes\n From the sketch, it may be seen that within the frequency range of interest:\n the first term tends to approximate to a mass-like behavior the third term approximates to a stiffness effect Thus, we have a basis for the residual terms and shall rewrite equation eq:sum_modes:\n\\begin{equation} H_{jk}(\\omega) \\simeq -\\frac{1}{\\omega^2 M_{jk}^R} + \\sum_{r=m_1}^{m_2} \\left( \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} \\right) + \\frac{1}{K_{jk}^R} \\end{equation}\nwhere the quantities \\(M_{jk}^R\\) and \\(K_{jk}^R\\) are the residual mass and stiffness for that particular FRF and chosen frequency range.\nCalculation of residual mass and stiffness terms First, we compute a few values of the regenerated FRF curve at the lower frequencies covered by the tests, using only the identified modal parameters. Then, by comparing these values with those from actual measurements, we estimate a mass residual constant which, when added to the regenerated curve, brings this closely into line with the measured data.\nThen, the process is repeated at the top end of the frequency range, this time seeking a residual stiffness. Often, the process is more effective if there is an antiresonance near either end of the frequency range which this is then used as the point of adjustment.\nThe procedure outlined here may need to be repeated iteratively in case the addition of the stiffness residual term then upsets the effectiveness of the mass term.\nIt should be noted that often there is a physical significance to the residual terms. If the test structure is freely-supported and its rigid body modes are well below the minimum frequency of measurement, then the mass residual term will be a direct reflection of the rigid body mass and inertia properties of the structure. The high frequency residual can represent the local flexibility at the drive point.\nResidual and pseudo modes Sometimes it is convenient to treat the residual terms as if they were modes. Instead of representing each residual effect by a constant, each can be represented by a pseudo mode. For the low frequency residual effects, this pseudo mode has a natural frequency below the lowest frequency on the measured FRF, and for the high frequency residual effects, that pseudo mode has a natural frequency which is above the highest frequency of the measured FRF. These pseudo modes can be conveniently included in the list of modes which have been extracted by modal analysis of that FRF.\nUsing pseudo modes instead of simple residual mass and stiffness terms is a more accurate way of representing the out-of-range modes. There is one warning, however, and that is to point out that these pseudo modes are not genuine modes and that they cannot be used to deduce the corresponding contributions of these same modes for any other FRF curve.\nRefinement of SDOF modal analysis methods In the modal analysis methods discussed above, an assumption is made that near the resonance under analysis, the effect of all the other modes could be represented by a constant. When there are neighboring modes close to the one being analyzed, this assumption may not be valid.\n \u0026ldquo;Close\u0026rdquo; is begin loosely defined as a situation where the separation between the natural frequencies of two adjacent modes is less than the typical damping level, both measured as percentage.\n However, we can usually remove that restriction and thereby make a more precise analysis of the data.\nWe can write the receptance in the frequency range of interest as:\n\\begin{equation} \\begin{aligned} H_{jk}(\\omega) \u0026amp;= \\sum_{s=m_1}^{m_2} \\left( \\frac{{}_sA_{jk}}{\\omega_s^2 - \\omega^2 + i \\eta_s \\omega_s^2} \\right) + \\frac{1}{K_{jk}^R}-\\frac{1}{\\omega^2 M_{jk}^R} \\\\\\\n\u0026amp;= \\left( \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i\\eta_r \\omega_r^2} \\right) \\\\\\\n\u0026amp;+ \\left(\\sum_{\\substack{s=m_1\\s \\neq r}}^{m_2} \\frac{{}_sA_{jk}}{\\omega_s^2 - \\omega^2 + i\\eta_s \\omega_s^2} + \\frac{1}{K_{jk}^R} - \\frac{1}{\\omega^2 M_{jk}^R} \\right) \\end{aligned} \\end{equation}\nIn the previous methods, the second term was assumed to be a constant in the curve-fit procedure for mode \\(r\\). However, if we have good estimates for the coefficients which constitutes the second term, for example by having already completed an SDOF analysis, we may remove the restriction on the analysis. Indeed, suppose we take a set of measured data points around the resonance at \\(\\omega_r\\), and that we can compute the magnitude of the second term in eq:second_term_refinement, we then subtract this from the measurement and we obtain adjusted data points that are conform to a true SDOF behavior and we can use the same technique as before to obtain improved estimated to the modal parameters of more \\(r\\).\nThis procedure can be repeated iteratively for all the modes in the range of interest and it can significantly enhance the quality of found modal parameters for system with strong coupling.\nMDOF Modal analysis in the frequency domain (SISO) General Approach There are a number of situations in which the SDOF approach to modal analysis is inadequate and for these there exist several alternative methods which may generally be classified as MDOF modal analysis methods. These situations are generally those with closely coupled modes where the single mode approximation is inappropriate and those with extremely light damping for which measurements at resonance are inaccurate.\n Three approach to curve-fit the entire FRF in one step are considered here:\n a general approach to multi-mode curve-fitting a method based on the rational fraction FRF formulation a method particularly suited to very lightly-damped structures Method I - General Curve Fit approach - Non-linear Least Squares (NLLS) We shall denote the individual FRF measured data as: \\[ H_{jk}^m(\\Omega_l) = H_l^m \\] while the corresponding \u0026ldquo;theoretical\u0026rdquo; values are:\n\\begin{equation} \\begin{aligned} H_l \u0026amp;=H_{jk}(\\Omega_l) \\\\\\\n\u0026amp;= \\sum_{s=m_1}^{m_2}\\frac{{}_sA_{jk}}{\\omega_s^2 - \\Omega_l^2 + i \\eta_s \\omega_s^2} + \\frac{1}{K_{jk}^R} - \\frac{1}{\\Omega_l^2 M_{jk}^R} \\end{aligned} \\end{equation}\nwhere the coefficients \\({}_1A_{jk}, {}_2A_{jk}, \\dots, \\omega_1, \\omega_2, \\dots, \\eta_1, \\eta_2, \\dots, K_{jk}^R \\text{ and }M_{jk}^R\\) are all to be determined.\nWe can define an individual error as:\n\\begin{equation} \\epsilon_l = H_l^m - H_l \\end{equation}\nand express this as a scalar quantity:\n\\begin{equation} E_l = \\left| \\epsilon_l^2 \\right| \\end{equation}\nIf we further increase the generality by attaching a weighting factor \\(w_l\\) to each frequency point of interest, then the curve fit process has to determine the values of the unknown coefficients such that the total error:\n\\begin{equation} E = \\sum_{l = 1}^p w_l E_l \\end{equation}\nis minimized.\nThis is achieved by differentiating eq:error_weighted with respect to each unknown in turn, thus generating a set of as many equations as there are unknown:\n\\begin{equation} \\frac{d E}{d q} = 0; \\quad q = {}_1A_{jk}, {}_2A_{jk}, \\dots \\end{equation}\nUnfortunately, this set of equations are not linear in many of the coefficients and thus cannot be solved directly. It is from this point that the differing algorithms choose their individual procedures: making various simplifications, assumptions or linearizing the expressions.\nMethod II - Rational Fraction Polynomial Method (RFP) The method which has emerged as one the standard frequency domain modal analysis methods is that known as the Rational Fraction Polynomial (RFP) method. This method is a special version of the general curve fitting approach but is based on a different formulation for the theoretical expression used for the FRF.\n \\begin{subequations} \\begin{align} H(\\omega) \u0026amp;= \\sum_{r=1}^N \\frac{A_r}{\\omega_r^2 - \\omega^2 + 2 i \\omega \\omega_r \\xi_r} \\label{eq:frf_clasic} \\\\\\\n\u0026amp;= \\frac{b_0 + b_1(i\\omega) + \\dots + b_{2N-1}(i\\omega)^{2N-1}}{a_0 + a_1(i\\omega) + \\dots + a_{2N}(i\\omega)^{2N}} \\label{eq:frf_rational} \\end{align} \\end{subequations}\nIn this formulation, we have adopted the viscous damping model.\n The unknown coefficients \\(a_0, \\dots, a_{2N}, b_0, \\dots, b_{2N-1}\\) are not the modal properties but are related to them and are computed in a further stage of processing.\nThe particular advantage of this approach is the possibility of formulating the curve fitting problem as a linear set of equations, thereby making the solution amenable to a direct matrix solution.\nWe shall denote each of our measured FRF data point by \\(\\hat{H}_k\\), where \\(\\hat{H}_k = \\hat{H}(\\omega_k)\\), and define the error between that measured value and the corresponding value derived from the curve-fit expression as\n\\begin{equation} e_k = \\frac{b_0 + b_1(i\\omega_k) + \\dots + b_{2m-1}(i\\omega_k)^{2m-1}}{a_0 + a_1(i\\omega_k) + \\dots + a_{2m}(i\\omega_k)^{2m}} - \\hat{H}_k \\end{equation}\nleading to the modified, but more convenient version actually used in the analysis\n\\begin{equation} \\begin{aligned} e_k^\\prime \u0026amp;= \\left( b_0 + b_1(i\\omega_k) + \\dots + b_{2m-1}(i\\omega_k)^{2m-1} \\right)\\\\\\\n\u0026amp;- \\hat{H}_k\\left( a_0 + a_1(i\\omega_k) + \\dots + a_{2m}(i\\omega_k)^{2m} \\right) \\end{aligned} \\end{equation}\nIn these expressions, only \\(m\\) modes are included in the theoretical FRF formula: the true number of modes, \\(N\\), is actually one of the unknowns to be determined during the analysis. Equation eq:rpf_error can be rewritten as follows:\n\\begin{equation} \\begin{aligned} e_k^\\prime \u0026amp;= \\begin{Bmatrix} 1 \u0026amp; i \\omega_k \u0026amp; \\dots \u0026amp; (i\\omega_k)^{2m-1} \\end{Bmatrix} \\begin{Bmatrix} b_0 \\ \\vdots \\ b_{2m-1} \\end{Bmatrix}\\\\\\\n\u0026amp;- \\hat{H}_k \\begin{Bmatrix} 1 \u0026amp; i\\omega_k \u0026amp; \\dots \u0026amp; (i\\omega_k)^{2m-1} \\end{Bmatrix} \\begin{Bmatrix} a_0 \\ \\vdots \\ a_{2m-1} \\end{Bmatrix}\\\\\\\n\u0026amp;- \\hat{H}_k (i\\omega_k)^{2m} a_{2m} \\end{aligned} \\end{equation}\nand the \\(L\\) linear equations corresponding to \\(L\\) individual frequency points can be combined in matrix form:\n\\begin{equation} \\begin{aligned} \\{E^\\prime\\}_{L \\times 1} \u0026amp;= [P]_{L\\times 2m} \\{b\\}_{2m\\times 1}\\\\\\\n\u0026amp;- [T]_{L\\times(2m+1)} \\{a\\}_{(2m+1)\\times 1}\\\\\\\n\u0026amp;- \\{W\\}_{L\\times 1} \\end{aligned} \\end{equation}\nSolution for the unknown coefficients \\(a_j, \\dots, b_k, \\dots\\) is achieved by minimizing the error function\n\\begin{equation} J = \\{E^*\\}^T\\{E\\} \\end{equation}\nand this leads to\n\\begin{equation} \\begin{bmatrix} [Y] \u0026amp; [X] \\\\\\\n[X]^T \u0026amp; [Z] \\end{bmatrix}_{L \\times (4m+1)} \\begin{Bmatrix} \\{b\\} \\ \\{a\\} \\end{Bmatrix}_{(4m+1) \\times 1} = \\begin{Bmatrix} \\{B\\} \\ \\{F\\} \\end{Bmatrix}_{L \\times 1} \\end{equation}\nwhere \\([X], [Y], [Z], \\{G\\}\\) and \\(\\{F\\}\\) are known measured quantities:\n\\begin{equation} \\begin{aligned} [Y] \u0026amp;= \\text{Re}\\left( [P^*]^T[P] \\right);\\quad [X] = \\text{Re}\\left( [P^*]^T[T] \\right); \\\\\\\n[Z] \u0026amp;= \\text{Re}\\left( [T^*]^T[T] \\right); \\\\\\\n\\{G\\} \u0026amp;= \\text{Re}\\left( [P^*]\\{W\\} \\right);\\quad \\{F\\} = \\text{Re}\\left( [T^*]\\{W\\} \\right); \\end{aligned} \\end{equation}\nOnce the solution has been obtained for the coefficients \\(a_k, \\dots , b_k, \\dots\\) then the second stage of the modal analysis can be performed in which the required modal parameters are derived. This is usually done by solving the two polynomial expressions which form the numerator and denominator of equations eq:frf_clasic and eq:frf_rational:\n the denominator is used to obtain the natural frequencies \\(\\omega_r\\) and damping factors \\(\\xi_r\\) the numerator is used to determine the complex modal constants \\(A_r\\) In order to determine the order, the analysis is repeated using different assumed values for the order \\(m\\) and are compared. For each analysis, there will be properties found for as many modes as prescribed by the chosen model order. Some of these will be genuine modes while others will be fictitious modes. Various strategies may be adopted to separate the fictitious and real modes:\n measuring the difference between the original FRF curve and that regenerated using the modal properties derived measuring the consistency of the various modal parameters for different model order choices and eliminating those which vary widely from run to run In all these checks, interest is concentrated on the repeatability of the various modal properties: modes which reappear for all choices of data and model condition are believed to be genuine, while those which vary from run to run are more likely to have computational features due to the curve-fitting requirements as their origins, rather than physical ones.\nMethod III - Lightly Damped Structures It is found that some structures do not provide FRF data which respond very well to the above modal analysis procedures mainly because of the difficulties encountered in acquiring good measurements near resonance.\nFor such structures, it is often the case that interest is confined to an undamped model of the test structure since the damping in a complete structural assembly is provided mostly from the joints and not from the components themselves. Thus, there is scope for an alternative method of modal analysis which is capable of providing the required modal properties, in this case natural frequencies and real modal constants, using data measured away from the resonance regions.\nThe requirements for the analysis are as follows:\n measure the FRF over the frequency range of interest locate the resonances and note the corresponding natural frequencies select individual FRF measurement data points from as many frequencies as there are modes, plus two, confining the selection to points away from resonance using the data thus gathered, compute the modal constants construct a regenerated curve and compare this with the full set of measured data points Global modal analysis methods in the frequency domain General Approach More recent curve fitting procedures are capable of performing a multi curve fit instead of just working with individual FRF curves. They fit several FRF curves simultaneously, taking due account of the fact that the properties of all the individual curves are related by being from the same structure: all FRF plots on a given testpiece should indicate the same values for natural frequencies and damping factor of each mode.\nSuch methods have the advantage of producing a unique and consistent model as direct output.\n A way in which a set of measured FRF curves may be used collectively, rather than singly, is by the construction of a single Composite Response Function:\n\\begin{equation} \\sum_j\\sum_k H_{jk}(\\omega) = \\sum_j\\sum_k\\sum_{r=1}^N (\\dots) = HH(\\omega) \\end{equation}\nwith \\[ H_{jk} = \\sum_{r=1}^n \\frac{{}_rA_{jk}}{\\omega_r^2 - \\omega^2 + i \\eta_r \\omega_r^2} \\]\n The composite function \\(HH(\\omega)\\) can provide a useful means of determining a single (average) value for the natural frequency and damping factor for each mode where the individual functions would each indicate slightly different values. As an example, a set of mobilities measured are shown individually in figure fig:composite_raw and their summation shown as a single composite curve in figure fig:composite_sum.\n\nTable 23: Set of measured FRF Individual curves Composite curve width=\\linewidth width=\\linewidth The global analysis methods have the disadvantages first, that the computation power required is high and second that there may be valid reasons why the various FRF curves exhibit slight differences in their characteristics and it may not always be appropriate to average them.\nGlobal Rational Fraction Polynomial Method (GRFP) The basic Rational Fraction Polynomial (RFP) method that was described in the context of single FRF curve can be generalized to multi-FRF data. Indeed, all the FRFs from the same structure will have identical numerator polynomials. The number of unknown coefficients in a problem where there are \\(n\\) measured FRFs and \\(m\\) modes of vibration is of the order \\((n+1)(2m + 1)\\).\nGlobal SVD method A set of FRFs with a signal reference (such as are contained within a column from the complete FRF matrix) can be referred to the underlying modal model of the structure (assumed to have viscous damping) by the equation:\n\\begin{align*} \\{H(\\omega)\\}_k \u0026amp;= \\begin{Bmatrix} H_{1k}(\\omega) \\ \\vdots \\ H_{nk}(\\omega) \\ \\end{Bmatrix}_{n\\times 1} \\\\\\\n\u0026amp;= [\\Phi]_{n\\times N} \\{g_k(\\omega)\\}_{N\\times 1} + \\{R_k(\\omega)\\}_{n\\times 1} \\end{align*}\nwhere \\(\\{R_k(\\omega)\\}\\) is a vector containing the relevant residual terms and \\(\\{g_k(\\omega)\\}\\) is defined as: \\[ \\{g_k(\\omega)\\}_{N\\times 1} = [i \\omega - s_r]_{N\\times N}^{-1} \\{\\phi_k\\}_{N\\times 1} \\]\nAlso \\[ \\{\\dot{H}(\\omega)\\}_k = [\\Phi] [s_r] \\{g_k(\\omega)\\} + \\{\\dot{R}_k(\\omega)\\} \\]\nNext, we can write the following expressions\n\\begin{equation} \\begin{aligned} \\{\\Delta H(\\omega_i)\\}_k \u0026amp;= \\{H(\\omega_i)\\}_k - \\{H(\\omega_{i+c})\\}_k \\\\\\\n\u0026amp;\\approx [\\Phi] \\{\\Delta g_k(\\omega_i)\\}_{N\\times 1} \\\\\\\n\\{\\Delta \\dot{H}(\\omega_i)\\}_k \u0026amp;\\approx [\\Phi] [s_r] \\{\\Delta g_k(\\omega_i)\\}_{N\\times 1} \\end{aligned} \\end{equation}\nIf we now consider data at several different frequencies \\(i = 1, 2, \\dots, L\\), we can write\n\\begin{equation} \\begin{aligned} [\\Delta H_k]_{n\\times L} \u0026amp;= [\\Phi] [\\Delta g_k]_{N\\times L} \\\\\\\n[\\Delta \\dot{H}_k]_{n\\times L} \u0026amp;= [\\Phi] [s_r] [\\Delta g_k]_{N\\times L} \\end{aligned} \\end{equation}\nWe can construct an eigenvalue problem: \\[ \\left( [\\Delta \\dot{H}_k]^T - s_r [\\Delta H_k]^T \\right) \\{z\\}_r = \\{0\\} \\] where \\[ [z] = [\\Phi]^{+T} \\]\nIf we solve \\([z] = [\\Phi]^{+T}\\) using the SVD, we can determine the rank of the FRF matrices and thus the correct number of modes \\(m\\) to be identified, leading to the appropriate eigenvalues \\(s_r;\\ r=1, \\dots, m\\).\nThen, in order to determine the mode shapes, the modal constants can be recovered from:\n\\begin{equation} \\begin{aligned} \\begin{Bmatrix} H_{jk}(\\omega_1) \\ \\vdots \\ H_{jk}(\\omega_L) \\ \\end{Bmatrix}_{L\\times 1} = \u0026amp;\\begin{bmatrix} (i\\omega_1 - s_1)^{-1} \u0026amp; (i\\omega_1 - s_2)^{-1} \u0026amp; \\dots \\\\\\\n(i\\omega_2 - s_1)^{-1} \u0026amp; (i\\omega_2 - s_2)^{-1} \u0026amp; \\dots \\\\\\\n\\vdots \u0026amp; \\dots \u0026amp; \\dots \\\\\\\n\\vdots \u0026amp; \\dots \u0026amp; (i\\omega_L - s_m)^{-1} \\\\\\\n\\end{bmatrix}\\\\\\\n\u0026amp;\\begin{Bmatrix} {}_1A_{jk}\\ \\vdots \\ {}_mA_{jk} \\end{Bmatrix}_{m\\times 1} \\end{aligned} \\end{equation}\nUsing this approach, it is possible to extract a consistent set of modal parameters for the model whose FRFs have been supplied.\nConcluding comments In the task of extracting modal model parameters from measured test data, the analyst must rely on the skill of others who have coded the various analysis algorithms since these are generally complex. Because of this, the analyst must develop the various skills which enable him to select the most appropriate analysis procedure for each case and to make the best interpretation of the output of these analysis methods.\nIn this chapter, we have first highlighted the need for accuracy and reliability in the measured data that is the source of a modal analysis. If these data are not of high quality, the resulting modal model cannot be expected to be any better. Thus, attention must be paid at the initial phases to ascertain and to assure the necessary quality of the raw data. Question as to the correct order for the model and the most appropriate model for damping are often foremost among these early interpretations.\nA hierarchy of different types of modal analysis procedure have been cataloged, from the simple SDOF one-mode-at-a-time for a single response function, through MDOF methods which reveal several modes at a time, to global analysis methods where several modes are extracted simultaneously from several FRFs.\nDerivation of Mathematical Models Introduction We consider now the derivation of a mathematical model to describe the dynamic behavior of the test structure. Various types of model exists and are suitable in different cases. The most important aspect of the modeling process is to decide exactly which type of model we should seek before setting out on the acquisition and processing of experimental data.\nThree main categories of model are identified:\n Spatial model: mass, stiffness and damping Modal model: natural frequencies, mode shapes Response model: frequency response functions There exist complete models of each type and the more realistic incomplete models we are obliged to consider in practical cases.\nThe three types of model are usually derived as \\(\\text{Spatial}\\Rightarrow\\text{Modal}\\Rightarrow\\text{Response}\\) for theoretical analysis, and conversely, as \\(\\text{Response}\\Rightarrow\\text{Modal}\\Rightarrow\\text{Spatial}\\) for an experimental study. We may now view them in a different order, according to the facility with which each may be derived from the test data: Modal, Response and then Spatial. This reflects the quantity of the completeness of data required in each case.\n A modal model can be constructed using just one single mode, and including only a handful of degrees of freedom, even though the structure has many modes and many DOFs. Such a model can be built up by adding data from more modes, but it is not a requirement that all the modes should be included nor even that all the modes in the frequency range of interest be taken into account. Thus such a model may be derived with relatively few, or equally, with many data.\n The response type of model in the form of a FRF matrix, such as the mobility matrix, also needs only to include information concerning a limited number of point of interest: not all the DOFs need be considered. However, in this case, it is generally required that the model be valid over a specified frequency range, and here it is necessary that all the modes in that range be included. Also, some account should be taken of the modes whose natural frequencies lie outside of the range of interest to allow for the residual effects. Thus, the response type of model demands more data to be collected from the tests.\n A representative spatial model can only be obtained if we have measured most of the modes of the structure and if we have made measurements at a great many of the DOFs it possesses. This is generally a very demanding requirement to meet, and as result, the derivation of a spatial model from test data is very difficult to achieve.\n This chapter is organized with the following structure:\n We shall describe what data must be measured in order to construct a suitable model and what checks can be made to access the reliability of the model. We shall discuss a number of techniques for \u0026ldquo;refining\u0026rdquo; the model which is obtained from the test so that it matches a number of features of the analytical model. For instance, it is common to extract complex mode shapes from the test data on real structures but the analytical models are usually undamped so that their modes are real. We may wish to expand our experimental model, or, alternatively, reduce the theoretical ones so that the two models which are to be compared are at least of the same order. We shall explore some of the properties of the models which can be derived by the means described here. Modal models Requirements to construct modal model A modal model of a structure consists of two matrices:\n one containing the natural frequencies and damping factors: the eigenvalues one which describes the shapes of the corresponding modes: the eigenvectors Thus, we can construct such a model with just a single mode, and a more complete model is assembled simply by adding together a set of these single-mode descriptions.\nThe basic method of deriving a modal model is as follows. First, we note that from a single FRF curve, \\(H_{jk}(\\omega)\\), it is possible to extract certain modal properties for the \\(r^\\text{th}\\) mode by modal analysis:\n\\begin{equation} H_{jk}(\\omega) \\longrightarrow \\omega_r, \\eta_r, {}_rA_{jk}; \\quad r=1, m \\end{equation}\nNow, although this gives us the natural frequency and damping properties directly, it does not explicitly yield the mode shape: only a modal constant \\({}_rA_{jk}\\) which is formed from the mode shape data. In order to extract the individual elements \\(\\phi_{jr}\\) of the mode shape matrix \\([\\Phi]\\), it is necessary to make a series of measurements of specific FRFs including, especially, the point FRF at the excitation position. If we measure \\(H_{kk}\\), then by using eq:modal_model_from_frf, we also obtain the specific elements in the mode shape matrix corresponding to the excitation point:\n\\begin{equation} H_{kk}(\\omega) \\longrightarrow \\omega_r, \\eta_r, {}_rA_{jk} \\longrightarrow \\phi_{kr}; \\quad r=1, m \\end{equation}\nIf we then measure an associated transfer FRF using the same excitation position, such as \\(H_{jk}\\), we are able to deduce the mode shape element corresponding to the new response point \\(\\phi_{jr}\\) using the fact that the relevant modal constants may be combined with those from the point measurement:\n\\begin{equation} \\tcmbox{\\phi_{jr} = \\frac{{}_rA_{jk}}{\\phi_{kr}}} \\end{equation}\nHence, we find that in order to derive a modal model referred to a particular set of \\(n\\) coordinates, we need to measure and analysis a set of \\(n\\) FRF curves, all sharing the same excitation point and thus constituting one point FRF and \\((n-1)\\) transfer FRFs. In terms of the complete FRF matrix, this corresponds to measure the individual FRF of one entire column. It is also possible to measure one row of the FRF matrix. This corresponds of a set of \\(n\\) FRF curves sharing the same measurement point and varied excitation point.\nOften, several additional elements from the FRF matrix would be measured to provide a check, or to replace poor data, and sometimes measurement of a complete second column or row might be advised in order to ensure that one or more modes have not been missed by an unfortunate choice of exciter location. Indeed, if the exciter is placed at a nodal point of one of the modes, then there would be no indications at all of the existence of that mode because every modal constant would be zero for that mode. It may then require more than one measurement to confirm that we are not exciting the structure at a nodal point.\nOnce all the selected FRF curves have been measured and individually analyzed, we obtain a set of modal properties containing more data than needed:\n we may have determined many separate estimates for the natural frequencies and damping factors as these parameters are extracted from each FRF curve in the even we have measured more than one row or one column for the FRF matrix, we also obtain separate estimates for the mode shapes The simplest procedure is to average all the individual estimates that results in means values \\(\\tilde{\\omega}_r\\) and \\(\\tilde{\\eta}_r\\). In practice, not all the estimates should carry equal weight because some would probably be derived from much more satisfactory curve fits than others. A refined procedure would be to calculate a weighted mean of all the estimate using the quality factor obtained from the curve-fit procedure.\nIf we choose to accept a revised value for \\(\\omega_r\\) and \\(\\eta_r\\) of a particular mode, then the value for the modal constant should also be revised:\n\\begin{equation} {}_r\\tilde{A}_{jk} = {}_rA_{jk}\\frac{\\tilde{\\omega}_r^2 \\tilde{\\eta}_r}{\\omega_r^2 \\eta_r} \\end{equation}\nThe final reduced model obtained consist of the two matrices which constitute a modal model, namely: \\[ \\left[ \\omega_r^2(1 + i\\eta_r) \\right]_{m\\times m};\\quad \\left[ \\Phi \\right]_{n\\times m} \\]\nDouble modes or repeated roots When a structure has two modes that are very close in frequency, it may be impossible to derive a true model for the structure. All we can define in these circumstances is a single equivalent mode which is, in fact, a combination of the two actual modes that are difficult to identify individually.\nHowever, single equivalent modes can lead to erroneous models and it is very important that we can detect the presence of double modes and that we can identify all the modes which are present.\nThe only way repeated modes can be detected and identified in a modal test is by using data from more than on reference. This means that we must measure FRF data from more than a single row or column (as many rows/columns as there are repeated roots).\nConstructing models of NSA structures Structures which are classified as Non-Self-Adjoint (NSA) have non-symmetric mass, stiffness or damping matrices. This often occurs in structures with rotating components. As a result, we cannot take advantage of the symmetry of the system matrices and just measuring a single row or column of the FRF matrix.\nIn the case of NSA structures, we are required to measure and analyze the elements in both a row and a column of the FRF matrix. A mathematical explanation is that this class of system have two types of eigenvectors (left-hand and right-hand) and thus there are twice as many eigenvectors elements to identify.\nQuality checks for modal models It is important to check the reliability of the obtain results. There are two such checks that can be recommended for this phase of the process.\nFirst, it is possible to regenerate FRFs from the modal model. These FRFs can be compared with measured data that as been used for the modal analysis. Furthermore, it is also possible to synthesize FRFs that have not yet been measured (and thus not used for the model), and then to measure the corresponding FRF on the structure and to compare. This test provides a powerful demonstration of the validity of the modal model.\nA second, more demanding but also more convincing, demonstration of the validity of the modal model is to use the model to predict how the dynamic properties of the test structure will change if it is subjected to a small structural modification, such as can be occasioned by adding a small mass at a selected point. Then such modification can be made and the real structure, measurements done and compare with the modified model.\nRefinement of modal models Need for model refinement Several differences exist between most test-derived models and analytical models that make their comparison difficult.\nThe first difference are on the mode shapes:\n test-derived: generally complex analytical: usually real if we use an undamped model Objective comparison between complex mode shapes and real mode shapes is then not possible and some refinement of one of the two sets are required.\nA second incompatibility lies in the difference in the order of the models:\n test-derived: relatively small order given by the number of measured DOFs \\(n\\) analytical: generally an order of magnitude greater than \\(n\\) There is then a desire to refine one or other model to bring them both to the same size for meaningful comparison.\nHowever, all the refinements involve approximations which means that a compromise has been made in order to achieve the greater degree of compatibility which is desired.\nComplex-to-real conversion As we usually don\u0026rsquo;t know the nature, extend and distribution of damping present in the system, the analytical model is chosen to be undamped. We wish here to be able to determine what would be the mode shapes of the tested structure if, by some means, we could remove the damping but leave everything else the same. Then we should be able to compare the modes.\nSimple method This simple method is to convert the mode shape vectors from complex to real by taking the modulus of each element and by assigning a phase to each of \\(\\SI{0}{\\degree}\\) or \\(\\SI{180}{\\degree}\\).\nAny phase angle of a complex mode shape element which is between \\(\\SI{-90}{\\degree}\\) and \\(\\SI{90}{\\degree}\\) is set to \\(\\SI{0}{\\degree}\\), while those between \\(\\SI{90}{\\degree}\\) and \\(\\SI{270}{\\degree}\\) are set to \\(\\SI{180}{\\degree}\\). This procedure can become difficult to apply in borderline cases when the phase is poorly defined.\nMulti point excitation - Asher\u0026rsquo;s method In this method, the test-derived model based on complex modes is used to synthesize the response that would be produced by the application of several simultaneous harmonic forces in order to establish what those forces would need to be in order to produce a mono-modal response vector.\nIf the optimum set of excitation forces for a given mode can be found, then they represent the forces that are actually being generated by the damping in the system at resonance of that mode. We can then deduce the dynamic properties of the structure with these effects removed.\nThe sequence of steps required to determine this solution is as follows:\n Compute \\([\\alpha(\\omega)]\\) from the complex modal model Determine the undamped system natural frequencies \\(\\omega_r\\) by solving the equation \\(\\det|\\text{Re}[\\alpha(\\omega)]|=0\\) Calculate the mono-phase vector for each mode of interest using \\(\\text{Re}[\\alpha(\\omega)]\\{\\hat{F}\\} = \\{0\\}\\) Calculate the undamped system mode shapes \\(\\{\\psi_u\\}\\) using the just-derived force vector: \\(\\{\\psi_u\\} = \\text{Im}[\\alpha(\\omega)]\\{\\hat{F}\\}\\) Matrix transformation We here seek a numerical solution to the expression linking the known damped modes and the unknown undamped modes. The steps are:\n Assume that \\(\\text{Re}[T_1]\\) is unity and calculate \\(\\text{Im}[T_1]\\) from \\[ \\text{Im}[T_1] = -[\\text{Re}[\\phi_d]]^T [\\text{Re}[\\phi_d]]^{-1} [\\text{Re}[\\phi_d]]^T \\text{Im}[\\phi_d] \\] calculate \\([M_1]\\) and \\([K_1]\\) from \\[ [M_1] = [T_1]^T[T_1]; \\quad [K_1] = [T_1]^T[\\lambda^2][T_1] \\] Solve the eigen-problem formed by \\([M_1]\\) and \\([K_1]\\) leading to \\[ [\\omega_r^2]; \\quad [T_2] \\] Calculate the real modes using \\[ [\\phi_u] = [\\phi_d][T_1][T_2] \\] Expansion of models An important model refinement is called expansion and consist of the addition to the actually measured modal data of estimates for selected DOFs which were not measured for one reason or another.\n Prior to conducting each modal test, decisions have to be made as to which of the many DOFs that exist on the structure will be measured. These decisions are made for various practical reasons:\n Limited test time Inaccessibility of some DOFs Anticipated low importance of motion in certain DOFs Three approaches to the expansion of measured modes will be mentioned here:\n Geometric interpolation using spline functions Expansion using the analytical model\u0026rsquo;s spatial properties Expansion using the analytical model\u0026rsquo;s modal properties In all three approached, we are in effect seeking a transformation matrix \\([T]\\) that allows us to construct a long eigenvector \\(\\{\\phi\\}_{N\\times 1}\\) from knowledge of a short (incomplete) one \\(\\{\\phi\\}_{n\\times 1}\\): \\[ \\{\\phi\\}_{N\\times 1} = [T]_{N\\times n} \\{\\phi\\}_{n\\times 1} \\]\n Interpolation Simple interpolation has a limited range of application and can only be used on structures which have large regions of relatively homogeneous structure: those with joints of abrupt changes are must less likely to respond to this form of expansion.\nThe method is simply geometric interpolation between the measured points themselves, such as by fitting a polynomial function through the measured points.\nExpansion using theoretical spatial model - Kidder\u0026rsquo;s method This interpolation uses a theoretical model\u0026rsquo;s mass and stiffness matrices in a form of an inverse Guyan reduction procedure.\nIf we partition the eigenvector of interest, \\(\\{\\phi_A\\}_r\\), into:\n the DOFs to be included: \\(\\{{}_A\\phi_1\\}_r\\) the DOFs which are not available from the measurements: \\(\\{{}_A\\phi_2\\}_r\\) then we may write:\n\\begin{equation*} \\left( \\begin{bmatrix} {}_AK_{11} \u0026amp; {}_AK_{12}\\\\\\\n{}_AK_{21} \u0026amp; {}_AK_{22} \\end{bmatrix} - \\omega_r^2 \\begin{bmatrix} {}_AM_{11} \u0026amp; {}_AM_{12}\\\\\\\n{}_AM_{21} \u0026amp; {}_AM_{22} \\end{bmatrix} \\right) \\begin{Bmatrix}{}_A\\phi_1\\{}_A\\phi_2\\end{Bmatrix} = \\{0\\} \\end{equation*}\nWe can use this relationship between the measured and unmeasured DOFs as the basic for an expansion of the incomplete measured mode shapes: \\[ \\{{}_A\\phi_2\\}_r = [T_{21}]\\{{}_A\\phi_1\\}_r \\] with \\[ [T_{12}] = - \\left( [{}_AK_{22}] - \\omega_r^2[{}_AM_{22}] \\right)^{-1} \\left( [{}_AK_{21}] - \\omega_r^2[{}_AM_{21}] \\right) \\]\nThe relation between the incomplete measured vector to the complete expanded vector is then\n\\begin{equation} \\tcmbox{ \\{\\tilde{\\phi}_X\\}_r = \\begin{Bmatrix} {}_X\\phi_1 \\ {}_X\\tilde{\\phi}_2 \\end{Bmatrix} = \\begin{bmatrix} [I] \\ [T_{21}] \\end{bmatrix} \\{{}_X\\phi_1\\}_r } \\end{equation}\nExpansion using analytical model mode shapes This method uses the analytical model for the interpolation, but is based on the mode shapes derived from the analytical modal spatial matrices, rather than on these matrices themselves.\nWe may write the following expression which relates the experimental model mode shapes to those of the analytical model:\n\\begin{equation*} \\begin{Bmatrix} {}_X\\phi_1 \\ {}_X\\phi_2 \\end{Bmatrix} = \\begin{bmatrix} [{}_A\\Phi_{11}] \u0026amp; [{}_A\\Phi_{12}] \\\\\\\n[{}_A\\Phi_{21}] \u0026amp; [{}_A\\Phi_{22}] \\end{bmatrix} \\begin{Bmatrix} \\gamma_1 \\ \\gamma_2 \\end{Bmatrix}_r \\end{equation*}\nThe basic of this method is to assume that the measured mode shape submatrix can be represented exactly by the simple relationship (which assumes that \\(\\{\\gamma_2\\}_r\\) can be taken to be zero):\n\\begin{equation} \\{{}_X\\phi_1\\}_r = [{}_A\\Phi_{11}] \\{\\gamma_1\\}_r \\end{equation}\nso that an estimate can be provided for the unmeasured part of the eigenvector from\n\\begin{equation} \\begin{aligned} \\{{}_X\\tilde{\\phi}_2\\} \u0026amp;= [T_{21}] \\{{}_X\\phi_1\\}_r \\\\\\\n\u0026amp;= [{}_A\\Phi_{21}][{}_A\\Phi_{11}]^{-1} \\{{}_X\\phi_1\\}_r \\end{aligned} \\end{equation}\nThus, we can write the full transformation as:\n\\begin{equation*} \\tcmbox{ \\{\\tilde{\\phi}_X\\}_r = \\begin{Bmatrix} {}_X\\phi_1 \\ {}_X\\tilde{\\phi}_2 \\end{Bmatrix} = \\begin{bmatrix} [{}_A\\Phi_{11}] \\ [{}_A\\Phi_{21}] \\end{bmatrix} [{}_A\\Phi_{11}]^{-1} \\{{}_X\\phi_1\\}_r } \\end{equation*}\nThis formula can be generalized to a single expression which covers several measured modes:\n\\begin{equation*} \\tcmbox{[\\tilde{\\Phi}_X]_{N\\times m_X} = \\underbrace{[\\Phi_A]_{N\\times m_A} [{}_A\\Phi_{11}]_{m_A \\times n}^+}_{[T]_{N\\times n}} [{}_A\\Phi_1]_{n\\times m_X}} \\end{equation*}\nwhere \\(m_X\\) and \\(m_A\\) are the number of experimental and analytical modes used, respectively.\nOther formulations for \\([T]\\) are possible, they involve various combinations of the available experimental mode shape data and those from the analytical model:\n\\begin{equation} \\begin{aligned} [T_{(1)}] \u0026amp;= [\\Phi_A][{}_A\\Phi_1]^+ \u0026amp; \\text{A model - based} \\\\\\\n[T_{(2)}] \u0026amp;= [\\Phi_A][{}_X\\Phi_1]^+ \u0026amp; \\text{X model - based} \\\\\\\n[T_{(3)}] \u0026amp;= \\begin{bmatrix}{}_X\\Phi_1\\{}_A\\Phi_2\\end{bmatrix}[{}_A\\Phi_1]^+ \u0026amp; \\text{Mixed/A - based} \\\\\\\n[T_{(4)}] \u0026amp;= \\begin{bmatrix}{}_X\\Phi_1\\{}_A\\Phi_2\\end{bmatrix}[{}_X\\Phi_1]^+ \u0026amp; \\text{Mixed/X - based} \\end{aligned} \\end{equation}\nIt must be pointed out that all the above formula are approximate because of the initial assumption that the higher modes are not required to be included in the process (that \\(\\{\\gamma_2\\}\\) is zero).\nReduction of models The model reduction, which is the inverse of the expansion process, is used when it is decided to obtain compatibility between two otherwise disparate models by reducing the size of the larger of the two models (almost always, the analytical model).\nModel reduction has less importance nowadays as computing power is widely available and because such reduction introduces approximations.\nThere are basically two different types of model reduction, both of which are applied to the spatial model (as opposed to the modal model as is the case in model expansion), and both achieve the same end result of yielding a smaller order model, with system matrices which are \\(n\\times n\\) instead of \\(N\\times N\\):\n a condensed model which seeks to represent the entire structure completely at a smaller number of DOFs. This type of model introduces approximation. a reduced model which has removed information related to the DOFs that are eliminated from the model, and which is thus an incomplete model. However, for the retained DOFs, no information is lost. Let\u0026rsquo;s summarize the basic feature of model reduction by condensation. The basic equation of motion for the original model can be expressed as: \\[ [M] \\ddot{x} + [K]\\{x\\} = \\{f\\} \\] and this can be partitioned into the kept DOFs \\(\\{x_1\\}\\) and the eliminated DOFs \\(\\{x_2\\}\\) (which by definition cannot have any excitation forces applied to them):\n\\begin{equation*} \\begin{bmatrix} M_{11} \u0026amp; M_{12} \\\\\\\nM_{21} \u0026amp; M_{22} \\end{bmatrix} \\begin{Bmatrix} \\ddot{x}_1 \\ \\ddot{x}_2 \\end{Bmatrix} + \\begin{bmatrix} K_{11} \u0026amp; K_{12} \\\\\\\nK_{21} \u0026amp; K_{22} \\end{bmatrix} \\begin{Bmatrix} x_1 \\ x_2 \\end{Bmatrix} = \\begin{Bmatrix} f_1 \\ 0 \\end{Bmatrix} \\end{equation*}\nA relationship between the kept and eliminated DOFs can be written in the form:\n\\begin{equation} \\begin{Bmatrix} x_1 \\ x_2 \\end{Bmatrix}_{N\\times 1} = \\begin{bmatrix} [I] \\ [T] \\end{bmatrix}_{N\\times n} \\{x_1\\}_{n\\times 1} \\end{equation}\nwhere the transformation matrix \\([T]\\) can be defined by\n\\begin{equation*} [T] = (1 - \\beta)\\left(-[K_{22}]^{-1}[K_{21}]\\right) + \\beta\\left(-[M_{22}]^{-1}[M_{21}]\\right) \\end{equation*}\nin which \\(\\beta\\) is a reduction coefficient whose limiting values are \\(\\beta = 0\\) for static reduction and \\(\\beta = 1\\) for dynamic reduction.\nThe reduced mass and stiffness matrices which are produced by this process are:\n\\begin{align*} \\left[M^R\\right]_{n\\times n} \u0026amp;= \\begin{bmatrix}[I] \u0026amp; [T]^T\\end{bmatrix}_{n\\times N} \\begin{bmatrix} M_{22} \u0026amp; M_{21} \\ M_{12} \u0026amp; M_{22} \\end{bmatrix}_{N\\times N} \\begin{bmatrix} [I] \\ [T] \\end{bmatrix}_{N\\times n}\\\\\\\n\\left[K^R\\right]_{n\\times n} \u0026amp;= \\begin{bmatrix}[I] \u0026amp; [T]^T\\end{bmatrix}_{n\\times N} \\begin{bmatrix} K_{22} \u0026amp; K_{21} \\ K_{12} \u0026amp; K_{22} \\end{bmatrix}_{N\\times N} \\begin{bmatrix} [I] \\ [T] \\end{bmatrix}_{N\\times n} \\end{align*}\nThe two limiting cases of static and dynamic reduction are of particular interest. In each case, one of the two system matrices is unchanged and the other one is:\n\\begin{align*} \\beta = 1:\\ \u0026amp;[M^{R\\text{static}}] = [M_{12}] \\left(-[M_{22}]^{-1}[M_{21}]\\right)^{-1} + [M_{11}]\\\\\\\n\u0026amp;[K^{R\\text{static}}] = [K]\\\\\\\n\\beta = 0:\\ \u0026amp;[M^{R\\text{dynamic}}] = [M]\\\\\\\n\u0026amp;[K^{R\\text{dynamic}}] = [K_{12}] \\left(-[K_{22}]^{-1}[K_{21}]\\right)^{-1} + [K_{11}] \\end{align*}\nThese reduction procedure can provide useful approximate models of the structure if an optimum choice of which DOFs to retain and which can be eliminated is made. However, a reduced theoretical model of this type does not correspond to a similarly low-order model which is obtained from experiments since that is formed simply by ignoring the eliminated DOFs. The measured data for the included DOFs are the same no matter how many DOFs are eliminated. Thus, there are inherent difficulties involved in using this mixture of condensed (but complete) theoretical models and reduced (but incomplete) experimental models.\nDisplay of modal models One of the attraction of the modal model is possibility of obtaining a graphic display of its form by plotting the mode shapes.\nThere are basically two choices for the graphical display of a modal model:\n a static plot a dynamic (animated) display Static Displays Deflected shapes A static display is often adequate for depicting relatively simple mode shapes. Measured coordinates of the test structure are first linked as shown on figure fig:static_display (a). Then, the grid of measured coordinate points is redrawn on the same plot but this time displaced by an amount proportional to the corresponding element in the mode shape vector as shown on figure fig:static_display (b). The elements in the vector are scaled according the normalization process used (usually mass-normalized), and their absolute magnitudes have no particular significance.\n\n Figure 31: Static display of modes shapes. (a) basic grid (b) single-frame deflection pattern (c) multiple-frame deflection pattern (d) complex mode (e) Argand diagram - quasi-real mode (f) Argand diagram - complex mode\n It is customary to select the largest eigenvector element and to scale the whole vector by an amount that makes that displacement on the plot a viable amount.\nMultiple frames If a series of deflection patterns that has been computed for a different instant of time are superimposed, we obtain a result as shown on figure fig:static_display (c). Some indication of the motion of the structure can be obtained, and the points of zero motion (nodes) can be clearly identified.\nIt is also possible, in this format, to give some indication of the essence of complex modes, as shown in figure fig:static_display (d). Complex modes do not, in general, exhibit fixed nodal points.\nArgand diagram plots Another form of representation which is useful for complex modes is the representation of the individual complex elements of the eigenvectors on a polar plot, as shown in the examples of figure fig:static_display (e) and (f). Although there is no attempt to show the physical deformation of the actual structure in this format, the complexity of the mode shape is graphically displayed.\nDynamic Display The coordinates for the basic picture are computed and stored for multiple fractions of a cycle. Then, 10 to 20 frames are stored and displayed with an update rate which is suitable to give a clear picture of the distortion of the structure during vibration.\nThe dynamic character of animation is the only really effective way to view modal complexity and is very useful to display complex modes.\nInterpretation of mode shape displays There are a number of features associated with mode shape displays that warrant a mention in the context of ensuring that the correct interpretation is made from viewing these displays.\nThe first concerns the consequences of viewing an incomplete model. In that case, there are no mode shape data from some of the points which comprise the grid which outlines the structure, and the indicated result is zero motion of those DOFs and this can be very misleading. For instance, if we measure the displacement of grid points in only one direction, \\(x\\) for instance, then the shape display will show significant x-direction motion of those points with no motion in the other transverse directions. We then tend to interpret this as a motion which is purely in the x-direction which may be clearly not true.\nThe second problem arises when the grid of measurement points that is chosen to display the mode shapes is too coarse in relation to the complexity of the deformation patterns that are to be displayed. This can be illustrated using a very simple example: suppose that our test structure is a straight beam, and that we decide to use just three response measurements points. If we consider the first six modes of the beam, whose mode shapes are sketched in figure fig:beam_modes, then we see that with this few measurement points, modes 1 and 5 look the same as do modes 2, 4 and 6. All the higher modes will be indistinguishable from these first few. This is a well known problem of spatial aliasing.\n\n Figure 32: Misinterpretation of mode shapes by spatial aliasing\n Response models There are two main requirements demanded for a response model:\n the capability of regeneration \u0026ldquo;theoretical\u0026rdquo; curves for the FRFs actually measured and analyzed synthesizing the other response functions which were not measured In general, the form of response model with which we are concerned is an FRF matrix whose order is dictated by the number of coordinates \\(n\\) included in the test. Also, as explained, it is normal in practice to measured and to analyze just a subset of the FRF matrix but rather to measure the full FRF matrix. Usually one column or one row with a few additional elements are measured. Thus, if we are to construct an acceptable response model, it will be necessary to synthesize those elements which have not been directly measured. However, in principle, this need present no major problem as it is possible to compute the full FRF matrix from a modal model using:\n\\begin{equation} \\tcmbox{[H]_{n\\times n} = [\\Phi]_{n\\times m} [\\lambda_r^2 - \\omega^2]_{m\\times m}^{-1} [\\Phi]_{m\\times n}^T} \\end{equation}\nRegenerated FRF curves It is usual practice to regenerate an FRF curve using the results from the modal analysis as a mean of checking the success of that analysis.\nIt should be noted that in order to construct an acceptable response model, it is essential that all the modes in the frequency range of interest be included, and that suitable residual terms are added to take account of out-of-range modes. In this respect, the demands of the response model are more stringent that those of the modal model.\nSynthesis of FRF curves One of the implications of equation eq:regenerate_full_frf_matrix is that it is possible to synthesize the FRF curves which were not measured. This arises because if we measured three individual FRF such as \\(H_{ik}(\\omega)\\), \\(H_{jk}(\\omega)\\) and \\(K_{kk}(\\omega)\\), then modal analysis of these yields the modal parameters from which it is possible to generate the FRF \\(H_{ij}(\\omega)\\), \\(H_{jj}(\\omega)\\), etc.\nHowever, it must be noted that there is an important limitation to this procedure which is highlighted in the example below.\n As an example, suppose that FRF data \\(H_{11}\\) and \\(H_{21}\\) are measured and analyzed in order to synthesize the FRF \\(H_{22}\\) initially unmeasured. The predict curve is compared with the measurements on figure fig:H22_without_residual. Clearly, the agreement is poor and would tend to indicate that the measurement/analysis process had not been successful. However, the synthesized curve contained only those terms relating to the modes which had actually been studied from \\(H_{11}\\) and \\(H_{21}\\) and this set of modes did not include all the modes of the structure. Thus, \\(H_{22}\\) omitted the influence of out-of-range modes. The inclusion of these two additional terms (obtained here only after measuring and analyzing \\(H_{22}\\) itself) resulted in the greatly improved predicted vs measured comparison shown in figure fig:H22_with_residual.\n \nTable 24: Synthesized FRF plot Using measured modal data only After inclusion of residual terms width=\\linewidth width=\\linewidth The appropriate expression for a \u0026ldquo;correct\u0026rdquo; response model, derived via a set of modal properties is thus\n\\begin{equation} [H] = [\\Phi] [\\lambda_r^2 - \\omega^2]^{-1} [\\Phi]^T + [\\text{Res}] \\end{equation}\nIn order to obtain all the data necessary to form such a model, we must first derive the modal model on which it is based and then find some means of determining the elements in the residual matrix \\([\\text{Res}]\\). This latter task may be done in several ways:\n It may be most accurately achieved by measuring all (or at least over half) of the elements in the FRF matrix, but this would increase a lot the quantity of data to be measured. Extend the frequency range of the modal test beyond that over which the model is eventually required. In this way, much of the content of the residual terms is included in separate modes and their actual magnitudes can be reduced to relatively unimportant dimensions. Try to access which of the many FRF elements are liable to need large residual terms and to make sure that these are included in the list of those which are measured and analyzed. We noted earlier that it is the point mobilities which are expected to have the highest-valued residuals and the remote transfers which will have the smallest. Thus, the significant terms in the \\([\\text{Res}]\\) matrix will generally be grouped close to the leading diagonal, and this suggests making measurements of most of the point mobility parameters. Direct measurement It should be noted that it is quite possible to develop a response model by measuring and analyzing all the elements in one half of the FRF matrix (this being symmetric) and by storing the results of this process without constructing a modal model. This procedure clearly solves the residual problem discussed above, but it will introduce inconsistencies into to model which renders it unsatisfactory.\nTransmissibilities One vibration parameter which has not been mentioned so far is that of transmissibility. This is a quantity which is quite widely used in vibration engineering practice to indicate the relative vibration levels between two points.\nIn general, transmissibility is considered to be a frequency dependent response function \\(T_{jk}(\\omega)\\) which defines the ratio between the response levels at two DOFs \\(j\\) and \\(k\\). Simply defined, we can write:\n\\begin{equation} T_{jk} (\\omega) = \\frac{X_j e^{i\\omega t}}{X_k e^{i\\omega t}} \\end{equation}\nbut, in fact, we need also to specify the excitation conditions that give rise to the two responses in question and these are missing from the above definition which is thus not rigorous. It does not give us enough information to be able to reproduce the conditions which have been used to measured \\(T_{jk}(\\omega)\\).\n If the transmissibility is measured during a modal test which has a single excitation, say at DOF \\(i\\), then we can define the transmissibility thus obtained more precisely:\n\\begin{equation} {}_iT_{jk}(\\omega) = \\frac{H_{ji}(\\omega)}{H_{ki}(\\omega)} \\end{equation}\n In general, the transmissibility depends significantly on the excitation point (\\({}_iT_{jk}(\\omega) \\neq {}_qT_{jk}(\\omega)\\) where \\(q\\) is a different DOF than \\(i\\)) and it is shown on figure fig:transmissibility_plots. This may explain why transmissibilities are not widely used in modal analysis.\n\n Figure 33: Transmissibility plots\n Base excitation The one application area where transmissibilities can be used as part of modal testing is in the case of base excitation. Base excitation is a type of test where the input is measured as a response at the drive point \\(x_0(t)\\), instead of as a force \\(f_1(t)\\), as illustrated in figure fig:base_excitation_configuration.\nWe can show that it is possible to determine, from measurements of \\(x_i\\) and \\(x_0\\), modal properties of natural frequency, damping factor and unscaled mode shape for each of the modes that are visible in the frequency range of measurement. The fact that the excitation force is not measured is responsible for the lack of formal scaling of the mode shapes.\n\nTable 25: Base excitation configuration Conventional modal test setup Base excitation setup height=4cm height=4cm Spatial models It would appear from the basic orthogonality properties of the modal model that there exists a simple means of constructing a spatial model from the modal model, thus this is not so. We have that:\n\\begin{equation} \\begin{aligned} [\\Phi]^T[M][\\Phi] \u0026amp;= [I]\\\\\\\n[\\Phi]^T[K][\\Phi] \u0026amp;= [\\lambda_r^2] \\end{aligned} \\end{equation}\nfrom which is would appear that we can write\n\\begin{equation} \\begin{aligned} [M] \u0026amp;= [\\Phi]^{-T} [I] [\\Phi]^{-1}\\\\\\\n[K] \u0026amp;= [\\Phi]^{-T} [\\lambda_r^2] [\\Phi]^{-1} \\end{aligned} \\end{equation}\nHowever, equation eq:m_k_from_modes is only applicable when we have available the complete \\(N \\times N\\) modal model.\nIt is much more usual to have an incomplete model in which the eigenvector matrix is rectangle and, as such, is non-invertible. One step which can be made using the incomplete data is the construction of \u0026ldquo;pseudo\u0026rdquo; flexibility and inverse-mass matrices. This is accomplished using the above equation in the form:\n\\begin{equation} \\begin{aligned} [K]_{n\\times n}^{-1} \u0026amp;= [\\Phi]_{n\\times m} [\\lambda_r^2]_{m\\times m}^{-1} [\\Phi]_{m\\times n}^T\\\\\\\n[M]_{n\\times n}^{-1} \u0026amp;= [\\Phi]_{n\\times m} [\\Phi]_{m\\times n}^T \\end{aligned} \\end{equation}\nBecause the rank of each pseudo matrix is less than its order, it cannot be inverted and so we are unable to construct stiffness or mass matrix from this approach.\nBibliography Ewins, D., Modal testing: theory, practice and application (2000), Baldock, Hertfordshire, England Philadelphia, PA: Wiley-Blackwell. ↩\n","permalink":"/book/ewins00_modal/","tags":null,"title":"Modal testing: theory, practice and application"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation Reference (Chunling Du \u0026amp; Lihua Xie, 2010) Author(s) Du, C., \u0026amp; Xie, L. Year 2010 Read Chapter 1 and 3.\nBibliography Du, C., \u0026amp; Xie, L., Modeling and control of vibration in mechanical systems (2010), : CRC Press. ↩\n","permalink":"/book/du10_model_contr_vibrat_mechan_system/","tags":null,"title":"Modeling and control of vibration in mechanical systems"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Advanced motion control for precision mechatronics: control, identification, and learning of complex systems ","permalink":"/zettels/motion_control/","tags":null,"title":"Motion Control"},{"categories":null,"contents":"Tags :\n Reference (Chunling Du \u0026amp; Chee Khiang Pang, 2019) Author(s) Du, C., \u0026amp; Pang, C. K. Year 2019 Mechanical Actuation Systems Introduction When high bandwidth, high position accuracy and long stroke are required simultaneously: dual-stage systems composed of a coarse (or primary) actuator and a fine actuator working together are used.\nPopular choices for coarse actuator are:\n DC motor Voice coil motor (VCM) Permanent magnet stepper motor Permanent magnet linear synchronous motor As fine actuators, most of the time piezoelectric actuator are used.\nIn order to overcome fine actuator stringent stroke limitation and increase control bandwidth, three-stage actuation systems are necessary in practical applications.\nActuators Primary Actuator Without loss of generality, the VCM actuator is used as the primary actuator. When current passes through the coil, a force is produced which accelerates the actuator radially. The produced force is a function of the current \\(i_c\\): \\[ f_m = k_t i_c \\] where \\(k_t\\) is a linearized nominal value called the torque constant.\nThe resonance of the actuator is mainly due to the flexibility of the pivot bearing, arm, suspension.\nThen the bandwidth of the control loop is low and the resonances are not a limiting factor of the control design, the actuator model can be considered as follows: \\[ P_v(s) = \\frac{k_{vcm}}{s^2} \\]\nWhen the bandwidth is high, the actuator resonances have to be considered in the control design since the flexible resonance modes will reduce the system stability and affect the control performance. Then the actuator model becomes \\[ P_v(s) = \\frac{k_{vcm}}{s^2} P_r(s) \\] which includes the resonance model \\[ P_r(s) = \\Pi_{i=1}^{N} P_{ri}(s) \\] and the resonance \\(P_{ri}(s)\\) can be represented as one of the following forms\n\\begin{align*} P_{ri}(s) \u0026amp;= \\frac{\\omega_i^2}{s^2 + 2 \\xi_i \\omega_i s + \\omega_i^2} \\\\\\\nP_{ri}(s) \u0026amp;= \\frac{b_{1i} \\omega_i s + b_{0i} \\omega_i^2}{s^2 + 2 \\xi_i \\omega_i s + \\omega_i^2} \\\\\\\nP_{ri}(s) \u0026amp;= \\frac{b_{2i} s^2 + b_{1i} \\omega_i s + b_{0i} \\omega_i^2}{s^2 + 2 \\xi_i \\omega_i s + \\omega_i^2} \\end{align*}\nSecondary Actuators We here consider two types of secondary actuators: the PZT milliactuator (figure 1) and the microactuator.\n\n Figure 1: A PZT-actuator suspension\n There are three popular types of micro-actuators: electrostatic moving-slider microactuator, PZT slider-driven microactuator and thermal microactuator. There characteristics are shown on table 1.\n\nTable 1: Performance comparison of microactuators Elect. PZT Thermal TF \\(\\frac{K}{s^2 + 2\\xi\\omega s + \\omega^2}\\) \\(\\frac{K}{s^2 + 2\\xi\\omega s + \\omega^2}\\) \\(\\frac{K}{\\tau s + 1}\\) \\(\\tau\\) \\(\u0026lt;\\SI{0.1}{ms}\\) \\(\u0026lt;\\SI{0.05}{ms}\\) \\(\u0026gt;\\SI{0.1}{ms}\\) \\(omega\\) \\(1-\\SI{2}{kHz}\\) \\(20-\\SI{25}{kHz}\\) \\(\u0026gt;\\SI{15}{kHz}\\) Single-Stage Actuation Systems A typical closed-loop control system is shown on figure 2, where \\(P_v(s)\\) and \\(C(z)\\) represent the actuator system and its controller.\n\n Figure 2: Block diagram of a single-stage actuation system\n Dual-Stage Actuation Systems Dual-stage actuation mechanism for the hard disk drives consists of a VCM actuator and a secondary actuator placed between the VCM and the sensor head. The VCM is used as the primary stage to provide long track seeking but with poor accuracy and slow response time, while the secondary stage actuator is used to provide higher positioning accuracy and faster response but with a stroke limit.\n\n Figure 3: Block diagram of dual-stage actuation system\n Three-Stage Actuation Systems Due to the limited allowed stroke of the microactuator, the control bandwidth has to be restricted and that limits the dual-stage disturbance rejection capability.\nA three-stage actuation system is therefore introduced to further increase the bandwidth.\nTypically, a VCM actuator is used as the primary actuator, PZT milliactuator as the second stage actuator and a third actuator more collocated is used.\nHigh-Precision Positioning Control of Dual-Stage Actuation Systems Introduction The sensitivity function of the closed-loop system has provided a straightforward view of its disturbance rejection capability. It is demanded that the sensitivity function magnitude in the low-frequency range be sufficiently low, while its hump in high-frequency range stays low enough. In view of this, the controller design for dual-stage actuation systems adopts a weighting function to shape the sensitivity function.\nControl Schemes A popular control scheme for dual-stage actuation system is the decoupled structure as shown in figure 4.\n \\(C_v(z)\\) and \\(C_p(z)\\) are the controllers respectively, for the primary VCM actuator \\(P_v(s)\\) and the secondary actuator \\(P_p(s)\\). \\(\\hat{P}_p(z)\\) is an approximation of \\(P_p\\) to estimate \\(y_p\\). \\(d_1\\) and \\(d_2\\) denote internal disturbances \\(n\\) is the measurement noise \\(d_u\\) stands for external vibration \n Figure 4: Decoupled control structure for the dual-stage actuation system\n The open-loop transfer function from \\(pes\\) to \\(y\\) is \\[ G(z) = P_p(z) C_p(z) + P_v(z) C_v(z) + P_v(z) C_v(z) \\hat{P}_p(z) C_p(z) \\] And the overall sensitivity function of the closed loop system from \\(r\\) to \\(pes\\) is \\[ S(z) = \\frac{1}{1 + G(z)} \\] which is approximately \\[ S(z) = \\frac{1}{[1 + P_p(z) C_p(z)] [1 + P_v(z)C_v(z)]} \\] since within a certain bandwidth \\[ \\hat{P}_p(z) \\approx P_p(z) \\]\nThe sensitivity functions of the VCM loop and the secondary actuator loop are\n\\begin{equation} S_v(z) = \\frac{1}{1 + P_v(z) C_v(z)}, \\quad S_p(z) = \\frac{1}{1 + P_p(z) C_p(z)} \\end{equation}\nAnd we obtain that the dual-stage sensitivity function \\(S(z)\\) is the product of \\(S_v(z)\\) and \\(S_p(z)\\). Thus, the dual-stage system control design can be decoupled into two independent controller designs.\nAnother type of control scheme is the parallel structure as shown in figure 5. The open-loop transfer function from \\(pes\\) to \\(y\\) is \\[ G(z) = P_p(z) C_p(z) + P_v(z) C_v(z) \\]\nThe overall sensitivity function of the closed-loop system from \\(r\\) to \\(pes\\) is \\[ S(z) = \\frac{1}{1 + G(z)} = \\frac{1}{1 + P_p(z) C_p(z) + P_v(z) C_v(z)} \\]\n\n Figure 5: Parallel control structure for the dual-stage actuator system\n Because of the limited displacement range of the secondary actuator, the control efforts for the two actuators should be distributed properly when designing respective controllers to meet the required performance, make the actuators not conflict with each other, as well as prevent the saturation of the secondary actuator.\nController Design Method in the Continuous-Time Domain \\(\\mathcal{H}_\\infty\\) loop shaping method is used to design the controllers for the primary and secondary actuators. The structure of the \\(\\mathcal{H}_\\infty\\) loop shaping method is plotted in figure 6 where \\(W(s)\\) is a weighting function relevant to the designed control system performance such as the sensitivity function.\nFor a plant model \\(P(s)\\), a controller \\(C(s)\\) is to be designed such that the closed-loop system is stable and\n\\begin{equation} \\|T_{zw}\\|_\\infty \u0026lt; 1 \\end{equation}\nis satisfied, where \\(T_{zw}\\) is the transfer function from \\(w\\) to \\(z\\): \\(T_{zw} = S(s) W(s)\\).\n\n Figure 6: Block diagram for \\(\\mathcal{H}_\\infty\\) loop shaping method to design the controller \\(C(s)\\) with the weighting function \\(W(s)\\)\n Equation 1 means that \\(S(s)\\) can be shaped similarly to the inverse of the chosen weighting function \\(W(s)\\). One form of \\(W(s)\\) is taken as\n\\begin{equation} W(s) = \\frac{\\frac{1}{M}s^2 + 2\\xi\\omega\\frac{1}{\\sqrt{M}}s + \\omega^2}{s^2 + 2\\omega\\sqrt{\\epsilon}s + \\omega^2\\epsilon} \\end{equation}\nwhere \\(\\omega\\) is the desired bandwidth, \\(\\epsilon\\) is used to determine the desired low frequency level of sensitivity magnitude and \\(\\xi\\) is the damping ratio.\nThe controller can then be synthesis using the linear matrix inequality (LMI) approach.\nThe primary and secondary actuator control loops are designed separately for the dual-stage control systems. But when designing their respective controllers, certain performances are required for the two actuators, so that control efforts for the two actuators are distributed properly and the actuators don\u0026rsquo;t conflict with each other\u0026rsquo;s control authority. As seen in figure 7, the VCM primary actuator open loop has a higher gain at low frequencies, and the secondary actuator open loop has a higher gain in the high-frequency range.\n\n Figure 7: Frequency responses of \\(G_v(s) = C_v(s)P_v(s)\\) (solid line) and \\(G_p(s) = C_p(s) P_p(s)\\) (dotted line)\n The sensitivity functions are shown in figure 8, where the hump of \\(S_v\\) is arranged within the bandwidth of \\(S_p\\) and the hump of \\(S_p\\) is lowered as much as possible. This needs to decrease the bandwidth of the primary actuator loop and increase the bandwidth of the secondary actuator loop.\n\n Figure 8: Frequency response of \\(S_v(s)\\) and \\(S_p(s)\\)\n A basic requirement of the dual-stage actuation control system is to make the individual primary and secondary loops stable. It also required that the primary actuator path has a higher gain than the secondary actuator path at low frequency range and the secondary actuator path has a higher gain than the primary actuator path in high-frequency range. These can be achieve by choosing appropriate weighting function for the controllers design.\nConclusion The controller design has been discussed for high-precision positioning control of the dual-stage actuation systems. The \\(\\mathcal{H}_\\infty\\) loop shaping method has been applied and the design method has been presented. With the weighting functions, the desired sensitivity function can achieved. Such a design method can produce robust controllers with more disturbance rejection in the low frequency range and less disturbance amplification in the high-frequency range.\nModeling and Control of a Three-Stage Actuation System Introduction In view of the additional bandwidth requirement which is limited by stroke constraint and saturation of secondary actuators, three-stage actuation systems are thereby proposed to meet the demand of a higher bandwidth. In this section, a specific three-stage actuation system is presented and a controller strategy is proposed, which is based on a decoupled master-slave dual-stage control structure combined with a third stage actuation in parallel format.\nActuator and Vibration Modeling A VCM actuator is used as the first-stage actuator denoted by \\(P_v(s)\\), a PZT milliactuator as the second-stage actuator denoted by \\(P_p(s)\\), and a thermal microactuator denoted by \\(P_m(s)\\).\nControl Strategy and Controller Design Figure 9 shows the control structure for the three-stage actuation system.\nThe control scheme is based on the decoupled master-slave dual-stage control and the third stage microactuator is added in parallel with the dual-stage control system. The parallel format is advantageous to the overall control bandwidth enhancement, especially for the microactuator having limited stroke which restricts the bandwidth of its own loop. The reason why the decoupled control structure is adopted here is that its overall sensitivity function is the product of those of the two individual loops, and the VCM and the PTZ controllers can be designed separately.\n\n Figure 9: Control system for the three-stage actuation system\n The open-loop transfer function of the three-stage actuation system is derived as\n\\begin{equation} G(z) = G_v(z) + G_p(z) + G_v(z) G_p(z) + G_m(z) \\end{equation}\nwith\n\\begin{align*} G_v(z) \u0026amp;= P_v(z) C_v(z) \\\\\\\nG_p(z) \u0026amp;= P_p(z) C_p(z) \\\\\\\nG_m(z) \u0026amp;= P_m(z) C_m(z) \\end{align*}\nThe overall sensitivity function is given by\n\\begin{equation} S(z) = \\frac{1}{1 + G(z)} \\end{equation}\nThe VCM actuator \\(P_v(s)\\) works in a low bandwidth below \\(\\SI{1}{kHz}\\). The PZT actuated milliactuator \\(P_p(s)\\) works under a reasonably high bandwidth up to \\(\\SI{3}{kHz}\\). The third-stage actuator \\(P_m(s)\\) is used to further push the bandwidth as high as possible.\nThe control performances of both the VCM and the PZT actuators are limited by their dominant resonance modes. The open-loop frequency responses of the three stages are shown on figure 10.\n\n Figure 10: Frequency response of the open-loop transfer function\n The obtained sensitivity function is shown on figure 11.\n\n Figure 11: Sensitivity function of the VCM single stage, the dual-stage and the three-stage loops\n Performance Evaluation External vibration from the system working environment is much higher than the internal disturbance, especially for ultra-high precision positioning systems. In the presence of external vibration, the actuators control effort is dominantly determined by the external vibration. But because the actuator input is constrained, the external vibration level has to be limited. Otherwise, saturation will occur in the control loop and the control system performance will be degraded.\nTherefore, the stroke specification of the actuators, especially milliactuator and microactuators, is very important for achievable control performance. Higher stroke actuators have stronger abilities to make sure that the control performances are not degraded in the presence of external vibrations.\nFor the three-stage control architecture as shown on figure 9, the position error is \\[ e = -S(P_v d_1 + d_2 + d_e) + S n \\] The control signals and positions of the actuators are given by\n\\begin{align*} u_p \u0026amp;= C_p e,\\ y_p = P_p C_p e \\\\\\\nu_m \u0026amp;= C_m e,\\ y_m = P_m C_m e \\\\\\\nu_v \u0026amp;= C_v ( 1 + \\hat{P}_pC_p ) e,\\ y_v = P_v ( u_v + d_1 ) \\end{align*}\nThe controller design for the microactuators with input constraints must take into account both external vibration requirements and actuators\u0026rsquo; stroke, based on which an appropriate bandwidth should be decided when designing the control system. Higher bandwidth/higher level of disturbance generally means high stroke needed.\nDifferent Configurations of the Control System A decoupled control structure can be used for the three-stage actuation system (see figure 12).\nThe overall sensitivity function is \\[ S(z) = \\approx S_v(z) S_p(z) S_m(z) \\] with \\(S_v(z)\\) and \\(S_p(z)\\) are defined in equation 1 and \\[ S_m(z) = \\frac{1}{1 + P_m(z) C_m(z)} \\]\nDenote the dual-stage open-loop transfer function as \\(G_d\\) \\[ G_d(z) = G_v(z) + G_p(z) + G_v(z) G_p(z) \\]\nThe open-loop transfer function of the overall system is \\[ G(z) = G_d(z) + G_m(z) + G_d(z) G_m(z) \\]\n\n Figure 12: Decoupled control structure for the three-stage actuation system\n The control signals and the positions of the three actuators are\n\\begin{align*} u_p \u0026amp;= C_p(1 + \\hat{P}_m C_m) e, \\ y_p = P_p u_p \\\\\\\nu_m \u0026amp;= C_m e, \\ y_m = P_m M_m e \\\\\\\nu_v \u0026amp;= C_v(1 + \\hat{P}_p C_p) (1 + \\hat{P}_m C_m) e, \\ y_v = P_v u_v \\end{align*}\nThe decoupled configuration makes the low frequency gain much higher, and consequently there is much better rejection capability at low frequency compared to the parallel architecture (see figure 13).\n\n Figure 13: Frequency responses of the open-loop transfer functions for the three-stages parallel and decoupled structure\n Conclusion The relationship among the external vibration, the microactuator stroke, and the achievable control bandwidth has been discussed for being considered in the controller design. The discussion suggests that in addition to the traditional wisdom of just increasing the resonant frequency, adding more stroke to the microactuator will give more freedom to the loop shaping for the control system design.\nDual-Stage System Control Considering Secondary Actuator Stroke Limitation Introduction More Freedom Loop Shaping for Microactuator Controller Design Dual-Stage System Control Design for 5 kHz Bandwidth Evaluation with the Consideration of External Vibration and Microactuator Stroke Conclusion Saturation Control for Microactuators in Dual-Stage Actuation Systems Introduction Modeling and Feedback Control Anti-Windup Compensation Design Simulation and Experimental Results Conclusion Time Delay and Sampling Rate Effect on Control Performance of Dual-Stage Actuation Systems Introduction Modeling of Time Delay Dual-Stage Actuation System Modeling with Time Delay for Controller Design Controller Design with Time Delay for the Dual-Stage Actuation Systems Time Delay Effect on Dual-Stage System Control Performance Sampling Rate Effect on Dual-Stage System Control Performance Conclusion PZT Hysteresis Modeling and Compensation Introduction Modeling of Hysteresis PI Model GPI Model Inverse GPI Model Application of GPI Model to a PZT-Actuated Structure Modeling of the Hysteresis in the PZT-Actuated Structure Hysteresis Compensator Design Experimental Verification Conclusion Seeking Control of Dual-Stage Actuation Systems with Trajectory Optimization Introduction Current Profile of VCM Primary Actuator PTOS Method A General Form of VCM Current Profiles Control System Structure for the Dual-Stage Actuation System Design of VCM Current Profile a[sub(v)] and Dual-Stage Reference Trajectory r[sub(d)] Seeking within PZT Milliactuator Stroke Seeking over PZT Milliactuator Stroke Conclusion High-Frequency Vibration Control Using PZT Active Damping Introduction Singular Perturbation Method-Based Controller Design Singular Perturbation Control Topology Identification of Fast Dynamics Using PZT as a Sensor Design of Controllers Fast Subsystem Estimator G[sub(v)][sup(*)] Fast Controller C[sub(v)] Slow Controller C[sub(v)] Simulation and Experimental Results Frequency Responses Time Responses H[sub(2)] Controller Design Design of Csub(d) with H[sub(2)] Method and Notch Filters Design of Mixed H[sub(2)]/H[sub(∞)] Controller Csub(d) Application Results System Modeling H[sub(2)] Active Damping Control Mixed H[sub(2)]/H[sub(∞)] Active Damping Control Experimental Results Conclusion Self-Sensing Actuation of Dual-Stage Systems Introduction Estimation of PZT Secondary Actuator’s Displacement y[sub(p)][sup(*)] Self-Sensing Actuation and Bridge Circuit PZT Displacement Estimation Circuit H[sub(B)] Design of Controllers VCM Controller and Controller C[sub(D)] PZT Controller Performance Evaluation Effectiveness of C[sub(D)] Position Errors Conclusion Modeling and Control of a MEMS Micro X–Y Stage Media Platform Introduction MEMS Micro X–Y Stage Design and Simulation of Micro X–Y Stage Static Dynamic Modeling of Micro X–Y Stage Fabrication of the MEMS Micro X–Y Stage Capacitive Self-Sensing Actuation Design of CSSA Bridge Circuit Experimental Verification Robust Decoupling Controller Design Choice of Pre-Shaping Filters Controller Synthesis Frequency Responses Time Responses Robustness Analysis Conclusion Conclusions Many secondary actuators have been developed in addition to primary actuators in the field of mechanical actuation systems. The aim is to provide high performance such as high precision and fast response. Several types of secondary actuators have been introduced such as PZT milliactuator, electrostatic microactuator, PZT microactuator, and thermal microactuator. Comparison of these secondary actuators has been made, and these secondary actuators have made dual and multi-stage actuation mechanisms possible.\nThree-stage actuation systems have been proposed for the demand of wider bandwidth, to overcome the limitation by stroke constraint and saturation of secondary actuators. After the characteristics of the three-stage systems have been developed and the models have been identified, the control strategy and algorithm have been developed to deal with vibrations and meet different requirements. Particularly, for the three-stage actuation systems, the presented control strategies make it easy to further push the bandwidth and meet the performance requirement. The control of the thermal microactuator based dual-stage system has been discussed in detail, including linearization and controller design method.\nThe developed advanced algorithms applied in the multi-stage systems include \\(\\mathcal{H}_\\infty\\) loop shaping, anti-windup compensation, \\(\\mathcal{H}_2\\) control method, and mixed \\(\\mathcal{H}_2/\\mathcal{H}_\\infty\\) control method. Typical problems of the milli and micro-actuators as the secondary actuators have been considered and appropriate solutions have been presented such as saturation compensation, hysteresis modeling and compensation, stroke limitation, and PZT self-sensing scheme. Time delay and sampling rate effect on the control performance have been analyzed to help select appropriate sampling rate and design suitable controllers.\nSpecific usage of PZT elements has been produced for system performance improvement. Using PZT elements as a sensor to deal with high-frequency vibration beyond the bandwidth has been proposed and systematic controller design methods have been developed. As a more advanced concept, PZT elements being used as actuator and sensor simultaneously has also been addressed in this book with detailed scheme and controller design methodology for effective utilization.\nBibliography Du, C., \u0026amp; Pang, C. K., Multi-stage actuation systems and control (2019), Boca Raton, FL: CRC Press. ↩\n","permalink":"/book/du19_multi_actuat_system_contr/","tags":null,"title":"Multi-stage actuation systems and control"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Position control in lithographic equipment Implementation challenges for multivariable control: what you did not learn in school! Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Multivariable control systems: an engineering approach Multivariable feedback control: analysis and design ","permalink":"/zettels/multivariable_control/","tags":null,"title":"Multivariable Control"},{"categories":null,"contents":" Tags Multivariable Control Reference (Albertos \u0026amp; Antonio, 2004) Author(s) Albertos, P., \u0026amp; Antonio, S. Year 2004 Bibliography Albertos, P., \u0026amp; Antonio, S., Multivariable control systems: an engineering approach (2004), : Springer-Verlag. ↩\n","permalink":"/book/albertos04_multiv_contr_system/","tags":null,"title":"Multivariable control systems: an engineering approach"},{"categories":null,"contents":" Tags Reference Books, Multivariable Control Reference (Skogestad \u0026amp; Postlethwaite, 2007) Author(s) Skogestad, S., \u0026amp; Postlethwaite, I. Year 2007 \\( % H Infini \\newcommand{\\hinf}{\\mathcal{H}_\\infty} % H 2 \\newcommand{\\htwo}{\\mathcal{H}_2} % Omega \\newcommand{\\w}{\\omega} % H-Infinity Norm \\newcommand{\\hnorm}[1]{\\left\\|#1\\right\\|_{\\infty}} % H-2 Norm \\newcommand{\\normtwo}[1]{\\left\\|#1\\right\\|_{2}} % Norm \\newcommand{\\norm}[1]{\\left\\|#1\\right\\|} % Absolute value \\newcommand{\\abs}[1]{\\left\\lvert#1\\right\\lvert} % Maximum for all omega \\newcommand{\\maxw}{\\text{max}_{\\omega}} % Maximum singular value \\newcommand{\\maxsv}{\\overline{\\sigma}} % Minimum singular value \\newcommand{\\minsv}{\\underline{\\sigma}} % Under bar \\newcommand{\\ubar}[1]{\\text{\\b{$#1$}}} % Diag keyword \\newcommand{\\diag}[1]{\\text{diag}\\{{#1}\\}} % Vector \\newcommand{\\colvec}[1]{\\begin{bmatrix}#1\\end{bmatrix}} \\) \\( \\newcommand{\\tcmbox}[1]{\\boxed{#1}} % Simulate SIunitx \\newcommand{\\SI}[2]{#1\\,#2} \\newcommand{\\ang}[1]{#1^{\\circ}} \\newcommand{\\degree}{^{\\circ}} \\newcommand{\\radian}{\\text{rad}} \\newcommand{\\percent}{\\%} \\newcommand{\\decibel}{\\text{dB}} \\newcommand{\\per}{/} % Bug with subequations \\newcommand{\\eatLabel}[2]{} \\newenvironment{subequations}{\\eatLabel}{} \\) Introduction \nThe Process of Control System Design The process of designing a control system is a step by step design procedure as follows:\n Study the system (plant) to be controlled and obtain initial information about the control objectives model the system and simplify the model, if necessary scale the variables and analyze the resulting model; determine its properties Decide which variables are to be controlled (controlled outputs) Decide on the measurements and manipulated variables: what sensors and actuators will be used and where will they be placed? Select the control configuration Decide on the type of controller to be used Decide on performance specifications, based on the overall control objectives Design a controller Analyze the resulting controlled system to see if the specifications are satisfied; and if they are not satisfied modify the specifications or the type of controller Simulate the resulting controlled system Repeat from step 2 if necessary Choose hardware and software and implement the controller Test and validate the control system, and tune the controller on-line, if necessary Input-output controllability analysis is studied in section sec:perf_limit_siso for SISO systems and in section sec:perf_limit_mimo for MIMO systems. The steps 4, 5, 6 and 7 are corresponding to the control structure design. This is treated in section sec:controller_structure_design. The design of the controller is described in section sec:controller_design. The analysis of performance and robustness of a controlled system is studied in sections sec:uncertainty_robustness_siso and sec:robust_perf_mimo.\nThe Control Problem The objective of a control system is to make the output \\(y\\) behave in a desired way by manipulating the plant input \\(u\\). The regulator problem is to manipulate \\(u\\) to counteract the effect of a disturbance \\(d\\). The servo problem is to manipulate \\(u\\) to keep the output close to a given reference input \\(r\\).\nIn both cases, we want the control error \\(e = y - r\\) to be small. The algorithm for adjusting \\(u\\) based on \\(y\\) is the controller \\(K\\). To arrive at a good design for \\(K\\) we need information about the expected disturbances, the reference inputs, the plant model \\(G\\) and disturbance model \\(G_d\\).\nA major source of difficulty is that models may be inaccurate or may change with time. The inaccuracy in \\(G\\) may cause instability problems as it is part of the feedback loop. To deal with such a problem, the concept of model uncertainty will be used.\n Nominal Stability (NS) The system is stable with no model uncertainty Nominal Performance (NP) The system satisfies the performance specifications with no model uncertainty Robust Stability (RS) The system is stable for all perturbed plants about the nominal model up to the worst case uncertainty Robust Performance (RP) The system satisfies the performance specifications for all perturbed plants about the nominal model up to the worst-case model uncertainty Transfer Functions Properties of transfer functions:\n A system \\(G(s)\\) is strictly proper if \\(G(s) \\rightarrow 0\\) as \\(\\w \\rightarrow \\infty\\) A system \\(G(s)\\) is semi-proper if \\(G(s) \\rightarrow D \\ne 0\\) as \\(\\w \\rightarrow \\infty\\) A system \\(G(s)\\) is proper if \\(G(s)\\) is strictly proper or semi-proper The order of the system noted \\(n\\) and is the order of the denominator (or pole polynomial) of its matrix transfer function Scaling Scaling is very important in applications, both for model analysis (input-output controllability) and for controller design.\nThe scaling is done by dividing each variable by its maximum expected or allowed change. That way, the scaled variable should be less than one in magnitude.\nWe denote variables in their unscaled units by a hat.\n \\(d = \\hat{d}/D_d\\) with \\(D_d = \\hat{d}_{\\max}\\) is the largest expected change in disturbance \\(u = \\hat{u}/D_u\\) with \\(D_u = \\hat{u}_{\\max}\\) is the largest allowed input change The variables \\(\\hat{y}\\), \\(\\hat{r}\\) and \\(\\hat{e}\\) are in the same unit, so we choose to scale them with respect to the maximum allowed control error:\n \\(e = \\hat{e}/D_e\\) with \\(D_e = \\hat{e}_{\\max}\\) is the largest allowed control error \\(r = \\hat{r}/D_e\\) \\(y = \\hat{y}/D_e\\) For MIMO systems, each variables in the vectors \\(\\hat{d}\\), \\(\\hat{r}\\), \\(\\hat{u}\\) and \\(\\hat{e}\\) may have a different maximum value, in which case \\(D_e\\), \\(D_u\\), \\(D_s\\) and \\(D_r\\), become diagonal scaling matrices.\n \\begin{align*} G \u0026amp;= D_e^{-1} \\hat{G} D_u\\\\\\\nG_d \u0026amp;= D_e^{-1} \\hat{G_d} D_d \\end{align*}\n We then obtain the following model in terms of scaled variables: \\[ y = G u + G_d d \\] where \\(u\\) and \\(d\\) should be less than 1 in magnitude.\nIt is sometimes useful to introduce a scaled reference \\(\\tilde{r}\\) which is less than 1 in magnitude: \\(\\tilde{r} = \\hat{r}/\\hat{r}_{\\max} = D_r^{-1}\\hat{r}\\) Then we have \\(r = R \\tilde{r}\\) with \\(R \\triangleq D_e^{-1}D_r = \\hat{r}_{\\max}/\\hat{e}_{\\max}\\) is the largest expected change in reference relative to the allowed control error.\nWith scaling you make initial decision regarding performance. This makes weight selection simple later (may often select identity weights if initial scaling is reasonable!).\nDeriving Linear Models Linear models may be obtained from physical \u0026ldquo;first-principle\u0026rdquo; models or from analyzing input-output data (identification).\nIn order to obtain a linear model from the \u0026ldquo;first-principle\u0026rdquo;, the following approach is used:\n Formulate a nonlinear state-space model based on physical knowledge Determine the steady-state operating point about which to linearize Introduce deviation variables and linearize the model Notation Notations used throughout this note are summarized in tables table:notation_conventional, table:notation_general and table:notation_tf.\n\nTable 1: Notations for the conventional control configuration Notation Meaning \\(G\\) Plant model \\(K\\) Controller \\(G_d\\) Disturbance model \\(r\\) Reference inputs \\(n\\) Measurement noise \\(y\\) Plant outputs \\(y_m\\) Measurements \\(u\\) Control signals \nTable 2: Notations for the general configuration Notation Meaning \\(P\\) Generalized plant model \\(w\\) Exogenous inputs: commands, disturbances, noise \\(z\\) Exogenous outputs: signals to be minimized \\(v\\) Controller inputs: measurements \\(u\\) Control signals \nTable 3: Notations for transfer functions Notation Meaning \\(L\\) Loop gain: \\(L = GK\\) \\(S\\) Sensitivity function: \\(S = (I + L)^{-1}\\) \\(T\\) Complementary sensitivity function: \\(T = (I + L)*(I + L)^{-1}\\) Classical Feedback Control \nFrequency Response By replacing \\(s\\) by \\(j\\omega\\) in a transfer function \\(G(s)\\), we get the frequency response description. It can be used to describe:\n A system\u0026rsquo;s response to sinusoids of varying frequency The frequency content of a deterministic signal via the Fourier transform The frequency distribution of a stochastic signal via the power spectral density After sending a sinusoidal signal through a system \\(G(s)\\), the signal\u0026rsquo;s magnitude is amplified by a factor \\(\\abs{G(j\\omega)}\\) and its phase is shifted by \\(\\angle{G(j\\omega)}\\).\n minimum phase systems are systems with no time delays or RHP-zeros.\nThe name minimum phase refers to the fact that such a system has the minimum possible phase lag for the given magnitude response \\(|G(j\\omega)|\\).\nRHP-zeros and time delays contribute additional phase lag to a system when compare to that of a minimum phase system with the same gain (hence the term non-minimum phase system).\n For minimum phase systems, there is a unique relationship between the gain and phase of the frequency response: the Bode gain-phase relationship:\n\\begin{equation} \\angle{G(j\\w_0)} = \\frac{1}{\\pi} \\int_{-\\infty}^{\\infty} \\frac{d\\ln{\\abs{G(j\\w)}}}{d\\ln{\\w}} \\ln{\\abs{\\frac{\\w+\\w_0}{\\w-\\w_0}}} \\frac{d\\w}{\\w} \\end{equation}\nWe note \\(N(\\w_0) = \\left( \\frac{d\\ln{|G(j\\w)|}}{d\\ln{\\w}} \\right)_{\\w=\\w_0}\\) that corresponds to the slope of the magnitude of \\(G(s)\\) in log-variables. We then have the following approximation of the Bode gain-phase relationship:\n\\begin{equation} \\tcmbox{\\angle{G(j\\w_0)} \\approx \\frac{\\pi}{2} N(\\w_0)} \\end{equation}\nFeedback Control One Degree-of-Freedom Controller The simple one degree-of-freedom controller negative feedback structure is represented in Fig. fig:classical_feedback_alt.\nThe input to the controller \\(K(s)\\) is \\(r-y_m\\) where \\(y_m = y+n\\) is the measured output and \\(n\\) is the measurement noise. Thus, the input to the plant is \\(u = K(s) (r-y-n)\\). The objective of control is to manipulate \\(u\\) (design \\(K\\)) such that the control error \\(e\\) remains small in spite of disturbances \\(d\\). The control error is defined as \\(e = y-r\\).\n\n Figure 1: Configuration for one degree-of-freedom control\n Closed-loop Transfer Functions \\begin{subequations} \\begin{align} y \u0026amp;= T r + S G_d d + T n\\\\\\\ne \u0026amp;= -S r + S G_d d - T n\\\\\\\ny \u0026amp;= KS r - KS G_d d - KS n \\end{align} \\end{subequations}\n Why Feedback? We could think that we can use a \u0026ldquo;perfect\u0026rdquo; feedforward controller \\(K_r(s) = G^{-1}(s)\\) with \\(r-G_d d\\) as the controller input: \\[ y = G u + G_d d = G K_r (r - G_d d) + G_d d = r \\] Unfortunately, \\(G\\) is never an exact model and the disturbances are never known exactly.\n Signal uncertainty Unknown disturbance Model uncertainty An unstable plant Closed Loop Stability Two methods are commonly used to determine closed-loop stability:\n The system is stable if and only if all the closed-loop poles (roots of \\(1 + L(s) = 0\\)) are in the open LHP. The poles are also equal to the eigenvalues of the state-space \\(A\\) matrix (this is how the poles are computed). The frequency response of \\(L(j\\w)\\) is plotted in the complex plane and the number of encirclement it makes around the critical point \\(-1\\) is counted. Nyquist\u0026rsquo;s stability criterion: Closed-loop stability is inferred by equating the number of encirclement to the number of open-loop RHP-poles Bode\u0026rsquo;s stability condition: The closed loop system is stable if and only if \\(\\vert L(j \\w_{180})\\vert \u0026lt; 1\\) where \\(\\w_{180}\\) is the phase crossover frequency defined by \\(\\angle L(j \\w_{180})=\\ang{-180}\\). This is only valid for open-loop stable systems where \\(\\angle L(j\\w)\\) falls with frequency and such that \\(\\angle L(j\\w)\\) crosses \\(\\ang{-180}\\) only once. Method 1 is best suited for numerical calculation while method 2 has a nice graphical interpretation and may also be used for systems with time delays. Moreover, method 2 provides useful measure of relative stability and will be used for robustness test.\nEvaluating Closed-Loop Performance Gain Margin The Gain Margin is defined as:\n\\begin{equation} \\tcmbox{\\text{GM} = \\frac{1}{|L(j\\w_{180})|}} \\end{equation}\nwith \\(\\w_{180}\\) is the phase crossover frequency defined by \\(\\angle L(j \\w_{180}) = \\ang{-180}\\). If there is more than one crossing (\\(\\angle L(j \\w_{180}) = \\ang{-180}\\)), the largest value of \\(\\vert L(j\\w_{180})\\vert\\) is taken.\nThe GM is the factor by which the loop gain \\(\\vert L(s)\\vert\\) may be increased before the closed-loop system becomes unstable.\nPhase Margin The Phase Margin is defined as:\n\\begin{equation} \\tcmbox{\\text{PM} = \\angle L(j \\w_c) + \\ang{180}} \\end{equation}\nwith \\(\\w_c\\) the gain crossover frequency defined by \\(\\vert L(j \\w_c)\\vert = 1\\).\nThe PM tells how much negative phase (phase lag) we can add to \\(L(s)\\) at frequency \\(\\omega_c\\) before closed-loop instability appears.\nTypically, we required the PM to be larger than \\(\\SI{30}{\\degree}\\). This is a safeguard against time delay uncertainty, the system becomes unstable is we add a delay of \\(\\theta_{max} = PM / \\w_c\\).\nNote that by decreasing the value of \\(\\omega_c\\) (lowering the closed-loop bandwidth) the system can tolerate larger time delays.\nMaximum Peak Criteria \\begin{subequations} \\begin{align} M_S \u0026amp;= \\max_{\\w} \\abs{S(j\\w)} = \\hnorm{S}\\\\\\\nM_T \u0026amp;= \\max_{\\w} \\abs{T(j\\w)} = \\hnorm{T} \\end{align} \\end{subequations}\n Typically, we require \\(M_S \u0026lt; 2\\ (6dB)\\) and \\(M_T \u0026lt; 1.25\\ (2dB)\\).\nWhy do we want \\(M_S\\) small?\n Without feedback, with have \\(e = r - G_d d\\) but with feedback \\(e = S(r - G_d d)\\). Thus feedback improves performance in terms of reducing \\(|e|\\) where \\(|S|\u0026lt;1\\). However, we cannot avoid having \\(|S|\u0026gt;1\\) at some intermediate frequency where feedback control degrades performance. The value of \\(M_S\\) is then a measure of the worst-case performance degradation \\(M_S\\) is also a measure of the robustness because the smallest distance between \\(L(\\w)\\) and the critical point \\(-1\\) is \\({M_S}^{-1}\\) There is a close relationship between these maximum peaks and the gain and phase margins. For a given value of \\(M_S\\), we have:\n\\begin{equation} \\tcmbox{\\text{GM} \\geq \\frac{M_S}{M_S-1}; \\quad \\text{PM} \\geq \\frac{1}{M_S}} \\end{equation}\nExample of guaranteed stability margins:\n \\(M_S \u0026lt; 2 \\Rightarrow GM \u0026gt; 2\\) and \\(PM \u0026gt; \\SI{29}{\\degree}\\) \\(M_T \u0026lt; 2 \\Rightarrow GM \u0026gt; 1.5\\) and \\(PM \u0026gt; \\SI{29}{\\degree}\\) Bandwidth and Crossover Frequency In general, a large bandwidth corresponds to a faster rise time, however, this also indicates an higher sensitivity to noise and to parameter variations.\n The bandwidth, is the frequency range \\([\\w_1, \\w_2]\\) over which control is effective. In most case we simple call \\(\\w_2 = \\w_B\\) the bandwidth.\n As the word \u0026ldquo;effective\u0026rdquo; may be interpreted in different ways, there are multiple definitions of bandwidth:\n The closed-loop bandwidth \\(\\w_B\\) is the frequency where \\(\\vert S(j\\w)\\vert\\) first crosses \\(1/\\sqrt{2}\\approx -3dB\\) from below. The gain crossover frequency \\(\\w_c\\) is defined as the frequency where \\(\\vert L(j \\w_c)\\vert\\) first crosses 1 from above The bandwidth in terms of \\(T\\), \\(\\w_{BT}\\), is the highest frequency at which \\(\\vert T(j \\w_c)\\vert\\) crosses \\(1/\\sqrt{2}\\approx -3dB\\) from above. For systems with \\(PM \u0026lt; \\ang{90}\\), we have: \\(\\w_{B} \u0026lt;\\w_{c} \u0026lt; \\w_{BT}\\) Then we have the following regions:\n \\(\\w \u0026lt; \\w_B\\): \\(|S|\u0026lt;0.7\\) and control is effective \\(\\w_B \u0026lt; \\w \u0026lt; \\w_{BT}\\): we may have \\(|S| \u0026gt; 1\\) and control degrades performance \\(\\w_{BT} \u0026lt; \\w\\): \\(|S| \\approx 1\\) and control has no significant effect on the response The closed-loop time constant \\(\\tau_{\\text{cl}}\\) can be related to the bandwidth:\n\\begin{equation} \\tcmbox{\\tau_{\\text{cl}} \\approx \\frac{1}{\\w_b}} \\end{equation}\nController Design There is 3 mains approaches to controller design:\n Shaping of transfer functions. The designer specifies the magnitude of some transfer functions as a function of frequency and then finds a controller which gives the desired shape(s) Loop shaping of the open-loop transfer function \\(L(j\\w)\\) Shaping of closed-loop transfer functions such as \\(S\\), \\(T\\) and \\(KS\\) The signal based approach. This involves time domain problem formulations resulting in the minimization of a norm of a transfer function. Linear Quadratic Gaussian (LQG) is an example of a signal based approach. A signal based \\(\\hinf\\) optimal control methodology can be derived. Numerical optimization. This often involves multi-objective optimization where one attempts to optimize directly the true objectives such as rise times, stability margins, \u0026hellip; This problems may be difficult to solve, especially if one does not have convexity in the control parameters. This optimization may also be performed online. Loop Shaping Trade-offs in Terms of \\(L\\) Let\u0026rsquo;s consider a feedback control system with error \\(e = -S r + S G_d d - T n\\). If we want perfect control:\n For disturbance rejection and command tracking, we obtain \\(S \\approx 0\\), this implies that the loop transfer function \\(L\\) must be large in magnitude For zero noise transmission, we want \\(T \\approx 0\\) or equivalently \\(S \\approx I\\) which is obtained with \\(L \\approx 0\\). This illustrate the fundamental nature of feedback design which always involves a trade-off between conflicting objectives.\nThe most important design objectives are:\n Performance \\(L\\) large Good dist. rejection \\(L\\) large Limitation of meas. noise on plant output \\(L\\) small Small magnitude of input signal \\(K\\) and \\(L\\) small Strictly proper controller \\(K\\rightarrow 0\\) at high frequencies Nominal stability \\(L\\) small (RHP zeros and time delays) Robust stability \\(L\\) small (neglected dynamics) Fortunately, the conflicting design objectives are generally in different frequency ranges, and we can meet most of the objectives by using large loop gain at low frequencies and a small gain at high frequencies above crossover.\nFundamentals of Loop-Shaping Design Design procedure that involves explicitly shaping the magnitude of the loop transfer function \\(\\abs{L(j\\w)}\\).\n To get the benefits of feedback control, we want the loop gain \\(\\abs{L(j\\w)}\\) to be as large as possible within the bandwidth region. However, due to time delays, RHP-zeros, unmodelled high-frequency dynamics and limitations on the allowed manipulated inputs, the loop gain has to drop below one at and above the crossover frequency \\(\\w_c\\).\n To measure how \\(\\abs{L(j\\w)}\\) falls with frequency, we consider the logarithmic slope:\n\\begin{equation} N = \\frac{d \\ln{\\abs{L}}}{d \\ln{\\w}} \\end{equation}\nThe value of \\(-N\\) at high frequencies is called the roll-off rate.\n To get a high bandwidth (fast response) we want \\(\\w_c\\) large (thus \\(\\w_{180}\\) large), that is we want the phase lag in \\(L\\) to be small. Unfortunately, that is not consistent with the desire that \\(\\abs{L(j\\w)}\\) should fall sharply (because of the approximation \\(\\angle{L} \\approx -N * \\SI{90}{\\degree}\\)).\nThe situation becomes even worse for cases with delays or RHP-zeros in \\(L(s)\\) which add undesirable phase lag without contributing to a desirable negative slope.\nWe can define the desired loop transfer function in terms of the following specifications:\n The gain crossover frequency \\(\\w_c\\), where \\(\\abs{L(j\\w_c)} = 1\\) The shape of \\(\\abs{L(j\\w)}\\): Slope of \\(N=-1\\) around crossover Large roll-off at higher frequencies (\\(N\u0026gt;2\\)) Slope at low frequencies depending on the nature of the disturbance or reference signal. We required a slope of \\(-1\\) for step changes and \\(-2\\) for ramp changes The system type, defined as the number of pure integrators in \\(L(s)\\) Limitations Imposed by RHP-zeros and Time Delays We usually want the loop shape to have a slope of \\(-1\\) around crossover \\(\\w_c\\), then the phase lag of \\(L\\) at \\(\\w_c\\) will be at least \\(\\SI{-90}{\\degree}\\). If we require a phase margin of \\(\\SI{-35}{\\degree}\\), then the additional phase contribution from delays and RHP zeros at \\(\\w_c\\) cannot exceed \\(\\SI{-55}{\\degree}\\).\nFirst consider a time delay \\(\\theta\\) which adds a phase of \\(-\\theta \\omega\\). Thus, we want \\(\\theta \\omega_c \u0026lt; \\SI{55}{\\degree} \\approx \\SI{1}{\\radian}\\). The attainable bandwidth is limited by the time delay:\n\\begin{equation} \\tcmbox{\\omega_c \u0026lt; 1/\\theta} \\end{equation}\nNext consider a RHP-zero at \\(s = z\\). To avoid an increase in slope cause by the zero, we add a pole at \\(s = -z\\), then \\(L\\) contains \\(\\frac{-s+z}{s+z}\\) which corresponds to an all-pass filter. The phase contribution is \\(\\approx \\SI{-55}{\\degree}\\) at \\(\\w = z/2\\). Thus, this limits the attainable bandwidth:\n\\begin{equation} \\tcmbox{\\w_c \u0026lt; z/2} \\end{equation}\nInverse-Based Controller Design The idea is to have \\(L(s) = \\frac{\\w_c}{s}\\) with \\(\\w_c\\) the desired gain crossover frequency. The controller associated is then \\(K(s) = \\frac{\\w_c}{s}G^{-1}(s)\\) {the plant is inverted and an integrator is added}. This idea is the essential part of the internal model control (IMC). This loop shape yields a phase margin of \\(\\SI{90}{\\degree}\\) and an infinite gain margin.\nThey are many reasons why the inverse-based controller may not be a good choice:\n The controller will not be realizable if \\(G(s)\\) has a pole excess of two or larger The loop shape is not generally desirable, unless the references and disturbances are steps Loop Shaping for Disturbance Rejection We have \\(e = S G_d d\\) with \\(\\abs{d(j\\w)} \u0026lt; 1\\) at each frequency (thanks to scaling). The main control objective is to achieve \\(\\abs{e(j\\w)} \u0026lt; 1\\). Then, we require: \\(\\abs{S(j\\w) G_d(j\\w)} \u0026lt; 1, \\forall \\w\\) or equivalently \\(\\abs{1 + L(j\\w)} \u0026gt; \\abs{G_d}, \\forall \\w\\).\nNote that we don\u0026rsquo;t want to have larger loop gain than necessary to not increase input signals and sensitivity to noise. A reasonable loop shape is then \\(\\abs{L} = \\abs{G_d}\\).\nThe corresponding controller satisfies\n\\begin{equation} \\abs{K} = \\abs{G^{-1}G_d} \\end{equation}\nThis means that:\n For disturbances entering at the plant output (\\(G_d = 1\\)), we get \\(\\abs{K} = \\abs{G^{-1}}\\) For disturbances entering at the plant input (\\(G_d = G\\)), we get \\(\\abs{K} = 1\\) Note that reference change may be viewed as a disturbance directly affecting the output The loop-shape \\(L(s)\\) may be modify as follows:\n Around crossover, make the slope of \\(|L|\\) to be about -1. This is to achieve good transient behavior with acceptable gain and phase margins Improve the low frequency performance by adding integral action \\(\\abs{K} = \\abs{\\frac{s+\\w_I}{s}}\\abs{G^{-1}G_d}\\) Let \\(L(s)\\) roll of faster at high frequencies in order to reduce the effect of noise and the input magnitude Two Degrees-of-freedom Design For reference tracking, we typically want the controller to look like \\(\\frac{1}{s} G^{-1}\\), whereas for disturbance rejection we want the controller to look like \\(\\frac{1}{s} G^{-1}G_d\\).\nWe cannot achieve both of these simultaneously with a single feedback controller.\nThe solution is to use a two degrees of freedom controller where the reference signal \\(r\\) and output measurement \\(y_m\\) are independently treated by the controller (Fig. fig:classical_feedback_2dof_alt), rather than operating on their difference \\(r - y_m\\).\n\n Figure 2: 2 degrees-of-freedom control architecture\n The controller can be slit into two separate blocks (Fig. fig:classical_feedback_sep):\n the feedback controller \\(K_y\\) that is used to reduce the effect of uncertainty (disturbances and model errors) the prefilter \\(K_r\\) that shapes the commands \\(r\\) to improve tracking performance \n Figure 3: 2 degrees-of-freedom control architecture with two separate blocs\n It is optimal to design the combined two degrees of freedom controller \\(K\\) in one step, however, in practice \\(K_y\\) is often designed first for disturbance rejection, and then \\(K_r\\) is designed to improve reference tracking.\nShaping Closed-Loop Transfer Functions Specifications on the open-loop transfer function \\(L = GK\\) does not consider directly the closed-loop transfer functions, such as \\(S\\) and \\(T\\) which determine the final response. An alternative design strategy is to directly shape the magnitude of the closed loop transfer functions. This strategy can be formulated as an \\(\\hinf\\) optimal control problem.\nThe Terms \\(\\hinf\\) and \\(\\htwo\\) The \\(\\hinf\\) norm of a stable scalar transfer function \\(f(s)\\) is simply the peak value of \\(\\abs{f(j\\w)}\\) as a function of frequency:\n\\begin{equation} \\tcmbox{\\hnorm{f(s)} \\triangleq \\max_{\\w} \\abs{f(j\\w)}} \\end{equation}\nSimilarly, the symbol \\(\\htwo\\) stands for the Hardy space of transfer function with bounded 2-norm:\n\\begin{equation} \\tcmbox{\\normtwo{f(s)} \\triangleq \\left( \\frac{1}{2\\pi} \\int_{-\\infty}^{\\infty} \\abs{f(j\\w)}^2 d\\w \\right)^{1/2}} \\end{equation}\nWeighted Sensitivity The sensitivity function \\(S\\) is a very good indicator of closed-loop performance. The main advantage of considering \\(S\\) is that we want \\(S\\) small and it is sufficient to consider just its magnitude \\(\\abs{S}\\).\n Minimum bandwidth frequency \\(\\w_B^*\\) Maximum tracking error at selected freq. The maximum steady state tracking error \\(A\\) Shape of \\(S\\) over selected frequency ranges Maximum magnitude of \\(S\\): \\(\\hnorm{S(j\\w)} \\leq M\\) The maximum peak specification prevents amplification of noise at high frequencies, and also introduces a margin of robustness. Typically, we select \\(M = 2\\).\nMathematically, these specifications may be captured by an upper bound \\(1/\\abs{W_P(s)}\\) on the magnitude of \\(S\\) where \\(W_P(s)\\) is a weight selected by the designer. The subscript \\(P\\) stands for performance since \\(S\\) is mainly used as a performance indicator.\nThe performance requirement becomes \\[ S(j\\w) \u0026lt; 1/\\abs{W_P(j\\w)}, \\forall \\w \\] Which can be expressed as an \\(\\mathcal{H}_\\infty\\):\n\\begin{equation} \\tcmbox{\\hnorm{W_P S} \u0026lt; 1} \\end{equation}\n \\[W_P(s) = \\frac{s/M + \\w_B^*}{s + \\w_B^* A}\\]\nWith (see Fig. fig:performance_weigth):\n \\(M\\): maximum magnitude of \\(\\abs{S}\\) \\(\\w_B\\): crossover frequency \\(A\\): steady-state offset \n Figure 4: Inverse of performance weight\n If we want a steeper slope for \\(L\\) below the bandwidth, an higher order weight may be selected. A weight which ask for a slope of \\(-2\\) for \\(L\\) below crossover is: \\[W_P(s) = \\frac{(s/M^{1/2} + \\w_B^*)^2}{(s + \\w_B^* A^{1/2})^2}\\]\nStacked Requirements: Mixed Sensitivity The specification \\(\\hnorm{W_P S} \u0026lt; 1\\) puts a lower bound on the bandwidth, but not an upper one and nor does it allow us to specify the roll-off of \\(L(s)\\) above the bandwidth.\nTo do this, we can make demands on another closed-loop transfer function \\(T\\) by specifying an upper bound \\(1/\\abs{W_T}\\) on the magnitude \\(\\abs{T}\\) to make sure that \\(L\\) rolls off sufficiently fast at high frequencies.\nAlso, to achieve robustness or to restrict the magnitude of the input signal \\(u\\), one may place an upper bound \\(1/\\abs{W_U}\\) on the magnitude \\(KS\\).\nTo combined these mixed sensitivity specifications, a stacking approach is usually used, resulting in the following overall specification: \\[\\maxw \\maxsv(N(j\\w)) \u0026lt; 1; \\quad N = \\colvec{W_P S \\ W_T T \\ W_U KS}\\]\nAfter selecting the form of \\(N\\) and the weights, the \\(\\hinf\\) optimal controller is obtained by solving the problem \\(\\min_K\\hnorm{N(K)}\\).\nIntroduction to Multivariable Control \nIntroduction The main difference between a SISO system and a MIMO system is the presence of directions in the latter.\nHowever, most of the ideas and techniques used for SISO systems may be extended to MIMO systems. This is done by considering the maximum singular value instead of the absolute value.\nThe singular value decomposition (SVD) provides a useful way of quantifying multivariable directionality.\nFor MIMO systems the gain \\(\\frac{\\abs{Gd}}{\\abs{d}}\\) (where \\(\\abs{\\cdot}\\) is some norm) is independent of the magnitude \\(\\abs{d}\\) (like for SISO systems), but it does depend on its direction.\nA plant is said to be ill-conditioned if the gain depends strongly on the input direction. It is quantified by the condition number \\(\\Gamma\\) (which is much larger than 1 for an ill-conditioned plant).\nFor MIMO systems the order of the transfer functions matter, so in general:\n\\begin{equation} \\tcmbox{GK \\neq KG} \\end{equation}\neven when \\(G\\) and \\(K\\) are square matrices.\nTransfer Functions The main rule for evaluating transfer functions is the MIMO Rule: Start from the output and write down the transfer functions as you meet them going to the input. If you exit a feedback loop then we get a term \\((I-L)^{-1}\\) where \\(L = GK\\) is the transfer function around the loop (gain going backwards).\n Negative Feedback Control Systems For negative feedback system (Fig. fig:classical_feedback_bis), we define \\(L\\) to be the loop transfer function as seen when breaking the loop at the output of the plant:\n \\(L = G K\\) \\(S \\triangleq (I + L)^{-1}\\) is the transfer function from \\(d_1\\) to \\(y\\) \\(T \\triangleq L(I + L)^{-1}\\) is the transfer function from \\(r\\) to \\(y\\) \n Figure 5: Conventional negative feedback control system\n We define \\(L_1\\) to be the loop transfer function as seen when breaking the loop at the input to the plant:\n \\(L_1 = K G\\) \\(S_1 \\triangleq (I + L_1)^{-1}\\) \\(T_1 \\triangleq L_1(I + L_1)^{-1}\\) is the transfer function from \\(d_2\\) to \\(-u\\) Multivariable Frequency Response Analysis Obtaining the Frequency Response from \\(G(s)\\) Consider the system \\(G(s)\\) with input \\(d(s)\\) and output \\(y(s)\\). The element \\(g_{ij}(j\\w)\\) of the matrix \\(G\\) represents the sinusoidal response from the input \\(j\\) to output \\(i\\).\nDirections in Multivariable Systems For a SISO system, the gain at \\(\\omega\\) is simply:\n\\begin{equation} \\frac{|y(\\w)|}{|d(\\w)|} = \\frac{|G(j\\w)d(\\w)|}{|d(\\w)|} = |G(j\\w)| \\end{equation}\nThe gain depends on the frequency \\(\\w\\) but it is independent of the input magnitude \\(|d(\\w)|\\).\nFor MIMO systems, we have to use norms to measure the amplitude of the inputs/outputs. If we select vector 2-norm, the magnitude of the vector input signal is: \\[ \\normtwo{d(\\w)} = \\sqrt{\\sum_j |d_j(\\w)|^2} \\]\nThe gain of the system is then:\n\\begin{equation} \\frac{\\normtwo{y(\\w)}}{\\normtwo{d(\\w)}} = \\frac{\\normtwo{G(j\\w)d(\\w)}}{\\normtwo{d(\\w)}} = \\frac{\\sqrt{\\sum_j |y_j(\\w)|^2}}{\\sqrt{\\sum_j |d_j(\\w)|^2}} \\end{equation}\nAgain the gain depends on the frequency \\(\\w\\) and again it is independent of the input magnitude \\(\\normtwo{d(\\w)}\\). However, the gain depends also on the direction of the input \\(d\\).\nEigenvalues as a Poor Measure of Gain The magnitudes of the eigenvalues of a transfer function matrix \\(\\abs{\\lambda_i(G(j\\w))}\\) do not provide a useful means of generalizing the SISO gain. The main problem is that the eigenvalues measure the gain for the special case when the inputs and the outputs are in the same direction, namely in the direction of the eigenvectors.\nSingular Value Decomposition We are interested by the physical interpretation of the SVD when applied to the frequency response of a MIMO system \\(G(s)\\) with \\(m\\) inputs and \\(l\\) outputs.\n \\begin{equation} G = U \\Sigma V^H \\end{equation}\n \\(\\Sigma\\) is an \\(l \\times m\\) matrix with \\(k = \\min\\{l, m\\}\\) non-negative singular values \\(\\sigma_i\\), arranged in descending order along its main diagonal, the other entries are zero. \\(U\\) is an \\(l \\times l\\) unitary matrix. The columns of \\(U\\), denoted \\(u_i\\), represent the output directions of the plant. They are orthonormal. \\(V\\) is an \\(m \\times m\\) unitary matrix. The columns of \\(V\\), denoted \\(v_i\\), represent the input directions of the plant. They are orthonormal. The input and output directions are related through the singular values:\n\\begin{equation} \\tcmbox{G v_i = \\sigma_i u_i} \\end{equation}\nSo, if we consider an input in the direction \\(v_i\\), then the output is in the direction \\(u_i\\). Furthermore, since \\(\\normtwo{v_i}=1\\) and \\(\\normtwo{u_i}=1\\), we see that the singular value \\(\\sigma_i\\) directly gives the gain of the matrix \\(G\\) in this direction.\nThe largest gain for any input is equal to the maximum singular value: \\[\\maxsv(G) \\equiv \\sigma_1(G) = \\max_{d\\neq 0}\\frac{\\normtwo{Gd}}{\\normtwo{d}} = \\frac{\\normtwo{Gv_1}}{\\normtwo{v_1}} \\] The smallest gain for any input direction is equal to the minimum singular value: \\[\\minsv(G) \\equiv \\sigma_k(G) = \\min_{d\\neq 0}\\frac{\\normtwo{Gd}}{\\normtwo{d}} = \\frac{\\normtwo{Gv_k}}{\\normtwo{v_k}} \\]\nWe define \\(u_1 = \\bar{u}\\), \\(v_1 = \\bar{v}\\), \\(u_k=\\ubar{u}\\) and \\(v_k = \\ubar{v}\\). Then is follows that: \\[ G\\bar{v} = \\maxsv \\bar{u} ; \\quad G\\ubar{v} = \\minsv \\ubar{u} \\]\nNon Square Plants If the plant has more output than inputs, the outputs singular vectors \\(u_i\\) with \\(i \u0026gt; k\\) correspond to the outputs directions that cannot be controlled.\nSimilarly, for a plant with more inputs and outputs, the additional input singular vectors tells us in which directions the input will have no effect.\nSingular Values for Performance The gain of the MIMO system from the vector of reference inputs \\(r\\) and the vector of control error \\(e\\) is bounded by the minimum and maximum singular values of \\(S\\): \\[ \\minsv(S(j\\w)) \u0026lt; \\frac{\\normtwo{e(\\w)}}{\\normtwo{r(\\w)}} \u0026lt; \\maxsv(S(j\\w)) \\]\nIn terms of performance, we require that the gain remains small for any direction of \\(r(\\w)\\) including the \u0026ldquo;worst-case\u0026rdquo; direction corresponding to the gain \\(\\maxsv(S(j\\w))\\). Let \\(1/\\abs{W_P(j\\w)}\\) represent the maximum allowed magnitude of \\(\\frac{\\normtwo{e(\\w)}}{\\normtwo{r(\\w)}}\\) at each frequency: \\[ \\maxsv(S(j\\w)) \u0026lt; \\frac{1}{\\abs{W_P}}, \\forall \\w \\Leftrightarrow \\hnorm{W_P S} \u0026lt; 1 \\]\n The \\(\\hinf\\) norm is defined as the peak of the maximum singular value of the frequency response:\n\\begin{equation} \\hnorm{M(s)} \\triangleq \\max_{\\w} \\maxsv(M(j\\w)) \\end{equation}\n For MIMO systems the bandwidth depends on direction. If we want to associate a single bandwidth frequency for a multivariable system, then we consider the worst-case direction, and define the bandwidth \\(\\w_B\\) as the frequency where \\(\\maxsv(S)\\) crosses \\(\\frac{1}{\\sqrt{2}} = 0.7\\) from below.\nControl of Multivariable Plants A conceptually simple approach to multivariable control is given by a two-step procedure:\n Design a pre-compensator \\(W_1\\), which counteracts the interactions in the plant and results in a new shaped plant \\(G_S(s) = G(s) W_1(s)\\) which is more diagonal and easier to control than the original plant \\(G(s)\\). Design a diagonal controller \\(K_S(s)\\) for the shaped plant using methods similar to those for SISO systems. The overall controller is then: \\[ K(s) = W_1(s)K_s(s) \\]\nDecoupling There are mainly three different cases:\n Dynamic decoupling: \\(G_S(s)\\) is diagonal at all frequencies. For that we can choose \\(W_1(s) = G^{-1}(s)\\) and this is an inverse-based controller. Steady-state decoupling: \\(G_S(0)\\) is diagonal. This can be obtained by selecting \\(W_1(s) = G^{-1}(0)\\). Approximate decoupling at frequency \\(\\w_0\\): \\(G_S(j\\w_0)\\) is as diagonal as possible. Decoupling the system at \\(\\w_0\\) is a good choice because the effect on performance of reducing interaction is normally greatest at this frequency. The idea of decoupling control is appealing, but there are several difficulties:\n It is very sensitive to modelling errors It may not be required for disturbance rejection If the plant has RHP-zero, the decoupling generally introduces extra RHP-zero in the closed-loop system SVD-Controller We can also introduce a post compensator \\(W_2(s)\\). The shaped plant is then: \\[G_S(s) = W_2(s)G(s)W_1(s)\\]\nA diagonal controller \\(K_S\\) can then be designed for the shaped plant. The overall controller is then: \\[K(s) = W_1(s)K_S(s)W_2(s)\\]\nThe SVD-controller is a special case of a pre and post compensator design: \\(W_1 = V_0\\) and \\(W_2 = U_0^T\\). \\(V_0\\) and \\(U_0\\) are obtained from a SVD of \\(G_0 = U_0 \\Sigma_0 V_0^T\\) where \\(G_0\\) is a real approximation of \\(G(j\\w_0)\\).\nDecentralized Control Another approach is to use a diagonal or block-diagonal controller \\(K(s)\\). This works well if \\(G(s)\\) is close to diagonal, because then the plant to be controlled is essentially a collection of independent sub-plants, and each element in \\(K(s)\\) may be designed independently. However, if off-diagonal elements in \\(G(s)\\) are large, the performance with decentralized diagonal control may be poor because no attempt is made to counteract the interactions.\nWhat is the Shape of the \u0026ldquo;best\u0026rdquo; Feedback Controller? Consider the problem of disturbance rejection: \\(y = S G_d d\\) where \\(\\normtwo{d}\u0026lt;1\\) and our performance requirement is that \\(\\normtwo{y}\u0026lt;1\\) which is equivalent to requiring \\(\\maxsv(SG_d) \u0026lt; 1\\).\nHowever there is generally a trade-off between input usage and performance. The controller that minimize the input magnitude while meeting the performance requirement is the one that yields all singular values of \\(SG_d\\) equal to 1, i.e. \\(\\sigma_i(SG_d) = 1, \\forall \\w\\). This corresponds to: \\[S_{\\text{min}} G_d = U_1\\] Where \\(U_1\\) is some all-pass transfer function (which at each frequency has all its singular values equal to 1).\nAt frequencies where feedback is effective, we have \\(S\\approx L^{-1}\\) and then \\(L_{\\text{min}} = GK_{\\text{min}} \\approx G_d U_1^{-1}\\). In conclusion, the controller and loop shape with the minimum gain will often look like: \\[ K_{\\text{min}} \\approx G^{-1} G_d U_2 \\] where \\(U_2 = U_1^{-1}\\) is some all-pass transfer function matrix.\nWe see that for disturbances entering at the plant inputs, \\(G_d = G\\), we get \\(G_{\\text{min}} = U_2\\), so a simple constant unit gain controller yields a good trade-off between output performance and input usage.\nSummary of Mixed-Sensitivity \\(\\hinf\\) Synthesis In the mixed-sensitivity \\(S/KS\\) problem, the objective is to minimize the \\(\\hinf\\) norm of:\n\\begin{equation} N = \\colvec{W_P S \\ W_U K S} \\end{equation}\nHere are some guidelines for the choice of the weights \\(W_P\\) and \\(W_U\\):\n \\(KS\\) is the transfer function from \\(r\\) to \\(u\\), so for a system which has been scaled, a reasonable initial choice for the input weight is \\(W_U = I\\) \\(S\\) is the transfer function from \\(r\\) to \\(-e = r-y\\). A common choice for the performance weight is \\(W_P = \\text{diag}\\{w_{p_i}\\}\\) with: \\[ w_{p_i} = \\frac{s/M_i + \\w_{B_i}^*}{s + \\w_{B_i}^*A_i}, \\quad A_i \\ll 1 \\] Selecting \\(A_i \\ll 1\\) ensures approximate integral action. Often we select \\(M_i\\) about 2 for all outputs, whereas \\(\\w_{B_i}^*\\) may be different for each output. For disturbance rejection, we may in some cases want a steeper slope for \\(w_{P_i}(s)\\) at low frequencies. However it may be better to consider the disturbances explicitly by considering the \\(\\hinf\\) norm of:\n\\begin{equation} N = \\begin{bmatrix} W_P S \u0026amp; W_P S G_d \\\\\\\nW_U K S \u0026amp; W_U K S G_d \\end{bmatrix} \\end{equation}\nWe can also considerate \\(T\\) which is the transfer function from \\(-n\\) to \\(y\\). To reduce the sensitivity to noise and uncertainty, we want \\(T\\) small at high frequencies, and so we may want additional roll-off in \\(L\\). This can be achieved in several ways:\n One approach is to add \\(W_T T\\) to the stack for \\(N\\) where \\(W_T = \\text{diag}\\{w_{T_i}\\}\\) and \\(\\abs{w_{T_i}}\\) is smaller than 1 at low frequencies and large at high frequencies A more direct approach is to add high-frequency dynamics \\(W_1(s)\\) to the plant model to ensure that the resulting shaped plant, \\(G_S=GW_1\\) rolls off with the desired slope. We then obtain an \\(\\hinf\\) optimal controller \\(K_S\\) for this shaped plant, and finally include \\(W_1(s)\\) in the controller \\(K=W_1 K_S\\) Introduction to MIMO RHP-Zeros Whereas the poles \\(p\\) of MIMO system \\(G\\) are essentially poles of elements of \\(G\\), the zeros are generally not the zeros of elements of \\(G\\). However, for square MIMO plants, the poles and zeros are in most cases the poles and zeros of \\(\\det G(s)\\).\n The zeros \\(z\\) of a MIMO system \\(G\\) are defined as the values \\(s=z\\) where \\(G(s)\\) loses rank.\n As for SISO systems, we find that RHP-zeros impose fundamental limitations on control. Poles and zeros of MIMO systems have directions:\n We can find the direction of a zero by looking at the direction in which the matrix \\(G(z)\\) has zero gain Pole direction is direction where \\(G(p)\\) is infinite It is generally possible to move the effect of RHP-zero to particular outputs. If it is not, the zero is called a \u0026ldquo;pinned zero\u0026quot;.\nCondition Number and RGA Condition Number We define the condition number of a matrix as the ratio between its maximum and minimum singular values:\n\\begin{equation} \\gamma(G) \\triangleq \\maxsv(G)/\\minsv(G) \\end{equation}\n A matrix with large condition number is said to be ill-conditioned.\nFor a non-singular square matrix \\(\\minsv(G)=1/\\maxsv(G^{-1})\\), so \\(\\gamma(G) = \\maxsv(G) \\maxsv(G^{-1})\\). It then follows that the condition number is large if the product of the largest element in \\(G\\) and \\(G^{-1}\\) is large.\nNote that the condition number depends strongly on scaling. One might consider minimizing the condition number over all possible scalings. This results in the minimized or optimal condition number which is defined by:\n\\begin{equation} \\gamma^*(G) = \\min_{D_1,D_2} \\gamma(D_1 G D_2) \\end{equation}\nIf the condition number is small, then the multivariable effects of uncertainty are not likely to be serious. However if the condition number is large (say, larger than 10), then this may indicate control problems.\nRelative Gain Array (RGA) The relative gain array (RGA) for a non-singular square matrix \\(G\\) is a square matrix defined as:\n\\begin{equation} \\text{RGA}(G) = \\Lambda(G) \\triangleq G \\times G^{-T} \\end{equation}\nwhere \\(\\times\\) is element-by-element multiplication\n In most case, it is the value of the RGA at frequencies close to crossover which is most important.\nThe RGA has interesting algebraic properties:\n It is independent of input and output scaling Its rows and columns sum to one The sum-norm of the RGA \\(\\|\\Lambda\\|_\\text{sum}\\) is close to the minimized condition number \\(\\gamma^*\\). Plants with large RGA-elements are thus always ill-conditioned The RGA is the identity matrix if \\(G\\) is upper of lower triangular. This follows that \\(\\Gamma - I\\) provides a measure of two-way interactions It has also a number of useful control properties:\n Plants with large RGA-elements around the crossover frequency are fundamentally difficult to control because of sensitivity to input uncertainty If the sign of a RGA-element changes from \\(s=0\\) to \\(s=\\infty\\), then there is a RHP-zero in \\(G\\) The definition of the RGA may be generalized to non-square matrices by using the pseudo inverse The RGA-number can be used as a measure of diagonal dominance: \\(\\|\\Lambda(G)-I\\|_{\\text{sum}}\\) For decentralized control, we prefer pairing input and outputs for which the RGA-number at crossover frequencies is close to \\(0\\) Introduction to Robustness for MIMO Plants Multivariable plants can show a sensitivity to uncertainty which is fundamentally different from what is possible in SISO systems. It is possible to have excellent stability margins (GM and PM) when considering one loop at a time, but small simultaneous input gain errors can give instability.\nFor SISO systems, we generally have that nominal performance and robust stability imply robust performance, but this is not the case for MIMO systems.\nAlthough we have useful indicators of robustness problems (RGA-number, Sensitivity Peaks, etc), they provide no exact answer to whether a given source of uncertainty will yield instability or poor performance. The structured singular value \\(\\mu\\) is a tool for analyzing the effects of model uncertainty.\nGeneral Control Problem Formulation The general control problem formulation is represented in Fig. fig:general_control_names.\n\n Figure 6: General control configuration\n Find a controller \\(K\\) which based on the information in \\(v\\), generates a control signal \\(u\\) which counteracts the influence of \\(w\\) on \\(z\\), thereby minimizing the closed-loop norm from \\(w\\) to \\(z\\).\n Obtaining the Generalized Plant \\(P\\) We must first find a block diagram representation of the system and identify the signals \\(w\\), \\(z\\), \\(u\\) and \\(v\\). Then we have to break all the \u0026ldquo;loops\u0026rdquo; entering and exiting the controller \\(K\\) to obtain \\(P\\) such that:\n\\begin{equation} \\colvec{z\\v} = P \\colvec{w\\u} \\end{equation}\nController Design: Including Weights in \\(P\\) In order to get a meaningful controller synthesis problem, for example in terms of the \\(\\hinf\\) norms, we generally have to include the weights \\(W_z\\) and \\(W_w\\) in the generalized plant \\(P\\) (Fig. fig:general_plant_weights). We consider:\n The weighted or normalized exogenous inputs \\(w\\) (where \\(\\tilde{w} = W_w w\\) consists of the \u0026ldquo;physical\u0026rdquo; signals entering the system) The weighted or normalized controlled outputs \\(z = W_z \\tilde{z}\\) (where \\(\\tilde{z}\\) often consists of the control error \\(y-r\\) and the manipulated input \\(u\\)) \n Figure 7: General Weighted Plant\n The weighted matrices are usually frequency dependent and typically selected such that weighted signals \\(w\\) and \\(z\\) are of magnitude 1.\nPartitioning the Generalized Plant \\(P\\) We often partition \\(P\\) as:\n\\begin{equation} \\begin{bmatrix} z \\ v \\end{bmatrix} = \\begin{bmatrix} P_{11} \u0026amp; P_{12} \\\\\\\nP_{21} \u0026amp; P_{22} \\end{bmatrix} \\begin{bmatrix} w \\ u \\end{bmatrix} \\end{equation}\n\\(P_{22}\\) has dimensions compatible with the controller.\nAnalysis: Closing the Loop the get \\(N\\) In the previous representations, the controller \\(K\\) has a separate block. This is useful when synthesizing the controller. However, for analysis of closed-loop performance the controller is given, and we may absorb \\(K\\) into the interconnection structure and obtain the system \\(N\\).\n \\begin{equation} z = N w \\end{equation}\n\\(N\\) is given by: \\[N = P_{11} + P_{12}K(I-P_{22}K)^{-1}P_{12} \\triangleq F_l(P, K) \\] where \\(F_l(P, K)\\) denotes a lower linear fractional transformation (LFT).\n A General Control Configuration Including Model Uncertainty The general control configuration may be extended to include model uncertainty as shown in Fig. fig:general_config_model_uncertainty.\n\n Figure 8: General control configuration for the case with model uncertainty\n The matrix \\(\\Delta\\) is a block-diagonal matrix that includes all possible perturbations (representing uncertainty). It is usually normalized in such a way that \\(\\hnorm{\\Delta} \\leq 1\\).\nConclusion The Singular Value Decomposition (SVD) of the plant transfer function matrix provides insight into multivariable directionality.\nOther useful tools for analyzing directionality and interactions are the condition number and the Relative Gain Array (RGA).\nClosed loop performance may be analyzed in the frequency domain by evaluating the maximum singular value of the sensitivity function as the function of frequency.\nMultivariable RHP-zeros impose fundamental limitations on performance, but for MIMO systems we can often direct the undesired effect of a RHP-zero to a subset of the outputs.\nMIMO systems are often more sensitive to uncertainty than SISO systems.\n Elements of Linear System Theory \nSystem Descriptions For linear systems there are several alternative system representations:\n state-space representation often follows directly from a physical model, and is used in most numerical calculations. transfer function representation is a nice compact representation which yields invaluable insights; it allows for series connections to be represented by multiplication of transfer functions. It also leads directly to the frequency response by setting \\(s = j\\w\\). coprime factorization is a factorization into two stable systems, and that it is useful for representing the class of all stabilizing controllers. It forms the basis for the very useful coprime uncertainty description. State-Space Representation A natural way to represent many physical systems is by nonlinear state-space models of the form \\[\\dot{x} \\triangleq \\frac{dx}{dt} = f(x, u);\\quad y = g(x, u)\\]\nLinear state-space models may then be derived from the linearization of such models.\n\\begin{align*} \\dot{x}(t) \u0026amp; = A x(t) + B u(t)\\\\\\\ny(t) \u0026amp; = C x(t) + D u(t) \\end{align*}\nwhere \\(A\\), \\(B\\), \\(C\\) and \\(D\\) are real matrices.\nThese equations may be rewritten as \\[\\colvec{\\dot{x}\\y} = \\begin{bmatrix} A \u0026amp; B \\\\\\\nC \u0026amp; D \\end{bmatrix} \\colvec{x\\u}\\] which gives rise to the short-hand notation \\[G = \\left[ \\begin{array}{c|c} A \u0026amp; B \\ \\hline C \u0026amp; D \\\\\\\n\\end{array} \\right]\\]\nThe state-space representation of a system is not unique, there exist realizations with the same input-output behavior, but with additional unobservable and/or uncontrollable state.\n A minimal realization is a realization with the fewest number of states and consequently no unobservable or uncontrollable modes.\n The state-space representation yields an internal description of the system which may be useful if the model is derived from physical principles. It is also more suitable for numerical calculations.\nImpulse Response Representation The impulse response matrix is \\[g(t) = \\begin{cases} 0 \u0026amp; t \u0026lt; 0 \\\\\\\nC e^{At} B + D \\delta(t) \u0026amp; t \\geq 0 \\end{cases}\\] The \\(ij\\)\u0026lsquo;th element of the impulse response matrix, \\(g_{ij}(t)\\), represents the response \\(y_i(t)\\) to an impulse \\(u_j(t)=\\delta(t)\\) for a systems with a zero initial state.\nWith initial state \\(x(0) = 0\\), the dynamic response to an arbitrary input \\(u(t)\\) is \\[y(t) = g(t)*u(t) = \\int_0^t g(t-\\tau)u(\\tau)d\\tau\\]\nTransfer Function Representation - Laplace Transforms The transfer function representation is unique and is defined as the Laplace transform of the impulse response.\n \\[ G(s) = \\int_0^\\infty g(t)e^{-st}dt \\]\n We can also obtain the transfer function representation from the state-space representation by taking the Laplace transform of the state-space equations \\[ s x(s) = A x(s) + B u(s) \\ \\Rightarrow \\ x(s) = (sI-A)^{-1} B u(s) \\] \\[ y(s) = C x(s) + D u(s) \\ \\Rightarrow \\ y(s) = \\underbrace{\\left(C(sI-A)^{-1}B+D\\right)}_{G(s)}u(s) \\]\nTime delays and improper systems can be represented by Laplace transforms, but do not have a state-space representation.\nCoprime Factorization \\[G(s) = N_r(s) M_r^{-1}(s)\\] where \\(N_r(s)\\) and \\(M_r(s)\\) are stable coprime transfer functions.\n The stability implies that \\(N_r(s)\\) should contains all the RHP-zeros of \\(G(s)\\), and \\(M_r(s)\\) should contain as RHP-zeros all the RHP-poles of \\(G(s)\\). Mathematically, coprimeness means that there exist stable \\(U_r(s)\\) and \\(V_r(s)\\) such that the Bezout identity is satisfied: \\(U_r N_r + V_r M_r = I\\)\nState Controllability and State Observability There are many ways to check for state controllability and observability, e.g. with Gramians, input/output pole vectors, controllability/observability matrix, etc.\nInput and output pole vectors The method which yields the most insight is probably to compute the input and output directions associated with each pole (mode).\nFor the case when \\(A\\) has distinct eigenvalues, we have the following dyadic expansion of the transfer function matrix from inputs to outputs \\[G(s) = \\sum_{i=1}^{n} \\frac{C t_i q_i^H B}{s - \\lambda_i} + D = \\sum_{i=1}^{n} \\frac{y_{p_i} u_{p_i}}{s - \\lambda_i} + D\\]\n The \\(i\\)\u0026lsquo;th input pole vector \\(u_{p_i} \\triangleq q_i^H B\\) is an indication of how much the \\(i\\)\u0026lsquo;th mode is excited (and thus may be \u0026ldquo;controlled\u0026rdquo;) by the inputs. The \\(i\\)\u0026lsquo;th output pole vector \\(y_{p_i} \\triangleq C t_i\\) indicates how much the \\(i\\)\u0026lsquo;th mode is observed in the outputs. State Controllability Let \\(\\lambda_i\\) be the \\(i^{\\text{th}}\\) eigenvalue of \\(A\\), \\(q_i\\) the corresponding left eigenvector (\\(q_i^H A = \\lambda_i q_i^H\\)), and \\(u_{p_i} = B^H q_i\\) the \\(i^{\\text{th}}\\) input pole vector. Then the system \\((A, B)\\) is state controllable if and only if \\[u_{p_i} \\neq 0, \\forall i\\] That is if and only if all its input pole vectors are nonzero.\nState Observability Let \\(\\lambda_i\\) be the \\(i^{\\text{th}}\\) eigenvalue of \\(A\\), \\(t_i\\) the corresponding right eigenvector (\\(A t_i = \\lambda_i t_i\\)), and \\(y_{p_i} = C t_i\\) the \\(i^{\\text{th}}\\) output pole vector. Then the system \\((A, C)\\) is state observable if and only if \\[y_{p_i} \\neq 0, \\forall i\\] That is if and only if all its output pole vectors are nonzero.\nMinimal realization A state space realization \\((A, B, C, D)\\) of \\(G(s)\\) is said to be a minimal realization of \\(G(s)\\) if \\(A\\) has the smallest possible dimension. The smallest dimension is called the McMillan degree of \\(G(s)\\). A mode is hidden if it is not state controllable or observable and thus does not appear in the minimal realization. It follows that a state-space realization is minimal if and only if \\((A, B)\\) is state controllable and \\((A, C)\\) is state observable.\nStability A system is (internally) stable is none of its components contain hidden unstable modes and the injection of bounded external signals at any place in the system result in bounded output signals measured anywhere in the system.\n A system is (state) stabilizable if all unstable modes are state controllable. A system is (state) detectable if all unstable modes are state observable.\nA system with unstabilizable or undetectable modes is said to contain hidden unstable modes.\n Poles The poles \\(p_i\\) of a system with state-space description are the eigenvalues \\(\\lambda_i(A), i=1, \\dotsc, n\\) of the matrix \\(A\\). The pole or characteristic polynomial \\(\\phi(s)\\) is defined as \\(\\phi(s) \\triangleq \\det(sI-A) = \\Pi_{i=1}^n (s-p_i)\\). Thus the poles are the roots or the characteristic equation \\[\\phi(s) \\triangleq \\det(sI-A) = 0\\]\n Poles and Stability A linear dynamic system is stable if and only if all the poles are in the LHP, that is, \\(\\text{Re}\\{\\lambda_i(A)\\} \u0026lt; 0, \\forall i\\)\nPoles from Transfer Functions The pole polynomial \\(\\phi(s)\\) corresponding to a minimal realization of a system with transfer function \\(G(s)\\) is the least common denominator of all non-identically-zero minors of all orders of \\(G(s)\\).\nThe poles are essentially the sum of the poles in the elements of the transfer function, but to get the correct multiplicity a more careful analysis is needed.\nPole Vectors and Directions In multivariable system poles have directions associated with them. To quantify this, we use the input and output pole vectors.\n \\[ u_{p_i} = B^H q_i \\] With \\(q_i\\) the left eigenvector of \\(A\\) (\\({q_i}^T A = \\lambda_i {q_i}^T\\)). The input pole direction is \\(\\frac{1}{\\normtwo{u_{p_i}}} u_{p_i}\\)\n \\[ y_{p_i} = C t_i \\] With \\(t_i\\) the right eigenvector of \\(A\\) (\\(A t_i = \\lambda_i t_i\\)). The output pole direction is \\(\\frac{1}{\\normtwo{y_{p_i}}} y_{p_i}\\)\n The pole directions may be defined in terms of the transfer function matrix by evaluating \\(G(s)\\) at the pole \\(p_i\\) and considering the directions of the resulting complex matrix \\(G(p_i)\\). The matrix is infinite in the direction of the pole, and we may write \\[ G(p_i) u_{p_i} = \\infty \\cdot y_{p_i} \\] where \\(u_{p_i}\\) is the input pole direction and \\(y_{p_i}\\) is the output pole direction.\nThe pole directions may in principle be obtained from an SVD of \\(G(p_i) = U\\Sigma V^H\\). Then \\(u_{p_i}\\) is the first column in \\(V\\) (corresponding to the maximum singular value) and \\(y_{p_i}\\) the first column in \\(U\\).\nThe pole direction is usually very interesting because it gives information about which output (or combination of outputs) may be difficult to control.\nZeros Zeros of a system arise when competing effects, internal to the system, are such that the output is zero even when the inputs (and the states) are not themselves identically zero.\n \\(z_i\\) is a zero of \\(G(s)\\) if the rank of \\(G(z_i)\\) is less than the normal rank of \\(G(s)\\). The zero polynomial is defined as \\(z(s) = \\Pi_{i=1}^{n_z}(s-z_i)\\) where \\(n_z\\) is the number of finite zeros of \\(G(s)\\)\n Zeros from State-Space Realizations The state-space equations of a system may be written as \\[P(s) \\colvec{x\\u} = \\colvec{0\\y}, \\quad P(s) = \\begin{bmatrix} sI-A \u0026amp; -B \\\\\\\nC \u0026amp; D \\\\\\\n\\end{bmatrix}\\]\nThe zeros are then the values \\(s=z\\) for which the polynomial system matrix, \\(P(s)\\), loses rank, resulting in zero output for some non-zero input.\nZeros from Transfer Functions The zero polynomial \\(z(s)\\), corresponding to a minimal realization of the system, is the greatest divisor of all the numerator of all order-\\(r\\) minors of \\(G(s)\\), where \\(r\\) is the normal rank of \\(G(s)\\), provided that these minors have been adjusted in such a way as to have the pole polynomial \\(\\phi(s)\\) as their denominator.\nThe zeros are values of \\(s\\) for which \\(G(s)\\) looses rank. In general, there is no relationship between the elements of the transfer function and its (multivariable) zeros.\nZero Directions Let \\(G(s)\\) have a zero at \\(s=z\\). Then \\(G(s)\\) loses rank at \\(s=z\\), and there will exist non-zero vectors \\(u_z\\) and \\(y_z\\) such that \\[G(z) u_z = 0 \\cdot y_z\\] Here \\(u_z\\) is defined as the input zero direction and \\(y_z\\) is defined as the output zero direction.\nFrom a practical point of view, \\(y_z\\) is usually of more interest than \\(u_z\\) because it give information about which combination of outputs may be difficult to control.\nAgain, we may obtain input and output zero directions from an SVD of \\(G(s)\\): \\(u_z\\) is the last column of \\(U\\) and \\(y_z\\) is the last column of \\(V\\) (corresponding to the zero singular value of \\(G(z)\\)).\nSome Remarks on Poles and Zeros We should always find a minimal realization of the system before computing the zeros. For a square system \\(G(s)\\), the poles and zeros are essentially the poles and zeros of \\(\\det G(s)\\). Poles and zeros can occurs at the same location, but their directions may be different so they do not cancel or otherwise interact with each other. If \\(G^{-1}(s)\\) exists, then the poles of \\(G(s)\\) are the zeros of \\(G^{-1}(s)\\) and vice versa (as for SISO systems). Zeros usually appear when there are fewer inputs or outputs than states or when \\(D \\neq 0\\) Moving poles and zeros: Feedback: \\(G(I+GK)^{-1}\\). Poles (of \\(G\\)) are moved and zeros (of \\(G\\)) are unchanged (in addition we get as zeros the poles of \\(K\\)) Series: \\(GK\\). Poles and zeros are unchanged (with the exception of possible cancellations between poles and zeros in \\(G\\) and \\(K\\)) Parallel: \\(G+K\\). Poles are unchanged, zeros are moved (but note that physically a parallel interconnection requires an additional manipulated input) Pinned zeros. A zero is pinned to a subset of the outputs if \\(y_z\\) has one or more elements equal to zero. Their effect cannot be moved freely to any output. Similarly, a zero is pinned to certain input if \\(u_z\\) has one or more elements equal to zero. Consider a SISO negative feedback system with plant \\(G(s)=\\frac{z(s)}{\\phi(s)}\\) and a constant gain controller, \\(K(s)=k\\). The closed-loop response from reference \\(r\\) to output \\(y\\) is \\[T(s) = \\frac{kG(s)}{1+kG(s)} = \\frac{kz(s)}{\\phi(s)+kz(s)} = k\\frac{z_{\\text{cl}}(s)}{\\phi_{\\text{cl}}(s)}\\]\nWe note that:\n The zero locations are unchanged by feedback The pole locations are changed by feedback \\begin{align*} \\phi_{\\text{cl}(s)} \u0026amp;\\underset{k \\rightarrow 0}{\\longrightarrow} \\phi(s) \\\\\\\n\\phi_{\\text{cl}(s)} \u0026amp;\\underset{k \\rightarrow \\infty}{\\longrightarrow} k z(s) \\end{align*}\nThat is, as we increase the feedback gain, the closed loop poles moves from open-loop poles to the open-loop zeros. RHP-zeros therefore imply high gain instability.\n Internal Stability of Feedback Systems \n Figure 9: Block diagram used to check internal stability\n Assume that the components \\(G\\) and \\(K\\) contain no unstable hidden modes. Then the feedback system in Fig. fig:block_diagram_for_stability is internally stable if and only if all four closed-loop transfer matrices are stable.\n\\begin{align*} \u0026amp;(I+KG)^{-1} \u0026amp; -K\u0026amp;(I+GK)^{-1} \\\\\\\nG\u0026amp;(I+KG)^{-1} \u0026amp; \u0026amp;(I+GK)^{-1} \\end{align*}\nAssume there are no RHP pole-zero cancellations between \\(G(s)\\) and \\(K(s)\\), the feedback system in Fig. fig:block_diagram_for_stability is internally stable if and only if one of the four closed-loop transfer function matrices is stable.\nStabilizing Controllers The Q-parameterization is a parameterization that generates all controllers that yield internal stability of the closed loop transfer function.\n For stable plants, a parameterization of all stabilizing negative feedback controllers for the stable plant \\(G(s)\\) is given by \\[K = (I-QG)^{-1} Q = Q(I-GQ)^{-1}\\] where the parameter \\(Q\\) is any stable transfer function matrix.\n This may have significant advantages in controller synthesis where the objective is to a find a \\(K\\) which minimizes some norm of \\(N(K)\\). The search over stabilizing \\(K\\) (which involves checking the stability of closed-loop transfer functions) is replaced by a search over stable \\(Q\\). The closed-loop transfer functions turn out to be affine in \\(Q\\), e.g. \\(S\\) or \\(T\\) can be written \\(H1 + H2 Q H3\\), which may significantly simplify the optimization (e.g. compared to \\(GK(I+GK)^{-1}\\) which is fractional in \\(K\\)).\nStability Analysis in the Frequency Domain Let \\(P_{ol}\\) denote the number of unstable poles in \\(L(s) = G(s)K(s)\\). The closed-loop system with loop transfer \\(L(s)\\) and negative feedback is stable if and only if the Nyquist plot of \\(\\det(I+L(s))\\):\n makes \\(P_{ol}\\) anti-clockwise encirclements of the origin does not pass through the origin The spectral radius \\(\\rho(L(j\\w))\\) is defined as the maximum eigenvalue magnitude: \\[ \\rho(L(j\\w)) \\triangleq \\max_{i} \\abs{\\lambda_i (L(j\\w))} \\]\n Consider a system with a stable loop transfer function \\(L(s)\\). Then the closed-loop system is stable if \\[ \\rho(L(j\\w)) \u0026lt; 1 \\quad \\forall \\w \\]\n Consider a system with a stable loop transfer function \\(L(s)\\). Then the closed-loop system is stable if \\[ \\norm{L(j\\w)} \u0026lt; 1 \\quad \\forall \\w\\] Where \\(\\norm{L}\\) denotes any matrix norm that satisfies the multiplicative property \\(\\norm{AB} \\leq \\norm{A}\\cdot\\norm{B}\\)\n The Small gain theorem for SISO system says that the system is stable if \\(\\abs{L(j\\w)} \u0026lt; 1\\) at all frequencies \\(\\w\\). This is clearly a very conservative condition as no phase information is taken into account.\nThis may be understood as follows: the signals which \u0026ldquo;return\u0026rdquo; in the same direction after \u0026ldquo;one turn around the loop\u0026rdquo; are magnified by the eigenvalues \\(\\lambda_i\\) (and the directions are the eigenvectors \\(x_i\\)):\n\\[ L x_i = \\lambda_i x_i \\]\nSo if all the eigenvalues \\(\\lambda_i\\) are less than 1 in magnitude, all signals become smaller after each round, and the closed-loop system is stable.\nSystem Norms \\(\\htwo\\) norm Consider a strictly proper system \\(G(s)\\). The \\(\\htwo\\) norm is:\n\\begin{align*} \\normtwo{G(s)} \u0026amp;\\triangleq \\sqrt{\\frac{1}{2\\pi} \\int_{-\\infty}^{\\infty} \\text{tr}\\left(G(j\\w)^HG(j\\w)\\right) d\\w} \\\\\\\n\u0026amp; = \\sqrt{\\frac{1}{2\\pi} \\int_{-\\infty}^{\\infty} \\sum_i {\\sigma_i}^2(G(j\\w)) d\\w} \\end{align*}\n The \\(\\htwo\\) norm can have a stochastic interpretation where we measure the expected root mean square value of the output in response to white noise excitation.\n\\(\\hinf\\) norm Consider a proper linear stable system \\(G(s)\\). The \\(\\hinf\\) norm is the peak value of its maximum singular value: \\[ \\hnorm{G(s)} \\triangleq \\max_{\\w} \\maxsv(G(j\\w)) \\]\n The \\(\\hinf\\) norm has several interpretations in the time and frequency domains:\n it is the peak of the transfer function magnitude by introducing weights, it can be interpreted as the magnitude of the some closed-loop transfer function relative to an upper bound it is the worst case steady-state gain for sinusoidal inputs at any frequency it is equal to the 2-norm in the time domain: \\[ \\hnorm{G(s)} = \\max_{w(t) \\neq 0} \\frac{\\normtwo{z(t)}}{\\normtwo{w(t)}} = \\max_{\\normtwo{w(t)} = 1} \\normtwo{z(t)} \\]\n is has an interpretation as an induced norm in terms of the expected values of stochastic signals Difference Between the \\(\\htwo\\) and \\(\\hinf\\) norms Minimizing the \\(\\hinf\\) norm corresponds to minimizing the peak of the largest singular value, whereas minimizing the \\(\\htwo\\) norm corresponds to minimizing the sum of the square of all the singular values over all frequencies.\n The \\(\\hinf\\) norm is convenient for representing unstructured model uncertainty and because if satisfies the multiplicative property \\(\\hnorm{A(s)B(s)} \\leq \\hnorm{A(s)} \\cdot \\hnorm{B(s)}\\) It follows that the \\(\\hinf\\) norm is an induced norm.\n The \\(\\htwo\\) norm on the other hand is not and induced norm and does not satisfies the multiplicative property. This implies that we cannot, by evaluating the \\(\\htwo\\) norm of the individual components say anything about how their series interconnection will behave.\nHankel norm The Hankel norm of a stable system \\(G(s)\\) is obtained when one applies an input \\(w(t)\\) up to \\(t=0\\) and measures the output \\(z(t)\\) for \\(t\u0026gt;0\\), and selects \\(w(t)\\) to maximize the ratio of the 2-norms: \\[ \\left\\|G(s)\\right\\|_H \\triangleq \\max_{w(t)} \\frac{\\sqrt{\\int_{0}^{\\infty} \\normtwo{z(\\tau)}^2 d\\tau }}{\\sqrt{\\int_{-\\infty}^0 \\normtwo{w(\\tau)}^2 d\\tau}} \\] The Hankel norm is a kind of induced norm from past inputs to future outputs.\nIt may be shown that the Hankel norm is equal to \\(\\left\\|G(s)\\right\\|_H = \\sqrt{\\rho(PQ)}\\) where \\(\\rho\\) is the spectral radius, \\(P\\) is the controllability Gramian and \\(Q\\) the observability Gramian.\nLimitations on Performance in SISO Systems \nInput-Output Controllability The input-output controllability is the ability to achieve acceptable control performance; that is, to keep the outputs (\\(y\\)) within specified bounds from their references (\\(r\\)), in spite of unknown but bounded variations, such as disturbances (\\(d\\)) and plant changes, using available inputs (\\(u\\)) and available measurements (\\(y_m\\)).\n A plant is controllable if there exists a controller that yields acceptable performance for all expected plant variation. Thus, controllability is independent of the controller and is a property of the plant alone. It may be affected by changing the plant itself:\n changing the mechanical design relocating sensors and actuators adding new equipment to dampen disturbances adding extra sensor or actuators changing the configuration of the lower layers of control already in place Input-output controllability analysis is applied to a plant to find out what control performance can be expected.\nIt is also called performance targeting.\n If the system has been scaled, the requirement for acceptable performance is: For any disturbance \\(\\abs{d} \\leq 1\\) and any reference \\(\\abs{r} \\leq R\\), the performance requirement is to keep the control error \\(\\abs{e} \\leq 1\\) using an input \\(\\abs{u} \\leq 1\\).\nPerfect Control and Plant Inversion To obtain insight into the inherent limitations on performance, let\u0026rsquo;s consider the input needed to achieve perfect control. Let the plant model be: \\(y = G u + G_d d\\) Since we want perfect control, \\(y = r\\) and we have \\(u = G^{-1} r - G^{-1} G_d d\\) that represents a perfect feedforward controller.\nFor a feedback control, \\(u = K(r - y)\\), and we have \\(u = KS r - KSG_d d\\) that we can rewrite \\(u = G^{-1}Tr - G^{-1}TG_d d\\).\nWe see that at frequency where feedback is effective (\\(T \\approx I\\)), the input generated by feedback is the same as the perfect control input. That is, high gain feedback generates an inverse of \\(G\\).\nPerfect control requires the controller to somehow generate an inverse of \\(G\\). Perfect control cannot be achieved if:\n \\(G\\) contains RHP-zeros (since then \\(G^{-1}\\) is unstable) \\(G\\) contains time delay (since then \\(G^{-1}\\) contains non-causal prediction) \\(G\\) has more pole than zero (since then \\(G^{-1}\\) is unrealizable) The required input must not exceed maximum physically allowed value (\\(\\abs{u} \\leq 1\\)), therefore perfect control cannot be achieve if:\n \\(\\abs{G^{-1} G_d}\\) is large (\\(\\geq 1\\)) \\(\\abs{G^{-1} R}\\) is large (\\(\\geq 1\\)) Constrain of \\(S\\) and \\(T\\) \\(S\\) Plus \\(T\\) is One From the definitions \\(S = (I + L)^{-1}\\) and \\(T = L(I+L)^{-1}\\) we derive\n\\begin{equation} S + T = I \\end{equation}\n Ideally, we want \\(S\\) small to obtain small control error for commands and disturbances, and \\(T\\) small to avoid sensitivity to noise. There requirements are not simultaneously possible at any frequency.\nThe Waterbed Effects In general, a trade-off between sensitivity reduction and sensitivity increase must be performed whenever:\n \\(L(s)\\) has at least two more poles than zeros (first waterbed formula) \\(L(s)\\) has a RHP-zero (second waterbed formula) Suppose that the open-loop transfer function \\(L(s)\\) is rational and has at least two more poles than zeros. Suppose also that \\(L(s)\\) has \\(N_p\\) RHP-poles at locations \\(p_i\\). Then for closed-loop stability, the sensitivity function must satisfy the following Bode Sensitivity Integral:\n\\begin{equation} \\int_0^\\infty \\ln\\abs{S(j\\w)} d\\w = \\pi \\sum_{i=1}^{N_p} \\text{Re}(p_i) \\end{equation}\n For a stable plant, we must have:\n\\begin{equation} \\int_0^\\infty \\ln\\abs{S(j\\w)} d\\w = 0 \\end{equation}\nThe area of sensitivity reduction (\\(\\ln\\abs{S}\\) negative) must equal the area of sensitivity increase (\\(\\ln\\abs{S}\\) positive): the benefits and costs of feedback are balanced.\nFor unstable plant, the presence of unstable poles usually increase the peak of \\(\\abs{S}\\) as seen from the contribution \\(\\pi \\sum_{i=1}^{N_p} \\text{Re}(p_i)\\). This is the price to pay for stabilizing the system.\nFrom the first waterbed formula, we expect that an increase in the bandwidth must come at the expense of a large peak in \\(\\abs{S}\\). Although this is true in most practical cases, however this is not strictly implied by the formula. This is because the increase in area may happen over an infinite frequency range.\n Suppose that \\(L(s)\\) has a single real RHP-zero \\(z\\) or a complex conjugate pair of zero \\(z=x\\pm jy\\), and has \\(N_p\\) RHP-poles \\(p_i\\). For closed-loop stability, the sensitivity function must satisfy \\[ \\int_0^\\infty \\ln\\abs{S(j\\w)} w(z, \\w) d\\w = \\pi \\ln \\sum_{i=1}^{N_p} \\abs{\\frac{p_i + z}{\\bar{p_i}-z}} \\]\nwhere if the zero is real \\[ w(z, \\w) = \\frac{2z}{z^2 + \\w^2} \\] and if the zero pair is complex \\[ w(z, \\w) = \\frac{x}{x^2 + (y-\\w)^2} + \\frac{x}{x^2 + (y+\\w)^2} \\]\n The second waterbed formula implies that the peak of \\(\\abs{S}\\) is even higher for plants with RHP-zeros.\nThe weight \\(w(z, \\w)\\) effectively \u0026ldquo;cuts off\u0026rdquo; the contribution from \\(\\ln\\abs{S}\\) to the integral at frequencies \\(\\w \u0026gt; z\\). So we have approximately: \\[ \\int_0^z \\ln \\abs{S(j\\w)} d\\w \\approx 0 \\]\nThis is similar to the Bode sensitivity integral, except that the trade-off is done over a limited frequency range. Thus, a large peak for \\(\\abs{S}\\) is unavoidable if we try to push down \\(\\abs{S}\\) at low frequencies.\nInterpolation Constraints If \\(p\\) is a RHP-pole of the loop transfer function \\(L(s)\\) then\n\\begin{equation} T(p) = 1, \\quad S(p) = 0 \\end{equation}\nIf \\(z\\) is a RHP-zero of the loop transfer function \\(L(s)\\) then\n\\begin{equation} T(z) = 0, \\quad S(z) = 1 \\end{equation}\n Sensitivity Peaks Suppose \\(f(s)\\) is stable, then the maximum value of \\(\\abs{f(s)}\\) for \\(s\\) in the RHP is attained on the region\u0026rsquo;s boundary (somewhere along the \\(j\\w\\)-axis): \\[ \\hnorm{f(j\\w)} = \\max_{\\omega} \\abs{f(j\\w)} \\geq \\abs{f(s_0)} \\quad \\forall s_0 \\in \\text{RHP} \\]\n We can derive the following bounds on the peaks of \\(S\\) and \\(T\\) from the maximum modulus principle: \\[ \\hnorm{S} \\geq \\max_{j} \\prod_{i=1}^{N_p} \\frac{\\abs{z_j + \\bar{p_i}}}{\\abs{z_j - p_i}} \\quad \\hnorm{T} \\geq \\max_{i} \\prod_{j=1}^{N_z} \\frac{\\abs{\\bar{z_j} + p_i}}{\\abs{z_j - p_i}} \\]\nThis shows that large peaks for \\(\\abs{S}\\) and \\(\\abs{T}\\) are unavoidable if we have a RHP-zero and RHP-pole located close to each other.\nLimitation Imposed by Time Delays Consider a plant \\(G(s)\\) that contains a time delay \\(e^{-\\theta s}\\). Even the \u0026ldquo;ideal\u0026rdquo; controller cannot remove this delay and the \u0026ldquo;ideal\u0026rdquo; sensitivity function is \\(S = 1 - T = 1 - e^{-\\theta s}\\).\n \\(S\\) crosses 1 at a frequency of about \\(1/\\theta\\), so we expect to have an upper bound on \\(\\w_c\\): \\[ \\w_c \u0026lt; 1/\\theta \\]\n Limitation Imposed by RHP-Zeros RHP-zeros typically appear when we have competing effects of slow and fast dynamics. Their presence induces many limitations.\nInverse Response We can show that the output of a step change in the input of a stable plant with \\(n_z\\) real RHP-zeros will cross zero \\(n_z\\) times, that is, we have inverse response.\nHigh Gain Instability It is well known that the closed-loop poles migrate from the open-loop poles to the open-loop zeros as the feedback gain increases. Thus the presence of RHP-zeros implies high-gain instability.\nBandwidth Limitation To derive bounds for the bandwidth, we select performance weight \\(w_P(s)\\) and we then use the interpolation constraint \\(S(z) = 1\\).\nWe require \\(\\abs{S(j\\w)} \u0026lt; 1/\\abs{w_P(j\\w)} \\quad \\forall \\w\\), so we must at least require that the weight satisfies \\(\\abs{w_P(z)} \u0026lt; 1\\).\nPerformance at low frequencies If we specify performance at low frequencies, we may use the following weight: \\[ w_P = \\frac{s/M + \\w_B^*}{s + \\w_B^* A} \\] Where \\(\\w_B^*\\) is the minimum wanted bandwidth, \\(M\\) the maximum peak of \\(\\abs{S}\\) and \\(A\\) the steady-state offset.\nIf we consider a real RHP-zero: \\[ \\w_B^* \u0026lt; z \\frac{1 - 1/M}{1 - A} \\] For example, with \\(A=0\\) and \\(M=2\\), we must at least require \\(\\w_B^* \u0026lt; 0.5z\\).\nIf we consider an imaginary RHP-zero: \\[ \\w_B^* \u0026lt; \\abs{z} \\sqrt{1 - \\frac{1}{M^2}} \\] For example, with \\(M=2\\), we must at least require \\(\\w_B^* \u0026lt; 0.86\\abs{z}\\).\n The presence of RHP-zero imposes an upper bound on the achievable bandwidth when we want tight control at low frequencies\n Performance at high frequencies We consider the case where we want tight control at high frequencies, by use of the performance weight: \\[ w_P = \\frac{1}{M} + \\frac{s}{\\w_B^*} \\]\nIf we consider a real RHP-zero: \\[ \\w_B^* \u0026gt; z \\frac{1}{1-1/M} \\] For example, with \\(M=2\\) the requirement is \\(\\w_B^* \u0026gt; 2z\\), so we can only achieve tight control at frequencies beyond the frequency of the RHP-zero.\n The presence of RHP-zero imposes and lower bound on the achievable bandwidth when we want tight control at high frequencies\n Limitation Imposed by RHP-Poles For unstable plants with a RHP-pole at \\(s = p\\), we need feedback for stabilization.\n In presence of a RHP-pole at \\(s=p\\): \\[ \\hnorm{KS} \\geq \\abs{G_s(p)^{-1}} \\] where \\(G_s\\) is the \u0026ldquo;stable version\u0026rdquo; of \\(G\\) with its RHP-poles mirrored into the LHP.\nSince \\(u = -KS(G_d d + n)\\) and because of the previous inequality, the presence of disturbances \\(d\\) and measurement noise \\(n\\) may require the input \\(u\\) to saturate. When the inputs saturate, the system is practically open-loop and the stabilization is not possible.\n We need to react sufficiently fast. For a real RHP-pole \\(p\\) we must require that the closed-loop bandwidth is larger than \\(2p\\). The presence of RHP-poles generally imposes a lower bound on the bandwidth.\n Combined Unstable (RHP) Poles and Zeros A strictly proper plant with a single real RHP-zero \\(z\\) and a single real RHP-pole \\(p\\) can be stabilized by a stable proper controller if and only if \\(z\u0026gt;p\\). In words \u0026ldquo;the system may go unstable before we have time to react\u0026rdquo;.\nIn order to achieve acceptable performance and robustness, we must approximately require \\(z\u0026gt;4p\\). That is, we want to RHP-pole to be much lower than the RHP-zero.\nThe presence of RHP-zeros (or time delays) make stabilization more difficult.\nPerformance Requirements Imposed by Disturbances and Commands Disturbance rejection Consider a single disturbance \\(d\\) and a constant reference \\(r=0\\). Without control, we have \\(e = G_d d\\). We conclude that no control is needed if \\(\\abs{G_d(j\\w)} \u0026lt; 1\\) at all frequencies. In that case, the plant is said to be \u0026ldquo;self-regulated\u0026quot;.\nIf \\(\\abs{G_d(j\\w)} \u0026gt; 1\\) at some frequency, then we need control. In case of feedback control, we have \\[ e(s) = S(s)G_d(s)d(s) \\] The performance requirement \\(\\abs{e(\\w)} \u0026lt; 1\\) for any \\(\\abs{d(\\w)}\\) at any frequency is satisfied if and only if \\[ \\abs{S G_d(j\\w)} \u0026lt; 1 \\quad \\forall\\w \\quad \\Leftrightarrow \\quad \\abs{S(j\\w)} \u0026lt; 1/\\abs{G_d(j\\w)} \\quad \\forall\\w \\]\n If the plant has a RHP-zero at \\(s=z\\), then \\(S(z) = 1\\) and we have the following condition: \\[ \\abs{G_d(z)} \u0026lt; 1 \\]\n We also have that \\[ \\w_B \u0026gt; \\w_d \\] where \\(\\w_d\\) is defined by \\(\\abs{G_d(j\\w_d)} = 1\\).\n The actual bandwidth requirement imposed by disturbances may be higher than \\(\\w_d\\) if \\(\\abs{G_d(j\\w)}\\) drops with a slope steeper than \\(-1\\) just before the frequency \\(\\w_d\\). This is because we cannot let the slope of \\(\\abs{L(j\\w)}\\) around the crossover be much larger than \\(-1\\) due to stability margins. It is however possible to overcome this issue using local feedback loops in series.\nCommand tracking Assume than \\(d=0\\) and \\(r(t) = R\\sin(\\w t)\\). For acceptable control (\\(\\abs{e} \u0026lt; 1\\)) we must have \\[ \\abs{S(j\\w)R}\u0026lt;1 \\quad \\forall\\w\\leq\\w_r \\] where \\(\\w_r\\) is the frequency up to which performance tracking is required.\nLimitation Imposed by Input Constraints To achieve acceptable control (\\(\\abs{e}\u0026lt;1\\)) and avoid input saturation (\\(\\abs{u}\u0026lt;1\\)), we must require:\nFor disturbance rejection: \\[ \\abs{G} \u0026gt; \\abs{G_d} - 1 \\text{ at frequencies where } \\abs{G_d} \u0026gt; 1 \\]\nFor command tracking: \\[ \\abs{G} \u0026gt; \\abs{R} - 1 \\quad \\forall \\w \\leq \\w_r \\]\n Limitation Imposed by Phase Lag Phase lag in the plant present no fundamental limitations, however is usually does on practical designs.\n Let define \\(\\w_u\\) as the frequency where the phase lag of the plant \\(G\\) is \\(\\SI{-180}{\\degree}\\)\n\\begin{equation} \\angle G(j\\w_u) \\triangleq \\SI{-180}{\\degree} \\end{equation}\n With simple controllers such as a proportional controller or a PI-controller, the phase lag does pose a fundamental limitation on the achievable bandwidth because of stability bounds: \\[ \\w_c \u0026lt; \\w_u \\]\nHowever, if the model is exactly known and there are no RHP-zeros or time delays, one may extend \\(\\w_c\\) to infinite frequency by placing zeros in the controller at the plant poles.\nLimitation Imposed by Uncertainty Uncertainty with feedforward control Perfect control is obtained using a controller which generates the control input \\[ u = G^{-1} r - G^{-1} G_d d \\] When we apply this perfect controller to the actual plant \\(y\u0026rsquo; = G\u0026rsquo; u + G_d\u0026rsquo; d\\), we find \\[ e\u0026rsquo; = y\u0026rsquo; - r = \\underbrace{\\left( \\frac{G\u0026rsquo;}{G} - 1 \\right)}_{\\text{rel. error in }G} r - \\underbrace{\\left( \\frac{G\u0026rsquo;/G_d\u0026rsquo;}{G/G_d} - 1 \\right)}_{\\text{rel. error in } G/G_d} G_d\u0026rsquo; d \\] For feedforward control, the model error propagates directly to the control error.\nIf we want acceptable control (\\(\\abs{e\u0026rsquo;}\u0026lt;1\\)), we must require that the model error in \\(G/G_d\\) is less than \\(1/\\abs{G_d\u0026rsquo;}\\). This is very difficult to satisfy at frequencies where \\(\\abs{G_d\u0026rsquo;}\\) is much larger than 1.\nThe presence of uncertainty then requires us to use feedback control rather than just feedforward control.\nUncertainty with feedback control With feedback control, the closed-loop response is \\(e = y - r = S G_d d - S r\\). With model error, we get \\(y\u0026rsquo; - r = S\u0026rsquo;(G_d\u0026rsquo;d - r)\\) where \\(S\u0026rsquo; = (I + G\u0026rsquo;K)^{-1}\\). \\(S\u0026rsquo;\\) can be rewritten as \\(S\u0026rsquo; = S \\frac{1}{1+ET}\\) with \\(E = \\frac{G\u0026rsquo;-G}{G}\\) the relative error for \\(G\\).\nWe see that the control error in only weakly affected by model error at frequencies where feedback is effective (\\(T \\approx 1\\)).\n Uncertainty in the crossover frequency region can result in poor performance and even instability:\n Uncertainty which keeps \\(\\abs{G(j\\w_u)}\\) approximately constant will not change the gain margin. Uncertainty which increases \\(\\abs{G(j\\w_u)}\\) may yield instability. Summary: Controllability Analysis with Feedback Control \n Figure 10: Feedback control system\n Consider the control system in Fig. fig:classical_feedback_meas. Here \\(G_m(s)\\) denotes the measurement transfer function and we assume \\(G_m(0) = 1\\) (perfect steady-state measurement).\n Speed of response to reject disturbances. We approximately require \\(\\w_c \u0026gt; \\w_d\\). With feedback control we require \\(\\abs{S(j\\w)} \\leq \\abs{1/G_d(j\\w)} \\quad \\forall\\w\\). Speed of response to track reference changes. We require \\(\\abs{S(j\\w)} \\leq 1/R\\) up to the frequency \\(\\w_r\\) where tracking is required. Input constraints arising from disturbances. For acceptable control we require \\(\\abs{G(j\\w)} \u0026gt; \\abs{G_d(j\\w)} - 1\\) at frequencies where \\(\\abs{G_d(j\\w)} \u0026gt; 1\\). Input constraints arising from setpoints. We require \\(\\abs{G(j\\w)} \u0026gt; R - 1\\) up to the frequency \\(\\w_r\\) where tracking is required. Time delay \\(\\theta\\) in \\(G(s)G_m(s)\\). We approximately require \\(\\w_c \u0026lt; 1/\\theta\\). Tight control at low frequencies with a RHP-zero \\(z\\) in \\(G(s)G_m(s)\\). For a real RHP-zero we require \\(\\w_c \u0026lt; z/2\\) and for an imaginary RHP-zero we approximately require \\(\\w_c \u0026lt; \\abs{z}\\). Phase lag constraint. We require in most practical cases \\(\\w_c \u0026lt; \\w_u\\). Here the ultimate frequency \\(\\w_u\\) is where \\(\\angle GG_m(j\\w_u) = \\SI{-180}{\\degree}\\). Since time delays and RHP-zeros also contribute to the phase lag, it is possible to combine the corresponding rules in the single rule \\(\\w_c \u0026lt; \\w_u\\). Real open-loop unstable pole in \\(G(s)\\) at \\(s=p\\). We need high feedback gains to stabilize the system and we approximately require \\(\\w_c \u0026gt; 2p\\). In summary:\n rules 1, 2 and 8 tell us that we need high feedback gain in order to reject disturbances, to track setpoints and to stabilize the plant. rules 5, 6 and 7 tell us we must use low feedback gains in the frequency range where there are RHP-zeros or delays or where the plant has a lot of phase lag. Sometimes, the disturbances are so large that we hit input saturation or the required bandwidth is not achievable. To avoid the latter problem, we must at least require that the effect of the disturbance is less than \\(1\\) at frequencies beyond the bandwidth: \\[ \\abs{G_d(j\\w)} \u0026lt; 1 \\quad \\forall \\w \\geq \\w_c \\]\n\n Figure 11: Illustration of controllability requirements\n Controllability analysis with feedforward control We find that essentially the same conclusions apply to feedforward control when relevant.\nA major difference is that a delay in \\(G_d(s)\\) is an advantage for feedforward control (\u0026ldquo;it gives the feedforward controller more time to make the right action\u0026rdquo;).\nConclusion The controllability analysis is summarized in terms of eight controllability rules. These rules are necessary conditions to achieve acceptable control performance. They are not sufficient since among other things they only consider one effect at a time. The rules may be used to determine whether or not a given plant is controllable.\nLimitations on Performance in MIMO Systems \nIntroduction In a MIMO system, disturbances, the plant, RHP zeros, RHP poles, delays and disturbances have each directions associated with them.\nWe quantify the directionality of the various effects in \\(G\\) and \\(G_d\\) by their output directions:\n \\(y_z\\): output dir. of RHP-zero, \\(G(z) u_z = 0 \\cdot y_z\\) \\(y_p\\): output dir. of RHP-pole, \\(G(p_i) u_p = \\infty \\cdot y_p\\) \\(y_d\\): output dir. of disturbance, \\(y_d(s) = \\frac{1}{\\normtwo{g_d(s)}} g_d(s)\\) \\(u_i\\): i\u0026rsquo;th output dir. (singular vector) of the plant, \\(G(s) v_i(s) = \\sigma_i(s) u_i(s)\\) We may also consider input directions, however we are primarily concerned with the performance at the output of the plant.\nThe angle between various output directions is quantified using their inner products.\nFor example, the output angle between a pole and a zero is \\(\\phi = \\cos^{-1} \\abs{y_z^H y_p}\\), and:\n if \\(\\phi = \\SI{90}{\\degree}\\), then the pole and zero are in completely different directions and there is no interaction (they may be considered separately) if \\(\\phi = \\SI{0}{\\degree}\\), then they interact as in a SISO system Constraints on \\(S\\) and \\(T\\) \\(S\\) plus \\(T\\) is the Identity Matrix From the identity \\(S + T = I\\), we get:\n\\begin{subequations} \\begin{align} |1 - \\maxsv(S)| \\leq \\maxsv(T) \\leq 1 + \\maxsv(S)\\\\\\\n|1 - \\maxsv(T)| \\leq \\maxsv(S) \\leq 1 + \\maxsv(T) \\end{align} \\end{subequations}\nThis shows that we cannot have \\(S\\) and \\(T\\) small simultaneously and that \\(\\maxsv(S)\\) is large if and only if \\(\\maxsv(T)\\) is large.\nSensitivity Intregrals The waterbed effect can be generalized for MIMO systems:\n\\begin{align*} \\int_0^{\\infty} \\ln{|\\det{S(j\\w)}|} d\\w \u0026amp;= \\sum_j \\int_0^\\infty \\ln{\\sigma_j(S(j\\w))} d\\w \\\\\\\n\u0026amp;= \\pi \\cdot \\sum_{i=1}^{N_p} \\text{Re}(p_i) \\end{align*}\nInterpolation Constraints The basis of many of the results in this chapter are the \u0026ldquo;interpolation constraints\u0026quot;.\n If \\(G(s)\\) has a RHP-zero at \\(z\\) with output direction \\(y_z\\), \\(T(s)\\) must have a RHP-zero at \\(z\\), i.e., \\(T(z)\\) has a zero gain in the direction of output direction \\(y_z\\) of the zero, and we get \\[ y_z^H T(z) = 0 ; \\quad y_z^H S(z) = y_z^H \\]\n If \\(G(s)\\) has a RHP-pole at \\(p\\) with output direction \\(y_p\\), \\(S(s)\\) must have a RHP-zero at \\(p\\), i.e. \\(S(p)\\) has a zero gain in the input direction of the output direction \\(y_p\\) of the RHP-pole, and we get \\[ S(p) y_p = 0 ; \\quad T(p) y_p = y_p \\]\n Sensitivity Peaks Consider a plant \\(G(s)\\) with RHP-poles \\(p_i\\) and RHP-zeros \\(z_j\\). The factorization of \\(G(s)\\) in terms of Blaschke products is: \\[ \\tcmbox{G(s) = B_p^{-1} G_s(s), \\quad G(s) = B_z(s) G_m(s)} \\] where \\(G_s\\) is the stable and \\(G_m\\) the minimum-phase version of \\(G\\). \\(B_p\\) and \\(B_z\\) are stable all-pass transfer matrices (all singular values are 1 for \\(s=j\\w\\)) containing the RHP-poles and RHP-zeros respectively.\nMIMO sensitivity peaks Suppose that \\(G(s)\\) has \\(N_z\\) RHP-zeros \\(z_j\\) with output directions \\(y_{zj}\\), and \\(N_p\\) RHP-poles \\(p_i\\) with output direction \\(y_{pi}\\). We define the all-pass transfer matrices from the Blaschke factorization and compute the real constants: \\[ c_{1j} = \\normtwo{y_{zj}^H B_p(z_j)} \\geq 1; \\quad c_{2i} = \\normtwo{B_z^{-1}(p_i) y_{pi}} \\geq 1 \\]\nLet \\(w_P(s)\\) be a stable weight. Then, for closed-loop stability the weighted sensitivity function must satisfy for each RPH-zero \\(z_j\\) \\[ \\hnorm{w_p S} \\ge c_{1j} \\abs{w_p(z_j)} \\]\nLet \\(w_T(s)\\) be a stable weight. Then, for closed-loop stability the weighted complementary sensitivity function must satisfy for each RPH-pole \\(p_i\\) \\[ \\hnorm{w_T T} \\ge c_{2j} \\abs{w_T(p_i)} \\]\n By selecting \\(w_P(s) = 1\\) and \\(w_T(s) = 1\\), we get \\[ \\hnorm{S} \\ge \\max_{\\text{zeros } z_j} c_{1j}; \\quad \\hnorm{T} \\ge \\max_{\\text{poles } p_i} c_{2j} \\]\n Functional Controllability An m-input l-output system \\(G(s)\\) is functionally controllable is the normal rank of \\(G(s)\\), denoted \\(r\\), is equal to the number of outputs (\\(r = l\\)), that is, if \\(G(s)\\) has full row rank. A system is functionally uncontrollable if \\(r\u0026lt;l\\).\n A square MIMO system is uncontrollable if and only if \\(\\det{G(s)} = 0,\\ \\forall s\\).\nA plant is functionally uncontrollable if and only if \\(\\sigma_l(G(j\\omega)) = 0,\\ \\forall\\w\\). \\(\\sigma_l(G(j\\w))\\) is then a measure of how close a plant is to being functionally uncontrollable.\n If the plant is not functionally controllable (\\(r\u0026lt;l\\)), then there are \\(l-r\\) output directions, denoted \\(y_0\\) which cannot be affected. These directions will vary with frequency, and we have \\[ y_0^H(j\\w) G(j\\w) = 0 \\] From an SVD of \\(G(j\\w) = U \\Sigma V^H\\), the uncontrollable output directions \\(y_0(j\\w)\\) are the last \\(l-r\\) columns of \\(U(j\\w)\\).\n By analyzing the uncontrollable output directions, an engineer can decide on whether it is acceptable to keep certain output combinations uncontrolled, or if additional actuators are needed.\nLimitation Imposed by Time Delays Time delays pose limitation also in MIMO systems. Let \\(\\theta_{ij}\\) denote the time delay in the \\(ij\\)\u0026lsquo;th element of \\(G(s)\\). Then a lower bound on the time delay for output \\(i\\) is given by the smallest delay in row \\(i\\) of \\(G(s)\\), that is \\[ \\theta_i^{\\min} = \\min_j \\theta_{ij} \\]\nFor MIMO systems, we have the surprising result that an increase time delay may sometimes improve the achievable performance. The time delay may indeed increase the decoupling between the outputs.\nLimitations Imposed by RHP-Zeros The limitations imposed by RHP-zeros on MIMO systems are similar to those for SISO system, although they only apply in particular directions.\nThe limitations of a RHP-zero located at \\(z\\) may be derived from the bound: \\[ \\hnorm{w_P S(s)} = \\max_{\\w} \\abs{w_P(j\\w)} \\maxsv(S(j\\w)) \\ge \\abs{w_P(z)} \\]\nAll the results derived for SISO systems generalize if we consider the \u0026ldquo;worst\u0026rdquo; direction corresponding to the maximum singular value \\(\\maxsv(S)\\). For instance, if we choose \\(w_P(s)\\) to require tight control at low frequencies, the bandwidth must satisfy \\(w_B^* \u0026lt; z/2\\).\nIn MIMO systems, one can often move the deteriorating effect of a RHP-zero to a given output which may be less important to control well. This is possible because, although the interpolation constraint \\(y_z^H T(z) = 0\\) imposes a certain relationship between the elements within each column of \\(T(s)\\), the columns of \\(T(s)\\) may still be selected independently.\nRequiring a decoupled response from \\(r\\) to \\(y\\) generally leads to the introduction of additional RHP-zero in \\(T(s)\\) which are not present in \\(G(s)\\). Moving the effect of the RHP-zero to a particular output generally add some interaction. Also, moving to RHP-zero in a direction where \\(y_z\\) is small usually introduces more interaction than in a direction where \\(y_z\\) is large.\nFor example, if we have a RHP-zero with \\(y_z = [0.03,\\ -0.04,\\ 0.9,\\ 0.43]^T\\), then one may in theory move the bad effect of the RHP-zero to any of the outputs. However, in practice, it will be difficult to avoid the effect of the RHP-zero on output 3, because the zero direction is mainly in that output. Trying to move it somewhere else will give large interactions and poor performance.\nLimitation Imposed by Unstable (RHP) Poles For unstable plants, feedback is needed for stabilization. More precisely, the presence of an unstable pole \\(p\\) requires for internal stability \\(T(p) y_p = y_p\\) where \\(y_p\\) is the output pole direction.\n The transfer function \\(KS\\) from plant output to plant inputs must satisfy for any RHP-pole \\(p\\) \\[ \\hnorm{KS} \\ge \\normtwo{u_p^H G_s(p)^{-1}} \\] where \\(u_p\\) is the input pole direction, and \\(G_s\\) is the \u0026ldquo;stable version\u0026rdquo; of \\(G\\) with its RHP-poles mirrored in the LHP.\n From the bound \\(\\hnorm{w_T(s) T(s)} \\ge \\abs{w_T(p)}\\), we find that a RHP-pole \\(p\\) imposes restrictions on \\(\\maxsv(T)\\) which are identical to those derived on \\(\\abs{T}\\) for SISO systems. Thus, we need to react sufficiently fast and we must require that \\(\\maxsv(T(j\\w))\\) is about 1 or larger up to the frequency \\(2 \\abs{p}\\).\n RHP-poles Combined with RHP-Zeros For a MIMO plant with single RHP-zero \\(z\\) and single RHP-pole \\(p\\), we derive\n\\[ \\hnorm{S} \\ge c \\quad \\hnorm{T} \\ge c \\] \\[ \\text{with } c = \\sqrt{\\sin^2 \\phi + \\frac{\\abs{z + p}^2}{\\abs{z-p}^2} \\cos^2 \\phi} \\] where \\(\\phi = cos^{-1} \\abs{y_z^H y_p}\\) is the angle between the RHP-zero and the RHP-pole.\nThus the angle between the RHP-zero and the RHP-pole is of great importance, we usually want \\(\\abs{y_z^H y_p}\\) close to zero so that they don\u0026rsquo;t interact with each other.\nLimitations Imposed by Disturbances For SISO systems, we found that large and \u0026ldquo;fast\u0026rdquo; disturbances require tight control and a large bandwidth. The same results apply for MIMO systems, but again the issue of directions is important.\n Consider a scalar disturbance \\(d\\) and let the vector \\(g_d\\) represents its effect on the outputs (\\(y = g_d d\\)). The disturbance direction is defined as\n\\begin{equation} y_d = \\frac{1}{\\normtwo{g_d}} g_d \\end{equation}\nFor a plant with multiple disturbances, \\(g_d\\) is a column of the matrix \\(G_d\\).\n \\begin{equation} \\gamma_d (G) = \\maxsv(G) \\maxsv(G^\\dagger y_d) \\end{equation}\nwhere \\(G^\\dagger\\) is the pseudo inverse of \\(G\\)\n The disturbance condition number provides a measure of how a disturbance is aligned with the plant. It may vary between 1 (for \\(y_d = \\bar{u}\\)) if the disturbance is in the \u0026ldquo;good\u0026rdquo; direction, and the condition number \\(\\gamma(G) = \\maxsv(G) \\maxsv(G^\\dagger)\\) (for \\(y_d = \\ubar{u}\\)) if it is in the \u0026ldquo;bad\u0026rdquo; direction.\nLet assume \\(r=0\\) and that the system has been scaled. With feedback control \\(e = S g_d d\\) and the performance objective is \\[ \\normtwo{S g_d} = \\maxsv(S g_d) \u0026lt; 1 \\ \\forall\\w \\quad \\Leftrightarrow \\quad \\hnorm{S g_d} \u0026lt; 1 \\]\nWe derive bounds in terms of the singular values of \\(S\\): \\[ \\minsv(S) \\normtwo{g_d} \\le \\normtwo{S g_d} \\le \\maxsv(S) \\normtwo{g_d} \\]\n For acceptable performance we must at least require that \\[ \\maxsv(I+L) \u0026gt; \\normtwo{g_d} \\]\nAnd we may require that \\[ \\minsv(I+L) \u0026gt; \\normtwo{g_d} \\]\n If \\(G(s)\\) has a RHP-zero at \\(s = z\\), then the performance may be poor if the disturbance is aligned with the output direction of this zero. To satisfy \\(\\hnorm{S g_d} \u0026lt; 1\\), we must require \\[ \\abs{y_z^H g_d(z)} \u0026lt; 1 \\] where \\(y_z\\) is the direction of the RHP-zero.\nLimitations Imposed by Input Constraints Inputs for Perfect Control We here consider the question: can the disturbances be rejected perfectly while maintaining \\(\\|u\\|\u0026lt;1\\)?\nFor a square plant, the input needed for perfect disturbance rejection is \\(u = -G^{-1} G_d d\\).\nFor a single disturbance, as the worst-cast disturbance is \\(\\abs{d(\\w)} = 1\\), we get that input saturation is avoided (\\(\\|u\\|_{\\text{max}} \\le 1\\)) if all elements in the vector \\(G^{-1} g_d\\) are less than 1 in magnitude: \\[ \\|G^{-1} g_d\\|_{\\text{max}} \u0026lt; 1, \\ \\forall\\w \\]\nIt is first recommended to consider one disturbance at a time by plotting as a function of frequency the individual elements of \\(G^{-1} G_d\\). This will yields more information about which particular input is most likely to saturate and which disturbance is the most problematic.\nInputs for Acceptable Control We here consider the question: is it possible to achieve \\(\\|e\\|\u0026lt;1\\) while using inputs with \\(\\|u\\| \\le 1\\)?\nFor SISO systems, we have to required \\(\\abs{G} \u0026gt; \\abs{g_d} - 1\\) at frequencies where \\(\\abs{g_d} \u0026gt; 1\\). We would like to generalize this result to MIMO systems.\n Each singular value \\(\\sigma_i\\) of \\(G\\) must approximately satisfy:\n\\begin{equation} \\sigma_i(G) \\ge \\abs{u_i^H g_d} - 1 \\text{ where } \\abs{u_i^H g_d} \u0026gt; 1 \\end{equation}\nwith \\(u_i\\) the \\(i\\)\u0026lsquo;th output singular vector of \\(G\\).\n\\(u_i^H g_d\\) may be interpreted as the projection of \\(g_d\\) onto the \\(i\\)\u0026lsquo;th output singular vector of the plant.\n Using the previous approximation, we can find out:\n For which disturbances and at which frequencies input constraints may cause problems. This may give ideas on which disturbances should be reduced. In which direction \\(i\\) the plant gain is too small. By looking at the corresponding input singular vector \\(v_i\\), one can determine which actuators should be redesigned. By looking at the corresponding output singular vector \\(u_i\\), one can determine on which outputs we may have to reduce our performance requirements. For combined disturbances, one requires the \\(i\\)\u0026lsquo;th row sum of \\(U^H G_d\\) to be less than \\(\\sigma_i(G)\\). However, we usually derive more insight by considering one disturbance at a time.\nUnstable Plant and Input Constraints Active use of inputs are needed to stabilize an unstable plant. We must require \\(\\hnorm{KS} \\ge \\normtwo{u_p^H G_s(p)^{-1}}\\). If the required inputs exceed the constraints, then stabilization is most likely not possible.\nLimitation Imposed by Uncertainty The presence of uncertainty requires the use of feedback rather than simply feedforward control to get acceptable performance. Sensitivity reduction with respect to uncertainty is achieved with high-gain feedback, but for any real system, we have a crossover frequency range where the loop gain has to drop below 1. The presence of uncertainty in this frequency range may result in poor performance or even instability.\nThe issues are the same for SISO and MIMO systems, however, with MIMO systems there is an additional problem in that there is also uncertainty associated with the plant directionality.\nInput and Output Uncertainty In practice, the difference between the true perturbed plant \\(G^\\prime\\) and the plant model \\(G\\) is caused by a number of different sources. We here focus on input and output uncertainty. In multiplicative form, the input and output uncertainties are given by (see Fig. fig:input_output_uncertainty): \\[ G^\\prime = (I + E_O) G (I + E_I) \\]\n\n Figure 12: Plant with multiplicative input and output uncertainty\n Input and output uncertainty may seem similar, but their implications for control may be very different.\nIf all the elements of \\(E_O\\) and \\(E_I\\) are non-zero, then we have full block (unstructured) uncertainty.\nIn many cases, the source of uncertainty is in the individual input or output channels, and we have that \\(E_I\\) and \\(E_O\\) are diagonal matrices. For example \\(E_I = \\text{diag}\\{\\epsilon_1, \\epsilon_2, \\dots\\}\\) where \\(\\epsilon_i\\) is the relative uncertainty in input channel \\(i\\).\nDiagonal input uncertainty is always present in real systems and the magnitude of \\(\\epsilon_i\\) is typically \\(0.1\\) or larger.\nEffect of Uncertainty on Feedforward Control Consider a feedforward controller \\(u = K_r r\\) for the case with no disturbance (\\(d = 0\\)). We assume that \\(G\\) is inversible and we select \\(K_r = G^{-1}\\) to achieve perfect control (\\(e = 0\\)). However, for the actual plant \\(G^\\prime\\) (with uncertainty), the actual control error \\(e^\\prime = y^\\prime - r = G^\\prime G^{-1} r - r\\) is not null and we get:\n For output uncertainty: \\(e^\\prime = E_O r\\) For input uncertainty: \\(e^\\prime = G E_I G^{-1} r\\) For output uncertainty, we have an identical result as for SISO systems: the worst case relative control error \\(\\normtwo{e^\\prime}/\\normtwo{r}\\) is equal to the magnitude of the relative output uncertainty \\(\\maxsv(E_O)\\). However, for input uncertainty, the sensitivity may be much larger because the elements in the matrix \\(G E_I G^{-1}\\) can be much larger than the elements in \\(E_I\\).\n For diagonal input uncertainty, the elements of \\(G E_I G^{-1}\\) are directly related to the RGA: \\[ \\left[ G E_I G^{-1} \\right]_{ii} = \\sum_{j=1}^n \\lambda_{ij}(G) \\epsilon_j \\]\n Since diagonal input uncertainty is always present, we can conclude that if the plant has large RGA elements within in the frequency range where effect control is desired, then it is not possible to achieve good reference tracking with feedforward control because of strong sensitivity to diagonal input uncertainty. The reverse statement is not true.\nUncertainty and the Benefits of Feedback To illustrate the benefits of feedback control in reducing the sensitivity to uncertainty, we consider the effect of output uncertainty on reference tracking both for feedforward and feedback.\nFeedforward Let the nominal transfer function with feedforward control be \\(y = T_r r\\) where \\(T_r = G K_r\\) and \\(K_r = G^{-1}\\). With model error \\(T_r^\\prime = G^\\prime K_r\\) and the change in response is \\(y^\\prime - y = (T_r^\\prime - T_r) r = (G^\\prime - G)G^{-1} T_r r = E_O T_r r\\). Thus, the control error caused by the uncertainty is equal to the relative output uncertainty.\nFeedback control The output is \\(y = T r\\). The change in response is \\(y^\\prime - y = (T^\\prime - T)r = S^\\prime E_O T r = S^\\prime E_O y\\). With feedback control, the effect of the uncertainty is reduced by a factor \\(S^\\prime\\) compared to that with feedforward control.\nUncertainty and the Sensitivity Peak Consider a controller \\(K(s) = l(s)G^{-1}(s)\\) which results in a nominally decoupled response with sensitivity \\(S = s \\cdot I\\) and complementary sensitivity \\(T = t \\cdot I\\) where \\(t(s) = 1 - s(s)\\). Suppose the plant has diagonal input uncertainty of relative magnitude \\(\\abs{w_I(j\\w)}\\) in each input channel. Then there exists a combination of input uncertainties such that at each frequency: \\[ \\maxsv(S^\\prime) \\ge \\maxsv(S) \\left( 1 + \\frac{\\abs{w_I t}}{1+\\abs{w_I t}} \\|\\Lambda(G)\\|_{i\\infty} \\right) \\] where \\(\\| \\Lambda(G) \\|_{i\\infty}\\) is the maximum row sum of the RGA and \\(\\maxsv(S) = \\abs{s}\\).\nWe can see that with an inverse based controller, the worst case sensitivity will be much larger than the nominal sensitivity at frequencies where the plant has large RGA elements.\n These statements apply to the frequency range around crossover. By \u0026ldquo;small\u0026rdquo;, we mean smaller than 2 and by \u0026ldquo;large\u0026rdquo; we mean larger than 10.\n Condition number \\(\\gamma(G)\\) or \\(\\gamma(K)\\) small: robust performance to both diagonal and full-block input uncertainty Minimized condition number \\(\\gamma_I^* (G)\\) or \\(\\gamma_O^*(K)\\) small: robust performance to diagonal input uncertainty \\(\\text{RGA}(G)\\) has large elements: inverse based controller is not robust to diagonal input uncertainty. Since diagonal input uncertainty is unavoidable in practice, the rule is never to use a decoupling controller for a plant with large RGA-elements. Plant with large RGA elements are fundamentally difficult to control. Element-by-element Uncertainty Consider any complex matrix \\(G\\) and let \\(\\lambda_{ij}\\) denote the \\(ij\\)\u0026lsquo;th element in the RGA-matrix of \\(G\\).\n The matrix \\(G\\) becomes singular if we make a relative change \\(-1/\\lambda_{ij}\\) in its \\(ij\\)\u0026lsquo;th elements, that is, if a single element in \\(G\\) is perturbed from \\(g_{ij}\\) to \\(g_{pij} = g_{ij}(1-\\frac{1}{\\lambda_{ij}})\\)\n Thus, the RGA-matrix is a direct measure of sensitivity to element-by-element uncertainty and matrices with large RGA-values become singular for small relative errors in the elements.\nThe above result has important implications:\n Identification. Models of multivariable plants \\(G(s)\\) are often obtained by identifying one element at a time, for example using step responses. This simple analysis will most likely give meaningless results if there are large RGA-elements within the bandwidth where the model is intended to be used. RHP-zeros. Consider a plant with transfer function matrix \\(G(s)\\). If the relative uncertainty in an element at a given frequency is larger than \\(\\abs{1/\\lambda_{ij}(j\\w)}\\) then the plant may be singular at this frequency, implying that the uncertainty allows for a RHP-zero on the \\(j\\w\\text{-axis}\\). MIMO Input-Output Controllability The following procedure assumes that we have made a decision on the plant inputs and plant outputs, and we want to analyze the model \\(G\\) to find out what control performance can be expected. It can also be used to assist in control structure design.\nA typical MIMO controllability analysis may proceed as follows:\n Scale all variables (inputs \\(u\\), outputs \\(y\\), disturbances \\(d\\), references \\(r\\)) to obtain a scaled model \\(y = G(s) u + G_d(s) d\\), \\(r = R \\tilde{r}\\) Obtain a minimal realization Check functional controllability. To be able to control the outputs independently, we first need at least as many inputs \\(u\\) as outputs \\(y\\). Second, we need the rank of \\(G(s)\\) to be equal to the number of outputs \\(l\\), i.e. the minimum singular value \\(G(j\\w)\\), \\(\\minsv(G) = \\sigma_l(G)\\), should be non-zero (except at possible \\(j\\w\\text{-axis}\\) zeros). If the plant is not functionally controllable, then compute the output direction where the plant has no gain to have insight into the source of the problem Compute the poles. For RHP poles, obtain their locations and associated directions. \u0026ldquo;Fast\u0026rdquo; RHP-poles far from the origin are bad Compute the zeros. For RHP zeros, obtain their locations and associated directions. Look for zeros pinned into certain outputs. \u0026ldquo;Small\u0026rdquo; RHP-zeros (close to the origin) are bad if tight performance is needed at low frequencies Obtain the frequency response \\(G(j\\w)\\) and compute the RGA matrix \\(\\Gamma = G \\times (G^\\dagger)^{-1}\\). Plants with large RGA-elements at crossover frequencies are difficult to control and should be avoided Compute the singular values of \\(G(j\\w)\\) and plot them as a function of frequency. Also consider the associated input and output singular vectors The minimum singular value \\(\\minsv(G(j\\w))\\) is a particularly useful controllability measure. It should generally be as large as possible at frequencies where control is needed. If \\(\\minsv(G(j\\w)) \u0026lt; 1\\) then we cannot at frequency \\(\\w\\) make independent output changes of unit magnitude by using inputs of unit magnitude For disturbances, consider the elements of the matrix \\(G_d\\). At frequencies where one or more elements is larger than 1, we need control. We get more information by considering one disturbance at a time (the columns \\(g_d\\) of \\(G_d\\)). We must require for each disturbance that \\(S\\) is less than \\(1/\\normtwo{g_d}\\) in the disturbance direction \\(y_d\\), i.e. \\(\\normtwo{S y_d} \\le 1/\\normtwo{g_d}\\). Thus, we must at least require \\(\\minsv(S) \\le 1/\\normtwo{g_d}\\) and we may have to require \\(\\maxsv(S) \\le 1/\\normtwo{g_d}\\) Disturbances and input saturation: First step. Consider the input magnitudes needed for perfect control by computing the elements in the matrix \\(G^\\dagger G_d\\). If all elements are less than 1 at all frequencies, then input saturation is not expected to be a problem. If some elements of \\(G^\\dagger G_d\\) are larger than 1, then perfect control cannot be achieve at this frequency, but \u0026ldquo;acceptable\u0026rdquo; control may be possible Second step. Consider the elements of \\(U^H G_d\\) and make sure that the elements in the \\(i\\)\u0026lsquo;th row are smaller than \\(\\sigma_i(G) + 1\\) at all frequencies Are the requirements compatible? Look at disturbances, RHP-poles, RHP-zeros and their associated locations and directions. For example, we must required for each disturbance and each RHP-zero that \\(\\abs{y_z^H g_d(z)} \\le 1\\). Similar relations exist for combined RHP-zero and RHP-pole. Uncertainty. If the condition number \\(\\gamma(G)\\) is small then we expect no particular problems with uncertainty. If the RGA-elements are large, we expect strong sensitivity to uncertainty. Plant design changes If the plant is not input-output controllable, then it must be modified. Some possible modifications are:\n Controlled outputs. Identify the outputs which cannot be controlled satisfactory. Can the specifications for these be relaxed? Manipulated inputs. If input constraints are encountered, then consider replacing or moving actuators. If there are RHP-zeros which cause control problems, then the zeros may often be eliminated by adding another input. This may not be possible if the zero is pinned to a particular output Extra measurements. If the effect of disturbances or uncertainty is large, and the dynamics of the plant are such that acceptable control cannot be achieved, then consider adding \u0026ldquo;fast local loops\u0026rdquo; based on extra measurements which are located close to the inputs and disturbances Disturbances. If the effect of disturbances is too large, then see whether the disturbance itself may be reduced. This may involve adding extra equipment to dampen the disturbances. In other cases, this may involve improving or changing the control of another part of the system: we may have a disturbance which is actually the manipulated input for another part of the system Plant dynamics and time delays. In most cases, controllability is improved by making the plant dynamics faster and by reducing time delays. An exception to this is a strongly interactive plant, where an increased dynamic lag or time delay may be helpful if it somehow \u0026ldquo;delays\u0026rdquo; the effect of the interactions Conclusion We have found that most of the insights into the performance limitation of SISO systems carry over to MIMO systems. For RHP-zeros, RHP-poles and disturbances, the issue of directions usually makes the limitation less severe for MIMO than for SISO systems. However, the situation is usually the opposite with model uncertainty because for MIMO systems, there is also uncertainty associated with plant directionality.\nUncertainty and Robustness for SISO Systems \nIntroduction to Robustness A control system is robust if it is insensitive to differences between the actual system and the model of the system which was used to design the controller. The key idea in the \\(\\hinf\\) robust control paradigm is to check whether the design specifications are satisfied even for the \u0026ldquo;worst-case\u0026rdquo; uncertainty.\nOur approach is then as follows:\n Determine the uncertainty set. Find a mathematical representation of the model uncertainty Check Robust Stability (RS). Determine whether the system remains stable for all plants in the uncertainty set Check Robust Performance (RP). If RS is satisfied, determine whether the performance specifications are met for all plants in the uncertainty set This approach may not always achieve optimal performance. In particular, if the worst case plant rarely occurs, other approaches, such as optimizing some average performance or using adaptive control may yield better performance.\nTo account for model uncertainty, we will assume that the dynamic behavior of a plant is described not by a single linear time invariant model but by a set \\(\\Pi\\) of possible linear time invariant models, sometimes denoted the \u0026ldquo;uncertainty set\u0026quot;.\nWe adopt the following notation:\n \\(\\Pi\\) - a set of possible perturbed plant models \\(G(s) \\in \\Pi\\) - nominal plant model \\(G_p(s) \\in \\Pi\\) - particular perturbed plant models We will use a \u0026ldquo;norm-bounded uncertainty description\u0026rdquo; where the set \\(\\Pi\\) is generated by allowing \\(\\hinf\\) norm-bounded stable perturbations to the nominal plant \\(G(s)\\). We let \\(E\\) denote a perturbation which is not normalized, and let \\(\\Delta\\) denote a normalized perturbation with its \\(\\hinf\\) norm less than 1.\nRepresenting Uncertainty Uncertainty in the plant model may have several origins:\n There are always parameters in the linear model which are only known approximatively Parameters in the model may vary due to non-linearities or changes in the operating conditions Measurement devices have imperfections At high frequencies, even the structure and the model order is unknown, and the uncertainty will always exceed \\(\\SI{100}{\\percent}\\) at some frequency Even when a very detailed model is available, we may choose to work with a simpler nominal model and represent the neglected dynamics as \u0026ldquo;uncertainty\u0026rdquo; The controller implemented may differ from the one obtained by solving the synthesis problem. One may include uncertainty to allow for controller order reduction and implementation inaccuracies The various sources of model uncertainty may be grouped into two main classes:\n Parametric uncertainty. The structure of the model is known, but some parameters are uncertain Neglected and unmodelled dynamics uncertainty. The model is in error because of missing dynamics, usually at high frequencies Parametric uncertainty will be quantified by assuming that each uncertain parameters is bounded within some region \\([\\alpha_{\\min}, \\alpha_{\\text{max}}]\\). That is, we have parameter sets of the form\n\\begin{equation} \\alpha_p = \\bar{\\alpha}(1 + r_\\alpha \\Delta); \\quad r_\\alpha = \\frac{\\alpha_{\\text{max}} - \\alpha_{\\min}}{\\alpha_{\\text{max}} + \\alpha_{\\min}} \\end{equation}\nwhere \\(\\bar{\\alpha}\\) is the mean parameter value, \\(r_\\alpha\\) is the relative uncertainty in the parameter, and \\(\\Delta\\) is any real scalar satisfying \\(\\abs{\\Delta} \\le 1\\).\n Neglected and unmodelled dynamics uncertainty is somewhat less precise and thus more difficult to quantify, but it appears that frequency domain is particularly well suited for this class. This leads to complex perturbations which we normalize such that \\(\\hnorm{\\Delta} \\le 1\\).\nThere is also a third class of uncertainty (which is a combination of the other two) called Lumped uncertainty. Here the uncertainty description represents one or several sources of parametric and/or unmodelled dynamics uncertainty combined into a single lumped perturbation of a chosen structure. The frequency domain is also well suited for describing lumped uncertainty.\n In most cases, we prefer to lump the uncertainty into a multiplicative uncertainty of the form \\[ G_p(s) = G(s)(1 + w_I(s)\\Delta_I(s)); \\quad \\abs{\\Delta_I(j\\w)} \\le 1 , \\forall\\w \\] which may be represented by the diagram in Fig. fig:input_uncertainty_set.\n \n Figure 13: Plant with multiplicative uncertainty\n Parametric Uncertainty Parametric uncertainty may also be represented in the \\(\\hinf\\) framework if we restrict \\(\\Delta\\) to be real.\n \\[ G_p(s) = k_p G_0(s); \\quad k_{\\min} \\le k_p \\le k_{\\text{max}} \\] where \\(k_p\\) is an uncertain gain and \\(G_0(s)\\) is a transfer function with no uncertainty. By writing \\(k_p = \\bar{k}(1 + r_k \\Delta)\\) where \\(r_k\\) is the relative magnitude of the gain uncertainty and \\(\\bar{k}\\) is the average gain, be may write \\[ G_p = \\underbrace{\\bar{k}G_0(s)}_{G(s)} (1 + r_k \\Delta), \\quad \\abs{\\Delta} \\le 1 \\] where \\(\\Delta\\) is a real scalar and \\(G(s)\\) is the nominal plant.\n \\[ G_p(s) = \\frac{1}{\\tau_p s + 1}G_0(s); \\quad \\tau_{\\min} \\le \\tau_p \\le \\tau_{\\text{max}} \\] By writing \\(\\tau_p = \\bar{\\tau}(1 + r_\\tau \\Delta)\\), with \\(\\abs{\\Delta} \\le 1\\), the model set can be rewritten as \\[ G_p(s) = \\frac{G_0}{1+\\bar{\\tau} s + r_\\tau \\bar{\\tau} s \\Delta} = \\underbrace{\\frac{G_0}{1+\\bar{\\tau}s}}_{G(s)} \\frac{1}{1 + w_{iI}(s) \\Delta} \\] with \\(\\displaystyle w_{iI}(s) = \\frac{r_\\tau \\bar{\\tau} s}{1 + \\bar{\\tau} s}\\).\n As shown in the two examples, one can represent parametric uncertainty in the \\(\\hinf\\) framework. However, parametric uncertainty is often avoided for the following reasons:\n It usually requires a large effort to model parametric uncertainty A parametric uncertainty model is somewhat deceiving in the sense that it provides a very detailed and accurate description, even though the underlying assumptions about the model and the parameters may be much less exact The exact model structure is required and so unmodelled dynamics cannot be dealt with Real perturbations are required, which are more difficult to deal with mathematically and numerically, especially when it comes to controller synthesis Therefore, parametric uncertainty is often represented by complex perturbations. For example, we may simply replace the real perturbation, \\(-1 \\le \\Delta \\le 1\\) by a complex perturbation with \\(\\abs{\\Delta(j\\w)} \\le 1\\). This is of course conservative as it introduces possible plants that are not present in the original set. However, if there are several real perturbations, then the conservatism if often reduced by lumping these perturbations into a single complex perturbation.\nRepresenting Uncertainty in the Frequency Domain Uncertain Regions To illustrate how parametric uncertainty translate into frequency domain uncertainty, consider in Fig. fig:uncertainty_region the Nyquist plots generated by the following set of plants \\[ G_p(s) = \\frac{k}{\\tau s + 1} e^{-\\theta s}, \\quad 2 \\le k, \\theta, \\tau \\le 3 \\]\n Step 1. At each frequency, a region of complex numbers \\(G_p(j\\w)\\) is generated by varying the parameters. In general, these uncertain regions have complicated shapes and complex mathematical descriptions Step 2. We therefore approximate such complex regions as discs, resulting in a complex additive uncertainty description \n Figure 14: Uncertainty regions of the Nyquist plot at given frequencies\n Representing Uncertainty Regions by Complex Perturbations The disc-shaped regions may be generated by additive complex norm-bounded perturbations around a nominal plant \\(G\\)\n\\begin{equation} \\begin{aligned} \\Pi_A: \\ G_p(s) \u0026amp;= G(s) + w_A(s) \\Delta_A(s) \\\\\\\n\u0026amp; \\text{with }\\abs{\\Delta_A(j\\w)} \\le 1 , \\forall\\w \\end{aligned} \\end{equation}\nAt each frequency, all possible \\(\\Delta(j\\w)\\) \u0026ldquo;generates\u0026rdquo; a disc-shaped region with radius 1 centered at 0, so \\(G(j\\w) + w_A(j\\w)\\Delta_A(j\\w)\\) generates at each frequency a disc-shapes region of radius \\(\\abs{w_A(j\\w)}\\) centered at \\(G(j\\w)\\) as shown in Fig. fig:uncertainty_disc_generated.\n \n Figure 15: Disc-shaped uncertainty regions generated by complex additive uncertainty\n The disc-shaped region may alternatively be represented by a multiplicative uncertainty\n\\begin{equation} \\begin{aligned} \\Pi_I: \\ G_p(s) \u0026amp;= G(s)(1 + w_I(s)\\Delta_I(s)); \\\\\\\n\u0026amp; \\text{with }\\abs{\\Delta_I(j\\w)} \\le 1 , \\forall\\w \\end{aligned} \\end{equation}\n And we see that for SISO systems, additive and multiplicative uncertainty are equivalent if at each frequency: \\[ \\abs{w_I(j\\w)} = \\abs{w_A(j\\w)}/\\abs{G(j\\w)} \\]\nHowever, multiplicative weights are often preferred because their numerical value is more informative. At frequencies where \\(\\abs{w_I(j\\w)} \u0026gt; 1\\) the uncertainty exceeds \\(\\SI{100}{\\percent}\\) and the Nyquist curve may pass through the origin. Then, at these frequencies, we do not know the phase of the plant, and we allow for zeros crossing from the left to the right-half plane. Tight control is then not possible at frequencies where \\(\\abs{w_I(j\\w)} \\ge 1\\).\nObtaining the Weight for Complex Uncertainty Consider a set \\(\\Pi\\) of possible plants resulting, for example, from parametric uncertainty. We now want to describe this set of plants by a single complex perturbation \\(\\Delta_A\\) or \\(\\Delta_I\\).\nThis complex disc-shaped uncertainty description may be generated as follows:\n Select a nominal \\(G(s)\\) Additive uncertainty. At each frequency, find the smallest radius \\(l_A(\\w)\\) which includes all the possible plants \\(\\Pi\\) \\[ l_A(\\w) = \\max_{G_p\\in\\Pi} \\abs{G_p(j\\w) - G(j\\w)} \\] If we want a rational transfer function weight, \\(w_A(s)\\), then it must be chosen to cover the set, so \\[ \\abs{w_A(j\\w)} \\ge l_A(\\w) \\quad \\forall\\w \\] Usually \\(w_A(s)\\) is of low order to simplify the controller design. Multiplicative uncertainty. This is often the preferred uncertainty form, and we have \\[ l_I(\\w) = \\max_{G_p\\in\\Pi} \\abs{\\frac{G_p(j\\w) - G(j\\w)}{G(j\\w)}} \\] and with a rational weight \\(\\abs{w_I(j\\w)} \\ge l_I(\\w), , \\forall\\w\\) We want to represent the following set using multiplicative uncertainty with a rational weight \\(w_I(s)\\) \\[ \\Pi: \\quad G_p(s) = \\frac{k}{\\tau s + 1} e^{-\\theta s}, \\quad 2 \\le k, \\theta, \\tau \\le 3 \\] To simplify subsequent controller design, we select a delay-free nominal model \\[ G(s) = \\frac{\\bar{k}}{\\bar{\\tau} s + 1} = \\frac{2.5}{2.5 s + 1} \\]\nTo obtain \\(l_I(\\w)\\), we consider three values (2, 2.5 and 3) for each of the three parameters (\\(k, \\theta, \\tau\\)). The corresponding relative errors \\(\\abs{\\frac{G_p-G}{G}}\\) are shown as functions of frequency for the \\(3^3 = 27\\) resulting \\(G_p\\) (Fig. fig:uncertainty_weight). To derive \\(w_I(s)\\), we then try to find a simple weight so that \\(\\abs{w_I(j\\w)}\\) lies above all the dotted lines.\n \n Figure 16: Relative error for 27 combinations of \\(k,\\ \\tau\\) and \\(\\theta\\). Solid and dashed lines: two weights \\(\\abs{w_I}\\)\n Choice of Nominal Model With parametric uncertainty represented as complex perturbations, there are three main options for the choice of nominal model:\n A simplified model, for instance a low order, delay free model. It usually yields the largest uncertainty region, but the model is simple and this facilitates controller design in later stages. A model of mean parameter values, \\(G(s) = \\bar{G}(s)\\). It is probably the most straightforward choice. The central plant obtained from a Nyquist plot. It yields the smallest region, but in this case a significant effort may be required to obtain the nominal model which is usually not a rational transfer function. For SISO systems, we find that for plants with an uncertain time delay, it is simplest and sometimes best to use a delay-free nominal model, and to represent the nominal delay as additional uncertainty.\nIf we use a parametric uncertainty description, based on multiple real perturbations, then we should always use the mean parameter values in the nominal model.\nNeglected Dynamics Represented as Uncertainty We saw that one advantage of frequency domain uncertainty description is that one can choose to work with a simple nominal model, and represent neglected dynamics as uncertainty.\nConsider a set of plants \\[ G_p(s) = G_0(s) f(s) \\] where \\(G_0(s)\\) is fixed. We want to neglect the term \\(f(s) \\in \\Pi_f\\), and represent \\(G_p\\) by multiplicative uncertainty with a nominal model \\(G = G_0\\).\nThe magnitude of the relative uncertainty caused by neglecting the dynamics in \\(f(s)\\) is \\[ l_I(\\w) = \\max_{G_p} \\abs{\\frac{G_p - G}{G}} = \\max_{f(s) \\in \\Pi_f} \\abs{f(j\\w) - 1} \\]\nNeglected delay Let \\(f(s) = e^{-\\theta_p s}\\), where \\(0 \\le \\theta_p \\le \\theta_{\\text{max}}\\). We want to represent \\(G_p(s) = G_0(s)e^{-\\theta_p s}\\) by a delay-free plant \\(G_0(s)\\) and multiplicative uncertainty. Let first consider the maximum delay, for which the relative error \\(\\abs{1 - e^{-j \\w \\theta_{\\text{max}}}}\\) is shown as a function of frequency (Fig. fig:neglected_time_delay). If we consider all \\(\\theta \\in [0, \\theta_{\\text{max}}]\\) then: \\[ l_I(\\w) = \\begin{cases} \\abs{1 - e^{-j\\w\\theta_{\\text{max}}}} \u0026amp; \\w \u0026lt; \\pi/\\theta_{\\text{max}} \\ 2 \u0026amp; \\w \\ge \\pi/\\theta_{\\text{max}} \\end{cases} \\]\n\n Figure 17: Neglected time delay\n Neglected lag Let \\(f(s) = 1/(\\tau_p s + 1)\\), where \\(0 \\le \\tau_p \\le \\tau_{\\text{max}}\\). In this case the resulting \\(l_I(\\w)\\) (Fig. fig:neglected_first_order_lag) can be represented by a rational transfer function with \\(\\abs{w_I(j\\w)} = l_I(\\w)\\) where \\[ w_I(s) = \\frac{\\tau_{\\text{max}} s}{\\tau_{\\text{max}} s + 1} \\]\n\n Figure 18: Neglected first-order lag uncertainty\n Multiplicative weight for gain and delay uncertainty Consider the following set of plants \\[ G_p = k_p e^{-\\theta_p s} G_0(s); \\quad k_p \\in [k_{\\min}, k_{\\text{max}}], \\ \\theta_p \\in [\\theta_{\\min}, \\theta_{\\text{max}}] \\] which we want to represent by multiplicative uncertainty and a delay-free nominal model \\(G(s) = \\bar{k} G_0(s)\\). There is an exact expression, its first order approximation is \\[ w_I(s) = \\frac{(1+\\frac{r_k}{2})\\theta_{\\text{max}} s + r_k}{\\frac{\\theta_{\\text{max}}}{2} s + 1} \\] However, as shown in Fig. fig:lag_delay_uncertainty, the weight \\(w_I\\) is optimistic, especially around frequencies \\(1/\\theta_{\\text{max}}\\). To make sure that \\(\\abs{w_I(j\\w)} \\le l_I(\\w)\\), we can apply a correction factor: \\[ w_I^\\prime(s) = w_I \\cdot \\frac{(\\frac{\\theta_{\\text{max}}}{2.363})^2 s^2 + 2\\cdot 0.838 \\cdot \\frac{\\theta_{\\text{max}}}{2.363} s + 1}{(\\frac{\\theta_{\\text{max}}}{2.363})^2 s^2 + 2\\cdot 0.685 \\cdot \\frac{\\theta_{\\text{max}}}{2.363} s + 1} \\]\nIt is suggested to start with the simple weight and then if needed, to try the higher order weight.\n\n Figure 19: Multiplicative weight for gain and delay uncertainty\n Unmodelled Dynamics Uncertainty The most important reason for using frequency domain (\\(\\hinf\\)) uncertainty description and complex perturbations, is the incorporation of unmodelled dynamics. Unmodelled dynamics, while being close to neglected dynamics, also include unknown dynamics of unknown or even infinite order.\n To represent unmodelled dynamics, we usually use a simple multiplicative weight of the form\n\\begin{equation} w_I(s) = \\frac{\\tau s + r_0}{(\\tau/r_\\infty) s + 1} \\end{equation}\nwhere \\(r_0\\) is the relative uncertainty at steady-state, \\(1/\\tau\\) is the frequency at which the relative uncertainty reaches \\(\\SI{100}{\\percent}\\), and \\(r_\\infty\\) is the magnitude of the weight at high frequency.\n SISO Robust Stability RS with Multiplicative Uncertainty We want to determine the stability of the uncertain feedback system in Fig. fig:feedback_multiplicative_uncertainty where there is multiplicative uncertainty of magnitude \\(\\abs{w_I(j\\w)}\\). The loop transfer function becomes \\[ L_P = G_p K = G K (1 + w_I \\Delta_I) = L + w_I L \\Delta_I \\] We assume (by design) the stability of the nominal closed-loop system (with \\(\\Delta_I = 0\\)). We use the Nyquist stability condition to test for robust stability of the closed loop system:\n\\begin{align*} \\text{RS} \\quad \u0026amp;\\stackrel{\\text{def}}{\\Longleftrightarrow} \\quad \\text{System stable} \\ \\forall L_p \\\\\\\n\u0026amp;\\Longleftrightarrow \\quad L_p \\ \\text{should not encircle -1}, \\ \\forall L_p \\end{align*}\n\n Figure 20: Feedback system with multiplicative uncertainty\n Graphical derivation of RS-condition Consider the Nyquist plot of \\(L_p\\) as shown in Fig. fig:nyquist_uncertainty. \\(\\abs{1+L}\\) is the distance from the point \\(-1\\) to the center of the disc representing \\(L_p\\) and \\(\\abs{w_I L}\\) is the radius of the disc. Encirclements are avoided if none of the discs cover \\(-1\\), and we get:\n\\begin{align*} \\text{RS} \\quad \u0026amp;\\Leftrightarrow \\quad \\abs{w_I L} \u0026lt; \\abs{1 + L}, \\ \\forall\\w \\\\\\\n\u0026amp;\\Leftrightarrow \\quad \\abs{\\frac{w_I L}{1 + L}} \u0026lt; 1, \\ \\forall\\w \\\\\\\n\u0026amp;\\Leftrightarrow \\quad \\abs{w_I T} \u0026lt; 1, \\ \\forall\\w \\\\\\\n\\end{align*}\n\n Figure 21: Nyquist plot of \\(L_p\\) for robust stability\n The requirement of robust stability for the case with multiplicative uncertainty gives an upper bound on the complementary sensitivity\n\\begin{equation} \\text{RS} \\quad \\Leftrightarrow \\quad \\abs{T} \u0026lt; 1/\\abs{w_I}, \\ \\forall\\w \\end{equation}\n We see that we have to make \\(T\\) small at frequencies where the relative uncertainty \\(\\abs{w_I}\\) exceeds 1 in magnitude.\nAlgebraic derivation of RS-condition Since \\(L_p\\) is assumed stable, and the nominal closed-loop is stable, the nominal loop transfer function \\(L(j\\w)\\) does not encircle -1. Therefore, since the set of plants is norm-bounded, it then follows that if some \\(L_{p1}\\) in the uncertainty set encircles -1, then there must be another \\(L_{p2}\\) in the uncertainty set which goes exactly through -1 at some frequency. Thus\n\\begin{align*} \\text{RS} \\quad \u0026amp; \\Leftrightarrow \\abs{1 + L_p} \\ne 0,\\ \\forall L_p,,\\forall \\w\\\\\\\n\u0026amp; \\Leftrightarrow \\abs{1 + L_p} \u0026gt; 0,\\ \\forall L_p,,\\forall \\w\\\\\\\n\u0026amp; \\Leftrightarrow \\abs{1 + L + w_I L \\Delta_I} \u0026gt; 0,\\ \\forall \\abs{\\Delta_I} \\le 1,,\\forall \\w\\\\\\\n\\end{align*}\nAt each frequency, the last condition is most easily violated when the complex number \\(\\Delta_I(j\\w)\\) is selected with \\(\\abs{\\Delta(j\\w)} = 1\\) and with phase such that \\(1+L\\) and \\(w_I L \\Delta_I\\) point in the opposite direction. Thus \\[ \\text{RS} \\ \\Leftrightarrow \\ \\abs{1 + L} - \\abs{w_I L} \u0026gt; 0, \\ \\forall\\w \\ \\Leftrightarrow \\ \\abs{w_I T} \u0026lt; 1, \\ \\forall\\w \\] And we obtain the same condition as before.\nRS with Inverse Multiplicative Uncertainty We will derive a corresponding RS-condition for feedback system with inverse multiplicative uncertainty (Fig. fig:inverse_uncertainty_set) in which \\[ G_p = G(1 + w_{iI}(s) \\Delta_{iI})^{-1} \\]\n\n Figure 22: Feedback system with inverse multiplicative uncertainty\n We assume that \\(L_p\\) and the nominal closed-loop systems are stable. Robust stability is guaranteed if \\(L_p(j\\w)\\) does not encircles the point -1:\n\\begin{align*} \\text{RS} \\quad \u0026amp;\\Leftrightarrow \\quad \\abs{1 + L_p} \u0026gt; 0, \\ \\forall L_p, , \\forall\\w\\\\\\\n\u0026amp;\\Leftrightarrow \\quad \\abs{1 + L (1 + w_{iI} \\Delta_{iI})^{-1}} \u0026gt; 0, \\ \\forall \\abs{\\Delta_{iI}} \u0026lt; 1, , \\forall\\w\\\\\\\n\u0026amp;\\Leftrightarrow \\quad \\abs{1 + w_{iI} \\Delta_{iI} + L} \u0026gt; 0, \\ \\forall \\abs{\\Delta_{iI}} \u0026lt; 1, , \\forall\\w\\\\\\\n\u0026amp;\\Leftrightarrow \\quad \\abs{1 + L} - \\abs{w_{iI} \\Delta_{iI}} \u0026gt; 0, \\ \\forall\\w\\\\\\\n\u0026amp;\\Leftrightarrow \\quad \\abs{w_{iI} S} \u0026lt; 1, \\ \\forall\\w\\\\\\\n\\end{align*}\n The requirement for robust stability for the case with inverse multiplicative uncertainty gives an upper bound on the sensitivity\n\\begin{equation} \\text{RS} \\quad \\Leftrightarrow \\quad \\abs{S} \u0026lt; 1/\\abs{w_{iI}}, \\ \\forall\\w \\end{equation}\nWe see that we need tight control and have to make \\(S\\) small at frequencies where the uncertainty is large and \\(w_{iI}\\) exceeds 1 in magnitude.\n The reason is that the uncertainty represents pole uncertainty, and at frequencies where \\(\\abs{w_{iI}}\\) exceeds 1, we allow for poles crossing from the left to the right-half plant, and we then need feedback (\\(\\abs{S} \u0026lt; 1\\)) in order to stabilize the system.\nSISO Robust Performance SISO Nominal Performance The condition for nominal performance when considering performance in terms of the weighted sensitivity function is\n\\begin{equation} \\begin{aligned} \\text{NP} \u0026amp;\\Leftrightarrow \\abs{w_P S} \u0026lt; 1 \\ \\forall\\omega \\\\\\\n\u0026amp;\\Leftrightarrow \\abs{w_P} \u0026lt; \\abs{1 + L} \\ \\forall\\omega \\end{aligned} \\end{equation}\n Now \\(\\abs{1 + L}\\) represents at each frequency the distance of \\(L(j\\omega)\\) from the point \\(-1\\) in the Nyquist plot, so \\(L(j\\omega)\\) must be at least a distance of \\(\\abs{w_P(j\\omega)}\\) from \\(-1\\). This is illustrated graphically in Fig. fig:nyquist_performance_condition.\n\n Figure 23: Nyquist plot illustration of the nominal performance condition \\(\\abs{w_P} \u0026lt; \\abs{1 + L}\\)\n Robust Performance For robust performance, we require the performance condition to be satisfied for all possible plants:\n\\begin{equation} \\begin{aligned} \\text{RP}\\ \u0026amp;\\overset{\\text{def}}{\\Leftrightarrow}\\ \\abs{w_P S} \u0026lt; 1 \\quad \\forall S_p, \\forall \\omega\\\\\\\n\\ \u0026amp;\\Leftrightarrow\\ \\abs{w_P} \u0026lt; \\abs{1 + L_p} \\quad \\forall L_p, \\forall \\omega \\end{aligned} \\end{equation}\n Let\u0026rsquo;s consider the case of multiplicative uncertainty as shown on Fig. fig:input_uncertainty_set_feedback_weight_bis. The robust performance corresponds to requiring \\(\\abs{\\hat{y}/d}\u0026lt;1\\ \\forall \\Delta_I\\) and the set of possible loop transfer functions is \\[ L_p = G_p K = L (1 + w_I \\Delta_I) = L + w_I L \\Delta_I \\]\n\n Figure 24: Diagram for robust performance with multiplicative uncertainty\n Graphical derivation of RP-condition As illustrated on Fig. fig:nyquist_performance_condition, we must required that all possible \\(L_p(j\\omega)\\) stay outside a disk of radius \\(\\abs{w_P(j\\omega)}\\) centered on \\(-1\\). Since \\(L_p\\) at each frequency stays within a disk of radius \\(|w_I(j\\omega) L(j\\omega)|\\) centered on \\(L(j\\omega)\\), the condition for RP becomes:\n\\begin{align*} \\text{RP}\\ \u0026amp;\\Leftrightarrow\\ \\abs{w_P} + \\abs{w_I L} \u0026lt; \\abs{1+L} \\quad \\forall\\omega\\\\\\\n\u0026amp;\\Leftrightarrow\\ \\abs{w_P(1 + L)^{-1}} + \\abs{w_I L(1 + L)^{-1}} \u0026lt; 1 \\quad \\forall\\omega\\\\\\\n\\end{align*}\n Finally, we obtain the following condition for Robust Performance:\n\\begin{equation} \\text{RP} \\ \\Leftrightarrow\\ \\max_{\\omega} \\left(\\abs{w_P S} + \\abs{w_I T} \\right) \u0026lt; 1 \\end{equation}\n Algebraic derivation of RP-condition RP is satisfied if the worst-case weighted sensitivity at each frequency is less than \\(1\\): \\[ \\text{RP} \\ \\Leftrightarrow\\ \\max_{S_p} \\abs{w_P S_p} \u0026lt; 1, \\quad \\forall\\omega \\]\nThe perturbed sensitivity \\(S_p\\) is \\[ S_p = \\frac{1}{1 + L_p} = \\frac{1}{1 + L + w_I L \\Delta_I} \\] Thus: \\[ \\max_{S_p} \\abs{w_P S_p} = \\frac{\\abs{w_P}}{\\abs{1 + L} - \\abs{w_I L}} = \\frac{\\abs{w_P S}}{1 - \\abs{w_I T}} \\] And we obtain the same RP-condition as the graphically derived one.\nRemarks on RP-condition The RP-condition for this problem is closely approximated by the mixed sensitivity \\(\\hinf\\) condition: \\[ \\tcmbox{\\hnorm{\\begin{matrix}w_P S \\ w_I T\\end{matrix}} = \\max_{\\omega} \\sqrt{\\abs{w_P S}^2 + \\abs{w_I T}^2} \u0026lt;1} \\] This condition is within a factor at most \\(\\sqrt{2}\\) of the true RP-condition. This means that for SISO systems, we can closely approximate the RP-condition in terms of an \\(\\hinf\\) problem, so there is no need to make use of the structured singular value. However, we will see that the situation can be very different for MIMO systems.\n The RP-condition can be used to derive bounds on the loop shape \\(\\abs{L}\\):\n\\begin{align*} \\abs{L} \u0026amp;\u0026gt; \\frac{1 + \\abs{w_P}}{1 - \\abs{w_I}}, \\text{ at frequencies where } \\abs{w_I} \u0026lt; 1\\\\\\\n\\abs{L} \u0026amp;\u0026lt; \\frac{1 - \\abs{w_P}}{1 + \\abs{w_I}}, \\text{ at frequencies where } \\abs{w_P} \u0026lt; 1\\\\\\\n\\end{align*}\n The Relationship Between NP, RS and RP Consider a SISO system with multiplicative input uncertainty, and assume that the closed-loop is nominally stable (NS). The conditions for nominal performance (NP), robust stability (RS) and robust performance (RP) as summarized as follows:\n \\begin{subequations} \\begin{align} \\text{NP} \u0026amp; \\Leftrightarrow |w_P S| \u0026lt; 1,\\ \\forall \\omega \\\\\\\n\\text{RS} \u0026amp; \\Leftrightarrow |w_I T| \u0026lt; 1,\\ \\forall \\omega \\\\\\\n\\text{RP} \u0026amp; \\Leftrightarrow |w_P S| + |w_I T| \u0026lt; 1,\\ \\forall \\omega \\end{align} \\end{subequations}\n From this we see that a prerequisite for RP is that we satisfy both NP and RS. This applies in general, both for SISO and MIMO systems and for any uncertainty.\nIn addition, for SISO systems, if we satisfy both RS and NP, then we have at each frequency: \\[ |w_P S| + |w_I T| \u0026lt; 2 \\cdot \\max \\{|w_P S|, |w_I T|\\} \u0026lt; 2 \\] It then follows that, within a factor at most 2, we will automatically get RP when NP and RS are satisfied. This, RP is not a \u0026ldquo;big issue\u0026rdquo; for SISO systems.\nTo satisfy RS we generally want \\(T\\) small, whereas to satisfy \\(NP\\) we generally want \\(S\\) small. However, we cannot make both \\(S\\) and \\(T\\) small at the same frequency because of the identity \\(S + T = 1\\). This has implications for RP:\n\\begin{align*} |w_P S| + |w_I T| \u0026amp;\\ge \\text{min}\\{|w_P|, |w_I|\\}(|S| + |T|) \\\\\\\n\u0026amp;\\ge \\text{min}\\{|w_P|, |w_I|\\}(|S + T|) \\\\\\\n\u0026amp;\\ge \\text{min}\\{|w_P|, |w_I|\\} \\end{align*}\nThis means that we cannot have both \\(|w_P|\u0026gt;1\\) (i.e. good performance) and \\(|w_I|\u0026gt;1\\) (i.e. more than \\(\\si{100}{%}\\) uncertainty) at the same frequency.\nExamples of Parametric Uncertainty Parametric Pole Uncertainty Consider the following set of plants: \\[ G_p(s) = \\frac{1}{s - a_p} G_0(s); \\quad a_\\text{min} \\le a_p \\le a_{\\text{max}} \\]\nIf \\(a_\\text{min}\\) and \\(a_\\text{max}\\) have different signs, then this means that the plant can change from stable to unstable with the pole crossing through the origin.\nThis set of plants can be written as \\[ G_p(s) = \\frac{G_0(s)}{s - \\bar{a}(1 + r_a \\Delta)}; \\quad -1 \\le \\Delta \\le 1 \\] which can be exactly described by inverse multiplicative uncertainty: \\[ G(s) = \\frac{G_0(s)}{(s - \\bar{a})}; \\quad w_{iI}(s) = \\frac{r_a \\bar{a}}{s - \\bar{a}} \\]\nThe magnitude of \\(w_{iI}(s)\\) is equal to \\(r_a\\) at low frequency and goes to \\(0\\) at high frequencies.\nTime constant form It is also interesting to consider another form of pole uncertainty, namely that associated with the time constant: \\[ G_p(s) = \\frac{1}{\\tau_p s + 1} G_0(s); \\quad \\tau_\\text{min} \\le \\tau_p \\le \\tau_\\text{max} \\]\nThe corresponding uncertainty weight is \\[ w_{iI}(s) = \\frac{r_\\tau \\bar{\\tau} s}{1 + \\bar{\\tau} s} \\]\nThis results in uncertainty in the pole location, but here the uncertainty affects the model at high frequency.\nParametric Zero Uncertainty Consider zero uncertainty in the \u0026ldquo;time constant\u0026rdquo; form as in: \\[ G_p(s) = (1 + \\tau_p s)G_0(s); \\quad \\tau_\\text{min} \\le \\tau_p \\le \\tau_\\text{max} \\]\nThis set of plants may be written as multiplicative uncertainty with: \\[ w_I(s) = \\frac{r_\\tau \\bar{\\tau} s}{1 + \\bar{\\tau} s} \\] The magnitude \\(|w_I(j\\omega)|\\) is small at low frequencies and approaches \\(r_\\tau\\) at high frequencies. For cases with \\(r_\\tau \u0026gt; 1\\) we allow the zero to cross from the LHP to the RHP.\nParametric State-Space Uncertainty A general procedure for handling parametric uncertainty which is more suited for numerical calculations, is parametric state-space uncertainty. Consider an uncertain state-space model:\n\\begin{align*} \\dot{x} \u0026amp;= A_p x + B_p u \\\\\\\ny \u0026amp;= C_p x + D_p u \\end{align*}\nAssume that the underlying cause for the uncertainty is uncertainty in some real parameters \\(\\delta_1, \\delta_2, \\dots\\) and assume that the state space matrices depends linearly on these parameters:\n\\begin{align*} A_p = A + \\sum \\delta_i A_i; \\quad \u0026amp; B_p = B + \\sum \\delta_i B_i \\\\\\\nC_p = C + \\sum \\delta_i C_i; \\quad \u0026amp; D_p = D + \\sum \\delta_i D_i \\end{align*}\nwhere \\(A\\), \\(B\\), \\(C\\) and \\(D\\) model the nominal system.\nWe can collect the perturbations \\(\\delta_i\\) in a large diagonal matrix \\(\\Delta\\) with the real \\(\\delta_i\\)\u0026lsquo;s along its diagonal: \\[ A_p = A + \\sum \\delta_i A_i = A + W_2 \\Delta W_1 \\]\nIn the transfer function form:\n\\begin{align*} (s I - A_p)^{-1} \u0026amp;= (sI - A - W_2 \\Delta W_1)^{-1} \\\\\\\n\u0026amp;= (I - \\Phi(s) W_2 \\Delta W_1)^{-1} \\Phi(s) \\end{align*}\nwith \\(\\Phi(s) \\triangleq (sI - A)^{-1}\\).\nThis is illustrated in the block diagram of Fig. fig:uncertainty_state_a_matrix, which is in the form of an inverse additive perturbation.\n\n Figure 25: Uncertainty in state space A-matrix\n Conclusion Model uncertainty for SISO systems can be represented in the frequency domain using complex norm-bounded perturbations \\(\\hnorm{\\Delta} \\le 1\\).\nRequirements of robust stability for the case of multiplicative complex uncertainty imposes an upper bound on the allowed complementary sensitivity, \\(\\abs{w_I T} \u0026lt; 1, \\ \\forall\\w\\).\nSimilarly, the inverse multiplicative uncertainty imposes an upper bound on the sensitivity, \\(\\abs{w_{iI} S} \u0026lt; 1, \\ \\forall\\w\\).\nWe also derived a condition for robust performance with multiplicative uncertainty, \\(\\abs{w_P S} + \\abs{w_I T} \u0026lt; 1, \\ \\forall\\w\\).\nRobust Stability and Performance Analysis \nGeneral Control Configuration with Uncertainty The starting point for our robustness analysis is a system representation in which the uncertain perturbations are \u0026ldquo;pulled out\u0026rdquo; into a block diagonal matrix \\[ \\Delta = \\text{diag} \\{\\Delta_i\\} = \\begin{bmatrix}\\Delta_1 \\ \u0026amp; \\ddots \\ \u0026amp; \u0026amp; \\Delta_i \\ \u0026amp; \u0026amp; \u0026amp; \\ddots \\end{bmatrix} \\] where each \\(\\Delta_i\\) represents a specific source of uncertainty, e.g. input uncertainty \\(\\Delta_I\\) or parametric uncertainty \\(\\delta_i\\).\nIf we also pull out the controller \\(K\\), we get the generalized plant \\(P\\) as shown in Fig. fig:general_control_delta. This form is useful for controller synthesis.\n\n Figure 26: General control configuration used for controller synthesis\n If the controller is given and we want to analyze the uncertain system, we use the \\(N\\Delta\\text{-structure}\\) in Fig. fig:general_control_Ndelta.\n\n Figure 27: \\(N\\Delta\\text{-structure}\\) for robust performance analysis\n \\(N\\) is related to \\(P\\) and \\(K\\) by a lower LFT\n\\begin{align*} N \u0026amp;= F_l(P, K) \\\\\\\n\u0026amp;\\triangleq P_{11} + P_{12} K (I - P_{22}K)^{-1} P_{21} \\end{align*}\nSimilarly, the uncertain closed-loop transfer function from \\(w\\) to \\(z\\), is related to \\(N\\) and \\(\\Delta\\) by an upper LFT\n\\begin{align*} F \u0026amp;= F_u(N, \\Delta) \\\\\\\n\u0026amp;\\triangleq N_{22} + N_{21} \\Delta (I - N_{11} \\Delta)^{-1} N_{12} \\end{align*}\nTo analyze robust stability of \\(F\\), we can rearrange the system into the \\(M\\Delta\\text{-structure}\\) shown in Fig. fig:general_control_Mdelta_bis where \\(M = N_{11}\\) is the transfer function from the output to the input of the perturbations.\n\n Figure 28: \\(M\\Delta\\text{-structure}\\) for robust stability analysis\n Representing Uncertainty Each individual perturbation is assumed to be stable and normalized: \\[ \\maxsv(\\Delta_i(j\\w)) \\le 1 \\quad \\forall\\w \\]\nAs the maximum singular value of a block diagonal matrix is equal to the largest of the maximum singular values of the individual blocks, it then follows for \\(\\Delta = \\text{diag}\\{\\Delta_i\\}\\) that \\[ \\maxsv(\\Delta_i(j\\w)) \\le 1 \\quad \\forall\\w, \\forall i \\quad \\Leftrightarrow \\quad \\tcmbox{\\hnorm{\\Delta} \\le 1} \\]\nDifferences Between SISO and MIMO Systems The main difference between SISO and MIMO systems is the concept of directions which is only relevant in the latter. As a consequence, MIMO systems may experience much larger sensitivity to uncertainty than SISO systems.\nParametric Uncertainty The representation of parametric uncertainty for MIMO systems is the same as for SISO systems. However, the inclusion of parametric uncertainty may be more significant for MIMO plants because it offers a simple method of representing uncertain transfer function elements.\nUnstructured Uncertainty Unstructured perturbations are often used to get a simple uncertainty model. We here define unstructured uncertainty as the use of a \u0026ldquo;full\u0026rdquo; complex perturbation matrix \\(\\Delta\\), usually with dimensions compatible with those of the plant, where at each frequency any \\(\\Delta(j\\w)\\) satisfying \\(\\maxsv(\\Delta(j\\w)) \u0026lt; 1\\) is allowed.\nThree common forms of feedforward unstructured uncertainty are shown Fig. fig:feedforward_uncertainty: additive uncertainty, multiplicative input uncertainty and multiplicative output uncertainty.\n \\begin{alignat*}{3} \u0026amp;\\Pi_A: \\quad \u0026amp;\u0026amp;G_p = G + E_A; \\quad\u0026amp; \u0026amp;E_a = w_A \\Delta_a \\\\\\\n\u0026amp;\\Pi_I: \\quad \u0026amp;\u0026amp;G_p = G(I + E_I); \\quad\u0026amp; \u0026amp;E_I = w_I \\Delta_I \\\\\\\n\u0026amp;\\Pi_O: \\quad \u0026amp;\u0026amp;G_p = (I + E_O)G; \\quad\u0026amp; \u0026amp;E_O = w_O \\Delta_O \\end{alignat*}\n \nTable 4: Common feedforward unstructured uncertainty Additive uncertainty Multiplicative input uncertainty Multiplicative output uncertainty In Fig. fig:feedback_uncertainty, three feedback or inverse unstructured uncertainty forms are shown: inverse additive uncertainty, inverse multiplicative input uncertainty and inverse multiplicative output uncertainty.\n \\begin{alignat*}{3} \u0026amp;\\Pi_{iA}: \\quad \u0026amp;\u0026amp;G_p = G(I - E_{iA} G)^{-1}; \u0026amp; \u0026amp; \\quad E_{ia} = w_{iA} \\Delta_{ia} \\\\\\\n\u0026amp;\\Pi_{iI}: \\quad \u0026amp;\u0026amp;G_p = G(I - E_{iI})^{-1}; \u0026amp; \u0026amp; \\quad E_{iI} = w_{iI} \\Delta_{iI} \\\\\\\n\u0026amp;\\Pi_{iO}: \\quad \u0026amp;\u0026amp;G_p = (I - E_{iO})^{-1}G; \u0026amp; \u0026amp; \\quad E_{iO} = w_{iO} \\Delta_{iO} \\end{alignat*}\n \nTable 5: Common feedback unstructured uncertainty Inverse additive uncertainty Inverse multiplicative input uncertainty Inverse multiplicative output uncertainty Lumping uncertainty into a single perturbation For SISO systems, we usually lump multiple sources of uncertainty into a single complex perturbation; often in the multiplicative form. This may be also done for MIMO systems, but then it makes a difference whether the perturbation is at the input or the output.\nSince output uncertainty is frequently less restrictive than input uncertainty in terms of control performance, we first attempt to lump the uncertainty at the output. For example, a set of plant \\(\\Pi\\) may be represented by multiplicative output uncertainty with a scalar weight \\(w_O(s)\\) using \\[ G_p = (I + w_O \\Delta_O) G, \\quad \\hnorm{\\Delta_O} \\le 1 \\] where \\[ l_O(\\w) = \\max_{G_p \\in \\Pi} \\maxsv\\left( (G_p - G)G^{-1} \\right); \\ \\abs{w_O(j\\w)} \\ge l_O(\\w), , \\forall\\w \\]\nIf the resulting uncertainty weight is reasonable and the analysis shows that robust stability and performance may be achieve, then this lumping of uncertainty at the output is fine. If this is not the case, then one may try to lump the uncertainty at the input instead, using multiplicative input uncertainty with a scalar weight, \\[ G_p = G(I + w_I \\Delta_I), \\quad \\hnorm{\\Delta_I} \\le 1 \\] where \\[ l_I(\\w) = \\max_{G_p \\in \\Pi} \\maxsv\\left( G^{-1}(G_p - G) \\right); \\ \\abs{w_I(j\\w)} \\ge l_I(\\w), , \\forall\\w \\]\nHowever, in many cases, this approach of lumping uncertainty either at the output or the input does not work well because it usually introduces additional plants that were not present in the original set.\nConclusion Ideally, we would like to lump several sources of uncertainty into a single perturbation to get a simple uncertainty description. Often an unstructured multiplicative output perturbation is used. However, we should be careful about doing this, at least for plants with a large condition number. In such cases we may have to represent the uncertainty as it occurs physically (at the input, in the elements, etc.) thereby generating several perturbations.\nDiagonal Uncertainty By \u0026ldquo;diagonal uncertainty\u0026rdquo; we mean that the perturbation is a complex diagonal matrix \\[ \\Delta(s) = \\text{diag}\\{\\delta_i(s)\\}; \\quad \\abs{\\delta_i(j\\w)} \\le 1, \\ \\forall\\w, , \\forall i \\]\nDiagonal uncertainty usually arises from a consideration of uncertainty or neglected dynamics in the individual input or output channels. This type of diagonal uncertainty is always present.\n Let us consider uncertainty in the input channels. With each input \\(u_i\\), there is a physical system (amplifier, actuator, etc.) which based on the controller output signal \\(u_i\\), generates a physical plant input \\(m_i\\) \\[ m_i = h_i(s) u_i \\] The scalar transfer function \\(h_i(s)\\) is often absorbed into the plant model \\(G(s)\\). We can represent its uncertainty as multiplicative uncertainty \\[ h_{pi}(s) = h_i(s)(1 + w_{Ii}(s)\\delta_i(s)); \\quad \\abs{\\delta_i(j\\w)} \\le 1, , \\forall\\w \\] which after combining all input channels results in diagonal input uncertainty for the plant\n\\begin{align*} G_p(s) = G(I + W_I \\Delta_I) \\text{ with } \u0026amp;\\Delta_I = \\diag{\\delta_i} \\\\\\\n\u0026amp;W_I = \\diag{w_{Ii}} \\end{align*}\n Normally, we would represent the uncertainty in each input or output channel using a simple weight in the form \\[ w(s) = \\frac{\\tau s + r_0}{(\\tau/r_\\infty)s + 1} \\] where \\(r_0\\) is the relative uncertainty at steady-state, \\(1/\\tau\\) is the frequency where the relative uncertainty reaches \\(\\SI{100}{\\percent}\\), and \\(r_\\infty\\) is the magnitude of the weight at high frequencies.\nDiagonal input uncertainty should always be considered because:\n it is always present and a system which is sensitive to this uncertainty will not work in practice it often restrict achievable performance with multivariable control Obtaining \\(P\\), \\(N\\) and \\(M\\) Let\u0026rsquo;s consider the feedback system with multiplicative input uncertainty \\(\\Delta_I\\) shown Fig. fig:input_uncertainty_set_feedback_weight. \\(W_I\\) is a normalization weight for the uncertainty and \\(W_P\\) is a performance weight.\n\n Figure 29: System with multiplicative input uncertainty and performance measured at the output\n We want to derive the generalized plant \\(P\\) which has inputs \\([u_\\Delta,\\ w,\\ u]^T\\) and outputs \\([y_\\Delta,\\ z,\\ v]^T\\).\nBy breaking the loop before and after \\(K\\) and \\(\\Delta_I\\), we get \\[ P = \\begin{bmatrix} 0 \u0026amp; 0 \u0026amp; W_I \\\\\\\nW_P G \u0026amp; W_P \u0026amp; W_P G \\\\\\\n-G \u0026amp; -I \u0026amp; -G \\end{bmatrix} \\]\nNext, we want to derive the matrix \\(N\\). We fist partition \\(P\\) to be compatible with \\(K\\):\n\\begin{align*} P_{11} = \\begin{bmatrix}0\u0026amp;0\\GW_P\u0026amp;W_P\\end{bmatrix},\\quad \u0026amp; P_{12} = \\begin{bmatrix}W_I\\GW_P\\end{bmatrix} \\\\\\\nP_{21} = \\begin{bmatrix}G\u0026amp;-1\\end{bmatrix}, \\quad \u0026amp; P_{22} = -G \\\\\\\n\\end{align*}\nand then we find \\(N\\) using \\(N = F_l(P, K)\\).\nDefinitions of Robust Stability and Robust Performance The next step is to check whether we have stability and acceptable performance for all plant in the set:\n Robust stability analysis: with a given controller \\(K\\) we determine whether the system remains stable for all plants in the uncertainty set Robust performance analysis: is RS is satisfied, we determine how \u0026ldquo;large\u0026rdquo; the transfer function from exogenous inputs \\(w\\) to outputs \\(z\\) may be for all plants in the uncertainty set We have \\(z = F(\\Delta) \\cdot w\\) with\n\\begin{align*} F \u0026amp;= F_u(N, \\Delta) \\\\\\\n\u0026amp;\\triangleq N_{22} + N_{21}\\Delta(I - N_{11}\\Delta)^{-1} N_{12} \\end{align*}\nWe here use \\(\\hinf\\) norm to define performance and require for RP that \\(\\hnorm{F(\\Delta)} \\le 1\\) for all allowed \\(\\Delta\\). A typical choice is \\(F = w_P S_P\\) where \\(w_P\\) is the performance weight and \\(S_P\\) represents the set of perturbed sensitivity functions.\n In terms of the \\(N\\Delta\\text{-structure}\\), our requirements for stability and performance can be summarized as follows:\n\\begin{align*} \\text{NS} \u0026amp;\\ \\stackrel{\\text{def}}{\\Longleftrightarrow} \\ N \\text{ is internally stable} \\\\\\\n\\text{NP} \u0026amp;\\ \\stackrel{\\text{def}}{\\Longleftrightarrow} \\ \\text{NS and } \\hnorm{N_{22}} \u0026lt; 1 \\\\\\\n\\text{RS} \u0026amp;\\ \\stackrel{\\text{def}}{\\Longleftrightarrow} \\ \\text{NS and } F = F_u(N, \\Delta) \\text{ is stable } \\forall\\Delta \\\\\\\n\\text{RP} \u0026amp;\\ \\stackrel{\\text{def}}{\\Longleftrightarrow} \\ \\text{NS and } \\hnorm{F} \u0026lt; 1, \\quad \\forall \\Delta, ,\\hnorm{\\Delta} \\le 1 \\\\\\\n\\end{align*}\n Robust Stability for the \\(M\\Delta\\text{-structure}\\) Consider the uncertain \\(N\\Delta\\text{-system}\\) for which the transfer function from \\(w\\) to \\(z\\) is \\[ F_u(N, \\Delta) = N_{22} + N_{21}\\Delta(I - N_{11}\\Delta)^{-1} N_{12} \\] Suppose that the system is nominally stable (with \\(\\Delta = 0\\)) that is \\(N\\) is stable. We also assume that \\(\\Delta\\) is stable. We then see from the above equation that the only possible source of instability is the feedback term \\((I - N_{11}\\Delta)^{-1}\\). Thus, when we have nominal stability, the stability of the \\(N\\Delta\\text{-structure}\\) is equivalent to the stability of the \\(M\\Delta\\text{-structure}\\) where \\(M = N_{11}\\).\nWe thus need to derive conditions for checking the stability of the \\(M\\Delta\\text{-structure}\\).\n Assume that the nominal system \\(M(s)\\) and the perturbations \\(\\Delta(s)\\) are stable. Consider the convex set of perturbations \\(\\Delta\\), such that if \\(\\Delta^\\prime\\) is an allowed perturbation then so is \\(c\\Delta^\\prime\\) where c is any real scalar such that \\(\\abs{c} \\le 1\\). Then the \\(M\\Delta\\text{-structure}\\) is stable for all allowed perturbations if and only if the Nyquist plot of \\(\\det\\left( I - M\\Delta(s) \\right)\\) does not encircle the origin, \\(\\forall\\Delta\\):\n\\begin{equation} \\det( I - M\\Delta(j\\w)) \\ne 0, \\quad \\forall\\w, , \\forall\\Delta \\end{equation}\n Assume that the nominal system \\(M(s)\\) and the perturbations \\(\\Delta(s)\\) are stable. Consider the class of perturbations, \\(\\Delta\\), such that if \\(\\Delta^\\prime\\) is an allowed perturbation, then so is \\(c\\Delta^\\prime\\) where c is any complex scalar such that \\(\\abs{c} \\le 1\\). Then the \\(M\\Delta\\text{-structure}\\) is stable for all allowed perturbations if and only if:\n\\begin{equation} \\begin{aligned} \u0026amp;\\rho(M\\Delta(j\\w)) \u0026lt; 1, \\quad \\forall\\w, , \\forall\\Delta\\\\\\\n\\Leftrightarrow \\quad \u0026amp;\\max_{\\Delta} \\rho(M\\Delta(j\\w)) \u0026lt; 1, \\quad \\forall\\w \\end{aligned} \\end{equation}\n RS for Complex Unstructured Uncertainty Let \\(\\Delta\\) be the set of all complex matrices such that \\(\\maxsv(\\Delta) \\le 1\\) (\\(\\|\\Delta\\|_\\infty \\le 1\\)). This is often referred to as unstructured uncertainty or as full-block complex perturbation uncertainty. Then we have\n\\begin{align*} \\max_\\Delta \\rho(M\\Delta) \u0026amp;= \\max_\\Delta \\maxsv(M\\Delta) \\\\\\\n\u0026amp;= \\max_\\Delta \\maxsv(\\Delta) \\maxsv(M) \\\\\\\n\u0026amp;= \\maxsv(M) \\end{align*}\n Assume that the nominal system \\(M(s)\\) is stable and that the perturbations \\(\\Delta(s)\\) are stable. Then the \\(M\\Delta\\text{-system}\\) is stable for all perturbations \\(\\Delta\\) satisfying \\(\\hnorm{\\Delta} \\le 1\\) if and only if\n\\begin{equation} \\maxsv(M(j\\w)) \u0026lt; 1 \\ \\forall\\w \\quad \\Leftrightarrow \\quad \\hnorm{M} \u0026lt; 1 \\end{equation}\n Application of the Unstructured RS-condition We will now present necessary and sufficient conditions for robust stability for each of the six single unstructured perturbations in Figs fig:feedforward_uncertainty and fig:feedback_uncertainty with \\[ E = W_2 \\Delta W_1, \\quad \\hnorm{\\Delta} \\le 1 \\]\nTo derive the matrix \\(M\\) we simply \u0026ldquo;isolate\u0026rdquo; the perturbation, and determine the transfer function matrix \\[ M = W_1 M_0 W_2 \\] from the output to the input of the perturbation, where \\(M_0\\) for each of the six cases is given by\n\\begin{alignat*}{2} G_p \u0026amp;= G + E_A: \\quad \u0026amp;\u0026amp; M_0 = K (I + GK)^{-1} = KS\\\\\\\nG_p \u0026amp;= G(I + E_I): \\quad \u0026amp;\u0026amp; M_0 = K (I + GK)^{-1}G = T_I\\\\\\\nG_p \u0026amp;= (I + E_O)G: \\quad \u0026amp;\u0026amp; M_0 = G K (I + GK)^{-1} = T\\\\\\\nG_p \u0026amp;= G(I - E_{iA}G)^{-1}: \\quad \u0026amp;\u0026amp; M_0 = (I + GK)^{-1} G = SG\\\\\\\nG_p \u0026amp;= G(I - E_{iI})^{-1}: \\quad \u0026amp;\u0026amp; M_0 = (I + KG)^{-1} = S_I\\\\\\\nG_p \u0026amp;= (I - E_{iO})^{-1} G: \\quad \u0026amp;\u0026amp; M_0 = (I + GK)^{-1} = S \\end{alignat*}\nUsing the theorem to check RS for unstructured perturbations \\[ \\text{RS} \\quad \\Leftrightarrow \\quad \\hnorm{W_1 M_0 W_2(j\\w)} \u0026lt; 1, \\ \\forall\\w \\]\nFor instance, for feedforward input uncertainty, we get \\[ \\text{RS}\\ \\forall G_p = G(I + w_I \\Delta_I), \\hnorm{\\Delta_I} \\le 1 \\Leftrightarrow \\hnorm{w_I T_I} \u0026lt; 1 \\]\nIn general, the unstructured uncertainty descriptions in terms of a single perturbation are not \u0026ldquo;tight\u0026rdquo; (in the sense that at each frequency all complex perturbations satisfying \\(\\maxsv(\\Delta(j\\w)) \\le 1\\) may not be possible in practice). Thus, the above RS-conditions are often conservative. In order to get tighter condition we must use a tighter uncertainty description in terms of a block-diagonal \\(\\Delta\\).\nRS for Coprime Factor Uncertainty Robust stability bound in terms of the \\(\\hinf\\) norm (\\(\\text{RS}\\Leftrightarrow\\hnorm{M}\u0026lt;1\\)) are in general only tight when there is a single full perturbation block. An \u0026ldquo;exception\u0026rdquo; to this is when the uncertainty blocks enter or exit from the same location in the block diagram, because they can then be stacked on top of each other or side-by-side, in an overall \\(\\Delta\\) which is then full matrix.\nOne important uncertainty description that falls into this category is the coprime uncertainty description shown in Fig. fig:coprime_uncertainty, for which the set of plants is \\[ G_p = (M_l + \\Delta_M)^{-1}(Nl + \\Delta_N), \\quad \\hnorm{[\\Delta_N, \\ \\Delta_N]} \\le \\epsilon \\] Where \\(G = M_l^{-1} N_l\\) is a left coprime factorization of the nominal plant.\nThis uncertainty description is surprisingly general, it allows both zeros and poles to cross into the right-half plane, and has proven to be very useful in applications.\n\n Figure 30: Coprime Uncertainty\n Since we have no weights on the perturbations, it is reasonable to use a normalized coprime factorization of the nominal plant. In any case, to test for RS we can rearrange the block diagram to match the \\(M\\Delta\\text{-structure}\\) with \\[ \\Delta = [\\Delta_N, \\ \\Delta_M]; \\quad M = -\\begin{bmatrix}K\\I\\end{bmatrix} (I + GK)^{-1} M_l^{-1} \\] And we get \\[ \\text{RS}\\ \\forall\\ \\hnorm{\\Delta_N, \\ \\Delta_M} \\le \\epsilon \\quad \\Leftrightarrow \\quad \\hnorm{M} \u0026lt; 1/\\epsilon \\]\nThe coprime uncertainty description provides a good generic uncertainty description for cases where we do not use any specific a priori uncertainty information. Note that the uncertainty magnitude is \\(\\epsilon\\), so it is not normalized to be less than 1 in this case. This is because this uncertainty description is most often used in a controller design procedure where the objective is to maximize the magnitude of the uncertainty \\(\\epsilon\\) such that RS is maintained.\nRS with Structured Uncertainty: Motivation Consider now the presence of structured uncertainty, where \\(\\Delta = \\text{diag}\\{\\Delta_i\\}\\) is block-diagonal. To test for robust stability, we rearrange the system into the \\(M\\Delta\\text{-structure}\\) and we have \\[ \\text{RS if } \\maxsv(M(j\\w)) \u0026lt; 1, \\ \\forall\\w \\]\nWe have here written \u0026ldquo;if\u0026rdquo; rather than \u0026ldquo;if and only if\u0026rdquo; since this condition is only sufficient for RS when \\(\\Delta\\) has \u0026ldquo;no structure\u0026rdquo;. The question is whether we can take advantage of the fact that \\(\\Delta = \\text{diag}\\{\\Delta_i\\}\\) is structured to obtain an RS-condition which is tighter. On idea is to make use of the fact that stability must be independent of scaling.\nTo this effect, introduce the block-diagonal scaling matrix \\[ D = \\diag{d_i I_i} \\] where \\(d_i\\) is a scalar and \\(I_i\\) is an identity matrix of the same dimension as the \\(i\\)\u0026lsquo;th perturbation block \\(\\Delta_i\\).\nNow rescale the inputs and outputs of \\(M\\) and \\(\\Delta\\) by inserting the matrices \\(D\\) and \\(D^{-1}\\) on both sides as shown in Fig. fig:block_diagonal_scalings. This clearly has no effect on stability.\n\n Figure 31: Use of block-diagonal scalings, \\(\\Delta D = D \\Delta\\)\n Note that with the chosen form for the scalings we have for each perturbation block \\(\\Delta_i = d_i \\Delta_i d_i^{-1}\\), that is we have \\(\\Delta = D \\Delta D^{-1}\\).\nThis means that we have \\[ \\text{RS if } \\maxsv(DM(j\\w)D^{-1}) \u0026lt; 1, \\ \\forall\\w \\]\n This applies for any \\(D\\), and therefore the \u0026ldquo;most improved\u0026rdquo; (least conservative) RS-condition is obtained by minimizing at each frequency the scaled singular value and we have \\[ \\text{RS if } \\min_{D(\\w) \\in \\mathcal{D}} \\maxsv(D(\\w)M(j\\w)D(\\w)^{-1}) \u0026lt; 1, \\ \\forall\\w \\] where \\(\\mathcal{D}\\) is the set of block-diagonal matrices whose structure is compatible to that of \\(\\Delta\\), i.e, \\(\\Delta D = D \\Delta\\).\n When \\(\\Delta\\) is a full matrix, we must select \\(D = dI\\) and we have \\(\\maxsv(D M D^{-1}) = \\maxsv(M)\\), and we cannot improve the RS-condition. However, when \\(\\Delta\\) has structure, we get more degrees of freedom in \\(D\\) and \\(\\maxsv(D M D^{-1})\\) may be significantly smaller than \\(\\maxsv(M)\\).\nThe Structured Singular Value Definition The structured singular value \\(\\mu\\) is a function which provides a generalization of the singular value \\(\\maxsv\\) and the spectral radius \\(\\rho\\). We will use \\(\\mu\\) to get necessary and sufficient conditions for robust stability and also for robust performance.\n\\(\\mu\\) can be explained as follow:\n Find the smallest structured \\(\\Delta\\) (measured in terms of \\(\\maxsv(\\Delta)\\)) which makes the matrix \\(I - M \\Delta\\) singular; then \\(\\mu(M) = 1/\\maxsv(\\Delta)\\).\n Mathematically \\[ \\mu(M)^{-1} \\triangleq \\min_{\\Delta}\\{\\maxsv(\\Delta) | \\det(I-M\\Delta) = 0 \\text{ for struct. }\\Delta\\} \\] Clearly, \\(\\mu(M)\\) depends not only on \\(M\\) but also on the allowed structure for \\(\\Delta\\). This is sometimes shown explicitly by using the notation \\(\\mu_\\Delta (M)\\).\nThe above definition of \\(\\mu\\) involves varying \\(\\maxsv(\\Delta)\\). However, we prefer to normalize \\(\\Delta\\) such that \\(\\maxsv(\\Delta)\\le1\\). We can do that by scaling \\(\\Delta\\) by a factor \\(k_m\\), and looking for the smallest \\(k_m\\) which makes the matrix \\(I - k_m M \\Delta\\) singular. \\(\\mu\\) is then the reciprocal of this small \\(k_m\\): \\(\\mu = 1/k_m\\). This results in the following alternative definition of \\(\\mu\\).\n Let \\(M\\) be a given complex matrix and let \\(\\Delta = \\diag{\\Delta_i}\\) denote a set of complex matrices with \\(\\maxsv(\\Delta) \\le 1\\) and with a given block-diagonal structure. The real non-negative function \\(\\mu(M)\\), called the structured singular value, is defined by\n\\begin{align*} \\mu(M) \\triangleq \u0026amp;(\\min\\{ k_m | \\det(I - k_m M \\Delta) = 0\\\\\\\n\u0026amp;\\text{for structured } \\Delta, \\maxsv(\\Delta) \\le 1 \\} )^{-1} \\end{align*}\nIf no such structured \\(\\Delta\\) exists then \\(\\mu(M) = 0\\)\n A value of \\(\\mu = 1\\) means that there exists a perturbation with \\(\\maxsv(\\Delta) = 1\\) which is just large enough to make \\(I - M\\Delta\\) singular.\nA larger value of \\(\\mu\\) is \u0026ldquo;bad\u0026rdquo; as it means that a smaller perturbation makes \\(I - M\\Delta\\) singular, whereas a smaller value of \\(\\mu\\) is \u0026ldquo;good\u0026rdquo;.\nRemarks on the Definition of \\(\\mu\\) The structured singular value was introduced by Doyle while at the same time, Safonov introduced the Multivariable Stability Margin \\(k_m\\) for a diagonally perturbed system as the inverse of \\(\\mu\\), that is \\(k_m(M) = \\mu(M)^{-1}\\). Note that with \\(k_m = 0\\) we obtain \\(I - k_m M \\Delta = I\\) which is clearly non-singular. Thus, one possible way to obtain \\(\\mu\\) numerically, is to start with \\(k_m = 0\\), and gradually increase \\(k_m\\) until we first find an allowed \\(\\Delta\\) with \\(\\maxsv(\\Delta) = 1\\) such that \\(I-k_mM\\Delta\\) is singular. Properties of \\(\\mu\\) for Real and Complex \\(\\Delta\\) \\(\\mu(\\alpha M) = \\abs{\\alpha} \\mu(M)\\) for any real scalar \\(\\alpha\\) Let \\(\\Delta = \\diag{\\Delta_1, \\Delta_2}\\) be a block-diagonal perturbation and let \\(M\\) be partitioned accordingly. Then \\[ \\mu_\\Delta \\ge \\text{max} \\{\\mu_{\\Delta_1} (M_{11}), \\mu_{\\Delta_2}(M_{22}) \\} \\] Properties of \\(\\mu\\) for Complex Perturbations \\(\\Delta\\) For complex perturbations \\(\\Delta\\) with \\(\\maxsv(\\Delta) \\le 1\\)\n\\begin{equation} \\tcmbox{\\mu(M) = \\max_{\\Delta, \\maxsv(\\Delta) \\le 1} \\rho(M\\Delta)} \\end{equation}\n \\(\\mu(\\alpha M) = \\abs{\\alpha} \\mu(M)\\) for any (complex) scalar \\(\\alpha\\)\n For a full block complex perturbation \\(\\Delta\\) \\[ \\mu(M) = \\maxsv(M) \\]\n \\(\\mu\\) for complex perturbations is bounded by the spectral radius and the singular value\n\\begin{equation} \\tcmbox{\\rho(M) \\le \\mu(M) \\le \\maxsv(M)} \\end{equation}\n Improved lower bound. Defined \\(\\mathcal{U}\\) as the set of all unitary matrices \\(U\\) with the same block diagonal structure as \\(\\Delta\\). Then for complex \\(\\Delta\\)\n\\begin{equation} \\tcmbox{\\mu(M) = \\max_{U\\in\\mathcal{U}} \\rho(MU)} \\end{equation}\n Improved upper bound. Defined \\(\\mathcal{D}\\) as the set of all unitary matrices \\(D\\) that commute with \\(\\Delta\\). Then\n\\begin{equation} \\tcmbox{\\mu(M) = \\min_{D\\in\\mathcal{D}} \\maxsv(DMD^{-1})} \\end{equation}\n Robust Stability with Structured Uncertainty Consider stability of the \\(M\\Delta\\text{-structure}\\) for the case where \\(\\Delta\\) is a set of norm-bounded block-diagonal perturbations. From the determinant stability condition which applies to both complex and real perturbations, we get \\[ \\text{RS} \\ \\Leftrightarrow \\ \\det(I-M\\Delta(j\\w)) \\ne 0, \\ \\forall\\w,, \\forall\\Delta, , \\|\\Delta\\|_\\infty \\le 1 \\] The problem is that this is only a \u0026ldquo;yes/no\u0026rdquo; condition. To find the factor \\(k_m\\) by which the system is robustly stable, we scale the uncertainty \\(\\Delta\\) by \\(k_m\\), and look for the smallest \\(k_m\\) which yields \u0026ldquo;borderline instability\u0026rdquo;, namely \\[ \\det(I - k_m M \\Delta) = 0 \\] From the definition of \\(\\mu\\), this value is \\(k_m = 1/\\mu(M)\\), and we obtain the following necessary and sufficient condition for robust stability.\n Assume that the nominal system \\(M\\) and the perturbations \\(\\Delta\\) are stable. Then the \\(M\\Delta\\text{-system}\\) is stable for all allowed perturbations with \\(\\maxsv(\\Delta)\\le 1, \\ \\forall\\w\\) if on only if\n\\begin{equation} \\mu(M(j\\w)) \u0026lt; 1, \\ \\forall \\omega \\end{equation}\n What do \\(\\mu \\ne 1\\) and skewed-\\(\\mu\\) mean? A value of \\(\\mu = 1.1\\) for robust stability means that all the uncertainty blocks must be decreased in magnitude by a factor 1.1 in order to guarantee stability.\nBut if we want to keep some of the uncertainty blocks fixed, how large can one particular source of uncertainty be before we get instability? We define this value as \\(1/\\mu^s\\), where \\(\\mu^s\\) is called skewed-\\(\\mu\\). We may view \\(\\mu^s(M)\\) as a generalization of \\(\\mu(M)\\).\n Let \\(\\Delta = \\diag{\\Delta_1, \\Delta_2}\\) and assume we have fixed \\(\\norm{\\Delta_1} \\le 1\\) and we want to find how large \\(\\Delta_2\\) can be before we get instability. The solution is to select \\[ K_m = \\begin{bmatrix}I \u0026amp; 0 \\ 0 \u0026amp; k_m I\\end{bmatrix} \\] and look at each frequency for the smallest value of \\(k_m\\) which makes \\(\\det(I - K_m M \\Delta) = 0\\) and we have that skewed-\\(\\mu\\) is \\[ \\mu^s(M) \\triangleq 1/k_m \\]\n Note that to compute skewed-\\(\\mu\\) we must first define which part of the perturbations is to be constant.\nRobust Performance Testing RP using \\(\\mu\\) To test for RP, we first \u0026ldquo;pull out\u0026rdquo; the uncertain perturbations and rearrange the uncertain system into the \\(N\\Delta\\text{-form}\\). Our RP-requirement, is that the \\(\\hinf\\) norm of the transfer function \\(F = F_u(N, \\Delta)\\) remains less than \\(1\\) for all allowed perturbations. This may be tested exactly by computing \\(\\mu(N)\\).\n Rearrange the uncertain system into the \\(N\\Delta\\text{-structure}\\). Assume nominal stability such that \\(N\\) is stable. Then\n\\begin{align*} \\text{RP} \\ \u0026amp;\\stackrel{\\text{def}}{\\Longleftrightarrow} \\ \\hnorm{F} = \\hnorm{F_u(N, \\Delta)} \u0026lt; 1, \\ \\forall \\hnorm{\\Delta} \u0026lt; 1 \\\\\\\n\u0026amp;\\Longleftrightarrow \\ \\mu_{\\hat{\\Delta}}(N(j\\w)) \u0026lt; 1, \\ \\forall\\w \\end{align*}\nwhere \\(\\mu\\) is computed with respect to the structure \\[ \\hat{\\Delta} = \\begin{bmatrix}\\Delta \u0026amp; 0 \\ 0 \u0026amp; \\Delta_P\\end{bmatrix} \\] and \\(\\Delta_P\\) is a full complex perturbation with the same dimensions as \\(F^T\\).\n Some remarks on the theorem:\n Condition \\(\\mu_{\\hat{\\Delta}}(N(j\\w)) \u0026lt; 1, \\ \\forall\\w\\) allows us to test if \\(\\hnorm{F} \u0026lt; 1\\) for all possible \\(\\Delta\\) without having to test each \\(\\Delta\\) individually. Essential, \\(\\mu\\) is defined such that it directly addresses the worst case The \\(\\mu\\text{-condition}\\) for RP involves the enlarged perturbation \\(\\hat{\\Delta} = \\diag{\\Delta, \\Delta_P}\\). Here \\(\\Delta\\), which itself may be a block diagonal matrix, represents the true uncertainty, whereas \\(\\Delta_P\\) is a full complex matrix stemming from the \\(\\hinf\\) norm performance specification Since \\(\\hat{\\Delta}\\) always has structure, the use of \\(\\hinf\\) norm, \\(\\hnorm{N} \u0026lt; 1\\), is generally conservative for robust performance Summary of \\(\\mu\\text{-conditions}\\) for NP, RS and RP Rearrange the uncertain system into the \\(N\\Delta\\text{-structure}\\) where the block-diagonal perturbation satisfy \\(\\hnorm{\\Delta} \\le 1\\). Introduce \\[ F = F_u(N, \\Delta) = N_{22} + N_{21}\\Delta(I - N_{11} \\Delta)^{-1} N_{12} \\] Let the performance requirement be \\(\\hnorm{F} \\le 1\\).\n\\begin{align*} \\text{NS} \\ \u0026amp;\\Leftrightarrow \\ N \\text{ (internally) stable} \\\\\\\n\\text{NP} \\ \u0026amp;\\Leftrightarrow \\ \\text{NS and } \\maxsv(N_{22}) = \\mu_{\\Delta_P} \u0026lt; 1, \\ \\forall\\w \\\\\\\n\\text{RS} \\ \u0026amp;\\Leftrightarrow \\ \\text{NS and } \\mu_\\Delta(N_{11}) \u0026lt; 1, \\ \\forall\\w \\\\\\\n\\text{RP} \\ \u0026amp;\\Leftrightarrow \\ \\text{NS and } \\mu_{\\tilde{\\Delta}}(N) \u0026lt; 1, \\ \\forall\\w, \\ \\tilde{\\Delta} = \\begin{bmatrix}\\Delta \u0026amp; 0 \\ 0 \u0026amp; \\Delta_P\\end{bmatrix} \\end{align*}\n Here \\(\\Delta\\) is a block-diagonal matrix, whereas \\(\\Delta_P\\) is always a full complex matrix.\nAlthough the structured singular value is not a norm, it is sometimes convenient to refer to the peak \\(\\mu\\text{-value}\\) as the \u0026ldquo;\\(\\Delta\\text{-norm}\\)\u0026quot;. For a stable rational transfer matrix \\(H(s)\\), with an associated block structure \\(\\Delta\\), we therefore define\n\\begin{equation} \\tcmbox{\\left\\|H(s)\\right\\|_\\Delta \\triangleq \\max_{\\w} \\mu_\\Delta (H(j\\w))} \\end{equation}\nFor a nominal stable system, we then have\n\\begin{align*} \\text{NP} \\ \u0026amp;\\Leftrightarrow \\ \\hnorm{N_{22}} \u0026lt; 1 \\\\\\\n\\text{RS} \\ \u0026amp;\\Leftrightarrow \\ \\left\\|N_{11}\\right\\|_\\Delta \u0026lt; 1 \\\\\\\n\\text{RP} \\ \u0026amp;\\Leftrightarrow \\ \\left\\|N\\right\\|_{\\tilde{\\Delta}} \u0026lt; 1 \\end{align*}\nWorst-case Performance and Skewed-\\(\\mu\\) Assume we have a system for which the peak \\(\\mu\\text{-value}\\) for RP is \\(1.1\\). What does this mean? The definition of \\(\\mu\\) tells us that our RP-requirement would be satisfied exactly if we reduced both the performance requirement and the uncertainty by a factor of \\(1.1\\). So \\(\\mu\\) does not directly give us the worst-case performance \\(\\max_{\\Delta} \\maxsv(F(\\Delta))\\).\nTo find the worst-case weighted performance for a given uncertainty, one needs to keep the magnitude of the perturbation fixed (\\(\\maxsv(\\Delta) \\le 1\\)), that is, we must compute the skewed-\\(\\mu\\) of \\(N\\). We have, in this case \\[ \\max_{\\maxsv(\\Delta) \\le 1} \\maxsv(F_l(N, \\Delta)(j\\w)) = \\mu^s (N(j\\w)) \\]\nTo find \\(\\mu^s\\) numerically, we scale the performance part of \\(N\\) by a factor \\(k_m = 1/\\mu^s\\) and iterate on \\(k_m\\) until \\(\\mu = 1\\). That is, at each frequency skewed-\\(\\mu\\) is the value \\(\\mu^s(N)\\) which solves \\[ \\mu(K_mN) = 1, \\quad K_m = \\begin{bmatrix}I \u0026amp; 0 \\ 0 \u0026amp; 1/\\mu^s\\end{bmatrix} \\] Note that \\(\\mu\\) underestimate how bad or good the actual worst case performance is. This follows because \\(\\mu^s(N)\\) is always further from 1 than \\(\\mu(N)\\).\nApplication: RP with Input Uncertainty We will now consider in some detail the case of multiplicative input uncertainty with performance defined in terms of weighted sensitivity (Fig. fig:input_uncertainty_set_feedback_weight).\nThe performance requirement is then \\[ \\text{RP} \\quad \\stackrel{\\text{def}}{\\Longleftrightarrow} \\quad \\hnorm{w_P (I + G_p K)^{-1}} \u0026lt; 1, \\quad \\forall G_p \\] where the set of plant is given by \\[ G_p = G (I + w_I \\Delta_I), \\quad \\hnorm{\\Delta_I} \\le 1 \\]\nHere \\(w_p(s)\\) and \\(w_I(s)\\) are scalar weights, so the performance objective is the same for all the outputs, and the uncertainty is the same for all the inputs.\nIn this section, we will:\n Find the interconnection matrix \\(N\\) for this problem Consider the SISO case, so that useful connections can be made with results for SISO systems Consider a multivariable distillation process Find some simple bounds on \\(\\mu\\) and discuss the role of the condition number Make comparisons with the case where the uncertainty is located at the output Interconnection Matrix On rearranging the system into the \\(N\\Delta\\text{-structure}\\), we get\n\\begin{equation} N = \\begin{bmatrix} - w_I T_I \u0026amp; - w_I K S \\ w_p S G \u0026amp; w_p S \\end{bmatrix} \\end{equation}\nwhere \\(T_I = KG(I + KG)^{-1}\\), \\(S = (I + GK)^{-1}\\). For simplicity, we can omit the negative signs.\nFor a given controller \\(K\\) we can now test for NS, NP, RS and RP.\nRP with Input Uncertainty for SISO System For a SISO system with \\(N\\) as described above:\n\\begin{align*} \\text{NS} \u0026amp;\\Leftrightarrow S,\\ SG,\\ KS, \\text{ and } T_I \\text{ are stable} \\\\\\\n\\text{NP} \u0026amp;\\Leftrightarrow |w_P S| \u0026lt; 1, \\quad \\forall \\omega \\\\\\\n\\text{RS} \u0026amp;\\Leftrightarrow |w_I T_I| \u0026lt; 1, \\quad \\forall \\omega \\\\\\\n\\text{RP} \u0026amp;\\Leftrightarrow |w_P S| + |w_I T_I| \u0026lt; 1, \\quad \\forall \\omega \\end{align*}\nRobust performance optimization, in terms of weighted sensitivity with multiplicative uncertainty for a SISO system, thus involves minimizing the peak value of \\(\\mu(N) = |w_I T| + |w_P S|\\). This may be solved using DK-iteration. A closely related problem, which is easier to solve is to minimize the peak value (\\(\\mathcal{H}_\\infty\\) norm) of the mixed sensitivity matrix: \\[ N_\\text{mix} = \\begin{bmatrix} w_P S \\ w_I T \\end{bmatrix} \\]\nAt each frequency, \\(\\mu(N)\\) differs from and \\(\\bar{\\sigma}(N_\\text{mix})\\) by at most a factor \\(\\sqrt{2}\\). Thus, minimizing \\(\\| N_\\text{mix} \\|_\\infty\\) is close to optimizing robust performance in terms of \\(\\mu(N)\\).\nRobust Performance for \\(2 \\times 2\\) Distillation Process Consider a distillation process and a corresponding inverse-based controller: \\[ G(s) = \\frac{1}{75s + 1} \\begin{bmatrix} 87.8 \u0026amp; -86.4 \\ 108.2 \u0026amp; -109.6 \\end{bmatrix} ; \\quad K(s) = \\frac{0.7}{s} G(s)^{-1} \\]\nThe controller provides a nominally decoupled system: \\[ L = l I,\\ S = \\epsilon I \\text{ and } T = t I \\] where \\[ l = \\frac{0.7}{s}, \\ \\epsilon = \\frac{s}{s + 0.7}, \\ t = \\frac{0.7}{s + 0.7} \\]\nThe following weights for uncertainty and performance are used: \\[ w_I(s) = \\frac{s + 0.2}{0.5s + 1}; \\quad w_P(s) = \\frac{s/2 + 0.05}{s} \\]\nWe now test for NS, NP, RS and RP.\nNS with \\(G\\) and \\(K\\) as defined, we find that \\(S\\), \\(SG\\), \\(KS\\) and \\(T_I\\) are stable, so the system is nominally stable.\nNP with the decoupling controller we have: \\[ \\bar{\\sigma}(N_{22}) = \\bar{\\sigma}(w_P S) = \\left|\\frac{s/2 + 0.05}{s + 0.7}\\right| \\] and we see from Fig. fig:mu_plots_distillation that the NP-condition is satisfied.\n\n Figure 32: \\(\\mu\\text{-plots}\\) for distillation process with decoupling controller\n RS In this case \\(w_I T_I = w_I T\\) is a scalar times the identity matrix: \\[ \\mu_{\\Delta_I}(w_I T_I) = |w_I t| = \\left|0.2 \\frac{5s + 1}{(0.5s + 1)(1.43s + 1)}\\right| \\] and we see from Fig. fig:mu_plots_distillation that RS is satisfied.\nThe peak value of \\(\\mu_{\\Delta_I}(M)\\) is \\(0.53\\) meaning that we may increase the uncertainty by a factor of \\(1/0.53 = 1.89\\) before the worst case uncertainty yields instability.\nRP Although the system has good robustness margins and excellent nominal performance, the robust performance is poor. This is shown in Fig. fig:mu_plots_distillation where the \\(\\mu\\text{-curve}\\) for RP was computed numerically using \\(\\mu_{\\hat{\\Delta}}(N)\\), with \\(\\hat{\\Delta} = \\text{diag}\\{\\Delta_I, \\Delta_P\\}\\) and \\(\\Delta_I = \\text{diag}\\{\\delta_1, \\delta_2\\}\\). The peak value is close to 6, meaning that even with 6 times less uncertainty, the weighted sensitivity will be about 6 times larger than what we require.\nRobust Performance and the Condition Number We here consider the relationship between \\(\\mu\\) for RP and the condition number of the plant or of the controller. We consider unstructured multiplicative uncertainty (i.e. \\(\\Delta_I\\) is a full matrix) and performance is measured in terms of the weighted sensitivity. With \\(N\\) given by \\eqref{eq:n_delta_structure_clasic}, we have: \\[ \\overbrace{\\mu_{\\tilde{\\Delta}}(N)}^{\\text{RP}} \\le [ \\overbrace{\\bar{\\sigma}(w_I T_I)}^{\\text{RS}} + \\overbrace{\\bar{\\sigma}(w_P S)}^{\\text{NP}} ] (1 + \\sqrt{k}) \\] where \\(k\\) is taken as the smallest value between the condition number of the plant and of the controller: \\[ k = \\text{min}(\\gamma(G), \\gamma(K)) \\]\nWe see that with a \u0026ldquo;round\u0026rdquo; controller (i.e. one with \\(\\gamma(K) = 1\\)), there is less sensitivity to uncertainty. On the other hand, we would expect \\(\\mu\\) for RP to be large if we used an inverse-based controller for a plant with large condition number, since then \\(\\gamma(K) = \\gamma(G)\\) is large.\nComparison with Output Uncertainty Consider output multiplicative uncertainty of magnitude \\(w_O(j\\omega)\\). In this case, we get the interconnection matrix \\[ N = \\begin{bmatrix} w_O T \u0026amp; w_O T \\ w_P S \u0026amp; w_P S \\end{bmatrix} \\] and for any structure of the uncertainty, \\(\\mu(N)\\) is bounded as follows: \\[ \\bar{\\sigma}\\begin{bmatrix} w_O T \\ w_P S\\end{bmatrix} \\le \\overbrace{\\mu(N)}^{\\text{RP}} \\le \\sqrt{2}\\ \\bar{\\sigma} \\overbrace{\\underbrace{\\begin{bmatrix} w_O T \\ w_P S \\end{bmatrix}}_{\\text{NP}}}^{\\text{RS}} \\] This follows since the uncertainty and performance blocks both enter at the output and that the difference between bounding the combined perturbations \\(\\bar{\\sigma}[\\Delta_O \\ \\Delta_P]\\) and the individual perturbations \\(\\bar{\\sigma}(\\Delta_O)\\) and \\(\\bar{\\sigma}(\\Delta_P)\\) is at most a factor \\(\\sqrt{2}\\). Thus, we \u0026ldquo;automatically\u0026rdquo; achieve RP if we satisfy separately NP and RS. Multiplicative output uncertainty then poses no particular problem for performance.\n\\(\\mu\\text{-synthesis}\\) and DK-iteration The structured singular value \\(\\mu\\) is a very powerful tool for the analysis of robust performance with a given controller. However, one may also seek to find the controller that minimizes a given \\(\\mu\\text{-condition}\\): this is the \\(\\mu\\text{-synthesis}\\) problem.\nDK-iteration At present, there is no direct method to synthesize a \\(\\mu\\text{-optimal}\\) controller. However, for complex perturbations, a method known as DK-iteration is available. It combines \\(\\hinf\\) synthesis and \\(\\mu\\text{-analysis}\\) and often yields good results.\nThe starting point is the upper bound on \\(\\mu\\) in terms of the scaled singular value\n\\begin{equation} \\mu(N) \\le \\min_{D \\in \\mathcal{D}} \\maxsv(D N D^{-1}) \\end{equation}\nThe idea is to find the controller that minimizes the peak value over frequency of this upper bound, namely\n\\begin{equation} \\min_{K} \\left( \\min_{D \\in \\mathcal{D}} \\hnorm{D N(K) D^{-1} } \\right) \\end{equation}\nby alternating between minimizing \\(\\hnorm{DN(K)D^{-1}}\\) with respect to either \\(K\\) or \\(D\\) (while holding the other fixed).\nTo start the iterations, one selects an initial stable rational transfer matrix \\(D(s)\\) with appropriate structure. The identity matrix is often a good initial choice for \\(D\\) provided the system has been reasonably scaled for performance.\n K-step. Synthesize an \\(\\hinf\\) controller for the scaled problem, \\(\\min_{K} \\hnorm{DN(K)D^{-1}}\\) with fixed \\(D(s)\\) D-step. Find \\(D(j\\w)\\) to minimize at each frequency \\(\\maxsv(DND^{-1}(j\\w))\\) with fixed \\(N\\) Fit the magnitude of each element of \\(D(j\\w)\\) to a stable and minimum phase transfer function \\(D(s)\\) and go to step 1 The iteration may continue until satisfactory performance is achieve, \\(\\hnorm{DND^{-1}} \u0026lt; 1\\) or until the \\(\\hinf\\) norm no longer decreases. One fundamental problem with this approach is that although each of the minimization steps are convex, joint convexity is not guaranteed. Therefore, the iterations may converge to a local minimum.\nThe order of the controller resulting from each iteration is equal to the number of the states in the plant \\(G(s)\\) plus the number of states in the weights plus twice the number of state in \\(D(s)\\). The obtain \\(\\mu\\text{-optimal}\\) controller will usually be of high order and will have a flat \\(\\mu\\text{-curve}\\) until some high frequency.\nThe DK-iteration depends heavily on optimal solutions for steps 1 and 2, and also on good fits in step 3. We usually prefers to have a low-order fit in step 3 as it will reduces the order of the \\(\\hinf\\) problem which usually improves the numerical properties of the optimization. In some cases, the iterations converge slowly, the \\(\\mu\\text{-value}\\) can even increase. This may be caused by numerical problems and one may consider going back to the initial problem and rescaling the inputs and outputs.\nAdjusting the Performance Weight If \\(\\mu\\) at a given frequency is different from 1, then the interpretation is that at this frequency we can tolerate \\(1/\\mu\\) times more uncertainty and still satisfy our performance objective with a margin of \\(1/\\mu\\). In \\(\\mu\\text{-synthesis}\\), the designer will usually adjust some parameter in the performance or uncertainty weights until the weight of the peak \\(\\mu\\text{-value}\\) is close to 1.\nSometimes, uncertainty is fixed and we effectively optimize worst-cast performance by adjusting a parameter in the performance weight. Consider the performance weight \\[ w_p(s) = \\frac{s/M + \\w_B^*}{s + \\w_B^* A} \\] where we want to keep \\(M\\) constant and find the high achievable bandwidth frequency \\(\\w_B^*\\). The optimization problem becomes \\[ \\text{max} \\abs{\\w_B^*} \\quad \\text{such that} \\quad \\mu(N) \u0026lt; 1, \\ \\forall\\w \\] where \\(N\\), the interconnection matrix for the RP-problem, depends on \\(\\w_B^*\\). This may be implemented as an outer loop around the DK-iteration.\nFixed Structure Controller Sometimes it is desirable to find a low-order controller with a given structure. This may be achievable by numerical optimization where \\(\\mu\\) is minimized with respect to the controller parameters. This problem here is that the optimization is not generally convex in the parameters. Sometimes it helps to switch the optimization between minimizing the peak of \\(\\mu\\) and minimizing the integral square deviation of \\(\\mu\\) away from \\(k\\) (i.e. \\(\\normtwo{\\mu(j\\w) - k}\\)) where \\(k\\) is usually close to 1. The latter is an attempt to \u0026ldquo;flatten out\u0026rdquo; \\(\\mu\\).\nExample: \\(\\mu\\text{-synthesis}\\) with DK-iteration For simplicity, we will consider again the case of multiplicative uncertainty and performance defined in terms of weighted sensitivity. The uncertainty weight \\(w_I I\\) and performance weight \\(w_P I\\) are shown graphically in Fig. fig:weights_distillation.\n\n Figure 33: Uncertainty and performance weights\n The objective is to minimize the peak value of \\(\\mu_{\\tilde{\\Delta}}(N)\\), \\(\\tilde{\\Delta} = \\text{diag}\\{\\Delta_I, \\Delta_P\\}\\). \\(\\Delta_I\\) is a diagonal \\(2 \\times 2\\) matrix representing the diagonal input uncertainty and \\(\\Delta_P\\) is a full \\(2 \\times 2\\) matrix representing the performance specifications.\nFirst, the generalized plant \\(P\\) is constructed which includes the plant model, the uncertainty weight and the performance weight. Then the block structure is defined, it consists of two \\(1 \\times 1\\) blocks to represent \\(\\Delta_I\\) and a \\(2 \\times 2\\) block to represent \\(\\Delta_P\\). The scaling matrix \\(D\\) for \\(DND^{-1}\\) then has the structure \\(D = \\text{diag}\\{d_1, d_2, d_3I_2\\}\\). We select \\(d_3 = 1\\) and as initial scalings we select \\(d_1^0 = d_2^0 = 1\\). \\(P\\) is then scaled with the matrix \\(\\text{diag}\\{D, I_2\\}\\) where \\(I_2\\) is associated with the inputs and outputs from the controller (we do not want to scale the controller).\n Iteration No. 1. Step 1: with the initial scalings, the \\(\\mathcal{H}_\\infty\\) synthesis produced a 6 state controller (2 states from the plant model and 2 from each of the weights). Step 2: the upper \\(\\mu\\text{-bound}\\) is shown in Fig. fig:dk_iter_mu. Step 3: the frequency dependent \\(d_1(\\omega)\\) and \\(d_2(\\omega)\\) from step 2 are fitted using a 4th order transfer function shown in Fig. fig:dk_iter_d_scale Iteration No. 2. Step 1: with the 8 state scalings \\(D^1(s)\\), the \\(\\mathcal{H}_\\infty\\) synthesis gives a 22 state controller. Step 2: This controller gives a peak value of \\(\\mu\\) of \\(1.02\\). Step 3: the scalings are only slightly changed Iteration No. 3. Step 1: The \\(\\mathcal{H}_\\infty\\) norm is only slightly reduced. We thus decide the stop the iterations. \n Figure 34: Change in \\(\\mu\\) during DK-iteration\n \n Figure 35: Change in D-scale \\(d_1\\) during DK-iteration\n The final \\(\\mu\\text{-curves}\\) for NP, RS and RP with the controller \\(K_3\\) are shown in Fig. fig:mu_plot_optimal_k3. The objectives of RS and NP are easily satisfied. The peak value of \\(\\mu\\) is just slightly over 1, so the performance specification \\(\\bar{\\sigma}(w_P S_p) \u0026lt; 1\\) is almost satisfied for all possible plants.\n\n Figure 36: (mutext{-plots}) with (mu) \u0026ldquo;optimal\u0026rdquo; controller (K_3)\n To confirm that, 6 perturbed plants are used to compute the perturbed sensitivity functions shown in Fig. fig:perturb_s_k3.\n\n Figure 37: Perturbed sensitivity functions (bar{sigma}(S^prime)) using (mu) \u0026ldquo;optimal\u0026rdquo; controller (K_3). Lower solid line: nominal plant. Upper solid line: worst-case plant\n Further Remarks on \\(\\mu\\) For complex perturbations, the scaled singular value \\(\\maxsv(DND^{-1})\\) is a tight upper bound on \\(\\mu(N)\\) in most cases, and minimizing the upper bound \\(\\hnorm{DND^{-1}}\\) form the basis for the DK-iteration.\nThe use of constant D-scales (\\(D\\) is not allowed to vary with frequency), provides a necessary and sufficient condition for robustness to arbitrary fast time varying linear uncertainty. While such perturbations are unlikely in a practical situation, we know that this controller will work very well even for rapid changes in the plant. Moreover, the use of constant D-scales make the computation of \\(\\mu\\) straightforward and solvable using LMIs.\nConclusion We have discussed how to represent uncertainty and how to analyze its effect on stability (RS) and performance (RP) using the structured singular value \\(\\mu\\).\nTo analyze robust stability of an uncertain system, we make use of the \\(M\\Delta\\text{-structure}\\) where \\(M\\) represents the transfer function for the \u0026ldquo;new\u0026rdquo; feedback part generated by the uncertainty. From the small gain theorem \\[ \\tcmbox{RS \\quad \\Leftarrow \\quad \\maxsv(M) \u0026lt; 1, \\ \\forall\\w} \\] which is tight (necessary and sufficient) for the special case where at each frequency any complex \\(\\Delta\\) satisfying \\(\\maxsv(\\Delta) \\le 1\\) is allowed. More generally, the tight condition is \\[ \\tcmbox{RP \\quad \\Leftrightarrow \\quad \\mu(M) \u0026lt; 1, \\ \\forall\\w} \\] where \\(\\mu(M)\\) is the structured singular value. The calculation of \\(\\mu\\) makes use of the fact that \\(\\Delta\\) has a given block-diagonal structure, where certain blocks may also be real (e.g. to handle parametric uncertainty).\nWe defined robust performance as \\(\\hnorm{F_l(N, \\Delta)} \u0026lt; 1\\) for all allowed \\(\\Delta\\). Since we used the \\(\\hinf\\) norm in both the representation of uncertainty and the definition of performance, we found that RP could be viewed as a special case of RS, and we derived \\[ \\tcmbox{RS \\quad \\Leftrightarrow \\quad \\mu(N) \u0026lt; 1, \\ \\forall\\w} \\] where \\(\\mu\\) is computed with respect to the block-diagonal structure \\(\\diag{\\Delta, \\Delta_P}\\). Here \\(\\Delta\\) represents the uncertainty and \\(\\Delta_P\\) is a fictitious full uncertainty block representing the \\(\\hinf\\) performance bound.\nThere are two main approaches to getting a robust design:\n We aim to make the system robust to some \u0026ldquo;general\u0026rdquo; class of uncertainty which we do not explicitly model. For SISO systems, the classical gain and phase margins and the peaks of \\(S\\) and \\(T\\) provide useful robustness measures. For MIMO systems, normalized coprime factor uncertainty provides a good general class of uncertainty, and the associated Glover-McFlarlane \\(\\hinf\\) loop-shaping design procedure has proved itself very useful in applications We explicitly model and quantify the uncertainty in the plant and aim to make the system robust to this specific uncertainty. Potentially, it yields better designs, but it may require a much larger effort in terms of uncertainty modelling, especially if parametric uncertainty is consider. Analysis and in particular, synthesis using \\(\\mu\\) can be very involved In applications, it is therefore recommended to start with the first approach, at least for design. The robust stability and performance is then analyzed in simulations and using the structured singular value, for example, by considering first simple sources of uncertainty such as multiplicative input uncertainty. One then iterates between design and analysis until a satisfactory solution is obtained. If resulting control performance is not satisfactory, one may switch to the second approach.\nPractical \\(\\mu\\text{-synthesis}\\) in practice: Because of the effort involved in deriving detailed uncertainty descriptions, and the subsequent complexity in synthesizing controllers, the rule is to start simple with a crude uncertainty description, and then to see whether the performance specifications can be met. Only if they can\u0026rsquo;t, one should consider more detailed uncertainty descriptions such as parametric uncertainty The use of \\(\\mu\\) implies a worst-case analysis, so one should be careful about including too many sources of uncertainty, noise and disturbances - otherwise it becomes very unlikely for the worst case to occur, and the resulting analysis and design may be unnecessarily conservative There is always uncertainty with respect to the inputs and outputs, so it is generally sage to include diagonal input and output uncertainty. The relative multiplicative form is very convenient in this case \\(\\mu\\) is most commonly used for analysis. If \\(\\mu\\) is used for synthesis, then we recommend that you keep the uncertainty fixed and adjust the parameters in the performance weight until \\(\\mu\\) is close to 1 Controller Design \nTrade-offs in MIMO Feedback Design The shaping of multivariable transfer functions is based on the idea that a satisfactory definition of gain for a matrix transfer function is given by the singular values. By multivariable transfer function shaping, therefore, we mean the shaping of the singular values of appropriate specified transfer functions such as the loop transfer function of one or more closed-loop transfer functions.\nThe classical loop-shaping ideas can be further generalized to MIMO systems by considering the singular values.\nConsider the one degree-of-freedom system as shown in Fig. fig:classical_feedback_small. We have the following important relationships:\n\\begin{subequations} \\begin{align} y(s) \u0026amp;= T(s) r(s) + S(s) d(s) - T(s) n(s) \\\\\\\nu(s) \u0026amp;= K(s) S(s) \\big(r(s) - n(s) - d(s) \\big) \\end{align} \\end{subequations}\n\n Figure 38: One degree-of-freedom feedback configuration\n For disturbance rejection make \\(\\maxsv(S)\\) small For noise attenuation make \\(\\maxsv(T)\\) small For reference tracking make \\(\\maxsv(T) \\approx \\minsv(T) \\approx 1\\) For control energy reduction make \\(\\maxsv(KS)\\) small For robust stability in presence of an additive perturbation (\\(G_p = G + \\Delta\\)) make \\(\\maxsv(KS)\\) small For robust stability in presence of a multiplicative output perturbation (\\(G_p = (I + \\Delta) G\\)) make \\(\\maxsv(T)\\) small The closed-loop requirements cannot all be satisfied simultaneously. Feedback design is therefore a trade-off over frequency of conflicting objectives. This is not always as difficult as it sounds because the frequency range over which the objectives are important can be quite different.\nIn classical loop shaping, it is the magnitude of the open-loop transfer function \\(L = GK\\) which is shaped, whereas the above requirements are all in terms of closed-loop transfer functions. However, we have that \\[ \\minsv(L) - 1 \\le \\frac{1}{\\maxsv(S)} \\le \\minsv(L) + 1 \\] from which we see that \\(\\maxsv(S) \\approx 1/\\minsv(L)\\) at frequencies where \\(\\minsv(L)\\) is much larger than \\(1\\). Furthermore, from \\(T = L(I+L)^{-1}\\) it follows that \\(\\maxsv(T) \\approx \\maxsv(L)\\) at frequencies where \\(\\maxsv(L)\\) is much smaller than \\(1\\).\nThus, over specified frequency ranges, it is relatively easy to approximate the closed-loop requirements by open-loop objectives.\n For disturbance rejection make \\(\\minsv(GK)\\) large For noise attenuation make \\(\\maxsv(GK)\\) small For reference tracking make \\(\\minsv(GK)\\) large For control energy reduction make \\(\\maxsv(K)\\) small For robust stability in presence of an additive perturbation make \\(\\maxsv(K)\\) small For robust stability in presence of an multiplicative output perturbation make \\(\\maxsv(GK)\\) small Typically, the open-loop requirements 1 and 3 are valid and important at low frequencies \\(0 \\le \\omega \\le \\omega_l \\le \\omega_B\\), while conditions 2, 4, 5 and 6 are conditions which are valid and important at high frequencies \\(\\omega_B \\le \\omega_h \\le \\omega \\le \\infty\\), as illustrated in Fig. fig:design_trade_off_mimo_gk.\n\n Figure 39: Design trade-offs for the multivariable loop transfer function \\(GK\\)\n The control engineer must design \\(K\\) such that \\(\\minsv(GK)\\) lies above a performance boundary for all \\(\\omega\\) up to \\(\\omega_l\\), and such that \\(\\maxsv(GK)\\) lies below a robustness boundary for all \\(\\omega\\) above \\(\\omega_h\\).\nShaping the singular values of \\(GK\\) by selecting \\(K\\) is relatively easy task, but to do this in a way which also guarantees closed-loop stability is in general difficult as closed-loop stability cannot be determined from open-loop singular values.\nFor SISO systems, closed-loop stability is closely related to the open-loop roll-off rate from high to low gain at the crossover (which is in practice less than \\(\\SI{40}{\\decibel\\per dec}\\)). An immediate consequence of this is that there is a lower limit to the difference between \\(\\omega_h\\) and \\(\\omega_l\\).\nFor MIMO systems, a similar gain/phase relationship holds in the crossover frequency region, but this is in terms of roll-off rate of the magnitude of the eigenvalues of \\(GK\\) and not the singular values. The stability constraint is therefore more difficult to handle.\nLQG Control LQG control was developed and successfully applied for aerospace problems where accurate plants are available. For other control problems, it was not easy, and the assumption of white noise disturbance is not always relevant. As a result, LQG designs were sometimes not robust enough to be used in practice.\nIt is assumed that the plant dynamics are linear and known, and that the measurement noise and disturbance signals are stochastic with known statistical properties:\n\\begin{align*} \\dot{x} \u0026amp;= A x + B u + w_d \\\\\\\ny \u0026amp;= C x + D u + w_n \\end{align*}\nwith \\(w_d\\) and \\(w_n\\) are the disturbance and measurement noise which are assumed to be uncorrelated zero-mean Gaussian stochastic processes with constant power spectral density matrices \\(W\\) and \\(V\\) respectively.\n The LQG control problem is to find the optimal control \\(u(t)\\) that minimize: \\[J = E \\bigg\\{ \\lim_{T\\rightarrow \\infty} \\frac{1}{T} \\int_0^T \\big[ x^T Q x + u^T R u \\big] dt \\bigg\\} \\] Where \\(Q\\) and \\(R\\) are appropriately chosen constant weighting matrices (design parameters) such that \\(Q = Q^T \\ge 0\\) and \\(R = R^T \u0026gt; 0\\).\n The solution to the LQG problem, known as the Separation Theorem, is separated into two problems.\nIt consists of first determining the optimal control to a deterministic LQR problem (LQG without \\(w_d\\) and \\(w_n\\)). The solution to this problem is a state feedback law\n\\begin{equation} \\tcmbox{u(t) = -K_r x(t)} \\end{equation}\nwhere \\(K_r\\) is a constant matrix that can be easily computed.\nThe next step is to find an optimal estimate \\(\\hat{x}\\) of the state \\(x\\) so that \\(E \\big\\{ [x-\\hat{x}]^T [x-\\hat{x}] \\big\\}\\) is minimized. The optimal state estimate is given by a Kalman filter.\nThe solution to the LQG problem is then found by replacing \\(x\\) by \\(\\hat{x}\\) to give \\(u(t) = -K_r \\hat{x}\\).\nWe therefore see that the LQG problem and its solution can be separated into two distinct parts as illustrated in Fig. fig:lqg_separation: the optimal state feedback and the optimal state estimator (the Kalman filter).\n\n Figure 40: The separation theorem\n The LQR problem, where all the states are known is to find the input signal \\(u(t)\\) that takes the system \\(\\dot{x} = Ax+Bu\\) to the zero state (\\(x=0\\)) by minimizing the deterministic cost\n\\begin{equation} J_r = \\int_0^\\infty \\big( x(t)^T Q x(t) + u(t)^T R u(t) \\big) dt \\end{equation}\nThe optimal solution is \\(u=-K_r x(t)\\) with\n\\begin{equation} K_r = R^{-1} B^T X \\end{equation}\nand \\(X\\) is the unique positive-semi definite solution of the algebraic Riccati equation:\n\\begin{equation} A^T X + X A - XBR^{-1}B^TX + Q = 0 \\end{equation}\n The Kalman filter has the structure of an ordinary state-estimator, as shown on Fig. fig:lqg_kalman_filter, with:\n\\begin{equation} \\dot{\\hat{x}} = A\\hat{x} + Bu + K_f(y-C\\hat{x}) \\end{equation}\nThe optimal choice of \\(K_f\\), which minimize \\(E \\big\\{ [x-\\hat{x}]^T [x-\\hat{x}] \\big\\}\\) is given by\n\\begin{equation} K_f = Y C^T V^{-1} \\end{equation}\nWhere \\(Y\\) is the unique positive-semi definite solution of the algebraic Riccati equation\n\\begin{equation} YA^T + AY - YC^TV^{-1}CY + W = 0 \\end{equation}\n \n Figure 41: The LQG controller and noisy plant\n The structure of the LQG controller is illustrated in Fig. fig:lqg_kalman_filter, its transfer function from \\(y\\) to \\(u\\) is given by\n\\begin{align*} L_{\\text{LQG}}(s) \u0026amp;= \\left[ \\begin{array}{c|c} A - B K_r - K_f C \u0026amp; K_f \\ \\hline -K_r \u0026amp; 0 \\end{array} \\right] \\\\\\\n\u0026amp;= \\left[ \\begin{array}{c|c} A - B R^{-1} B^T X - Y C^T V^{-1} C \u0026amp; Y C^T V^{-1} \\ \\hline -R^{-1} B^T X \u0026amp; 0 \\end{array} \\right] \\end{align*}\nIt has the same degree (number of poles) as the plant.\nFor the LQG-controller, as shown on Fig. fig:lqg_kalman_filter, it is not easy to see where to position the reference input \\(r\\) and how integral action may be included, if desired. Indeed, the standard LQG design procedure does not give a controller with integral action. One strategy is illustrated in Fig. fig:lqg_integral. Here, the control error \\(r-y\\) is integrated and the regulator \\(K_r\\) is designed for the plant augmented with these integral states.\n\n Figure 42: LQG controller with integral action and reference input\n For an LQG-controller system with a combined Kalman filter and LQR control law, there are no guaranteed stability margins, and there exist LQG combinations with arbitrary small gain margins. However, there are procedures for improving robustness properties of LQG control such as Loop Transfer Recovery (LTR).\nThese procedure are somehow difficult to use in practice. Their main limitation is that they can only be applied to minimum phase plants.\n\\(\\htwo\\) and \\(\\hinf\\) Control \nGeneral Control Problem Formulation There are many ways in which feedback design problems can be cast as \\(\\htwo\\) and \\(\\hinf\\) optimization problems. It is very useful therefore to have a standard problem formulation into which any particular problem may be manipulated.\nSuch a general formulation is afforded by the general configuration shown in Fig. fig:general_control.\n\n Figure 43: General control configuration\n The system is described by\n\\begin{subequations} \\begin{align} \\colvec{z\\v} \u0026amp;= P(s) \\colvec{w\\u} = \\begin{bmatrix}P_{11}(s) \u0026amp; P_{12}(s)\\ P_{21}(s) \u0026amp; P_{22}(s) \\end{bmatrix} \\colvec{w\\u}\\\\\\\nu \u0026amp;= K(s) v \\end{align} \\end{subequations}\nWith a state space realization of the generalized plant \\(P\\) given by\n\\begin{equation} P = \\left[ \\begin{array}{c|cc} A \u0026amp; B_1 \u0026amp; B_2 \\\\\\\n\\hline C_1 \u0026amp; D_{11} \u0026amp; D_{12} \\\\\\\nC_2 \u0026amp; D_{21} \u0026amp; D_{22} \\end{array} \\right] \\end{equation}\nThe closed loop transfer function from \\(w\\) to \\(z\\) is given by the linear fractional transformation:\n\\begin{align*} z \u0026amp;= F_l(P, K) w \\\\\\\n\u0026amp;= [P_{11} + P_{12}K(I-P_{22}K)^{-1} P_{21}] w \\end{align*}\n\\(\\htwo\\) and \\(\\hinf\\) control involve the minimization of the \\(\\htwo\\) and \\(\\hinf\\) norms of \\(F_l(P, K)\\).\nThe most general and widely used algorithms for \\(\\htwo\\) and \\(\\hinf\\) control problems are based on the state space formulation and requires the solution of two Riccati equations.\nThe following assumptions are typically made in \\(\\htwo\\) and \\(\\hinf\\) problems:\n \\((A, B_2, C_2)\\) is stabilizable and detectable. This is required for the existence of stabilizing controllers \\(D_{12}\\) and \\(D_{21}\\) have full rank. This is sufficient to ensure that the controllers are proper \\(\\begin{bmatrix} A-j\\w I \u0026amp; B_2 \\ C_1 \u0026amp; D_{12} \\end{bmatrix}\\) and \\(\\begin{bmatrix} A-j\\w I \u0026amp; B_1 \\ C_2 \u0026amp; D_{21} \\end{bmatrix}\\) have respectively full column and full row rank for all \\(\\w\\). This ensures that the controller does not cancel poles or zeros in the imaginary axis which would result in closed-loop instability \\(D_{11} = 0\\) and \\(D_{22} = 0\\) is a conventional requirement for \\(\\htwo\\) control. This is not required for \\(\\hinf\\) control but this significantly simplify algorithm formulas \\(D_{12}^T C_1 = 0\\) and \\(B_1 D_{12}^T = 0\\) is common in \\(\\htwo\\) control. \\(D_{12}^T C_1 = 0\\) means that there is no cross terms in the cost function and \\(B_1 D_{12}^T = 0\\) that the process noise and measurement noise are uncorrelated \\((A, B_1)\\) is stabilizable and \\((A, C_1)\\) is detectable If the Matlab Robust Control Toolbox complains, then it probably means that the control problem is not well formulated and that some assumptions are not met.\n\\(\\hinf\\) algorithms, in general, find a sub-optimal controller. That is, for a specified \\(\\gamma\\) a stabilizing controller is found for which \\(\\hnorm{F_l(P,K)}\u0026lt;\\gamma\\). This contrasts with \\(\\htwo\\) theory, in which the optimal controller is unique and can be found from the solution of two Riccati equations.\n\\(\\htwo\\) Optimal Control The standard \\(\\htwo\\) optimal control problem is to find a stabilizing controller \\(K\\) which minimizes \\[\\normtwo{F(s)} = \\sqrt{\\frac{1}{2\\pi}\\int_{-\\infty}^{\\infty} tr[F(j\\w)F(j\\w)^H]d\\w }\\] With \\(F = F_l(P, K)\\).\n For a particular problem, the generalized plant \\(P\\) will include the plant model, the interconnection structure, and the designer specified weighting functions.\nThe \\(\\htwo\\) norm can be given different deterministic interpretations. It also has the following stochastic interpretation.\nSuppose in the general control configuration that the exogenous input \\(w\\) is white noise of unit density. That is \\[ E\\{w(t)w(\\tau)^T\\} = I \\delta(t-\\tau) \\]\nExpected power in the error signal \\(z\\) is then given by\n\\begin{align*} P_z \u0026amp;= E\\bigg\\{ \\lim_{T\\rightarrow\\infty} \\frac{1}{2T} \\int_{-T}^{T} z(t)^T z(t) dt \\bigg\\} \\\\\\\n\u0026amp;= \\text{tr}\\ E\\{z(t)z(t)^H\\}\\\\\\\n\u0026amp;= \\frac{1}{2\\pi} \\int_{-\\infty}^{\\infty}\\text{tr}\\left[F(j\\omega)F(j\\omega)^H\\right]d\\omega\\\\\\\n\u0026amp;= \\normtwo{F}^2 = \\normtwo{F_l(P,K)}^2 \\end{align*}\n Thus, by minimizing the \\(\\htwo\\) norm, the error power of the generalized system, due to a unit intensity white noise input, is minimized. We are minimizing the Root Mean Square value of \\(z\\).\n LQG: a Special \\(\\htwo\\) Optimal Controller An important special case of \\(\\htwo\\) optimal control is the LQG problem. For the stochastic system\n\\begin{align*} \\dot{x} \u0026amp;= A x + B u + w_d \\\\\\\ny \u0026amp;= Cx + w_n \\end{align*}\nwhere \\[ E \\left\\{ \\begin{bmatrix} w_d(t)\\w_n(t) \\end{bmatrix} \\begin{bmatrix} w_d(\\tau)^T \u0026amp; w_n(\\tau)^T \\end{bmatrix} \\right\\} = \\begin{bmatrix} W \u0026amp; 0 \\ 0 \u0026amp; V \\end{bmatrix} \\delta (t - \\tau) \\]\nThe LQG problem is to find \\(u = K(s) y\\) such that \\[ J = E \\left\\{ \\lim_{T\\to \\infty} \\frac{1}{T} \\int_0^T [x^T Q x + u^T R u] dt \\right\\} \\] is minimized with \\(Q = Q^T \\ge 0\\) and \\(R = R^T \u0026gt; 0\\).\nThis problem can be cast as an \\(\\htwo\\) optimization in the general framework in the following manner.\nDefine the error signal \\(z\\) as \\[ z = \\begin{bmatrix} Q^{\\frac{1}{2}} \u0026amp; 0 \\\\\\\n0 \u0026amp; R^{\\frac{1}{2}} \\end{bmatrix} \\begin{bmatrix} x \\ u \\end{bmatrix} \\]\nRepresent the stochastic inputs as \\[ \\begin{bmatrix} w_d \\ w_n \\end{bmatrix} = \\begin{bmatrix} W^{\\frac{1}{2}} \u0026amp; 0 \\\\\\\n0 \u0026amp; V^{\\frac{1}{2}} \\end{bmatrix} w \\] where \\(w\\) is a white noise process of unit density.\nThen the LQG cost function is \\[ K = E \\left\\{ \\lim_{T\\to \\infty} \\frac{1}{T} \\int_0^T z(t)^T z(t) dt \\right\\} = \\normtwo{F_l(P,K)}^2 \\]\n\\(\\hinf\\) Optimal Control With reference to the general control configuration on Fig. fig:general_control, the standard \\(\\hinf\\) optimal control problem is to find all stabilizing controllers \\(K\\) which minimize \\[ \\hnorm{F_l(P, K)} = \\max_{\\omega} \\maxsv\\big(F_l(P, K)(j\\omega)\\big) \\]\nThe \\(\\hinf\\) norm has several interpretations in terms of performance. One is that it minimizes the peak of the maximum singular value of \\(F_l(P(j\\omega), K(j\\omega))\\).\nIt also has a time domain interpretation as the worst-cast 2-norm:\n\\begin{equation} \\hnorm{F_l(P,K)} = \\max_{w(t)\\ne0} \\frac{\\normtwo{z(t)}}{\\normtwo{w(t)}} \\end{equation}\nwhere \\(\\normtwo{z(t)} = \\sqrt{\\int_0^\\infty \\sum_i \\abs{z_i}^2 dt}\\) is the 2-norm of the vector signal.\nIn practice, it is usually not necessary to obtain an optimal controller for the \\(\\hinf\\) problem, and it is simpler to design a sub-optimal one.\nLet \\(\\gamma_\\text{min}\\) be the minimum value of \\(\\hnorm{F_l(P,K)}\\) over all stabilizing controllers \\(K\\). Then the \\(\\hinf\\) sub-optimal control problem is: given a \\(\\gamma \u0026gt; \\gamma_\\text{min}\\), find all stabilizing controllers \\(K\\) such that\n\\begin{equation} \\hnorm{F_l(P, K)} \u0026lt; \\gamma \\end{equation}\nBy reducing \\(\\gamma\\) in an iterative way, an optimal solution is approached.\nGeneral \\(\\hinf\\) algorithm. For the general control configuration and with assumptions described above, there exists a stabilizing controller \\(K(s)\\) such that \\(\\hnorm{F_l(P,K)}\u0026lt;\\gamma\\) if and only if\n \\(X_\\infty \\ge 0\\) is a solution to the algebraic Riccati equation \\(A^T X_\\infty + X_\\infty A + C_1^T C_1 + X_\\infty (\\gamma^{-2} B_1 B_1^T - B_2 B_2^T)X_\\infty = 0\\) such that \\(\\text{Re } \\lambda_i \\left[ A + (\\gamma^{-2}B_1B_1^T - B_2B_2^T)X_\\infty \\right] \u0026lt; 0, \\ \\forall i\\) \\(Y_\\infty \\ge 0\\) is a solution to the algebraic Riccati equation \\(A Y_\\infty + Y_\\infty A^T + B_1 B_1^T + Y_\\infty (\\gamma^{-2} C_1^T C_1 - C_2^T C_2)Y_\\infty = 0\\) such that \\(\\text{Re } \\lambda_i \\left[ A + Y_\\infty(\\gamma^{-2}C_1^TC_1 - C_2^TC_2)Y_\\infty \\right] \u0026lt; 0, \\ \\forall i\\) \\(\\rho(X_\\infty Y_\\infty) \u0026lt; \\gamma^2\\) All such controllers are then given by \\(K = F_l(K_c, Q)\\) where\n\\begin{align*} K_c(s) \u0026amp;= \\left[ \\begin{array}{c|cc} A_\\infty \u0026amp; -Z_\\infty L_\\infty \u0026amp; Z_\\infty B_2 \\ \\hline F_\\infty \u0026amp; 0 \u0026amp; I \\\\\\\n-C_2 \u0026amp; I \u0026amp; 0 \\end{array} \\right], \\ L_\\infty = -Y_\\infty C_2^T \\\\\\\nF_\\infty \u0026amp;= -B_2^T X_\\infty, \\ Z_\\infty = (I - \\gamma^2 Y_\\infty X_\\infty)^{-1} \\\\\\\nA_\\infty \u0026amp;= A + \\gamma^{-2} B_1 B_1^T X_\\infty + B_2F_\\infty + Z_\\infty L_\\infty C_2 \\end{align*}\nand \\(Q(s)\\) is any stable proper transfer function such that \\(\\hnorm{Q} \u0026lt; \\gamma\\).\nFor \\(Q(s) = 0\\), we get\n\\begin{equation} K(s) = K_{c11}(s) = -Z_\\infty L_\\infty (s I - A_\\infty)^{-1} F_\\infty \\end{equation}\nThis is called the central controller and has the same number of states as the generalized plant \\(P(s)\\).\nThe central controller can be separated into a state estimator (observer) of the form \\[ \\dot{\\hat{x}} = A\\hat{x} + B_1 \\gamma^{-2} B_1^T X_\\infty \\hat{x} + B_2 u + Z_\\infty L_\\infty (C_2 \\hat{x} - y) \\] and a state feedback \\(u = F_\\infty \\hat{x}\\).\n If we desire a controller that achieves \\(\\gamma_\\text{min}\\), to within specified tolerance, then we can perform a bisection on \\(\\gamma\\) until its value is sufficiently accurate. The above conditions provide a test for each value of \\(\\gamma\\) to determine if \\(\\gamma\u0026lt;\\gamma_\\text{min}\\) or \\(\\gamma\u0026gt;\\gamma_\\text{min}\\).\n There are mainly two methodologies for \\(\\hinf\\) controller design: the transfer function shaping approach and the signal-based approach.\nIn the shaping approach, \\(\\hinf\\) optimization is used to shape the singular values of specified transfer functions over frequency. The maximum singular values are relatively easy to shape by forcing them to lie below user defined bounds, thereby ensuring desirable bandwidth and roll-off rates.\nIn the signal-based approach, we seek to minimize the energy in certain error signal given a set of exogenous input signals.\nA difficulty that sometimes arises with \\(\\hinf\\) control is the selection of weights such that the \\(\\hinf\\) optimal controller provides a good trade-off between conflicting objectives in various frequency ranges. Thus, for practical designs it is sometimes recommended to perform only a few iterations of the \\(\\hinf\\) algorithm. The justification for this is that the initial design, after one iteration, is similar to an \\(\\htwo\\) design which does trade-off over various frequency ranges. Therefore stopping the iterations before the optimal value is achieved gives the design an \\(\\htwo\\) flavor which may be desirable.\nMixed-Sensitivity \\(\\hinf\\) Control Mixed-sensitivity is the name given to transfer function shaping problems in which the sensitivity function \\(S = (I + GK)^{-1}\\) is shaped along with one or more other closed-loop transfer functions such as \\(KS\\) or \\(T = I - S\\).\nSuppose that we have a regulation problem in which we want to reject a disturbance \\(d\\) entering at the plant output and it is assumed that the measurement noise is relatively insignificant. It makes sense to shape the closed-loop transfer functions \\(S\\) and \\(KS\\). Recall that \\(S\\) is the transfer function between \\(d\\) and the output, and \\(KS\\) the transfer function from \\(d\\) and the control signal. It is important to include \\(KS\\) as a mechanism for limiting the size and bandwidth of the controller, and hence the energy used. The size of \\(KS\\) is also important for robust stability with respect to uncertainty modeled as additive plant perturbations.\nThe disturbance \\(d\\) is typically a low frequency signal, and therefore it will be successfully rejected if the maximum singular value of \\(S\\) is made small over the same low frequency range. To do this, we could select a scalar low pass filter \\(w_1(s)\\) with a bandwidth equal to that of the disturbance, and then find a stabilizing controller that minimizes \\(\\hnorm{w_1 S}\\). This cost function alone is not very practical, it focuses on just one closed-loop transfer function and the controller may have infinite gain. It is far more useful in practice to minimize\n\\begin{equation} \\hnorm{\\begin{matrix} w_1 S \\ w_2 KS \\end{matrix}} \\end{equation}\nwhere \\(w_2(s)\\) is a scalar high pass filter with a crossover frequency approximately equal to that of the desired closed-loop bandwidth.\nIn general, the scalar weighting functions \\(w_1(s)\\) and \\(w_2(s)\\) can be replaced by matrices \\(W_1(s)\\) and \\(W_2(s)\\). This can be useful for systems with channels of quite different bandwidths. In that case, diagonal weights are recommended as anything more complicated is usually not worth the effort.\nTo see how this mixed sensitivity problem can be formulated in the general setting, we can imagine the disturbance \\(d\\) as a single exogenous input and define and error signal \\(z = [z_1^T\\ z_2^T]^T\\), where \\(z_1 = W_1 y\\) and \\(z_2 = -W_2 u\\) as illustrated in Fig. fig:mixed_sensitivity_dist_rejection. We can then see that \\(z_1 = W_1 S w\\) and \\(z_2 = W_2 KS w\\) as required. The elements of the generalized plant are\n\\begin{equation*} \\begin{array}{ll} P_{11} = \\begin{bmatrix}W_1\\0\\end{bmatrix} \u0026amp; P_{12} = \\begin{bmatrix}W_1G\\-W_2\\end{bmatrix} \\\\\\\nP_{21} = -I \u0026amp; P_{22} = -G \\end{array} \\end{equation*}\n\n Figure 44: \\(S/KS\\) mixed-sensitivity optimization in standard form (regulation)\n Another interpretation can be put on the \\(S/KS\\) mixed-sensitivity optimization as shown in the standard control configuration of Fig. fig:mixed_sensitivity_ref_tracking. Here we consider a tracking problem. The exogenous input is a reference command \\(r\\), and the error signals are \\(z_1 = -W_1 e = W_1 (r-y)\\) and \\(z_2 = W_2 u\\). As the regulation problem of Fig. fig:mixed_sensitivity_dist_rejection, we have that \\(z_1 = W_1 S w\\) and \\(z_2 = W_2 KS w\\).\n\n Figure 45: \\(S/KS\\) mixed-sensitivity optimization in standard form (tracking)\n Another useful mixed sensitivity optimization problem, is to find a stabilizing controller which minimizes\n\\begin{equation} \\hnorm{\\begin{matrix} W_1 S \\ W_2 T \\end{matrix}} \\end{equation}\nThe ability to shape \\(T\\) is desirable for tracking problems and noise attenuation. It is also important for robust stability with respect to multiplicative perturbations at the plant output.\nThe \\(S/T\\) mixed-sensitivity minimization problem can be put into the standard control configuration as shown in Fig. fig:mixed_sensitivity_s_t.\nThe elements of the generalized plant are\n\\begin{equation*} \\begin{array}{ll} P_{11} = \\begin{bmatrix}W_1\\0\\end{bmatrix} \u0026amp; P_{12} = \\begin{bmatrix}-W_1G\\W_2G\\end{bmatrix} \\\\\\\nP_{21} = -I \u0026amp; P_{22} = -G \\\\\\\n\\end{array} \\end{equation*}\n\n Figure 46: \\(S/T\\) mixed-sensitivity optimization in standard form\n The shaping of closed-loop transfer functions as described above with the stacked cost functions becomes difficult with more than two functions whereas with two, the process is relatively easy. The bandwidth requirements on each are usually complementary and simple, stable low-pass and high-pass filters are sufficient to carry out the required shaping and trade-offs.\nThe weights \\(W_i\\) in mixed-sensitivity \\(\\hinf\\) optimal control must all be stable. Therefore, if we wish, for example, to emphasize the minimization of \\(S\\) at low frequency by weighting with a term including integral action, we would have to approximate \\(\\frac{1}{s}\\) by \\(\\frac{1}{s + \\epsilon}\\) where \\(\\epsilon \\ll 1\\). Similarly, one might be interested in weighting \\(KS\\) with a non-proper weight to ensure that \\(K\\) is small outside of the system bandwidth. The trick is to replace a non proper term such as \\((1 + \\tau_1 s)\\) by \\(\\frac{1 + \\tau_1 s}{1 + \\tau_2 s}\\) where \\(\\tau_2 \\ll \\tau_1\\).\nSignal-Based \\(\\hinf\\) Control The signal-based approach to controller design is very general and is appropriate for multivariable problems in which several objectives must be taken into account simultaneously. In this approach, we define the plant, possibly the model uncertainty, the class of external signals affecting the system and the norm of the error signals we want to keep small.\n The focus of attention has moved to the size of signals and away from the size and bandwidth of selected closed-loop transfer functions.\n Weights are used to describe the expected or known frequency content of exogenous signals and the desired frequency content of error signals. Weights are also used if a perturbation is used to model uncertainty, as in Fig. fig:input_uncertainty_hinf, where \\(G\\) represents the nominal model, \\(W\\) is a weighting function that captures the relative model fidelity over frequency, and \\(\\Delta\\) represents unmodelled dynamics usually normalized such that \\(\\hnorm{\\Delta} \u0026lt; 1\\).\n\n Figure 47: Multiplicative dynamic uncertainty model\n LQG control is a simple example of the signal based approach, in which the exogenous signals are assumed to be stochastic and the error signals are measured in terms of the 2-norm. As we have seen, the weights \\(Q\\) and \\(R\\) are constant, but LQG can be generalized to include frequency dependent weights on the signals leading to what is called Wiener-Hopf design or \\(\\htwo\\) control.\nWhen we consider a system\u0026rsquo;s response to persistent sinusoidal signals of varying frequency, or when we consider the induced 2-norm between the exogenous input signals and the error signals, we are required to minimize the \\(\\hinf\\) norm. In the absence of model uncertainty, there does not appear to be an overwhelming case for using the \\(\\hinf\\) norm rather than the more traditional \\(\\htwo\\) norm. However, when uncertainty is addressed, as it always should be, \\(\\hinf\\) is clearly the more natural approach using component uncertainty models as in Fig. fig:input_uncertainty_hinf.\nA typical problem using the signal-based approach to \\(\\hinf\\) control is illustrated in the interconnection diagram of Fig. fig:hinf_signal_based. \\(G\\) and \\(G_d\\) are nominal models of the plant and disturbance dynamics, and \\(K\\) is the controller to be designed. The weights \\(W_d\\), \\(W_r\\), and \\(W_n\\) may be constant or dynamic and describe the relative importance and/or the frequency content of the disturbance, set points and noise signals. The weight \\(W_\\text{ref}\\) is a desired closed-loop transfer function between the weighted set point \\(r_s\\) and the actual output \\(y\\). The weights \\(W_e\\) and \\(W_u\\) reflect the desired frequency content of the error \\((y-y_\\text{ref})\\) and the control signals \\(u\\), respectively. The problem can be cast as a standard \\(\\hinf\\) optimization in the general control configuration by defining\n\\begin{equation*} w = \\begin{bmatrix}d\\r\\n\\end{bmatrix},\\ z = \\begin{bmatrix}z_1\\z_2\\end{bmatrix}, \\ v = \\begin{bmatrix}r_s\\y_m\\end{bmatrix},\\ u = u \\end{equation*}\n\n Figure 48: A signal-based \\(\\hinf\\) control problem\n Suppose we now introduce a multiplicative dynamic uncertainty model at the input to the plant as shown in Fig. fig:hinf_signal_based_uncertainty. The problem we now want to solve is: find a stabilizing controller \\(K\\) such that the \\(\\hinf\\) norm of the transfer function between \\(w\\) and \\(z\\) is less that 1 for all \\(\\Delta\\) where \\(\\hnorm{\\Delta} \u0026lt; 1\\). We have assumed in this statement that the signal weights have normalized the 2-norm of the exogenous input signals to unity. This problem is a non-standard \\(\\hinf\\) optimization. It is a robust performance problem for which the \\(\\mu\\text{-synthesis}\\) procedure can be applied where we require the structured singular value: \\[ \\mu(M(j\\omega)) \u0026lt; 1, \\quad \\forall\\omega \\]\n\n Figure 49: A signal-based \\(\\hinf\\) control problem with input multiplicative uncertainty\n However, whilst the structured singular value is a useful analysis tool for assessing designs, \\(\\mu\\text{-synthesis}\\) is sometimes difficult to use and often too complex for the practical problems.\n\\(\\hinf\\) Loop-Shaping Design The loop-shaping design procedure described in this section is based on \\(\\hinf\\) robust stabilization combined with classical loop shaping. It is essentially a two stage design process:\n First the open-loop plant is augmented by pre and post compensators to give a desired shape to the singular values of the open-loop frequency response Then the resulting shaped plant is robustly stabilized with respect to coprime factor uncertainty using \\(\\hinf\\) optimization An important advantage is that no problem-dependent uncertainty modelling, or weight selection, is required in this second step.\nRobust Stabilization For multivariable systems, classical gain and phase margins are unreliable indicators of robust stability when defined for each channel (or loop), taken one at a time, because simultaneous perturbations in more than one loop are not then catered for.\nIt is now common practice to model uncertainty by stable norm-bounded dynamic (complex) matrix perturbations. With a single perturbation, the associated robustness tests is in terms of the maximum singular values of various closed-loop transfer functions. Use of a single stable perturbation restricts the plant and perturbed plant models to either have the same number of unstable poles or the same number of RHP zeros.\nTo overcome this, two stable perturbations can be used, one on each of the factors in a coprime factorization of the plant. Although this uncertainty description seems unrealistic and less intuitive than the others, it is in fact quite general, and for our purposes it leads to a very useful \\(\\hinf\\) robust stabilization problem.\nLet\u0026rsquo;s consider the stabilization of a plant \\(G\\) which has a normalized left coprime factorization\n\\begin{equation} G = M^{-1} N \\end{equation}\nwhere we have dropped the subscripts from \\(M\\) and \\(N\\) for simplicity.\nA perturbed plant model \\(G_p\\) can then we written has\n\\begin{equation} G_p = (M + \\Delta_M)^{-1} (N + \\Delta_N) \\end{equation}\nwhere \\(\\Delta_M\\), \\(\\Delta_N\\) are stable unknown transfer functions which represent the uncertainty in the nominal plant \\(G\\).\nThe objective of robust stabilization is to stabilize not only the nominal model \\(G\\), but a family of perturbed plants defined by\n\\begin{equation} G_p = \\{ (M + \\Delta_M)^{-1} (N + \\Delta_N) \\ :\\ \\hnorm{\\Delta_N\\ \\Delta_M} \u0026lt; \\epsilon \\} \\end{equation}\nwhere \\(\\epsilon \u0026gt; 0\\) is then the stability margin.\nFor the perturbed feedback system of Fig. fig:coprime_uncertainty_bis, the stability property is robust if and only if the nominal feedback system is stable and \\[ \\gamma \\triangleq \\hnorm{\\begin{bmatrix}K \\ I\\end{bmatrix} (I - GK)^{-1} M^{-1}} \\le \\frac{1}{\\epsilon} \\]\nNotice that \\(\\gamma\\) is the \\(\\hinf\\) norm from \\(\\phi\\) to \\(\\begin{bmatrix}u\\y\\end{bmatrix}\\) and \\((I-GK)^{-1}\\) is the sensitivity function for this positive feedback arrangement.\n\n Figure 50: \\(\\hinf\\) robust stabilization problem\n The lowest achievable value of \\(\\gamma\\) and the corresponding maximum stability margin \\(\\epsilon\\) are given as\n\\begin{equation} \\gamma_\\text{min} = \\epsilon_{\\text{max}}^{-1} = \\left\\{ 1 - \\|N \\ M\\|_H^2 \\right\\}^{-\\frac{1}{2}} = (1 + \\rho(XZ))^{\\frac{1}{2}} \\end{equation}\nwhere \\(\\|\\ \\cdot\\ \\|_H\\) denotes Hankel norm, \\(\\rho\\) denotes the spectral radius (maximum eigenvalue), and for a minimal state space realization of G, Z is the unique positive definite solution of the algebraic Riccati equation\n\\begin{align*} (A - BS^{-1} D^TC)Z \u0026amp;+ Z(A - BS^{-1}D^TC)^T \\\\\\\n\u0026amp;- ZC^TR^{-1}CZ + BS^{-1}B^T = 0 \\end{align*}\nwhere \\[ R = I + D D^T, \\quad S = I + D^T D \\] \\(X\\) is the unique positive definite solution of the following algebraic Riccati equation\n\\begin{align*} (A - BS^{-1} D^T C)X \u0026amp;+ X(A - BS^{-1}D^TC)^T \\\\\\\n\u0026amp;- XBS^{-1} B^T X + C^TR^{-1}C = 0 \\end{align*}\nA controller which guarantees that \\[ \\hnorm{ \\begin{bmatrix}K\\I\\end{bmatrix} (I-GK)^{-1} M^{-1} } \\le \\gamma \\] for a specified \\(\\gamma \u0026gt; \\gamma_\\text{min}\\), is given by\n\\begin{subequations} \\begin{align} K \u0026amp;\\triangleq \\left[ \\begin{array}{c|c} {\\scriptstyle A + BF + \\gamma^2L^{-T} Z C^T(C + DF)} \u0026amp; {\\scriptstyle \\gamma^2L^{-T} Z C^T} \\ \\hline {\\scriptstyle B^T X} \u0026amp; {\\scriptstyle -D^T} \\end{array} \\right] \\label{eq:control_coprime_factor} \\\\\\\nF \u0026amp;= -S^{-1}(D^T C + B^T X)\\\\\\\nL \u0026amp;= (1-\\gamma^2) I + XZ \\end{align} \\end{subequations}\nThe Matlab function coprimeunc can be used to generate the controller in \\eqref{eq:control_coprime_factor}. It is important to emphasize that since we can compute \\(\\gamma_\\text{min}\\) from \\eqref{eq:gamma_min_coprime} we get an explicit solution by solving just two Riccati equations and avoid the \\(\\gamma\\text{-iteration}\\) needed to solve the general \\(\\mathcal{H}_\\infty\\) problem.\nA Systematic \\(\\hinf\\) Loop-Shaping Design Procedure Robust stabilization alone is not much used in practice because the designer is not able to specify any performance requirements.\nTo do so, pre and post compensators are used to shape the open-loop singular values prior to robust stabilization of the \u0026ldquo;shaped\u0026rdquo; plant.\nIf \\(W_1\\) and \\(W_2\\) are the pre and post compensators respectively, then the shaped plant \\(G_s\\) is given by\n\\begin{equation} G_s = W_2 G W_1 \\end{equation}\nas shown in Fig. fig:shaped_plant.\n\n Figure 51: The shaped plant and controller\n The controller \\(K_s\\) is synthesized by solving the robust stabilization problem for the shaped plant \\(G_s\\) with a normalized left coprime factorization \\(G_s = M_s^{-1}N_s\\). The feedback controller for the plant \\(G\\) is then \\(K = W_1 K_s W_2\\).\nSystematic procedure for \\(\\hinf\\) loop-shaping design:\n Scale the plant outputs and inputs. This is very important for most design procedures. In general, scaling improves the conditioning of the design problem, it enables meaningful analysis to be made of the robustness properties of the feedback system in the frequency domain, and for loop shaping it can simplify the selection of weights: The outputs are scaled such that equal magnitudes of cross-coupling into each of the outputs is equally undesirable Each input is scaled by a given percentage (say \\(\\SI{10}{%}\\)) of its expected range of operation. That is, the inputs are scaled to reflect the relative actuator capabilities. Order the inputs and outputs so that the plant is as diagonal as possible. The relative gain array can be useful here. The purpose of this pseudo-diagonalization is to ease the design of the pre and post compensators which, for simplicity, will be chosen to be diagonal. Next, we discuss the selection of weights to obtain the shaped plant \\(G_s = W_2 G W_1\\) where \\(W_1 = W_p W_a W_g\\) Select the elements of diagonal pre and post compensators \\(W_p\\) and \\(W_2\\) so that the singular values of \\(W_2 G W_p\\) are desirable. This would normally mean high gain at low frequencies, a slope of about \\(-1\\) at the desired bandwidth(s), with higher rates at high frequencies. The weights should be chosen so that no unstable hidden modes are created in \\(G_s\\) \\(W_2\\) is usually chosen as a constant, reflecting the relative importance of the outputs to be controlled and the other measurements being fed back to the controller \\(W_p\\) contains the dynamic shaping. Integral action, for low frequency performance; phase-advance for reducing the roll-off rates at crossover; and phase-lag to increase the roll-off rates at high frequencies should all be places in \\(W_p\\) is desired Optional: Align the singular values at a desired bandwidth using a further constant weight \\(W_a\\) cascaded with \\(W_p\\) Optional: Introduce an additional gain matrix \\(W_g\\) cascaded with \\(W_a\\) to provide control over actuator range. \\(W_g\\) is diagonal and is adjusted so that actuator rate limits are not exceeded for reference demands and typical disturbances on the scaled plant outputs Robustly stabilize the shaped plant \\(G_s = W_2 G W_1\\) where \\(W_1 = W_p W_a W_g\\) First, calculate the maximum stability margin \\(\\epsilon_{\\text{max}} = 1/\\gamma_\\text{min}\\) If the margin is too small, \\(\\epsilon_{\\text{max}} \u0026lt; 0.25\\), then go back to step 4 and modify the weights. Otherwise, select \\(\\gamma \u0026gt; \\gamma_\\text{min}\\), by about \\(\\SI{10}{%}\\), and synthesize a sub-optimal controller. There is usually no advantage to be gained by using the optimal controller When \\(\\epsilon_{\\text{max}} \u0026gt; 0.25\\) (respectively \\(\\gamma_\\text{min} \u0026lt; 4\\)) the design is usually successful. In this case, at least \\(\\SI{25}{%}\\) coprime factor uncertainty is allowed, and we also find that the shape of the open-loop singular values will not have changed much after robust stabilization A small value of \\(\\epsilon_{\\text{max}}\\) indicates that the chosen singular value loop-shapes are incompatible with robust stability requirements Analyze the design and if not all the specification are met, make further modifications to the weights Implement the controller. The configuration shown in Fig. fig:shapping_practical_implementation has been found useful when compared with the conventional setup in Fig. fig:classical_feedback_small. This is because the references do not directly excite the dynamics of \\(K_s\\), which can result in large amounts of overshoot. The constant prefilter ensure a steady-state gain of \\(1\\) between \\(r\\) and \\(y\\), assuming integral action in \\(W_1\\) or \\(G\\) \n Figure 52: A practical implementation of the loop-shaping controller\n We will conclude this section with a summary of the advantages offered by the above \\(\\hinf\\) loop-shaping design procedure:\n It is relatively easy to use, being based on classical loop-shaping ideas There exists a closed formula for the \\(\\hinf\\) optimal cost \\(\\gamma_\\text{min}\\), which in turn corresponds to a maximum stability margin \\(\\epsilon_{\\text{max}} = 1/\\gamma_\\text{min}\\) No \\(\\gamma\\text{-iteration}\\) is required in the solution Except for special systems, ones with all-pass factors, there are no pole-zero cancellations between the plant and controller. Pole-zeros cancellations are common in many \\(\\hinf\\) control problems and are a problem when the plant has lightly damped modes Two Degrees-of-freedom Controllers Many control design problems possess two degrees-of-freedom:\n on one hand, measurement of feedback signals and on the other hand, commands and reference Sometimes, one degree-of-freedom is left out of the design, and the controller is driven by an error signal i.e. the difference between a command and the output. But in cases where stringent time-domain specifications are set on the output response, a one degree-of-freedom structure may not be sufficient.\nA general two degrees-of-freedom feedback control scheme is depicted in Fig. fig:classical_feedback_2dof_simple. The commands and feedbacks enter the controller separately and are independently processed.\n\n Figure 53: General two degrees-of-freedom feedback control scheme\n The presented \\(\\mathcal{H}_\\infty\\) loop-shaping design procedure in section sec:hinf_loop_shaping_procedure is a one-degree-of-freedom design, although a constant pre-filter can be easily implemented for steady-state accuracy. However, this may not be sufficient and a dynamic two degrees-of-freedom design is required.\nThe design problem is illustrated in Fig. fig:coprime_uncertainty_hinf. The feedback part of the controller \\(K_2\\) is designed to meet robust stability and disturbance rejection requirements. A prefilter is introduced to force the response of the closed-loop system to follow that of a specified model \\(T_{\\text{ref}}\\), often called the reference model.\n\n Figure 54: Two degrees-of-freedom \\(\\mathcal{H}_\\infty\\) loop-shaping design problem\n The design problem is to find the stabilizing controller \\(K = [K_1,\\ K_2]\\) for the shaped plant \\(G_s = G W_1\\), with a normalized coprime factorization \\(G_s = M_s^{-1} N_s\\), which minimizes the \\(\\mathcal{H}_\\infty\\) norm of the transfer function between the signals \\([r^T\\ \\phi^T]^T\\) and \\([u_s^T\\ y^T\\ e^T]^T\\) as defined in Fig. fig:coprime_uncertainty_hinf. This problem is easily cast into the general configuration.\nThe control signal to the shaped plant \\(u_s\\) is given by: \\[ u_s = \\begin{bmatrix} K_1 \u0026amp; K_2 \\end{bmatrix} \\begin{bmatrix} \\beta \\ y \\end{bmatrix} \\] where \\(K_1\\) is the prefilter, \\(K_2\\) is the feedback controller, \\(\\beta\\) is the scaled reference and \\(y\\) is the measured output. The purpose of the prefilter is to ensure that: \\[ \\left\\| (I - G_s K_2)^{-1} G_s K_1 - T_{\\text{ref}} \\right\\|_\\infty \u0026lt; \\gamma \\rho^2 \\] \\(T_{\\text{ref}}\\) is the desired closed-loop transfer function and \\(\\rho\\) is a scalar parameter that the designer can increase to place more emphasis on model matching in the optimization at the expense of robustness.\nThe main steps required to synthesize a two degrees-of-freedom \\(\\mathcal{H}_\\infty\\) loop-shaping controller are:\n Design a one degree-of-freedom \\(\\mathcal{H}_\\infty\\) loop-shaping controller (section sec:hinf_loop_shaping_procedure) but without a post-compensator \\(W_2\\) Select a desired closed-loop transfer function \\(T_{\\text{ref}}\\) between the commands and controller outputs Set the scalar parameter \\(\\rho\\) to a small value greater than \\(1\\); something in the range \\(1\\) to \\(3\\) will usually suffice For the shaped \\(G_s = G W_1\\), the desired response \\(T_{\\text{ref}}\\), and the scalar parameter \\(\\rho\\), solve the standard \\(\\mathcal{H}_\\infty\\) optimization problem to a specified tolerance to get \\(K = [K_1,\\ K_2]\\) Replace the prefilter \\(K_1\\) by \\(K_1 W_i\\) to give exact model-matching at steady-state. Analyze and, if required, redesign making adjustments to \\(\\rho\\) and possibly \\(W_1\\) and \\(T_{\\text{ref}}\\) The final two degrees-of-freedom \\(\\mathcal{H}_\\infty\\) loop-shaping controller is illustrated in Fig. fig:hinf_synthesis_2dof.\n\n Figure 55: Two degrees-of-freedom \\(\\mathcal{H}_\\infty\\) loop-shaping controller\n Observer-Based Structure for \\(\\hinf\\) Loop-Shaping Controllers \\(\\mathcal{H}_\\infty\\) designs exhibit an observer/state feedback structure in the controller. The clear structure of the \\(\\mathcal{H}_\\infty\\) loop-shaping controllers has several advantages:\n It is helpful in describing a controller\u0026rsquo;s function It lends itself to implementation in a gain-schedule scheme If offers computational savings in digital implementations Let\u0026rsquo;s assume that the shaped plant is strictly proper, with a stabilizable and detectable state space realization \\[ G_s \\triangleq \\left[ \\begin{array}{c|c} A_s \u0026amp; B_s \\ \\hline C_s \u0026amp; 0 \\end{array} \\right] \\]\nThe single degree-of-freedom \\(\\mathcal{H}_\\infty\\) loop-shaping controller can be realized as an observer for the shaped plant plus a state feedback control law:\n\\begin{align*} \\dot{\\hat{x}}_s \u0026amp;= A_s \\hat{x}_s + H_s(C_s \\hat{x}_s - y_s) + B_s u_s \\\\\\\nu_s \u0026amp;= K_s \\hat{x}_s \\end{align*}\nwhere \\(\\hat{x}_s\\) is the observer state, \\(u_s\\) and \\(y_s\\) are respectively the input and output of the shaped plant, and\n\\begin{align*} H_s \u0026amp;= -Z_s C_s^T \\\\\\\nK_s \u0026amp;= -B_s^T [I - \\gamma^{-2}I - \\gamma^{-2} X_s Z_s]^{-1} X_s \\end{align*}\nwhere \\(Z_s\\) and \\(X_s\\) are the appropriate solutions to the generalized algebraic Riccati equations for \\(G_s\\).\nThe same can be done for two degrees-of-freedom controllers.\nImplementation Issues Discrete-time controllers For implementation purposes, discrete-time controllers are usually required. These can be obtained from a continuous-time design using a bilinear transformation from the \\(s\\text{-domain}\\) to the \\(z\\text{-domain}\\), but there can be advantages in being able to design directly in discrete time.\nAnti-windup In \\(\\hinf\\) loop-shaping the pre compensator weight \\(W_1\\) would normally include integral action in order to reject low frequency disturbances acting on the system. However, in the case of actuator saturation, the integrators continue to integrate their input and hence cause windup problems. An anti-windup scheme is therefore required on the weighting function \\(W_1\\). The approach we recommend is to implement the weight \\(W_1\\) in its self-conditioned or Hanus form. Let the weight \\(W_1\\) have a realization \\[ W_1 \\triangleq \\left[ \\begin{array}{c|c} A_w \u0026amp; B_w \\ \\hline C_w \u0026amp; D_w \\end{array} \\right] \\] and let \\(u\\) be the input to the plant actuators and \\(u_s\\) the input to the shaped plant. Then \\(u = W_1 u_s\\). When implemented in Hanus form, the expression for \\(u\\) becomes \\[ u = \\left[ \\begin{array}{c|cc} A_w - B_wD_w^{-1}C_w \u0026amp; 0 \u0026amp; B_wD_w^{-1} \\ \\hline C_w \u0026amp; D_w \u0026amp; 0 \\end{array} \\right] \\begin{bmatrix} u_s \\ u_a \\end{bmatrix} \\] where \\(u_a\\) is the actual plant input, that is the measurement at the output of the actuators which therefore contains information about possible actuator saturation.\nThe situation is illustrated in Fig. fig:weight_anti_windup, where the actuators are each modeled by a unit gain and a saturation.\n\n Figure 56: Self-conditioned weight \\(W_1\\)\n The Hanus form prevents windup by keeping the states of \\(W_1\\) consistent with the actual plant input at all times. When there is no saturation, \\(u_a=u\\), the dynamics of \\(W_1\\) remains unaffected. But when \\(u_a\\neq u\\), the dynamics are inverted and driven by \\(u_a\\) so that the states remain consistent with the actual plant input \\(u_a\\). Notice that such an implementation requires \\(W_1\\) to be invertible and minimum phase.\nBumpless transfer When multi-mode switched controller is designed, one should ensure smooth transition from one controller to the other (bumpless transfer). It was found useful to condition the reference models and the observers in each of the controllers. When on-line, the observer state evolves according to \\[ \\dot{\\hat{x}}_s = A_s \\hat{x}_s + H_s (C_s \\hat{x}_s - y_s) + B_s u_s \\] but when off-line, the state equation becomes \\[ \\dot{\\hat{x}}_s = A_s \\hat{x}_s + H_s (C_s \\hat{x}_s - y_s) + B_s u_{as} \\] where \\(u_{as}\\) is the actual input to the shaped plant governed by the on-line controller.\nDoing so ensure that the inputs to the shaped plant for the off-line controller follows the actual shaped plant input \\(u_{as}\\) given by the on-line controller. The observer based structure of the \\(\\mathcal{H}_\\infty\\) loop-shaping controller is then helpful for such technique.\nConclusion Several methods and techniques for controller design have been described. The emphasis has been on \\(\\hinf\\) loop shaping which is easy to apply and works well in practice. It combines classical loop-shaping ideas with an effective method for robustly stabilizing the feedback loop.\nFor complex problems, such as unstable plants with multiple gain crossover frequencies, it may not be easy to decide on a desired loop shape. In which case, we would suggest doing an initial LQG design (with simple weights) and using the resulting loop shape as the desired one for the \\(\\hinf\\) loop shaping.\nAnd alternative to \\(\\hinf\\) loop shaping is a standard \\(\\hinf\\) design with a stacked cost function such as in \\(S/KS\\) mixed-sensitivity optimization. In this approach, \\(\\hinf\\) optimization is used to shape two or sometimes three closed-loop transfer functions. However, with more functions, the shaping becomes increasingly difficult for the designer.\nIn other design situations where there are several performance objectives, it may be more appropriate to follow a signal-based \\(\\htwo\\) or \\(\\hinf\\) approach. But again, the problem formulations become so complex that the designer has little direct influence on the design.\nAfter a design, the resulting controller should be analyzed with respect to robustness and tested using nonlinear simulations. For the study of robustness, we recommend \\(\\mu\\text{-analysis}\\). If the design is not robust, then the weights should be modified. Sometimes, one might consider synthesizing a \\(\\mu\\text{-optimal}\\) controller, but this complexity is rarely necessary in practice. Moreover, one should be careful about combining controller synthesis and analysis into a single step.\nController Structure Design \nIntroduction In previous sections, we considered the general problem formulation in Fig. fig:general_control_names_bis and stated that the controller design problem is to find a controller \\(K\\) which based on the information in \\(v\\), generates a control signal \\(u\\) which counteracts the influence of \\(w\\) on \\(z\\), thereby minimizing the closed loop norm from \\(w\\) to \\(z\\).\n\n Figure 57: General Control Configuration\n In this chapter we are concerned with the structural decisions associated with the following selection tasks of control structure design:\n Controlled outputs: What are the variables \\(z\\)? Manipulations and measurements: What are the variable set \\(u\\) and \\(v\\)? Control configuration: What is the structure of \\(K\\)? Controller type: What algorithm is used for \\(K\\)? The distinction between the words under control structure and control configuration are significant. The control structure refers to all structural decisions included in the design of a control system. On the other hand, the control configuration refers only to the structuring of the controller \\(K\\) itself.\nIdeally, the tasks involved in designing a complete control system are performed sequentially; first a \u0026ldquo;top down\u0026rdquo; selection of controller outputs, measurements and inputs, and then a \u0026ldquo;bottom up\u0026rdquo; design of the control system in which the selection of the control configuration is the most important decision. However, in practice the tasks are closely related so the procedure may involve iteration.\nOne important reason for decomposing the control system into a specific control configuration is that it may allow for simple tuning of the sub-controllers without the need for a detailed plant model describing the dynamics and interactions in the process. Multivariable centralized controllers may always outperform decomposed (decentralized) controllers, bus this performance gain must be traded off against the cost of obtaining and maintaining a sufficiently detailed plant model.\nThe number of possible control structure is usually very large. Fortunately, we can often from physical insight obtain a reasonable choice of controlled outputs, measurements and manipulated inputs.\nOptimization and Control The selection of controlled outputs involves selecting the variables \\(y\\) to be controlled at given reference values \\(y \\approx r\\). The reference value \\(r\\) is usually set at some higher layer in the control hierarchy which is often divided into two layers:\n Optimization layer: computes the desired reference commands \\(r\\) Control layer: implements these commands to achieve \\(y \\approx r\\) Additional layers are possible, as is illustrated in Fig. fig:control_system_hierarchy which shows a typical control hierarchy for a chemical plant.\n\n Figure 58: Typical control system hierarchy in a chemical plant\n In general, the information flow in such a control hierarchy is based on the higher layer sending reference values (setpoints) to the layer below reporting back any problems achieving this (see Fig. fig:optimize_control_b). There is usually a time scale separation between the layers which means that the setpoints, as viewed from a given layer, are updated only periodically.\nThe optimization tends to be performed open-loop with limited use of feedback. On the other hand, the control layer is mainly based on feedback information. The optimization is often based on nonlinear steady-state models, whereas we often use linear dynamic models in the control layer.\nFrom a theoretical point of view, the optimal performance is obtained with a centralized optimizing controller, which combines the two layers of optimizing and control (see Fig. fig:optimize_control_c). All control actions in such an ideal control system would be perfectly coordinated and the control system would use on-line dynamic optimization based on nonlinear dynamic model of the complete plant. However, this solution is normally not used for a number a reasons, included the cost of modeling, the difficulty of controller design, maintenance, robustness problems and the lack of computing power.\n\nTable 6: Alternative structures for optimization and control Open loop optimization Closed-loop implementation with separate control layer Integrated optimization and control Selection of Controlled Outputs A controlled output is an output variable (usually measured) with an associated control objective (usually a reference value). In many cases, it is clear from a physical understanding of the process what the controlled outputs should be. In other cases, it is less obvious because each control objective may not be associated with a measured output variable.\nIn the following, we let \\(y\\) denote the selected controller outputs in the control layer. Two distinct questions arise:\n What variables \\(y\\) should be selected? What is the optimal reference value \\(y_\\text{opt}\\)? For the first problem, we make the following assumptions:\n The overall goal can be quantified in terms of a scalar cost function \\(J\\) which we want to minimize For a given disturbance \\(d\\), there exists an optimal value \\(u_\\text{opt}(d)\\) and corresponding value \\(y_\\text{opt}(d)\\) which minimizes the cost function \\(J\\) The reference values \\(r\\) for the controlled outputs \\(y\\) should be constant, i.e. \\(r\\) should be independent of the disturbances \\(d\\) The system behavior is a function of the independent variables \\(u\\) and \\(d\\): \\(J = J(u, d)\\). For a given disturbance \\(d\\) the optimal value of the cost function is\n\\begin{equation} J_\\text{opt}(d) \\triangleq J(u_\\text{opt}, d) = \\min_u J(u, d) \\end{equation}\nIn practice \\(u \\neq u_\\text{opt}\\), and we have a loss which can be quantified by \\(L = J - J_\\text{opt}\\). A reasonable objective for selecting controlled outputs \\(y\\) is to minimize some norm of the loss, for instance the worst-case loss:\n\\begin{equation} \\Phi \\triangleq \\max_{d \\in \\mathcal{D}} |\\underbrace{J(u, d) - J(u_\\text{opt}, d)}_{L}| \\end{equation}\nwhere \\(\\mathcal{D}\\) is the set of possible disturbances.\nDirect Evaluation of Cost The \u0026ldquo;brute force\u0026rdquo; approach for selecting controlled variables is to evaluate the loss for alternative sets of controlled variable. By solving the non linear equations, we evaluate directly the cost function \\(J\\) for various disturbances \\(d\\). The set of controlled outputs with smallest worst case or average value of \\(J\\) is then preferred. This approach may be time consuming because the solution of the nonlinear equations must be repeated for each candidate set of controlled outputs.\nLinear Analysis Consider the loss \\(L = J(u,d) - J_\\text{opt}(d)\\) where \\(d\\) is a fixed disturbance. We make the following additional assumptions:\nThe cost function \\\\(J\\\\) is smooth (twice differentiable) The optimization problem is unconstrained. If it is optimal to keep some variable at a constant, then we assume that this is implemented and consider the remaining unconstrained problem The dynamics of the problem can be neglected, that is, **we consider the steady-state control and optimization** For a fixed \\(d\\) we may express \\(J(u, d)\\) in terms of a Taylor series expansion in \\(u\\) around the optimal point. By neglecting terms of third order and higher, we obtain: \\[ J(u, d) = J_\\text{opt}(d) + \\frac{1}{2} (u - u_\\text{opt}(d))^T \\left(\\frac{\\partial^2 J}{\\partial u^2}\\right)_\\text{opt} (u - u_\\text{opt}(d)) \\] This quantifies how \\(u-u_\\text{opt}\\) affects the cost function. For a fixed \\(d\\), we have: \\(y - y_\\text{opt} = G (u - u_\\text{opt})\\) where \\(G\\) is the steady state gain matrix. Thus, we get: \\[ J - J_\\text{opt} \\approx \\frac{1}{2} \\big(G^{-1}(y-y_\\text{opt})\\big)^T \\left(\\frac{\\partial^2 J}{\\partial u^2}\\right)_\\text{opt} G^{-1} (y - y_\\text{opt}) \\]\nWe conclude that we should select \\(y\\) such that:\n \\(G^{-1}\\) is small: the inputs have a large effect on \\(y\\) \\(e_\\text{opt} = r - y_\\text{opt}(d)\\) is small: its optimal value \\(y_\\text{opt}(d)\\) depends only weakly on the disturbances and other changes \\(e = y - r\\) is small: it is easy to keep the control error \\(e\\) small Note that \\(\\bar{\\sigma}(G^{-1}) = 1/\\underline{\\sigma}(G)\\) and so we want the smallest singular value of the steady state gain matrix to be large.\nAs this depends of scaling, we should first scale the outputs such that the expected magnitude of \\(y_i - y_{i_\\text{opt}}\\) is similar in magnitude for each output, and scale the inputs such that the effect of a given deviation \\(u_j - u_{j_\\text{opt}}\\) on the cost function \\(J\\) is similar for each input.\n The use of the minimum singular value to select controlled outputs may be summarized in the following procedure:\n From a (nonlinear) model compute the optimal parameters (inputs and outputs) for various conditions (disturbances, operating points). This yields a \u0026ldquo;look-up\u0026rdquo; table for optimal parameter values as a function of the operating conditions From this data, obtain for each candidate output the variation in its optimal value \\[ v_i = \\frac{(y_{i_{\\text{opt,max}}} - y_{i_{\\text{opt,min}}})}{2} \\] Scale the candidate outputs such that for each output the sum of the magnitudes of \\(v_i\\) and the control error (\\(e_i\\), including measurement noise \\(n_i\\)) is similar (e.g. \\(|v_i| + |e_i| = 1\\)) Scale the inputs such that a unit deviation in each input from its optimal value has the same effect on the cost function \\(J\\) Select as candidates those sets of controlled outputs which corresponds to a large value of \\(\\underline{\\sigma}(G)\\). \\(G\\) is the transfer function for the effect of the scaled inputs on the scaled outputs Summary Generally, the optimal values of all variables will change with time during operation. If the loss imposed by keeping constant setpoints is acceptable, then we have self-optimizing control. The objective of the control layer is then to keep the controlled outputs at their reference values (which are computed by the optimization layer).\nThe controlled outputs are often measured, but we may also estimated their values based on other measured variables. We may also use other measurements to improve the control of the controlled outputs, for example, by use of cascade control. Thus, the selection of controlled and measured outputs are two separate issues.\nSelection of Manipulations and Measurements We are here concerned with the variable sets \\(u\\) and \\(v\\) in Fig. fig:general_control_names_bis. Note that the measurements \\(v\\) used by the controller are in general different from the controlled variables \\(z\\) because we may not be able to measure all the controlled variables and we may want to measure and control additional variables in order to:\n Stabilize the plant, or more generally change its dynamics Improve local disturbance rejection Stabilization We usually start of controller design by designing a lower-layer controller to stabilize the plant. The issue is then: which outputs and inputs should be used for stabilization? A reasonable objective is to minimize the required input usage of the stabilizing control system.\nLocal disturbance rejection For measurements, the rule is generally to select those which have a strong relationship with the controlled outputs, or which may quickly detect a major disturbance.\nThe selected manipulations should have a large effect on the controlled outputs and should be located \u0026ldquo;close\u0026rdquo; (in terms of dynamic response) to the outputs and measurements.\nTo evaluate the combinations of manipulations and measurements, one may perform an input-output controllability analysis for each combination (e.g. consider the minimum singular values, RHP-zeros, interactions, etc). A more involved approach would be to perform a achievable robust performance analysis. An even more involved (and exact) approach would be to synthesize controllers for optimal robust performance for each candidate combination. However, the number of combination has a combinatorial growth and the analysis may become very time-consuming.\nRGA for Non-Square Plant A simple but effective tool for selecting inputs and outputs, which avoids to combinatorial problem is the Relative Gain Array (RGA) of the \u0026ldquo;big\u0026rdquo; transfer matrix \\(G_\\text{all}\\) with all candidates inputs and outputs included:\n\\begin{equation} \\tcmbox{\\Lambda = G_{\\text{all}} \\times G_{\\text{all}}^{\\dagger^T}} \\end{equation}\nEssentially, one may consider not using those manipulations \\(u\\) corresponding to columns in the RGA where the sum of the elements is much smaller than 1.\nSimilarly, one may consider not using those outputs \\(v\\) corresponding to rows in the RGA where the sum of the elements is much small than 1.\nControl Configuration Elements We now assume that the measurements, manipulations and controlled outputs are fixed. The available synthesis theories presented in this book result in a multivariable controller \\(K\\) which connects all available measurements \\(v\\) with all available manipulations \\(u\\): \\[ u = K v \\] However, such a \u0026ldquo;big\u0026rdquo; controller may not be desirable.\n We define the control configuration to be the restrictions imposed on the overall controller \\(K\\) by decomposing it into a set of local controllers with predetermined links and with a possibly predetermined design sequence where subcontrollers are designed locally.\n Some elements used to build up a specific control configuration are:\n Cascade controllers. The output from one controller is the input to another Decentralized controllers. The control system consists of independent feedback controllers which interconnect a subset of the output measurements with a subset of the manipulated inputs. These subsets should not be used by any other controller Feedforward elements. Link measured disturbances and manipulated inputs Decoupling elements. Link one set of manipulated inputs with another set of manipulated inputs. They are used to improve the performance of decentralized control systems. Selectors: used to select for control, depending on the conditions of the system, a subset of the manipulated inputs or a subset of the outputs In addition to restrictions on the structure of \\(K\\), we may impose restrictions on in which sequence the subcontrollers are designed. For most decomposed control systems, we design the controllers sequentially, starting with the \u0026ldquo;fast\u0026rdquo; or \u0026ldquo;inner\u0026rdquo; or \u0026ldquo;lower-layer\u0026rdquo; control loops.\nThe choice of control configuration leads to two different ways of partitioning the control system:\n Vertical decomposition. This usually results from a sequential design of the control system Horizontal decomposition. This usually involves a set of independent decentralized controllers Of course, a performance loss is inevitable if we decompose the control system. For example, if we select a poor configuration at the lower control layer, then this may pose fundamental limitations on the achievable performance (RHP zeros, strong interactions, etc).\nCascade Control Systems We here use SISO controllers of the form\n\\begin{equation} u_i = K_i(s) (r_i - y_i) \\end{equation}\nwhere \\(K_i(s)\\) is a scalar. Then when a SISO control loop is closed, we lose the input \\(u_i\\) as a degree-of-freedom but the reference \\(r_i\\) becomes a new degree-of-freedom.\nA cascade control structure results when either of the following two situations arise:\n The reference \\(r_i\\) is an output from another controller. This is the conventional cascade control (Fig. fig:cascade_extra_meas) The \u0026ldquo;measurement\u0026rdquo; \\(y_i\\) is an output from another controller. This is referred to as input resetting (Fig. fig:cascade_extra_input) \nTable 7: Cascade Implementations Extra measurements \\(y_2\\) Extra inputs \\(u_2\\) Cascade Control: Extra Measurements Let \\(u\\) be the manipulated input, \\(y_1\\) the controlled outputs and \\(y_2\\) the extra measurement. In many cases, we may use \\(y_2\\) to provide local disturbance rejection, linearization, or to reduce the effect of measurement noise. For example, velocity feedback is frequently used in mechanical systems.\nCentralized (parallel) implementation A centralized implementation where \\(K\\) is a 2-inputs-1-output controller may be written\n\\begin{align*} u \u0026amp;= K(s)(r - y) \\\\\\\nu \u0026amp;= K_{11}(s)(r_1 - y_1) + K_{12}(s)(r_2 - y_2) \\end{align*}\nwhere in most cases \\(r_2 = 0\\) since we do not have a degree-of-freedom to control \\(y_2\\).\nCascade implementation To obtain an implementation with two SISO controllers, we may cascade the controllers as illustrated in Fig. fig:cascade_extra_meas:\n\\begin{align*} r_2 \u0026amp;= K_1(s)(r_1 - y_1) \\\\\\\nu_2 \u0026amp;= K_2(s)(r_2 - y_2),\\ r_2 = \\hat{u}_1 \\end{align*}\nNote that the output \\(r_2\\) from the slower primary controller \\(K_1\\) is not a manipulated plant input, but rather the reference input to the faster secondary controller \\(K_2\\). Cascades based on measuring the actual manipulated variable (\\(y_2 = u_m\\)) are commonly used to reduce uncertainty and non-linearity at the plant input.\nIn the general case (Fig. fig:cascade_extra_meas) \\(y_1\\) and \\(y_2\\) are not directly related to each other, and this is sometimes referred to as parallel cascade control. However, it is common to encounter the situation in Fig. fig:cascade_control where the primary output \\(y_1\\) depends directly on \\(y_2\\) which is a special case of Fig. fig:cascade_extra_meas.\n With reference to the special (but common) case of cascade control shown in Fig. fig:cascade_control, the use of extra measurements is useful under the following circumstances:\n The disturbance \\(d_2\\) is significant and \\(G_1\\) is non-minimum phase. If \\(G_1\\) is minimum phase, the input-output controllability of \\(G_2\\) and \\(G_1 G_2\\) are the same and there is no fundamental advantage in measuring \\(y_2\\) The plant \\(G_2\\) has considerable uncertainty associated with it and the inner loop serves to remove the uncertainty. The inner loop \\(L_2 = G_2 K_2\\) removes the uncertainty if it is sufficiently fast and yields a transfer function \\((I + L_2)^{-1} L_2\\) close to \\(I\\) at frequencies where \\(K_1\\) is active. \n Figure 59: Common case of cascade control where the primary output \\(y_1\\) depends directly on the extra measurement \\(y_2\\)\n In terms of design, it is recommended to first design \\(K_2\\) to minimize the effect of \\(d_2\\) on \\(y_1\\) and then to design \\(K_1\\) to minimize the effect of \\(d_1\\) on \\(y_1\\).\nCascade Control: Extra Inputs In some cases we have more manipulated inputs than controlled outputs. These may be used to improve control performance.\nCentralized implementation A centralized implementation where \\(K\\) is a 1-input-2-outputs controller may be written \\[ u_1 = K_{11}(s)(r-y); \\quad u_2 = K_{21}(s)(r-y) \\] Here two inputs are used to control one output. We usually let \\(K_{11}\\) have integral control whereas \\(K_{21}\\) does not. Then \\(u_2(t)\\) will only be used for transient control and will return to \\(0\\) as \\(t \\to \\infty\\).\nCascade implementation To obtain an implementation with two SISO controllers we may cascade the controllers as shown in Fig. fig:cascade_extra_input. We again let input \\(u_2\\) take care of the fast control and \\(u_1\\) of the long-term control. The fast control loop is then \\[ u_2 = K_2(s)(r - y) \\] The objective of the other slower controller is then to use input \\(u_1\\) to reset input \\(u_2\\) to its desired value \\(r_{u_2}\\): \\[ u_1 = K_1(s)(r_{u_2} - y_1), \\ y_1 = u_2 \\] and we see that the output from the fast controller \\(K_2\\) is the \u0026ldquo;measurement\u0026rdquo; for the slow controller \\(K_1\\).\nThe cascade implementation again has the advantage of decoupling the design of the two controllers. It also shows more clearly that \\(r_{u_2}\\), the reference for \\(u_2\\), may be used as a degree-of-freedom at higher layers in the control system.\n Consider the system in Fig. fig:cascade_control_two_layers with two manipulated inputs (\\(u_2\\) and \\(u_3\\)), one controlled output (\\(y_1\\) which should be close to \\(r_1\\)) and two measured variables (\\(y_1\\) and \\(y_2\\)). Input \\(u_2\\) has a more direct effect on \\(y_1\\) than does input \\(u_3\\) (there is a large delay in \\(G_3(s)\\)). Input \\(u_2\\) should only be used for transient control as it is desirable that it remains close to \\(r_3 = r_{u_2}\\). The extra measurement \\(y_2\\) is closer than \\(y_1\\) to the input \\(u_2\\) and may be useful for detecting disturbances affecting \\(G_1\\).\nController \\(K_1\\) controls the primary output \\(y_1\\) at its reference \\(r_1\\) by adjusting the \u0026ldquo;input\u0026rdquo; \\(\\hat{u}_1\\), which is the reference value for \\(y_2\\). Controller \\(K_2\\) controls the secondary output \\(y_2\\) using input \\(u_2\\). Finally, controller \\(K_3\\) manipulates \\(u_3\\) slowly in order to reset input \\(u_2\\) to its desired value \\(r_3\\). We would probably tune the three controllers in the order \\(K_2\\), \\(K_3\\), and \\(K_1\\).\n \n Figure 60: Control configuration with two layers of cascade control\n Selectors Slip-range control for extra input Sometimes the input constraints make it necessary to add a manipulated input. In this case the control range is often split such that, for example, \\(u_1\\) is used for control when \\(y \\in [y_\\text{min}, y_1]\\) and \\(u_2\\) is used when \\(y \\in [y_1, y_\\text{max}]\\).\nSelector for too few inputs A completely different situation occurs if there are fewer inputs than outputs. In such case, we cannot control all the outputs independently, so we either need to control all the outputs in some average manner, or we need to make a choice about which outputs are the most important to control. Selectors are often used for the latter option.\nWhy use Cascade and Decentralized Control? Decomposed control configuration can easily become quite complex and difficult to maintain and understand. It may therefore be both simpler and better in terms of control performance to set up the controller design problem as an optimization problem and let the computer do the job, resulting in a centralized multivariable controller.\nHowever, there are a number of reason why cascade and decentralized control are used in practice. The most important one is the cost associated with obtaining good plant models, which are a prerequisite for applying multivariable control. Since cascade and decentralized control systems depend more strongly on feedback rather than models as their source of information, it is usually more important (relative to centralized multivariable control) that the fast control loops be tuned to respond quickly.\nThe cascade and decentralized control are often easier to understand, their tuning parameters have a direct and \u0026ldquo;localized\u0026rdquo; effect, and they tend to be less sensitive to uncertainty.\nThe main challenge is then to find a control configuration which allows the controllers to be tuned independently based on a minimum of model information. To be able to tune the controllers independently, we must require that the loops interact only to a limited extent. For example, one desirable property is that the steady-state gain from \\(u_i\\) to \\(y_i\\) in an \u0026ldquo;inner\u0026rdquo; loop does not change too much as outer loops are closed.\nHierarchical and Partial Control Partial Control Partial control involves controlling only a subset of the outputs for which there is a control objective.\n We divide the outputs \\(y\\) into two classes:\n \\(y_1\\) - (temporarily) uncontrolled output \\(y_2\\) - (locally) measured and controlled output We also subdivide the available manipulated inputs \\(u\\):\n \\(u_2\\) - inputs used for controlling \\(y_2\\) \\(u_1\\) - remaining inputs Four applications of partial control are:\n Sequential design on decentralized controllers. Both \\(y_1\\) and \\(y_2\\) have an associated control objective. First, a controller \\(K_2\\) is designed to control \\(y_2\\). Then, a controlled \\(K_1\\) may be designed for the remaining outputs. Sequential design of conventional cascade control. The outputs \\(y_2\\) are additional measured variables which are not important variables in themselves. The reason for controlling \\(y_2\\) is to improve the control of \\(y_1\\). The references \\(r_2\\) are used as degrees-of-freedom for controlling \\(y_1\\). \u0026ldquo;true\u0026rdquo; partial control. Both \\(y_1\\) and \\(y_2\\) have an associated control objective. We consider whether by controlling only the subset \\(y_2\\) we can indirectly achieve acceptable control of \\(y_1\\). Indirect control. The outputs \\(y_1\\) have an associated control objective but are not measured. Instead, we aim at indirectly controlling \\(y_1\\) by controlling the secondary measured variables \\(y_2\\). The table tab:partial_control shows clearly the differences between the four applications of partial control. In all cases, there is a control objective associated with \\(y_1\\) and a feedback involving measurement and control of \\(y_2\\) and we want:\n The effect of disturbances on \\(y_1\\) to be small (when \\(y_2\\) is controlled) The control of \\(y_2\\) using \\(u_2\\) to be (dynamically) easy \nTable 8: Applications of partial control Control Meas. and control of \\(y_1\\)? Control objective for \\(y_2\\)? Sequ. decentralized Yes Yes Sequ. cascade Yes No \u0026ldquo;True\u0026rdquo; partial No Yes Indirect No No By partitioning the inputs and outputs, the overall model \\(y = G u\\) can be written\n\\begin{equation} \\begin{aligned} y_1 \u0026amp;= G_{11} u_1 + G_{12} u_2 + G_{d1} d\\\\\\\ny_2 \u0026amp;= G_{21} u_1 + G_{22} u_2 + G_{d2} d \\end{aligned} \\end{equation}\nAssume now that feedback control \\(u_2 = K_2(r_2 - y_2 - n_2)\\) is used for the \u0026ldquo;secondary\u0026rdquo; subsystem involving \\(u_2\\) and \\(y_2\\) (Fig. fig:partial_control). We get:\n\\begin{equation} \\begin{aligned} y_1 = \u0026amp;(G_{11} - G_{12}K_2(I + G_{22}K_2)^{-1}G_{21})u_1 \\\\\\\n\u0026amp; + (G_{d1} - G_{12}K_2(I + G_{22}K_2)^{-1}G_{d2})d \\\\\\\n\u0026amp; + G_{12} K_2 (I + G_{22}K_2)^{-1}(r_2 - n_2) \\end{aligned} \\end{equation}\n\n Figure 61: Partial Control\n Tight control of \\(y_2\\) In some cases, we can assume that the control of \\(y_2\\) is fast compared to the control of \\(y_1\\) so we may let \\(K_2 \\to \\infty\\) to get: \\[ u_2 = -G_{22}^{-1} G_{d2} d - G_{22}^{-1} G_{21} u_1 + G_{22}^{-1} y_2 \\]\nThe dynamics of the system becomes:\n\\begin{equation} \\begin{aligned} y_1 = \u0026amp;\\underbrace{(G_{11} - G_{12} G_{22}^{-1} G_{21})}_{\\triangleq P_u} u_1 \\\\\\\n\u0026amp; + \\underbrace{(G_{d1} - G_{12} G_{22}^{-1} G_{d2})}_{\\triangleq P_d} d + \\underbrace{G_{12} G_{22}^{-1}}_{\\triangleq P_r} \\underbrace{(r_2 - e_2)}_{y_2} \\end{aligned} \\end{equation}\nwhere\n \\(P_d\\) is called the partial disturbance gain, which is the disturbance gain for a system under perfect partial control \\(P_u\\) is the effect of \\(u_1\\) on \\(y_1\\) with \\(y_2\\) perfectly controlled The obtained dynamics is independent of \\(K_2\\), but this only applies at frequencies where \\(y_2\\) is tightly controlled.\nHierarchical Control and Sequential Design A hierarchical control system results when we design the subcontrollers in a sequential manner, usually starting with the fast loops. This means that the controller at some higher layer in the hierarchy is designed based on a partially controlled plant.\nThe idea is to first implement a local lower-layer control system for controlling the outputs \\(y_2\\). Next, with this lower-layer in place, we design a controller \\(K_1\\) to control \\(y_1\\).\nThe objectives for this hierarchical decomposition are:\n to allow for simple or even on-line tuning of \\(K_2\\) to allow the use of longer sampling intervals for \\(K_1\\) to allow simple models when designing \\(K_1\\) to \u0026ldquo;stabilize\u0026rdquo; the plant using \\(K_2\\) such that it is amenable to manual control The selection of \\(u_2\\) and \\(y_2\\) for use in the lower-layer control system can be done with the following criteria:\n The lower-layer must quickly implement the setpoints computed by the higher layers, that is, the input-output controllability of the subsystem involving the use of \\(u_2\\) to control \\(y_2\\) should be good (consider \\(G_{22}\\) and \\(G_{d2}\\)) The control of \\(y_2\\) using \\(u_2\\) should provide local disturbance rejection, that is, it should minimize the effect of disturbances on \\(y_1\\) The control of \\(y_2\\) using \\(u_2\\) should not impose unnecessary control limitations (RHP-zero, ill-conditioning, etc.) on the remaining control problem which involves using \\(u_1\\) to control \\(y_1\\) Sequential design of cascade control systems Consider the conventional cascade control system in Fig. fig:cascade_extra_meas where we have additional \u0026ldquo;secondary\u0026rdquo; measurements \\(y_2\\) with no associated control objective, and the objective is to improve the control of \\(y_1\\) by locally controlling \\(y_2\\). The idea is that this should reduce the effect of disturbances and uncertainty on \\(y_1\\).\nFrom \\eqref{eq:partial_control}, it follows that we should select \\(y_2\\) and \\(u_2\\) such that \\(\\|P_d\\|\\) is small and at least smaller than \\(\\|G_{d1}\\|\\). These arguments particularly apply at high frequencies. More precisely, we want the input-output controllability of \\([P_u\\ P_r]\\) with disturbance model \\(P_d\\) to be better that of the plant \\([G_{11}\\ G_{12}]\\) with disturbance model \\(G_{d1}\\).\n\u0026ldquo;True\u0026rdquo; Partial Control We here consider the case where we attempt to leave a set of primary outputs \\(y_1\\) uncontrolled. This may be possible in cases where the outputs are correlated such that controlling the outputs \\(y_2\\) indirectly gives acceptable control of \\(y_1\\).\n A set of outputs \\(y_1\\) may be left uncontrolled only if the effects of all disturbances (including \\(r_2\\)) on \\(y_1\\), as expressed by the elements in the corresponding partial disturbance gain matrix \\(P_d\\) are less than \\(1\\) in magnitude at all frequencies.\n To evaluate the feasibility of partial control, one must for each choice of \\(y_2\\) and \\(u_2\\), rearrange the system as in \\eqref{eq:partial_control_partitioning} and \\eqref{eq:partial_control}, and compute \\(P_d\\) using \\eqref{eq:tight_control_y2}.\nMeasurement Selection for Indirect Control Assume the overall goal is to keep some variable \\(y_1\\) at a given value \\(r_1\\), e.g. our objective is to minimize \\(J = \\|y_1 - r_1\\|\\). We assume that we cannot measure \\(y_1\\), and instead we attempt to achieve our goal by controlling \\(y_2\\) at a constant value \\(r_2\\). For small changes, we may assume linearity and write:\n\\begin{align*} y_1 \u0026amp;= G_1 u + G_{d1} d\\\\\\\ny_2 \u0026amp;= G_2 u + G_{d2} d \\end{align*}\nWith feedback control of \\(y_2\\) we get \\(y_2 = r_2 + e_2\\) where \\(e_2\\) is the control error. From the above two equations, we obtain \\[ y_1 = (G_{d1} - G_1 G_2^{-1} G_{d2})d + G_1 G_2^{-1} (r_2 + e_2) \\]\nWith \\(e_2 = 0\\) and \\(d = 0\\) this gives \\(y_1 = G_1 G_2^{-1} r_2\\), so \\(r_2\\) must be chosen such that \\[ r_1 = G_1 G_2^{-1} r_2 \\]\nThe control error in the primary output is then\n\\begin{equation} y_1 - r_1 = \\underbrace{(G_{d1} - G_1 G_2^{-1} G_{d2})}_{P_d} d + \\underbrace{G_1 G_2^{-1}}_{P_r} e_2 \\end{equation}\nTo minimize \\(J\\), we should therefore select controlled outputs such that \\(\\|P_d d\\|\\) and \\(\\|P_r e_2\\|\\) are small. Note that \\(P_d\\) depends on the scaling of \\(d\\) and \\(y_1\\). Also the magnitude of \\(e_2\\) depends on the choice of outputs \\(y_2\\).\n Scale the disturbances \\(d\\) to be of magnitude 1, and scale the outputs \\(y_2\\) so that the expected control error \\(e_2\\) (measurement noise) is of magnitude 1 for each outputs. Then to minimize the control error for the primary output, \\(J = \\|y_1 - r_1\\|\\), we should select sets of controlled outputs which minimizes \\(\\|[ P_d \\ P_r]\\|\\).\n Decentralized Feedback Control In this section, \\(G(s)\\) is a square plant which is to be controlled using a diagonal controller (Fig. fig:decentralized_diagonal_control).\n\n Figure 62: Decentralized diagonal control of a \\(2 \\times 2\\) plant\n The design of decentralized diagonal control systems involves two steps:\n The choice of pairing (control configuration selection) The design of each controller \\(k_i(s)\\) \\[ K(s) = \\text{diag}\\{k_i(s)\\} = \\begin{bmatrix} k_1(s) \u0026amp; \u0026amp; \u0026amp; \\\\\\\n\u0026amp; k_2(s) \u0026amp; \u0026amp; \\\\\\\n\u0026amp; \u0026amp; \\ddots \u0026amp; \\\\\\\n\u0026amp; \u0026amp; \u0026amp; k_m(s) \\end{bmatrix} \\]\nNotations for decentralized diagonal control \\(G(s)\\) denotes a square \\(m \\times m\\) plant with elements \\(g_{ij}\\). \\(G^{ij}(s)\\) denotes the remaining \\((m-1) \\times (m-1)\\) plant obtained by removing row \\(i\\) and column \\(j\\) in \\(G(s)\\). We introduce: \\[ \\tilde{G} \\triangleq \\text{diag}\\{g_{ii}\\} = \\begin{bmatrix} g_{11} \u0026amp; \u0026amp; \u0026amp; \\\\\\\n\u0026amp; g_{22} \u0026amp; \u0026amp; \\\\\\\n\u0026amp; \u0026amp; \\ddots \u0026amp; \\\\\\\n\u0026amp; \u0026amp; \u0026amp; g_{mm} \\\\\\\n\\end{bmatrix} \\] The loop transfer function in loop \\(i\\) is denoted \\(L_i = g_{ii} k_i\\).\nRGA as a Measure of the Interaction for Decentralized Control Let \\(u_j\\) and \\(y_i\\) denote a particular input and output for the multivariable plant \\(G(s)\\) and assume that our task is to use \\(u_j\\) to control \\(y_i\\). There are two extreme cases:\n Other loops open: \\(u_k = 0, \\forall k \\neq j\\) Other loops closed: \\(y_k = 0, \\forall k \\neq i\\). It is assumed that the other loop are closed with perfect control which is a good approximation at frequencies within the bandwidth of each loop We now evaluate the effect \\(\\partial y_i / \\partial u_j\\) for the two cases:\n\\begin{subequations} \\begin{align} \u0026amp; \\left( \\frac{\\partial y_i}{\\partial u_j} \\right)_{u_k = 0, k \\neq j} = g_{ij} = [G]_{ij}\\\\\\\n\u0026amp; \\left( \\frac{\\partial y_i}{\\partial u_j} \\right)_{y_k = 0, k \\neq i} \\triangleq \\hat{g}_{ij} = 1/[G^{-1}]_{ji} \\end{align} \\end{subequations}\nThe ratio between the gains corresponding the two extreme cases is a useful measure of interactions and is defined as the \\(ij\\text{\u0026lsquo;th}\\) relative gain:\n\\begin{equation} \\tcmbox{\\lambda_{ij} \\triangleq \\frac{g_{ij}}{\\hat{g}_{ij}} = [G]_{ij}[G^{-1}]_{ji}} \\end{equation}\nThe Relative Gain Array (RGA) is the corresponding matrix of relative gains:\n\\begin{equation} \\tcmbox{\\Lambda(G) = G \\times (G^{-1})^T} \\end{equation}\nwhere \\(\\times\\) denotes element-by-element multiplication.\n Intuitively, we would like to pair variables \\(u_j\\) and \\(y_i\\) so that \\(\\lambda_{ij}\\) is close to \\(1\\), because this means that the gain from \\(u_j\\) to \\(y_i\\) is unaffected by closing the other loops. More precisely, we would like to pair such that the rearranged system, with the pairings along the diagonal, has a RGA matrix close to identity.\n Factorization of Sensitivity Function The magnitude of the off-diagonal elements in \\(G\\) (the interactions) relative to its diagonal elements are given by the matrix\n\\begin{equation} E \\triangleq (G - \\tilde{G})\\tilde{G}^{-1} \\end{equation}\nAn important relationship for decentralized control is:\n\\begin{equation} \\tcmbox{\\underbrace{(I + G K)}_{\\text{overall}} = \\underbrace{(I + E \\tilde{T})}_{\\text{interactions}} \\quad \\underbrace{(I + \\tilde{G} K)}_{\\text{individual loops}}} \\end{equation}\nor equivalently in terms of the sensitivity function:\n\\begin{equation} \\tcmbox{S = \\tilde{S} (I + E \\tilde{T})^{-1}} \\end{equation}\nwith\n\\begin{align*} \\tilde{S} \u0026amp;\\triangleq (I + \\tilde{G}K)^{-1} = \\text{diag}\\left\\{\\frac{1}{1 + g_{ii} k_i}\\right\\} \\\\\\\n\\tilde{T} \u0026amp;= I - \\tilde{S} \\end{align*}\nwhich contain the sensitivity and complementary sensitivity functions for the individual loops. Note that \\(\\tilde{S}\\) is not equal to the matrix of diagonal elements of \\(S\\).\nStability of Decentralized Control Systems Consider a \\(m \\times m\\) plant with single-loop controllers. There are \\(m!\\) alternative pairings possible. Thus tools are needed for quickly evaluating alternative pairings. In this section, we first derive sufficient conditions for stability which may be used to select promising pairings. We then derive necessary conditions for stability which may be used to eliminate undesirable pairings.\nSufficient conditions for stability For decentralized diagonal control, it is desirable that the system can be tuned and operated one loop at a time. Assume therefore that \\(G\\) is stable and each individual loop is stable by itself (\\(\\tilde{S}\\) and \\(\\tilde{T}\\) are stable). Using the spectral radius condition on the factorized \\(S\\) in \\eqref{eq:S_factorization}, we have that the overall system is stable (\\(S\\) is stable) if\n\\begin{equation} \\rho(E\\tilde{T}(j\\omega)) \u0026lt; 1, \\forall\\omega \\end{equation}\nSufficient conditions in terms of \\(E\\). Assume \\(G\\) is stable and that the individual loops are stable (\\(\\tilde{T}\\) is stable). The least conservative approach is to use \\(\\rho(E\\tilde{T}) \\leq \\mu(E) \\maxsv(\\tilde{T})\\). Then the entire system is closed-loop stable (\\(T\\) is stable) if\n\\begin{equation} \\tcmbox{\\maxsv(\\tilde{T}) = \\max_i |\\tilde{t}_i| \u0026lt; 1 / \\mu(E) \\quad \\forall\\omega} \\end{equation}\n\\(\\mu(E)\\) is called the structured singular value interaction measure, and is computed with respect to the diagonal structure of \\(\\tilde{T}\\) where we may view \\(\\tilde{T}\\) as the \u0026ldquo;design uncertainty\u0026rdquo;.\nWe usually would like to use integral action in the loops, that is we want \\(\\tilde{T} \\approx I\\) at low frequencies, i.e. \\(\\maxsv(\\tilde{T}) \\approx 1\\). Thus, we prefer pairings for which we have \\(\\mu(E) \u0026lt; 1\\) at low frequencies where we have tight control. This ensures a \u0026ldquo;generalized diagonal dominance\u0026rdquo;.\nSufficient conditions in terms of RGA. Suppose the plant \\(G(s)\\) is stable. If the RGA-matrix \\(\\Lambda(G) = I\\ \\forall\\omega\\) (which can only arise for a triangular plant \\(G(s)\\)), then stability of each of the individual loops implies stability of the entire system.\nIn most cases, it is sufficient for overall stability to require that \\(G(j\\omega)\\) is close to triangular (or \\(\\Lambda(G) \\approx I\\)) at crossover frequencies. This gives the \u0026ldquo;first pairing rule\u0026rdquo;.\n To achieve stability with decentralized control, prefer pairings such that at frequencies \\(\\omega\\) around crossover, the rearranged matrix \\(G(j\\omega)\\) (with the paired elements along the diagonal) is close to triangular. This is equivalent to requiring \\(\\Lambda(G(j\\omega)) \\approx I\\), i.e. the RGA-number \\(\\|\\Lambda(G(j\\omega)) - I\\|_\\text{sum}\\) should be small.\n Necessary steady-state conditions for stability A desirable property of a decentralized control system is that it has integrity, i.e. the closed loop system should remain stable as subsystem controllers are brought in and out of service. Mathematically, the system possesses integrity if it remains stable when the controller \\(K\\) is replace by \\(\\mathbb{E}K\\) where \\(\\mathbb{E} = \\text{diag}\\{\\epsilon_i\\}, \\ \\epsilon_i=0,1\\).\nAn even stronger requirement is that the system remains stable as the gain in various loops are reduced: \\(0 \\le \\epsilon_i \\le 1\\).\n The plant \\(G(s)\\) (corresponding to a given pairing with the paired elements along its diagonal) is Decentralized Integral Controllability (DIC) if there exists a stabilizing decentralized controller with integral action in each loop such that each individual loop may be detuned independently by a factor \\(\\epsilon_1\\) (\\(0 \\le \\epsilon_i \\le 1\\)) without introducing instability.\n Steady-State RGA and DIC. Consider a stable square plant \\(G\\) and a diagonal controller \\(K\\) with integral action in all elements, and assume that the loop transfer function \\(GK\\) is strictly proper. If a pairing of outputs and manipulated inputs corresponds to a negative steady-state relative gain, then the closed-loop system has at least one of the following properties:\n The overall closed-loop system is unstable The loop with the negative relative gain is unstable by itself The closed-loop system is unstable if the loop with the negative relative gain is opened This can be summarized as follows:\n \\begin{equation} \\begin{aligned} \u0026amp;\\text{A stable (reordered) plant } G(s)\\\\\\\n\u0026amp;\\text{is DIC only if } \\lambda_{ii}(0) \\ge 0 \\text{ for all } i \\end{aligned} \\end{equation}\n The RGA and RHP-zeros: Further reasons for not pairing on negative RGA elements With decentralized control, we usually design and implement the controller by tuning and closing one loop at a time in a sequential manner. Assume that we pair on a negative steady-state RGA-element, \\(\\lambda_{ij}(0) \u0026lt; 0\\), assume that \\(\\lambda_{ij}(\\infty)\\) is positive, and assume that the element \\(g_{ij}\\) has no RHP-zero. We have the following implications:\n If we start by closing the loop involving input \\(u_i\\) and \\(y_j\\), then we will get a RHP-zero in \\(G^{ij}(s)\\) which will limit the performance in the other outputs If we end by closing this loop, then we will get a RHP-zero in \\(\\hat{g}_{ij}(s)\\) which will limit the performance in output \\(y_i\\) For a stable plant, avoid pairings that corresponds to negative steady-state RGA-elements \\(\\lambda_{ij}(0) \u0026lt; 0\\)\n \\begin{align*} G(0) \u0026amp;= \\begin{bmatrix} 10.2 \u0026amp; 5.6 \u0026amp; 1.4 \\\\\\\n15.5 \u0026amp; -8.4 \u0026amp; -0.7 \\\\\\\n18.1 \u0026amp; 0.4 \u0026amp; 1.8 \\end{bmatrix} \\\\\\\n\\Lambda(0) \u0026amp;= \\begin{bmatrix} 0.96 \u0026amp; 1.45 \u0026amp; -1.41 \\\\\\\n0.94 \u0026amp; -0.37 \u0026amp; 0.43 \\\\\\\n-0.90 \u0026amp; -0.07 \u0026amp; 1.98 \\end{bmatrix} \\end{align*}\nFor a \\(3 \\times 3\\) plant there are 6 alternative pairings. From the steady state RGA, we see that there is only one positive element in columns 2, and only positive element in row 3, and therefore there is only on possible pairing if we require DIC: \\[ u_1 \\leftrightarrow y_2,\\ u_2 \\leftrightarrow y_1,\\ u_3 \\leftrightarrow y_3 \\]\n \\begin{align*} G(s) \u0026amp;= \\frac{-s + 1}{(5 s + 1)^2} \\begin{bmatrix} 1 \u0026amp; 4 \u0026amp; -26 \\\\\\\n6.2 \u0026amp; 1 \u0026amp; -26 \\\\\\\n1 \u0026amp; 1 \u0026amp; 1 \\end{bmatrix}\\\\\\\n\\Lambda(G) \u0026amp;= \\begin{bmatrix} 1 \u0026amp; 5 \u0026amp; -5 \\\\\\\n-5 \u0026amp; 1 \u0026amp; 5 \\\\\\\n5 \u0026amp; -5 \u0026amp; 1 \\end{bmatrix} \\end{align*}\nOnly two of the six possible pairings gives positive steady-state RGA-elements: the diagonal pairing on all \\(\\lambda_{ii} = 1\\) or the pairing on all \\(\\lambda_{ii} = 5\\). Intuitively, one may expect pairing with \\(\\lambda_{ii} = 1\\) since it corresponds to pairing on RGA-elements equal to \\(1\\). However, the RGA matrix is far from identify, and the RGA-number \\(\\| \\Lambda - I \\|_\\text{sum} = 30\\) for both alternative. Thus none of the two alternatives satisfy Pairing Rule 1, and decentralized control should not be used for this plant.\n Performance of Decentralized Control Systems To study performance, we use the following factorization\n\\begin{equation} S = (I + \\tilde{S}(\\Gamma - I)^{-1}) \\tilde{S} \\Gamma \\end{equation}\nwhere \\(\\Gamma\\) is the Performance Relative Gain Array (PRGA)\n\\begin{equation} \\tcmbox{\\Gamma(s) \\triangleq \\tilde{G}(s) G^{-1}(s)} \\end{equation}\nwhich is a scaled inverse of the plant.\nAt frequencies where feedback is effective (\\(\\tilde{S} \\approx 0\\)), \\(S \\approx \\tilde{S} \\Gamma\\) which shows that \\(\\Gamma\\) is important when evaluating performance with decentralized control.\nNote that the diagonal elements of the PRGA-matrix are equal to the diagonal elements of the RGA and that the off-diagonal elements of the PRGA depend on the relative scaling on the outputs which is not the case for the RGA.\nWe will also use the related Closed-Loop Disturbance Gain (CLDG) matrix:\n\\begin{equation} \\tcmbox{\\tilde{G}_d(s) \\triangleq \\Gamma(s)G_d(s) = \\tilde{G}(s) G^{-1}(s) G_d(s)} \\end{equation}\nwhich depends on both output and disturbance scaling.\nSuppose the system has been scaled such that:\n Each disturbance magnitude is less than \\(1\\), \\(|d_k| \u0026lt; 1\\) Each reference change is less than the corresponding diagonal element in \\(R\\), \\(|r_j| \u0026lt; R_j\\) For each output the acceptable control error is less than \\(1\\), \\(|e_i| \u0026lt; 1\\) Single disturbance Consider a single disturbance, in which case \\(G_d\\) is a vector, and let \\(g_{di}\\) denote the \\(i\\text{\u0026lsquo;th}\\) element of \\(G_d\\). Let \\(L_i = g_{ii} k_i\\) denote the loop transfer function in loop \\(i\\). Consider frequencies where feedback is effective so \\(\\tilde{S}\\Gamma\\) is small. Then for acceptable disturbance rejection (\\(|e_i| \u0026lt; 1\\)) we must with decentralized control required for each loop \\(i\\)\n\\begin{equation} \\tcmbox{|1 + L_i| \u0026gt; |\\tilde{g}_{di}| \\quad \\forall i} \\end{equation}\nwhich is the same as the SISO-condition except that \\(G_d\\) is replaced by the CLDG. In words, \\(\\tilde{g}_{di}\\) gives the \u0026ldquo;apparent\u0026rdquo; disturbance gain as seen from the loop \\(i\\) when the system is controlled using decentralized control.\nSingle reference change Consider a change in reference for output \\(j\\) of magnitude \\(R_j\\). Consider frequencies where feedback is effective. Then for acceptable reference tracking (\\(|e_i|\u0026lt;1\\)) we must require for each loop \\(i\\)\n\\begin{equation} \\tcmbox{|1 + L_i| \u0026gt; |\\gamma_{ij}| \\cdot |R_j| \\quad \\forall i} \\end{equation}\nwhich is the same as the SISO-condition except for the PRGA-factor \\(|\\gamma_{ij}|\\).\nConsequently, for performance it is desirable to have small elements in \\(\\Gamma\\), at least at frequencies where feedback is effective. However, at frequencies close to crossover, stability is the main issue and since the diagonal elements of the PRGA and RGA are equal, we usually prefer to have \\(\\gamma_{ii}\\) close to \\(1\\).\nSummary: Controllability Analysis for Decentralized Control When considering decentralized diagonal control of a plant, one should first check that the plant is controllable with any controller. The next step is to compute the RGA matrix as a function of frequency, and to determine if one can find a good set of input-output pairs bearing in mind the following:\n Prefer pairings which have the RGA-matrix close to identity at frequencies around crossover, i.e. the RGA-number \\(\\|\\Lambda(j\\omega)-I\\|\\) should be small Avoid a pairing \\(ij\\) with negative steady-state RGA elements \\(\\lambda_{ij}(G(0)\\) Prefer a pairing \\(ij\\) where \\(g_{ij}(s)\\) puts minimal restrictions on the achievable bandwidth. Specifically, the frequency \\(\\omega_{uij}\\) where \\(\\angle g_{ij}(j\\omega_{uij}) = \\SI{-180}{\\degree}\\) should be as large as possible This rule favors parings on variables \u0026ldquo;close to each other\u0026rdquo; When a reasonable choice of pairings have been made, one should rearrange \\(G\\) to have the paired elements along the diagonal and perform a controllability analysis:\nCompute the CLDG and PRGA, and plot these as a function of frequency For systems with many loops, it is best to perform the analysis one loop at the time, that is, for each loop \\\\(i\\\\), plot \\\\(|\\tilde{g}\\_{dik}|\\\\) for each disturbance \\\\(k\\\\) and plot \\\\(|\\gamma\\_{ij}|\\\\) for each reference \\\\(j\\\\). For performance, we need \\\\(|1 + L\\_i|\\\\) to be larger than each of these: \\begin{equation} |1 + L_i| \u0026gt; \\max_{k,j}\\{|\\tilde{g}_{dik}|, |\\gamma_{ij}|\\} \\end{equation}\nTo achieve stability of the individual loops, one must analyze \\(g_{ii}(s)\\) to ensure that the bandwidth required by \\eqref{eq:decent_contr_one_loop} is achievable. Note that RHP-zeros in the diagonal elements may limit achievable decentralized control, whereas they may not pose any problems for a multivariable controller. Since with decentralized control, we usually want to use simple controllers, the achievable bandwidth in each loop will be limited by the frequency where \\(\\angle g_{ii}\\) is \\(\\SI{-180}{\\degree}\\)\nCheck for constraints by considering the elements of \\\\(G^{-1} G\\_d\\\\) and make sure that they do not exceed one in magnitude within the frequency range where control is needed. Equivalently, one may for each loop \\\\(i\\\\), plot \\\\(|g\\_{ii}|\\\\) and the requirement is then that \\begin{equation} |g_{ii}| \u0026gt; |\\tilde{g}_{dik}| \\quad \\forall k \\end{equation}\nat frequencies where \\(|\\tilde{g}_{dik}|\\) is larger than \\(1\\). This provides a direct generalization of the requirement \\(|G| \u0026gt; |G_d|\\) for SISO systems.\n If the plant is not controllable, then one may consider another choice of pairing and go back to Step 4. If one still cannot find any pairing which are controllable, then one should consider multivariable control.\nIf the chosen pairing is controllable, then \\eqref{eq:decent_contr_one_loop} tells us how large \\\\(|L\\_i| = |g\\_{ii} k\\_i|\\\\) must be. This can be used as a basis for designing the controller \\\\(k\\_i(s)\\\\) for loop \\\\(i\\\\) Sequential Design of Decentralized Controllers Usually the local controllers \\(k_i(s)\\) are designed locally and then all the loops are closed. One problem with this is that the interactions may cause the overall system \\(T\\) so be unstable, even though the local loops \\(\\tilde{T}\\) are stable. This will not happen if the plant is diagonally dominant, such that we satisfy, for example \\(\\maxsv(\\tilde{T}) \u0026lt; 1/\\mu(E)\\).\nThe stability problem is avoided if the controllers are designed sequentially when, for example, the bandwidths of the loops are quite different. In this case, the outer loops are tuned with the inner loops in place, and each step may be considered as a SISO control problem. In particular, overall stability is determined by \\(m\\) SISO stability conditions. However, the issue of performance is more complicated because the closing of a loop may cause \u0026ldquo;disturbances\u0026rdquo; (interactions) into a previously designed loop. The engineer must then go back and redesign a loop that has been designed earlier. Thus sequential design may involve many iterations.\nConclusion on Decentralized Control A number of conditions for the stability, e.g. \\eqref{eq:decent_contr_cond_stability} and \\eqref{eq:decent_contr_necessary_cond_stability}, and performance, e.g. \\eqref{eq:decent_contr_cond_perf_dist} and \\eqref{eq:decent_contr_cond_perf_ref}, of decentralized control systems have been derived.\nThe conditions may be useful in determining appropriate pairings of inputs and outputs and the sequence in which the decentralized controllers should be designed.\nThe conditions are also useful in an input-output controllability analysis for determining the viability of decentralized control.\nModel Reduction \nIntroduction Modern controller design methods such as \\(\\mathcal{H}_\\infty\\) and LQG, produce controllers of order at least equal to that of the plant, and usually higher because of the inclusion of weights. These control laws may be too complex with regards to practical implementation and simpler designs are then sought. For this purpose, one can either reduce the order of the plant model prior to controller design, or reduce the controller in the final stage.\n Given a high-order linear time-invariant stable model \\(G\\), find a low-order approximation \\(G_a\\) such that the infinity (\\(\\mathcal{H}_\\infty\\) or \\(\\mathcal{L}_\\infty\\)) norm of the difference \\(\\|G - G_a\\|_\\infty\\) is small.\n By model order, we mean the dimension of the state vector in a minimal realization. This is sometimes called the McMillan degree.\nSo far we have only been interested in the infinity (\\(\\mathcal{H}_\\infty\\)) norm of stable systems. But the error \\(G-G_a\\) may be unstable and the definition of the infinity norm needs to be extended to unstable systems.\n \\(\\mathcal{L}_\\infty\\) defines the set of rational functions which have no poles on the imaginary axis, it includes \\(\\mathcal{H}_\\infty\\), and its norm (like \\(\\mathcal{H}_\\infty\\)) is given by\n\\begin{equation} \\|G\\|_\\infty = \\sup_\\omega \\maxsv(G(j\\omega)) \\end{equation}\n We will describe three main methods for this problem:\n Balanced truncation Balanced residualization Optimal Hankel norm approximation Each method gives a stable approximation and a guaranteed bound on the error in the approximation. We will further show how the methods can be employed to reduce the order of an unstable model \\(G\\).\nAll these methods start from a special state-space realization of \\(G\\) referred to as balanced. We will describe this realization, but first we will show how the techniques of truncation and residualization can be used to remove the high frequency or fast modes of a state-space realization.\nTruncation and Residualization Let \\((A,B,C,D)\\) be a minimal realization of a stable system \\(G(s)\\), and partition the state vector \\(x\\), of dimension \\(n\\), into \\(\\colvec{x_1 \\ x_2}\\) where \\(x_2\\) is the vector of \\(n-k\\) states we wish to remove. With approximate partitioning of \\(A\\), \\(B\\) and \\(C\\), the state space equations become\n\\begin{equation} \\begin{aligned} \\dot{x}_1 \u0026amp;= A_{11} x_1 + A_{12} x_2 + B_1 u \\\\\\\n\\dot{x}_2 \u0026amp;= A_{21} x_1 + A_{22} x_2 + B_2 u \\\\\\\ny \u0026amp;= C_1 x_1 + C_2 x_2 + D u \\end{aligned} \\end{equation}\nTruncation A k-th order truncation of the realization \\(G \\triangleq (A, B, C, D)\\) is given by \\(G_a \\triangleq (A_{11}, B_1, C_1, D)\\). The truncated model \\(G_a\\) is equal to \\(G\\) at infinite frequency \\(G(\\infty) = G_a(\\infty) = D\\), but apart from this, we cannot say anything for the general case about the relationship between \\(G\\) and \\(G_a\\).\nIf however, \\(A\\) is in Jordan form, then it is easy to order the states so that \\(x_2\\) corresponds to high frequency or fast modes.\nModal Truncation For simplicity, assume that \\(A\\) has been diagonalized so that\n\\begin{align*} A \u0026amp;= \\begin{bmatrix} \\lambda_1 \u0026amp; 0 \u0026amp; \\dots \u0026amp; 0 \\\\\\\n0 \u0026amp; \\lambda_2 \u0026amp; \\dots \u0026amp; 0 \\\\\\\n\\vdots \u0026amp; \\vdots \u0026amp; \\ddots \u0026amp; \\vdots \\\\\\\n0 \u0026amp; 0 \u0026amp; \\dots \u0026amp; \\lambda_n \\\\\\\n\\end{bmatrix},\\quad B = \\begin{bmatrix} b_1^T \\ b_2^T \\ \\vdots \\ b_n^T \\end{bmatrix} \\\\\\\nC \u0026amp;= \\begin{bmatrix} c_1, c_2, \\dots, c_n \\end{bmatrix} \\end{align*}\nThen, if the \\(\\lambda_i\\) are ordered so that \\(|\\lambda_1| \u0026lt; |\\lambda_2| \u0026lt; \\dots\\), the fastest modes are removed from the model after truncation. The difference between \\(G\\) and \\(G_a\\) following a k-th order model truncation is given by \\[ G - G_a = \\sum_{i = k+1}^n \\frac{c_i b_i^T}{s - \\lambda_i} \\] and therefore\n\\begin{equation} \\| G - G_a \\|_\\infty \\le \\sum_{i = k+1}^n \\frac{\\maxsv(c_i b_i^t)}{|\\text{Re}(\\lambda_i)|} \\end{equation}\nIt is interesting to note that the error depends on the residues \\(c_i b_i^T\\) as well as the \\(\\lambda_i\\). The distance of \\(\\lambda_i\\) from the imaginary axis is therefore not a reliable indicator of whether the associated mode should be included in the reduced order model or not.\nAn advantage of modal truncation is that the poles of the truncated model are a subset of the poles of the original model and therefore retain any physical interpretation they might have.\nResidualization In truncation, we discard all the states and dynamics associated with \\(x_2\\). Suppose that instead of this, we simply set \\(\\dot{x}_2 = 0\\), i.e. we residualize \\(x_2\\), in the state-space equations. One can then solve for \\(x_2\\) in terms of \\(x_1\\) and \\(u\\), and back substitution of \\(x_2\\), then gives\n\\begin{align*} \\dot{x}_1 \u0026amp;= (A_{11} - A_{12} A_{22}^{-1} A_{21}) x_1 + (B_1 - A_{12} A_{22}^{-1} B_2) u \\\\\\\ny \u0026amp;= (C_1 - C_2 A_{22}^{-1} A_{21}) x_1 + (D - C_2 A_{22}^{-1} B_2) u \\end{align*}\nAnd let assume \\(A_{22}\\) is invertible and define\n\\begin{alignat*}{3} \u0026amp;A_r \\triangleq A_{11} - A_{12}A_{22}^{-1}A_{21} \u0026amp; \u0026amp; \\quad B_r \\triangleq B_1 - A_{12}A_{22}^{-1}B_2\\\\\\\n\u0026amp;C_r \\triangleq C_1 - C_2A_{22}^{-1}A_{21} \u0026amp; \u0026amp; \\quad D_r \\triangleq D - C_2A_{22}^{-1}B_2 \\end{alignat*}\nThe reduced order model \\(G_a(s) = (A_r, B_r, C_r, D_r)\\) is called a residualization of \\(G(s) = (A, B, C, D)\\). Usually \\((A, B, C, D)\\) will have been put into Jordan form, with the eigenvalues ordered so that \\(x_2\\) contains the fast modes.\nModel reduction by residualization is then equivalent to singular perturbation approximation, where the derivatives of the fastest states are allowed to approach zero with some parameter \\(\\epsilon\\).\nAn important property of residualization is that it preserves the steady-state gain of the system:\n\\begin{equation} \\tcmbox{G_a(0) = G(0)} \\end{equation}\nThis should be no surprise since the residualization process sets derivatives to zero, which are zero anyway at steady-state. But it is in stark contrast to truncation which retains the system behavior at infinite frequency. This contrast between truncation and residualization follows from the simple bilinear relationship \\(s \\to \\frac{1}{s}\\) which relates the two.\nIt is clear that truncation is to be preferred when accuracy is required at high frequencies, whereas residualization is better for low frequency modelling.\nBoth methods depend to a large extent on the original realization and we have suggested to use of the Jordan form. A better realization, with many useful properties, is the balanced realization.\nBalanced Realization A balanced realization is an asymptotically stable minimal realization in which the controllability and observability Gramiams are equal and diagonal.\nLet \\((A,B,C,D)\\) be a minimal realization of a stable, rational transfer function \\(G(s)\\), then \\((A,B,C,D)\\) is called balanced if the solutions to be following Lyapunov equations\n\\begin{subequations} \\begin{align} AP + PA^T + BB^T \u0026amp;= 0 \\\\\\\nA^TQ + QA + C^TC \u0026amp;= 0 \\end{align} \\end{subequations}\nare \\(P = Q = \\text{diag}(\\sigma_1, \\sigma_2, \\dots, \\sigma_n) \\triangleq \\Sigma\\), where \\(\\sigma_1 \\ge \\sigma_2 \\ge \\dots \\ge \\sigma_n \u0026gt; 0\\). \\(P\\) and \\(Q\\) are the controllability and observability Gramiams, also defined by\n\\begin{subequations} \\begin{align} P \u0026amp;\\triangleq \\int_0^\\infty e^{At} B B^T e^{A^Tt} dt \\\\\\\nQ \u0026amp;\\triangleq \\int_0^\\infty e^{A^Tt} C^T C e^{At} dt \\end{align} \\end{subequations}\n\\(\\Sigma\\) is therefore simply referred to as the Gramiam of \\(G(s)\\). The \\(\\sigma_i\\) are the ordered Hankel singular values of \\(G(s)\\), more generally defined as \\(\\sigma_i \\triangleq \\lambda_i^{\\frac{1}{2}}(PQ)\\), \\(i = 1, \\dots, n\\). Notice that \\(\\sigma_1 = \\|G\\|_H\\) is the Hankel norm of \\(G(s)\\).\nIn balanced realization the value of each \\(\\sigma_i\\) is associated with a state \\(x_i\\) of the balanced system.\n The size of \\(\\sigma_i\\) is a relative measure of the contribution that \\(x_i\\) makes to the input-output behavior of the system.\n Therefore if \\(\\sigma_1 \\gg \\sigma_2\\), then the state \\(x_1\\) affects the input-output behavior much more than \\(x_2\\), or indeed any other state because of the ordering of the \\(\\sigma_i\\).\nAfter balancing a system, each state is just as controllable as it is observable, and a measure of a state\u0026rsquo;s joint observability and controllability is given by its associated Hankel singular value. This property is fundamental to the model reduction methods in the remainder of this chapter which work by removing states having little effect on the system\u0026rsquo;s input-output behavior.\nBalanced Truncation and Balanced Residualization Let the balanced realization \\((A,B,C,D)\\) of \\(G(s)\\) and the corresponding \\(\\Sigma\\) be partitioned compatibly as\n\\begin{equation} \\begin{aligned} A \u0026amp;= \\begin{bmatrix} A_{11} \u0026amp; A_{12} \\\\\\\nA_{21} \u0026amp; A_{22} \\end{bmatrix}, \\quad B = \\begin{bmatrix} B_1 \\ B_2 \\end{bmatrix} \\\\\\\nC \u0026amp;= \\begin{bmatrix} C_1 \u0026amp; C_2 \\end{bmatrix}, \\quad \\Sigma = \\begin{bmatrix} \\Sigma_1 \u0026amp; 0 \\\\\\\n0 \u0026amp; \\Sigma_2 \\end{bmatrix} \\end{aligned} \\end{equation}\nwhere\n\\begin{align*} \\Sigma_1 \u0026amp;= \\text{diag}(\\sigma_1, \\sigma_2, \\dots, \\sigma_k)\\\\\\\n\\Sigma_2 \u0026amp;= \\text{diag}(\\sigma_{k+1}, \\sigma_{k+2}, \\dots, \\sigma_n),\\ \\sigma_k \u0026gt; \\sigma_{k+1} \\end{align*}\nBalanced Truncation The reduced order model given by \\((A_{11},B_1,C_1,D)\\) is called a balanced truncation of the full order system \\(G(s)\\). The idea of balancing truncation is thus to first make a balanced realization of the system and then to discard the states corresponding to small Hankel singular values.\nA balanced truncation is also a balanced realization, and the infinity norm of the error between \\(G(s)\\) and the reduced order system \\(G_a(s)\\) is bounded by twice the sum of the last \\(n-k\\) Hankel singular values, i.e. twice the trace of \\(\\Sigma_2\\):\n\\begin{equation} \\|G(s) - G_a(s)\\|_\\infty \\le 2 \\cdot \\text{Tr}\\big( \\Sigma_2 \\big) \\end{equation}\nFor the case of repeated Hankel singular values, each repeated Hankel singular value is to be counted only once in calculating the sum.\nUseful algorithms that compute balanced truncations without first computing a balanced realization still require the computation of the observability and controllability Gramiam, which can be a problem if the system to be reduced is of very high order.\nBalanced Residualization In balanced truncation above, we discarded the least controllable and observable states corresponding to \\(\\Sigma_2\\). In balanced residualization, we simply set to zero the derivatives of all these states.\nTheorem Let \\(G(s)\\) be a stable rational transfer function with Hankel singular values \\(\\sigma_1 \u0026gt; \\sigma_2 \u0026gt; \\dots \u0026gt; \\sigma_N\\) where each \\(\\sigma_i\\) has multiplicity \\(r_i\\) and let \\(G_a^k(s)\\) be obtained by truncating or residualizing the balanced realization of \\(G(s)\\) to the first \\((r_1 + r_2 + \\dots + r_k)\\) states. Then\n\\begin{equation} \\|G(s) - G_a^k(s)\\|_\\infty \\le 2(\\sigma_{k+1} + \\sigma_{k+2} + \\dots + \\sigma_N) \\end{equation}\nOptimal Hankel Norm Approximation In this approach to model reduction, the problem that is directly addressed is the following: given a stable model \\(G(s)\\) of order \\(n\\), find a reduced order model \\(G_h^k(s)\\) of degree \\(k\\) such that the Hankel norm of the approximation error, \\(\\| G(s) - G_h^k(s) \\|_H\\), is minimized.\n The Hankel norm of any stable transfer function \\(E(s)\\) is defined as\n\\begin{equation} \\| E(s) \\|_H \\triangleq \\rho^{\\frac{1}{2}} (PQ) \\end{equation}\nwhere \\(P\\) and \\(Q\\) are the controllability and observability Gramiams of \\(E(s)\\).\n So in the optimization we seek an error which is in some sense closest to being completely unobservable and completely uncontrollable.\nThe infinity norm bound on the approximate error for the optimal Hankel norm approximation is better than for balanced truncation and residualization. This is shown with the following theorem.\nTheorem Let \\(G(s)\\) be a stable, square, transfer function \\(G(s)\\) with Hankel singular values \\(\\sigma_1 \\ge \\sigma_2 \\ge \\dots \\ge \\sigma_k \\ge \\sigma_{k+1} = \\sigma_{k+2} = \\dots = \\sigma_{k+l} \u0026gt; \\sigma_{k+l+1} \\ge \\dots \\ge \\sigma_n \u0026gt; 0\\). An optimal Hankel norm approximation of order \\(k\\), \\(G_h^k(s)\\), can be constructed as follows.\nLet \\((A,B,C,D)\\) be a balanced realization of \\(G(s)\\) with the Hankel singular values reordered so that the Gramiam matrix is\n\\begin{align*} \\Sigma \u0026amp;= \\text{diag}(\\sigma_1,\\dots,\\sigma_k,\\sigma_{k+l+1},\\dots,\\sigma_n,\\sigma_{k+1},\\dots,\\sigma_{k+l})\\\\\\\n\u0026amp;\\triangleq \\text{diag}(\\Sigma_l, \\sigma_{k+1}I) \\end{align*}\nPartition \\((A,B,C,D)\\) to conform with \\(\\Sigma\\) \\[ A = \\begin{bmatrix} A_{11} \u0026amp; A_{12} \\ A_{21} \u0026amp; A_{22} \\end{bmatrix},\\ B = \\begin{bmatrix} B_1 \\ B_2 \\end{bmatrix},\\ C = \\begin{bmatrix} C_1 \u0026amp; C_2 \\end{bmatrix} \\] Define \\((\\hat{A},\\hat{B},\\hat{C},\\hat{D})\\) by\n\\begin{subequations} \\begin{align} \\hat{A} \u0026amp;\\triangleq \\Gamma^{-1} \\left( \\sigma_{k+1}^2 A_{11}^T + \\sigma_1 A_{11} \\Sigma_1 - \\sigma_{k+1} C_{1}^T U B_{1}^T \\right) \\\\\\\n\\hat{B} \u0026amp;\\triangleq \\Gamma^{-1} \\left( \\sigma_1 B_1 + \\sigma_{k+1} C_1^T U \\right) \\\\\\\n\\hat{C} \u0026amp;\\triangleq C_1 \\Sigma_1 + \\sigma_{k+1} U B_1^T \\\\\\\n\\hat{D} \u0026amp;\\triangleq D - \\sigma_{k+1} U \\end{align} \\end{subequations}\nwhere \\(U\\) is a unitary matrix satisfying \\[ B_2 = - C_2^T U \\ \\text{ and } \\ \\Gamma \\triangleq \\Sigma_1^2 - \\sigma_{k+1}^2 I \\]\nThe matrix \\(\\hat{A}\\) has \\(k\\) \u0026ldquo;stable\u0026rdquo; eigenvalues; the remaining ones are in the open right-half plane. Then \\[ G_h^k(s) + F(s) = \\left[ \\begin{array}{c|cc} \\hat{A} \u0026amp; \\hat{B} \\ \\hline \\hat{C} \u0026amp; \\hat{D} \\end{array} \\right] \\] where \\(G_h^k(s)\\) is a stable optimal Hankel norm approximation of order \\(k\\), and \\(F(s)\\) is an anti-stable (all poles in the open right-half plane) transfer function of order \\(n-k-l\\). The Hankel norm of the error between \\(G\\) and the optimal approximation \\(G_h^k\\) is equal to the \\((k+1)\\text{\u0026lsquo;th}\\) Hankel singular value of \\(G\\):\n\\begin{equation} \\tcmbox{\\| G - G_h^k \\|_H = \\sigma_{k+1}(G)} \\end{equation}\nModel Reduction - Practical Summary Reduction of model Three reduction techniques have been discussed here: balanced residualization, balance truncation and optimal Hankel norm approximation.\nIt is sometimes desirable to have the steady-state gain of the reduced plant model the same as the full order model. For instance, this is the case if we want to use feedforward control. The truncated and optimal Hankel norm approximated systems do not preserve the steady-state gain and they have to be scaled, i.e. the model approximation \\(G_a\\) is replaced by \\(G_a W_s\\) where \\(W_a = G_a(0)^{-1} G(0)\\), \\(G(s)\\) being the full order model.\nHowever, this scaling generally introduced large model errors at other frequencies.\n Hence residualization is to be preferred whenever low frequency matching is desired.\n Reduction of a 2 degrees-of-freedom controller Let\u0026rsquo;s consider a 2 degrees-of-freedom controller \\(K = [K_1\\ K_2]\\). In order ensure perfect steady-state tracking, i.e. to match \\(T_{\\text{ref}}\\) at steady-state, a prefilter \\(W_i\\) is added to scale the controller: \\(K = [K_1 W_i\\ K_2]\\).\nThere are two approaches for order reduction:\n the scaled controller \\([K_1 W_i\\ K_2]\\) is reduced. A balanced residualization of the controller preserves the controller\u0026rsquo;s steady state gain and would not need to be scaled again. Reductions via truncation and optimal Hankel norm approximation techniques, however, lose the steady-state gain and reduced controllers would need to be re-scaled to match \\(T_{\\text{ref}}(0)\\) the full order controller \\([K_1\\ K_2]\\) is reduced without first scaling the prefilter. In which case, scaling is done after reduction. A larger scaling is generally required for the truncated and optimal Hankel norm approximated controllers and this gives poorer model matching at other frequencies. In both cases, the balanced residualization is preferred.\nReduction of Unstable Models Balanced truncation, balanced residualization and optimal Hankel norm approximation only apply to stable models. In this section we briefly present two approaches for reducing the order of an unstable model.\nStable Part Model Reduction The unstable model can be first decomposed into its stable and anti-stable parts:\n\\begin{equation} G(s) = G_u(s) + G_s(s) \\end{equation}\nwhere \\(G_u(s)\\) has all its poles in the closed right-half plane and \\(G_s(s)\\) has all its poles in the open left-half plane. Balanced truncation, balanced residualization or optimal Hankel norm approximation can then be applied to the stable part \\(G_s(s)\\) to find a reduced order approximation \\(G_{sa}(s)\\). This is then added to the anti-stable part to give\n\\begin{equation} G_a(s) = G_u(s) + G_{sa}(s) \\end{equation}\nas an approximation to the full order model \\(G(s)\\).\nCoprime Factor Model Reduction The coprime factors of a transfer function \\(G(s)\\) are stable, and therefore we could reduce the order of these factors using balanced truncation, balanced residualization or optimal Hankel norm approximation:\n Let \\(G(s) = M^{-1}(s) N(s)\\), where \\(M(s)\\) and \\(N(s)\\) are stable left-coprime factors of \\(G(s)\\) Approximate \\([N\\ M]\\) of degree \\(n\\) by \\([N_a \\ M_a]\\) of degree \\(k\u0026lt;n\\), using balanced truncation, balanced residualization or optimal Hankel norm approximation Realize the reduced order transfer function \\(G_a(s)\\), or degree \\(k\\), by \\(G_a(s) = M_a^{-1}(s) N_a(s)\\) Theorem Let \\((N,M)\\) be a normalized left-coprime factorization of \\(G(s)\\) of degree \\(n\\). Let \\([N_a,\\ M_a]\\) be a degree \\(k\\) balanced truncation of \\([N\\ M]\\) which has Hankel singular values \\(\\sigma_1 \\ge \\sigma_2 \\ge \\dots \\ge \\sigma_k \\ge \\sigma_{k+1} \\ge \\dots \\ge \\sigma_n \u0026gt; 0\\). Then \\((N_a, M_a)\\) is a normalized left-coprime factorization of \\(G_a = M_a^{-1} N_a\\), and \\([N_a,\\ M_a]\\) has Hankel singular values \\(\\sigma_1, \\sigma_2, \\dots, \\sigma_k\\).\nConclusion We have presented and compared three main methods for model reduction based on balanced realizations: balanced truncation, balanced residualization and optimal Hankel norm approximation.\nResidualization, unlike truncation and optimal Hankel norm approximation, preserves the steady-state gain of the system, and like truncation, it is simple and computationally inexpensive. It is observed that truncation and optimal Hankel norm approximation perform better at high frequencies, where residualization performs better at low and medium frequencies, i.e. up to the critical frequencies.\nThus for plant model reduction, where models are not accurate at high frequencies to start with, residualization would seem to be a better option. Further, if the steady state gains are to be kept unchanged, truncated and optimal Hankel norm approximated systems require scaling, which may result in large errors. In such a case, too, residualization would be preferred choice.\nFor controller reduction, we have shown in a two degrees-of-freedom example, the importance of scaling and steady-state gain matching.\nIn general, steady-state gain matching may not be crucial, but the matching should usually be good near the desired closed-loop bandwidth. Balanced residualization has been seen to perform close to the full order system in this frequency range. Good approximation at high frequencies may also sometimes be desired. In such a case, using truncation or optimal Hankel norm approximation with appropriate frequency weightings may yield better results.\nBibliography Skogestad, S., \u0026amp; Postlethwaite, I., Multivariable feedback control: analysis and design (2007), : John Wiley. ↩\n","permalink":"/book/skogestad07_multiv_feedb_contr/","tags":null,"title":"Multivariable feedback control: analysis and design"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Interferometric characterization of rotation stages for x-ray nanotomography Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution An instrument for 3d x-ray nano-imaging ","permalink":"/zettels/nano_active_stabilization_system/","tags":null,"title":"Nano Active Stabilization System"},{"categories":null,"contents":" Tags Stewart Platforms, Flexible Joints Reference (Katsushi Furutani {\\it et al.}, 2004) Author(s) Furutani, K., Suzuki, M., \u0026amp; Kudoh, R. Year 2004 Lever mechanism to amplify the motion of piezoelectric stack actuators Use of flexure joints Eddy current displacement sensors for control (decentralized) Isotropic performance (cubic configuration even if not said so) Possible sources of error:\n position error of the link ends in assembly =\u0026gt; simulation of position error and it is not significant Inaccurate modelling of the links insufficient generative force unwanted deformation of the links To minimize the errors, a calibration is done between the required leg length and the wanted platform pose. Then, it is fitted with 4th order polynomial and included in the control architecture.\nBibliography Furutani, K., Suzuki, M., \u0026amp; Kudoh, R., Nanometre-cutting machine using a stewart-platform parallel mechanism, Measurement Science and Technology, 15(2), 467–474 (2004). http://dx.doi.org/10.1088/0957-0233/15/2/022 ↩\n","permalink":"/paper/furutani04_nanom_cuttin_machin_using_stewar/","tags":null,"title":"Nanometre-cutting machine using a stewart-platform parallel mechanism"},{"categories":null,"contents":" Tags Sensor Fusion, Force Sensors Reference (Fleming, 2010) Author(s) Fleming, A. Year 2010 Summary:\n The noise generated by a piezoelectric force sensor is much less than a capacitive sensor Dynamical model of a piezoelectric stack actuator and piezoelectric force sensor Noise of a piezoelectric force sensor IFF with a piezoelectric stack actuator and piezoelectric force sensor A force sensor is used as a displacement sensor below the frequency of the first zero Sensor fusion architecture with a capacitive sensor and a force sensor and using complementary filters Virtual sensor fusion architecture (called low-frequency bypass) Analog implementation of the control strategies to avoid quantization noise, finite resolution and sampling delay Model of a multi-layer monolithic piezoelectric stack actuator \n Figure 1: Schematic of a multi-layer monolithic piezoelectric stack actuator model\n The actuator experiences an internal stress in response to an applied voltage. This stress is represented by the voltage dependent force \\(F_a\\) and is related to free displacement by \\[ \\Delta L = \\frac{F_a}{k_a} \\]\n \\(\\Delta L\\) is the change in actuator length in [m] \\(k_a\\) is the actuator stiffness in [N/m] The developed force \\(F_a\\) is related to the applied voltage by: \\[ \\Delta L = d_{33} n V_a \\]\n \\(d_{33}\\) is the piezoelectric strain constant in [m/V] \\(n\\) is the number of layers \\(V_a\\) is the applied voltage in [V] Combining the two equations, we obtain: \\[ F_a = d_{33} n k_a V_a \\]\nThe ratio of the developed force to applied voltage is \\(d_{33} n k_a\\) in [N/V]. We denote this constant by \\(g_a\\) and: \\[ F_a = g_a V_a, \\quad g_a = d_{33} n k_a \\]\nDynamics of a piezoelectric force sensor Piezoelectric force sensors provide a high sensitivity and bandwidth with low noise at high frequencies.\nIf a single wafer of piezoelectric material is sandwiched between the actuator and platform: \\[ D = d_{33} T \\]\n \\(D\\) is the amount of generated charge per unit area in \\([C/m^2]\\) \\(T\\) is the stress in \\([N/m^2]\\) \\(d_{33}\\) is the piezoelectric strain constant in \\([m/V] = [C/N]\\) The generated charge is then \\[ q = d_{33} F_s \\]\nIf an n-layer piezoelectric transducer is used as a force sensor, the generated charge is then: \\[ q = n d_{33} F_s \\]\n We can use a charge amplifier to measure the force \\(F_s\\).\n Figure 2: Electrical model of a piezoelectric force sensor is shown in gray. Developed charge \\(q\\) is proportional to the strain and hence the force experienced by the sensor. Op-amp charge amplifier produces an output voltage \\(V_s\\) equal to \\(-q/C_s\\)\n The output voltage \\(V_s\\) is equal to \\[ V_s = -\\frac{q}{C_s} = -\\frac{n d_{33}F_s}{C_s} \\] that is, the scaling between the force and voltage is \\(-\\frac{n d_{33}F_s}{C_s}\\ [V/N]\\) .\n We can also use a voltage amplifier. In that case, the generated charge is deposited on the transducer\u0026rsquo;s internal capacitance.\nThe open-circuit voltage of a piezoelectric force sensor is: \\[ V_s = \\frac{n d_{33} F_s}{C} \\]\n \\(C\\) is the transducer capacitance defined by \\(C = n \\epsilon_T A / h\\) in [F] \\(A\\) is the area in \\([m^2]\\) \\(h\\) is the layer thickness in [m] \\(\\epsilon_T\\) is the dielectric permittivity under a constant stress in \\([F/m]\\) We obtain \\[ V_s = g_s F_s, \\quad g_s = \\frac{n d_{33}}{C} \\]\nNoise of a piezoelectric force sensor As piezoelectric sensors have a capacitive source impedance, the sensor noise density \\(N_{V_s}(\\omega)\\) is primarily due to current noise \\(i_n\\) reacting the capacitive source impedance: \\[ N_{V_s}(\\omega) = i_n \\frac{1}{C \\omega} \\]\n \\(N_{V_s}\\) is the measured noise in \\(V/\\sqrt{\\text{Hz}}\\) \\(i_n\\) is the current noise in \\(A/\\sqrt{\\text{Hz}}\\) \\(C\\) is the capacitance of the piezoelectric in \\(F\\) The current noise density of a general purpose LM833 FET-input op-amp is \\(0.5\\ pA/\\sqrt{\\text{Hz}}\\). The capacitance of a piezoelectric stack is typically between \\(1 \\mu F\\) and \\(100 \\mu F\\).\nBibliography Fleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422 ↩\nBacklinks Actuators Force Sensors ","permalink":"/paper/fleming10_nanop_system_with_force_feedb/","tags":null,"title":"Nanopositioning system with force feedback for high-performance tracking and vibration control"},{"categories":null,"contents":" Tags Sensor Fusion Reference (Abu Sebastian \u0026amp; Angeliki Pantazi, 2012) Author(s) Sebastian, A., \u0026amp; Pantazi, A. Year 2012 Bibliography Sebastian, A., \u0026amp; Pantazi, A., Nanopositioning with multiple sensors: a case study in data storage, IEEE Transactions on Control Systems Technology, 20(2), 382–394 (2012). http://dx.doi.org/10.1109/tcst.2011.2177982 ↩\n","permalink":"/paper/sebastian12_nanop_with_multip_sensor/","tags":null,"title":"Nanopositioning with multiple sensors: a case study in data storage"},{"categories":null,"contents":" Tags Stewart Platforms, Reference Books Reference (Taghirad, 2013) Author(s) Taghirad, H. Year 2013 Introduction \nThis book is intended to give some analysis and design tools for the increase number of engineers and researchers who are interested in the design and implementation of parallel robots. A systematic approach is presented to analyze the kinematics, dynamics and control of parallel robots. To define the motion characteristics of such robots, it is necessary to represent 3D motion of the robot moving platform with respect to a fixed coordinate. This issue leads to the requirements for 3D representation of position, orientation and motion of bodies in space. In chapter sec:motion_representation, such representation are introduced with emphasis on screw coordinates, which makes the representation of the general motion of the robot much easier to follow.\nKinematic analysis refers to the study of robot motion geometry without considering the forces and torques that cause the motion. In this analysis (chapter sec:kinematics), the relation between the geometrical parameters of the manipulator and the final motion of the moving platform is derived and analyzed.\nIn Chapter sec:jacobian, the kinematics analysis of robot manipulators is further examined beyond static positioning. Jacobian analysis not only reveals the relation between the joint variable velocities of a parallel manipulator and the moving platform linear and angular velocities, but also constructs the transformation needed to find the actuator forces from the forces and moments acting on the moving platform. A systematic means to perform Jacobian analysis of parallel manipulators is given in this chapter.\nDynamic analysis of parallel manipulators presents an inherent complexity due to their closed-loop structure and kinematic constraints. Nevertheless, dynamic modeling is quite important for the control, in particular because parallel manipulators are preferred in applications where precise positioning and suitable dynamic performance under high loads are the prime requirements. In Chapter sec:dynamics, the dynamic analysis of such robots is examined through three methods, namely the Newton-Euler principle of virtual work and Lagrange formations. Furthermore, a method is presented in this chapter to formulate the dynamic equation of parallel robots into closed form, by which the dynamic matrices are more tractable, and dynamics verification becomes feasible.\nThe control of parallel robots is elaborated in the last two chapters, in which both the motion and force control are covered.\nMotion Representation \nSpatial Motion Representation Six independent parameters are sufficient to fully describe the spatial location of a rigid body.\nConsider a rigid body in a spatial motion as represented in Figure fig:rigid_body_motion. Let us define:\n A fixed reference coordinate system \\((x, y, z)\\) denoted by frame \\(\\{\\bm{A}\\}\\) whose origin is located at point \\(O_A\\) A moving coordinate system \\((u, v, z)\\) denoted by frame \\(\\{\\bm{B}\\}\\) attached to the rigid body at point \\(O_B\\) The absolute position of point \\(P\\) of the rigid body can be constructed from the relative position of that point with respect to the moving frame \\(\\{\\bm{B}\\}\\), and the position and orientation of the moving frame \\(\\{\\bm{B}\\}\\) with respect to the fixed frame \\(\\{\\bm{A}\\}\\).\n\n Figure 1: Representation of a rigid body spatial motion\n Position of a point The position of a point \\(P\\) with respect to a frame \\(\\{\\bm{A}\\}\\) can be described by a \\(3 \\times 1\\) position vector. The name of the frame is usually added as a leading superscript: \\({}^A\\bm{P}\\) which reads as vector \\(\\bm{P}\\) in frame \\(\\{\\bm{A}\\}\\).\n\\begin{equation} \\tcmbox{{}^A\\bm{P} = \\begin{bmatrix} P_x\\ P_y\\ P_z \\end{bmatrix}} \\end{equation}\nOrientation of a Rigid Body The orientation of the whole rigid body is the same for all its points (by definition). Hence, representation of the orientation of a rigid body can be viewed as that for the orientation of a moving frame attached to the rigid body. It can be represented in several different ways: the rotation matrix, the screw axis representation and Euler angles are common descriptions.\nRotation Matrix We consider a rigid body that has been exposed to a pure rotation. Its orientation has changed from a state represented by frame \\(\\{\\bm{A}\\}\\) to its current orientation represented by frame \\(\\{\\bm{B}\\}\\) (Figure 2).\nA \\(3 \\times 3\\) rotation matrix \\({}^A\\bm{R}_B\\) is defined by\n\\begin{equation} \\tcmbox{{}^A\\bm{R}_B = \\left[ {}^A\\hat{\\bm{x}}_B | {}^A\\hat{\\bm{y}}_B | {}^A\\hat{\\bm{z}}_B \\right] = \\begin{bmatrix} u_{x} \u0026amp; v_{x} \u0026amp; z_{x} \\\\\\\nu_{y} \u0026amp; v_{y} \u0026amp; z_{y} \\\\\\\nu_{z} \u0026amp; v_{z} \u0026amp; z_{z} \\end{bmatrix}} \\end{equation}\nin which \\({}^A\\hat{\\bm{x}}_B, {}^A\\hat{\\bm{y}}_B\\) and \\({}^A\\hat{\\bm{z}}_B\\) are the Cartesian unit vectors of frame \\(\\{\\bm{B}\\}\\) represented in frame \\(\\{\\bm{A}\\}\\).\n\\begin{align*} {}^A\\hat{\\bm{x}}_B \u0026amp;= {}^A\\hat{u} = u_x \\hat{i} + u_y \\hat{j} + u_z \\hat{k} \\\\\\\n{}^A\\hat{\\bm{y}}_B \u0026amp;= {}^A\\hat{v} = v_x \\hat{i} + v_y \\hat{j} + v_z \\hat{k} \\\\\\\n{}^A\\hat{\\bm{z}}_B \u0026amp;= {}^A\\hat{w} = w_x \\hat{i} + w_y \\hat{j} + w_z \\hat{k} \\end{align*}\nThe nine elements of the rotation matrix can be simply represented as the projections of the Cartesian unit vectors of frame \\(\\{\\bm{B}\\}\\) on the unit vectors of frame \\(\\{\\bm{A}\\}\\).\n\n Figure 2: Pure rotation of a rigid body\n The rotation matrix has a number of properties linking each of its nine elements:\n Orthonormality: the rotation matrix is an orthonormal matrix Transposition: \\({}^B\\bm{R}_A = {}^A\\bm{R}_B^{T}\\) Inverse: \\({}^B\\bm{R}_A = {}^A\\bm{R}_B^{-1} = {}^A\\bm{R}_B^{T}\\) Pure Rotation Mapping: Suppose that the point of a rigid body with respect to the moving frame \\(\\{\\bm{B}\\}\\) is given and denoted by \\({}^B\\bm{P}\\) and we wish to express the position of this point with respect to the fixed frame \\(\\{\\bm{A}\\}\\). Consider that the rigid body has been exposed to a pure rotation (\\(\\{\\bm{A}\\}\\) and \\(\\{\\bm{B}\\}\\) are coincident at their origins). Then \\[ \\tcmbox{{}^A\\bm{P} = {}^A\\bm{R}_B {}^B\\bm{P}} \\] Determinant: \\(\\det({}^A\\bm{R}_B) = 1\\) Eigenvalues: The eigenvalues of a rotation matrix \\({}^A\\bm{R}_B\\) are equal to \\(1\\), \\(e^{i\\theta}\\) and \\(e^{-i\\theta}\\) where \\(\\theta\\) is calculated from \\(\\theta = \\cos^{-1}\\frac{\\text{tr}({}^A\\bm{R}_B) - 1}{2}\\). Screw Axis Representation As seen previously, there exist an invariant angle \\(\\theta\\) corresponding to the rotation matrix. This angle is an equivalent angle of rotation. The rotation is a spatial change of orientation about an axis which is called the screw axis. It can be shown that this screw axis is also an invariant of the rotation matrix, it is the eigenvector corresponding to the eigenvalue \\(\\lambda = 1\\).\nThe term screw axis for this axis of rotation has the benefit that a general motion of a rigid body, which is composed as a pure translation and a pure rotation, can be further represented by the same axis of rotation.\nThe screw axis representation has the benefit of using only four parameters to describe a pure rotation. These parameters are the angle of rotation \\(\\theta\\) and the axis of rotation which is a unit vector \\({}^A\\hat{\\bm{s}} = [s_x, s_y, s_z]^T\\).\n\n Figure 3: Pure rotation about a screw axis\n The Rodrigue\u0026rsquo;s rotation formula for spatial rotation of a rigid body gives us the new position \\(\\bm{P}_2\\) of point \\(\\bm{P}_1\\) after a rotation represented by the screw axis \\(\\hat{\\bm{s}}\\) and the angle \\(\\theta\\):\n\\begin{equation} \\tcmbox{\\bm{P}_2 = \\bm{P}_1 \\cos \\theta + (\\hat{\\bm{s}} \\times \\bm{P}_1)\\sin\\theta + (\\bm{P}_1 \\cdot \\hat{\\bm{s}})\\hat{\\bm{s}}} \\end{equation}\nEuler Angles Since rotation in space is a motion with three-degrees-of-freedom, a set of three independent parameters is sufficient to represent the orientation.\nIn an Euler angle representation, three successive rotations about the coordinate system of either fixed or moving frame are used to describe the orientation of the rigid body.\nOne type of Euler angle corresponds to rotations considered with respect to the fixed frame. The representation is called pitch-roll-yaw, or fixed X-Y-Z Euler angles.\nThree other types of Euler angles are consider with respect to a moving frame: they are denoted \\(w-v-u\\), \\(w-v-w\\) and \\(w-u-w\\) Euler angles.\nPitch-Roll-Yaw Euler Angles The pitch, roll and yaw angles are defined for a moving object in space as the rotations along the lateral, longitudinal and vertical axes attached to the moving object.\n\n Figure 4: Definition of pitch, roll and yaw angles on an air plain\n Since all three rotations take place about the axes of a fixed coordinate frame, the resulting rotation matrix is obtained by multiplying the three basic rotation matrices as follows: \\[ \\tcmbox{\\bm{R}_{PRY}(\\alpha, \\beta, \\gamma) = \\bm{R}_z(\\gamma) \\bm{R}_y(\\beta) \\bm{R}_x(\\alpha)} \\]\nTo go from rotation matrix to Pitch-Roll-Yaw angles, the following set of equations can be used:\n\\begin{align*} \\alpha \u0026amp;= \\atan2\\left( \\frac{r_{32}}{\\cos \\beta}, \\frac{r_{33}}{\\cos \\beta} \\right) \\\\\\\n\\beta \u0026amp;= \\atan2\\left( -r_{31}, \\pm \\sqrt{r_{11}^2 + r_{21}^2} \\right) \\\\\\\n\\gamma \u0026amp;= \\atan2\\left( \\frac{r_{21}}{\\cos \\beta}, \\frac{r_{11}}{\\cos \\beta} \\right) \\end{align*}\nu-v-w Euler Angles Another way to describe the orientation of a moving object is to consider three successive rotations about the coordinate axes of the moving frame. Since the rotations do not occur about fixed axes, pre-multiplications of the individual rotation matrices fails to give the correct solution. It can be shown that the resulting matrix can be derived by post-multiplication of the individual rotation matrices as follows: \\[ {}^A\\bm{R}_B(\\alpha, \\beta, \\gamma) = \\bm{R}_u(\\alpha) \\bm{R}_v(\\beta) \\bm{R}_w(\\gamma) \\]\nThe inverse solution for the u-v-w Euler angles is the following (for \\(\\cos \\beta \\ne 0\\)):\n\\begin{align*} \\alpha \u0026amp;= \\atan2\\left( -\\frac{r_{23}}{\\cos \\beta}, \\frac{r_{33}}{\\cos \\beta} \\right) \\\\\\\n\\beta \u0026amp;= \\atan2\\left( r_{13}, \\pm \\sqrt{r_{11}^2 + r_{12}^2} \\right) \\\\\\\n\\gamma \u0026amp;= \\atan2\\left( -\\frac{r_{12}}{\\cos \\beta}, \\frac{r_{11}}{\\cos \\beta} \\right) \\end{align*}\nw-v-w Euler Angles Similarly: \\[ \\bm{R}_{wvw}(\\alpha, \\beta, \\gamma) = \\bm{R}_w(\\alpha) \\bm{R}_v(\\beta) \\bm{R}_w(\\gamma) \\]\nAnd for \\(\\sin\\beta\\ne0\\):\n\\begin{align*} \\alpha \u0026amp;= \\atan2\\left( \\frac{r_{23}}{\\sin\\beta}, \\frac{r_{13}}{\\sin\\beta} \\right) \\\\\\\n\\beta \u0026amp;= \\atan2\\left( \\pm \\sqrt{r_{31}^2 + r_{32}^2}, r_{33} \\right) \\\\\\\n\\gamma \u0026amp;= \\atan2\\left( \\frac{r_{32}}{\\sin\\beta}, -\\frac{r_{31}}{\\sin\\beta} \\right) \\end{align*}\nw-u-w Euler Angles Here, the second rotation is about the \\(u\\) axis: \\[ \\bm{R}_{wuw}(\\alpha, \\beta, \\gamma) = \\bm{R}_w(\\alpha) \\bm{R}_u(\\beta) \\bm{R}_w(\\gamma) \\]\nAnd for \\(\\sin\\beta\\ne0\\):\n\\begin{align*} \\alpha \u0026amp;= \\atan2\\left( \\frac{r_{13}}{\\sin\\beta}, -\\frac{r_{23}}{\\sin\\beta} \\right) \\\\\\\n\\beta \u0026amp;= \\atan2\\left( \\pm \\sqrt{r_{31}^2 + r_{32}^2}, r_{33} \\right) \\\\\\\n\\gamma \u0026amp;= \\atan2\\left( \\frac{r_{31}}{\\sin\\beta}, \\frac{r_{32}}{\\sin\\beta} \\right) \\end{align*}\nNotes about Euler Angles If the Euler angle is given, a unique rotation matrix is determined for the orientation of the rigid body. However, the inverse map is not one-to-one, and at least two Euler angle sets can be found for each orientation.\nIf the Euler angle is chosen for the representation of the orientation, extra care should be taken. From the continuity of the motion, a suitable solution may be chosen, such that no abrupt changes are seen in the variation of the Euler angles in a typical maneuver.\nThe use of rotation matrix to represent the orientation of a rigid body is then generally preferred although there are nine parameters for that description.\nMotion of a Rigid Body Since the relative positions of a rigid body with respect to a moving frame \\(\\{\\bm{B}\\}\\) attached to it is fixed for all time, it is sufficient to know the position of the origin of the frame \\(O_B\\) and the orientation of the frame \\(\\{\\bm{B}\\}\\) with respect to the fixed frame \\(\\{\\bm{A}\\}\\), to represent the position of any point \\(P\\) in the space.\nRepresentation of the position of \\(O_B\\) is uniquely given by the position vector, while orientation of the rigid body is represented in different forms. However, for all possible orientation representation, a rotation matrix \\({}^A\\bm{R}_B\\) can be derived.\n Therefore, the location or pose of a rigid body, can be fully determined by:\n The position vector of point \\(O_B\\) with respect to frame \\(\\{\\bm{A}\\}\\) which is denoted \\({}^A\\bm{P}_{O_B}\\) The orientation of the rigid body, or the moving frame \\(\\{\\bm{B}\\}\\) attached to it with respect to the fixed frame \\(\\{\\bm{A}\\}\\), that is represented by \\({}^A\\bm{R}_B\\). The position of any point \\(P\\) of the rigid body with respect to the fixed frame \\(\\{\\bm{A}\\}\\), which is denoted \\({}^A\\bm{P}\\) may be determined thanks to the Chasles\u0026rsquo; theorem.\n If the pose of a rigid body \\(\\{{}^A\\bm{R}_B, {}^A\\bm{P}_{O_B}\\}\\) is given, then the position of any point \\(P\\) of this rigid body with respect to \\(\\{\\bm{A}\\}\\) is given by:\n\\begin{equation} {}^A\\bm{P} = {}^A\\bm{R}_B {}^B\\bm{P} + {}^A\\bm{P}_{O_B} \\end{equation}\n Homogeneous Transformations To describe general transformations, we introduce the \\(4\\times1\\) homogeneous coordinates, and Eq. eq:chasles_therorem is generalized to\n\\begin{equation} \\tcmbox{{}^A\\bm{P} = {}^A\\bm{T}_B {}^B\\bm{P}} \\end{equation}\nin which \\({}^A\\bm{T}_B\\) is a \\(4\\times4\\) homogeneous transformation matrix.\nHomogeneous Coordinates There are two basic classes of vector quantities, the generalization to homogeneous coordinates of which are different.\nThe first type is called line vector. Line vectors refer to a vector of which its value depends on the line of action, or the position of where it is applied. Examples are the position vector, linear velocity, force vector.\nOn the contrary, there exist quantities likes orientation that hold for the whole rigid body and do not correspond to a point. They can be positioned freely throughout the whole rigid body, without any change in their quantity. These types of vectors are called free vectors.\nFor line vectors, both orientation and translation of the moving frame contribute to their value. Homogeneous coordinate of such vectors is generated by appending \\(1\\) to the three components of that vector:\n\\begin{equation} \\tcmbox{\\bm{V} = \\begin{bmatrix} v_x \\ v_y \\ v_z \\ 1 \\end{bmatrix}} \\end{equation}\nFor free vectors, only the orientation of the moving frame contributes to their value. The homogeneous coordinate is then\n\\begin{equation} \\tcmbox{\\bm{\\omega} = \\begin{bmatrix} \\omega_x \\ \\omega_y \\ \\omega_z \\ 0 \\end{bmatrix}} \\end{equation}\nHomogeneous Transformation Matrix The homogeneous transformation matrix is a \\(4\\times4\\) matrix, defined for the purpose of transformation mapping of a vector in a homogeneous coordinate from one frame to another in a compact form. The matrix is composed of the rotation matrix \\({}^A\\bm{R}_B\\) representing the orientation and the position vector \\({}^A\\bm{P}_{O_B}\\) representing the translation. It is partitioned as follows:\n\\begin{equation} {}^A\\bm{T}_B = \\left[ \\begin{array}{ccc|c} \u0026amp; \u0026amp; \u0026amp; \\\\\\\n\u0026amp; {}^A\\bm{R}_B \u0026amp; \u0026amp; {}^A\\bm{P}_{O_B} \\\\\\\n\u0026amp; \u0026amp; \u0026amp; \\\\\\\n\\hline 0 \u0026amp; 0 \u0026amp; 0 \u0026amp; 1 \\\\\\\n\\end{array} \\right] \\end{equation}\n The homogeneous transformation matrix \\({}^A\\bm{T}_B\\) is a \\(4\\times4\\) matrix operator mapping vector valued quantities represented by \\(4\\times1\\) homogeneous coordinates.:\n\\begin{align*} \\left[ \\begin{array}{c} \\ {}^A\\bm{P} \\ \\ \\hline 1 \\end{array} \\right] \u0026amp; = \\left[ \\begin{array}{ccc|c} \u0026amp; \u0026amp; \u0026amp; \\\\\\\n\u0026amp; {}^A\\bm{R}_B \u0026amp; \u0026amp; {}^A\\bm{P}_{O_B} \\\\\\\n\u0026amp; \u0026amp; \u0026amp; \\\\\\\n\\hline 0 \u0026amp; 0 \u0026amp; 0 \u0026amp; 1 \\\\\\\n\\end{array} \\right] \\left[ \\begin{array}{c} \\ {}^B\\bm{P} \\ \\ \\hline 1 \\end{array} \\right] \\\\\\\n{}^A\\bm{P} \u0026amp;= {}^A\\bm{R}_B {}^B\\bm{P} + {}^A\\bm{P}_{O_B} \\end{align*}\nUsing homogeneous coordinate for a free vector like angular velocity of a rigid body:\n\\begin{align*} \\left[ \\begin{array}{c} \\ {}^A\\bm{\\omega} \\ \\ \\hline 0 \\end{array} \\right] \u0026amp; = \\left[ \\begin{array}{ccc|c} \u0026amp; \u0026amp; \u0026amp; \\\\\\\n\u0026amp; {}^A\\bm{R}_B \u0026amp; \u0026amp; {}^A\\bm{P}_{O_B} \\\\\\\n\u0026amp; \u0026amp; \u0026amp; \\\\\\\n\\hline 0 \u0026amp; 0 \u0026amp; 0 \u0026amp; 1 \\\\\\\n\\end{array} \\right] \\left[ \\begin{array}{c} \\ {}^B\\bm{\\omega} \\ \\ \\hline 0 \\end{array} \\right] \\\\\\\n{}^A\\bm{P} \u0026amp;= {}^A\\bm{R}_B {}^B\\bm{P} \\end{align*}\nScrew Displacement The most general rigid body displacement can be produced by a translation along a line followed by a rotation about the same line. The line is called the screw axis.\nThere exist transformations to from screw displacement notation to the transformation matrix.\nTransformation Arithmetics Consecutive transformations Let us consider the motion of a rigid body described at three locations (Figure fig:consecutive_transformations). Frame \\(\\{\\bm{A}\\}\\) represents the initial location, frame \\(\\{\\bm{B}\\}\\) is an intermediate location, and frame \\(\\{\\bm{C}\\}\\) represents the rigid body at its final location.\n\n Figure 5: Motion of a rigid body represented at three locations by frame \\(\\{\\bm{A}\\}\\), \\(\\{\\bm{B}\\}\\) and \\(\\{\\bm{C}\\}\\)\n Furthermore, suppose the position vector of a point \\(P\\) of the rigid body is given in the final location, that is \\({}^C\\bm{P}\\) is given, and the position of this point is to be found in the fixed frame \\(\\{\\bm{A}\\}\\), that is \\({}^A\\bm{P}\\). Since the locations of the rigid body is known relative to each other, \\({}^C\\bm{P}\\) can be transformed to \\({}^B\\bm{P}\\) using \\({}^B\\bm{T}_C\\): \\[{}^B\\bm{P} = {}^B\\bm{T}_C {}^C\\bm{P}\\]\nNow, \\({}^B\\bm{P}\\) can be transformed into \\({}^A\\bm{P}\\): \\[ {}^A\\bm{P} = {}^A\\bm{T}_B {}^B\\bm{P} \\]\nAnd we have: \\[ {}^A\\bm{P} = {}^A\\bm{T}_B {}^B\\bm{T}_C {}^C\\bm{P} \\]\nFrom which, the consecutive transformation can be defined as follows:\n\\begin{equation} \\tcmbox{{}^A\\bm{T}_C = {}^A\\bm{T}_B {}^B\\bm{T}_C} \\end{equation}\nInverse transformation Direct inversion of the \\(4\\times4\\) homogeneous transfer matrix \\({}^A\\bm{T}_B\\) to obtain \\({}^B\\bm{T}_A\\) might be computationally intensive. It is much easier to use the specific structure of the transfer matrix for inversion.\nTo obtain \\({}^B\\bm{T}_A\\), it is necessary to compute \\({}^B\\bm{R}_A\\) and \\({}^B\\bm{P}_{O_A}\\) from the known \\({}^A\\bm{R}_B\\) and \\({}^A\\bm{P}_{O_B}\\), then\n\\begin{equation*} {}^B\\bm{T}_A = \\left[ \\begin{array}{ccc|c} \u0026amp; \u0026amp; \u0026amp; \\\\\\\n\u0026amp; {}^B\\bm{R}_A \u0026amp; \u0026amp; {}^B\\bm{P}_{O_A} \\\\\\\n\u0026amp; \u0026amp; \u0026amp; \\\\\\\n\\hline 0 \u0026amp; 0 \u0026amp; 0 \u0026amp; 1 \\\\\\\n\\end{array} \\right] \\end{equation*}\nMoreover\n\\begin{align*} {}^B\\bm{R}_A \u0026amp;= {}^A\\bm{R}_B^T \\\\\\\n{}^B\\bm{P}_{O_A} \u0026amp;= {}^B\\bm{R}_A {}^A\\bm{P}_{O_A} = - {}^B\\bm{R}_A {}^A\\bm{P}_{O_B} \\\\\\\n\u0026amp;= -{}^A\\bm{R}_B^T {}^A\\bm{P}_{O_B} \\end{align*}\nHence, the inverse of the transformation matrix can be obtain by\n\\begin{equation} {}^B\\bm{T}_A = {}^A\\bm{T}_B^{-1} = \\left[ \\begin{array}{ccc|c} \u0026amp; \u0026amp; \u0026amp; \\\\\\\n\u0026amp; {}^A\\bm{R}_B^T \u0026amp; \u0026amp; -{}^A \\bm{R}_B^T {}^A\\bm{P}_{O_B} \\\\\\\n\u0026amp; \u0026amp; \u0026amp; \\\\\\\n\\hline 0 \u0026amp; 0 \u0026amp; 0 \u0026amp; 1 \\\\\\\n\\end{array} \\right] \\end{equation}\nKinematics \nIntroduction Kinematic analysis refers to the study of the geometry of motion of a robot, without considering the forces an torques that cause the motion. In this analysis, the relation between the geometrical parameters of the manipulator with the final motion of the moving platform is derived and analyzed.\n A parallel robot is a mechanism with a number of closed kinematic chains, and its moving platform is linked to the base by several independent kinematic chains. Parallel robots for which the number of kinematic chains is equal to the number of degrees-of-freedom of the moving platform are called fully parallel robots.\nIf in addition to this condition, if the type and number of joints at each limb, and the number and location of the actuated joints are identical in all the limbs, such a parallel robot is called symmetric.\nThere are three main cases for fully parallel manipulators. Planar robots with two translation and one rotational degree-of-freedom in the plane. Spatial orientation manipulators with three rotational degrees-of-freedom in space. And a general spatial robot with three translational and three rotational degrees-of-freedom in space.\nIt is known that unlike serial manipulators, inverse kinematic analysis of parallel robots is usually simple and straightforward. In most cases, limb variable may be computed independently using the given pose of the moving platform, and the solution in most cases even for redundant manipulators is uniquely determined. However, forward kinematics of parallel manipulators is generally very complicated, and its solution usually involves systems of nonlinear equations, which are highly coupled and in general have no closed form and unique solution.\nLoop Closure Method A typical parallel manipulator consists of two main bodies. Body \\(A\\) is arbitrary designated as fixed and is called the base, while body \\(B\\) is designated to be movable and is called the moving platform.\nThese two bodies are coupled via \\(n\\) limbs, each attached to points \\(A_i\\) and \\(B_i\\) and called fixed and moving attachment points of the limb \\(i\\).\nAt the displacement level, the forward kinematic problem permits the determination of the actual location or pose of the moving platform relative to the base from a set of joint-position readouts.\nAt the velocity level, the forward kinematic problem refers to the determination of the translational and angular velocities of the moving platform relative to the base, from a set of joint-velocity readouts and for a known configuration.\nTo describe the motion of the moving platform relative to the base, frame \\(\\{\\bm{A}\\}\\) is attached to body \\(A\\) and frame \\(\\{\\bm{B}\\}\\) to body \\(B\\). The pose of the moving platform relative to the base is thus defined by:\n A position vector \\(\\bm{p}\\) which denotes the position vector of the origin of \\(\\{\\bm{B}\\}\\) with respect to frame \\(\\{\\bm{A}\\}\\) A \\(3\\times3\\) rotation matrix \\(R\\) which denotes the rotation of \\(\\{\\bm{B}\\}\\) with respect to \\(\\{\\bm{A}\\}\\) Each limb of a parallel manipulator defines a kinematic loop passing through the origins of frames \\(\\{\\bm{A}\\}\\) and \\(\\{\\bm{B}\\}\\), and through the two limb attachment points \\(A_i\\) and \\(B_i\\).\nAt the displacement level, the closure of each kinematic loop can be express in the vector form as \\[ \\vec{AB} = \\vec{AA_i} + \\vec{A_iB_i} - \\vec{BB_i} \\quad \\text{for } i = 1,2,\\dots,n \\] in which \\(\\vec{AA_i}\\) and \\(\\vec{BB_i}\\) can be easily obtained from the geometry of the attachment points in the base and in the moving platform.\nLet us defined \\(\\bm{a}_i = \\vec{AA_i}\\) in the fixed frame \\(\\{\\bm{A}\\}\\), and \\(\\bm{b}_i = \\vec{BB_i}\\) in the moving frame \\(\\{\\bm{B}\\}\\). Furthermore, \\(\\bm{q}_i = \\vec{A_iB_i}\\) is defined as the limb variable, which indicated the geometry of the limb.\n The loop closure can be written as the unknown pose variables \\(\\bm{p}\\) and \\(\\bm{R}\\), the position vectors describing the known geometry of the base and of the moving platform, \\(\\bm{a}_i\\) and \\(\\bm{b}_i\\), and the limb vector \\(\\bm{q}_i\\)\n\\begin{equation} \\bm{p} = \\bm{a}_i + \\bm{q}_i - \\bm{R} \\bm{b}_i \\quad \\text{for } i=1,2,\\dots,n \\end{equation}\n For an inverse kinematic problem, it is assumed that the moving platform position \\(\\bm{p}\\) and orientation \\(\\bm{R}\\) are given and the problem is to solve the active limb variables. This analysis is usually straightforward and results in unique solution for the limb variables.\nHowever, the inverse solution is not straightforward, and usually numerical methods are used for forward kinematic solution.\nKinematic Analysis of a Stewart-Gough Platform Mechanism Description One frame \\(\\{\\bm{A}\\}\\) is attached to the fixed base and frame \\(\\{\\bm{B}\\}\\) is attached to the moving platform at points \\(O_A\\) and \\(O_B\\) respectively.\nThe number of actuators is equal to the degrees-of-freedom of the manipulator and hence the manipulator is fully parallel.\n Since all the limbs are connected to the moving platform and to the base by spherical joints, no twisting torque can be transmitted and the force acting on each limb is directed along the longitudinal axis of the limb.\n Geometry of the Manipulator The position of the attachment points on the fixed base are denoted by the vectors \\(\\bm{a}_i\\) and the position of moving attachment points are denoted by the vectors \\(\\bm{b}_i\\). The geometry of each limb is described by its length \\(l_i\\) and its direction is denoted by a unit vector \\(\\hat{\\bm{s}}_i\\).\n The position of the point \\(O_B\\) of the moving platform is described by the position vector \\({}^A\\bm{P} = [p_x\\ p_y\\ p_z]^T\\) and orientation of the moving platform is described by the rotation matrix \\({}^A\\bm{R}_B\\) which can by represented by the components of the unit vectors \\(\\hat{\\bm{u}}\\), \\(\\hat{\\bm{v}}\\), \\(\\hat{\\bm{z}}\\) as follows:\n\\begin{equation} ^A\\bm{R}_B = \\begin{bmatrix} u_x \u0026amp; v_x \u0026amp; w_x \\\\\\\nu_y \u0026amp; v_y \u0026amp; w_y \\\\\\\nu_z \u0026amp; v_z \u0026amp; w_z \\\\\\\n\\end{bmatrix} \\end{equation}\n\n Figure 6: Geometry of a Stewart-Gough platform\n The geometry of the manipulator is shown Figure fig:stewart_schematic.\nInverse Kinematics For inverse kinematic analysis, it is assumed that the position \\({}^A\\bm{P}\\) and orientation of the moving platform \\({}^A\\bm{R}_B\\) are given and the problem is to obtain the joint variables \\(\\bm{L} = \\left[ l_1, l_2, l_3, l_4, l_5, l_6 \\right]^T\\).\n From the geometry of the manipulator, one can write:\n\\begin{equation} {}^A \\bm{a}_i + l_i {}^A \\hat{\\bm{s}}_i = {}^A\\bm{P} + {}^A\\bm{b}_i \\end{equation}\nThen, we can find \\(l_i\\) given \\({}^A\\bm{P}\\) and \\({}^A\\bm{R}_B\\):\n\\begin{equation} \\begin{aligned} l_i = \u0026amp;\\Big[ {}^A\\bm{P}^T {}^A\\bm{P} + {}^B\\bm{b}_i^T {}^B\\bm{b}_i + {}^A\\bm{a}_i^T {}^A\\bm{a}_i - 2 {}^A\\bm{P}^T {}^A\\bm{a}_i + \\dots\\\\\\\n\u0026amp;2 {}^A\\bm{P}^T \\left[{}^A\\bm{R}_B {}^B\\bm{b}_i\\right] - 2 \\left[{}^A\\bm{R}_B {}^B\\bm{b}_i\\right]^T {}^A\\bm{a}_i \\Big]^{1/2} \\end{aligned} \\end{equation}\nIf the position and orientation of the platform lie in the feasible workspace, the solution is unique. Otherwise, the solution gives complex numbers.\nForward Kinematics In forward kinematic analysis, it is assumed that the vector of limb lengths \\(\\bm{L}\\) is given and the problem is to find the position \\({}^A\\bm{P}\\) and the orientation \\({}^A\\bm{R}_B\\).\n The size of the problem depends of the representation used for orientation (rotation matrix, Euler angles, \u0026hellip;).\nThe forward kinematic problem is then to solve many highly nonlinear equations that are extremely difficult to solve.\nThe complexity of the problem depends widely on the manipulator architecture and geometry.\nJacobian: Velocities and Static Forces \nIntroduction The Jacobian matrix not only reveals the relation between the joint variable velocities of a parallel manipulator to the moving platform linear and angular velocities, it also constructs the transformation needed to find the actuator forces from the forces and moments acting on the moving platform.\n For specific configurations, local degeneracy can occur and leads to:\n An instantaneous change in the degrees-of-freedom of the system and hence a loss of controllability An important degradation of the natural stiffness that may lead to very high joint forces or torques Therefore, it is very important to identify singular configurations at the design stage to improve the performance.\nAngular and Linear Velocities To determine the absolute linear velocity of a point, the derivative must be calculated relative to a fixed frame. Differentiation of a position vector with respect to a moving frame results in a relative velocity. Therefore, it is necessary to define the arithmetics to transform the relative velocities to the absolute ones.\nAngular Velocity of a Rigid Body Angular velocity is an attribute of a rigid body that describes the rotational motion of the frame \\(\\{\\bm{B}\\}\\) that is attached to the rigid body.\n The angular velocity vector \\(\\bm{\\Omega}\\) describes the instantaneous rotation of frame \\(\\{\\bm{B}\\}\\) with respect to the fixed frame \\(\\{\\bm{A}\\}\\). The direction of \\(\\bm{\\Omega}\\) indicates the instantaneous axis of rotation and its magnitude indicates the speed of rotation.\n The angular velocity vector is related to the screw formalism by equation eq:angular_velocity_vector.\n\\begin{equation} \\tcmbox{\\bm{\\Omega} \\triangleq \\dot{\\theta} \\hat{\\bm{s}}} \\end{equation}\nThe angular velocity can be expressed in any frame. For example \\({}^A\\bm{\\Omega}\\) denotes the angular velocity of the rigid body expressed in the frame \\(\\{\\bm{A}\\}\\) and we have:\n\\begin{equation} \\begin{aligned} ^A \\bm{\\Omega} \u0026amp;= \\Omega_x \\hat{\\bm{x}} + \\Omega_y \\hat{\\bm{y}} + \\Omega_z \\hat{\\bm{z}} \\\\\\\n\u0026amp;= \\dot{\\theta}\\left( s_x \\hat{\\bm{x}} + s_y \\hat{\\bm{y}} + s_z \\hat{\\bm{z}} \\right) \\end{aligned} \\end{equation}\nin which \\(\\Omega_x\\), \\(\\Omega_y\\) and \\(\\Omega_z\\) are the three components of angular velocity of a rigid body expressed in frame \\(\\{\\bm{A}\\}\\).\nLinear Velocity of a Point Linear velocity of a point P can be easily determined by the time derivative of the position vector \\(p\\) of that point with respect to a fixed frame:\n\\begin{equation} v_p = \\dot{p} = \\left( \\dv{p}{t} \\right)_{\\text{fix}} \\end{equation}\nIf the variation of the position vector is determined with respect to a moving frame, we obtain the relative velocity:\n\\begin{equation} v_{\\text{rel}} = \\left( \\pdv{p}{t} \\right)_{\\text{mov}} \\end{equation}\nIn classical mechanics, it is shown that the relation between absolute derivative of any vector to its relative derivative is given by:\n\\begin{equation} \\left( \\dv{(\\cdot)}{t} \\right)_{\\text{fix}} = \\left( \\pdv{(\\cdot)}{t} \\right)_{\\text{mov}} + \\bm{\\Omega} \\times (\\cdot) \\end{equation}\nin which \\(\\bm{\\Omega}\\) denotes the angular velocity of the moving frame with respect to the fixed frame.\nThe term \\(\\bm{\\Omega}\\times(\\cdot)\\) can be written in matrix form:\n\\begin{equation} \\tcmbox{\\left( \\dv{(\\cdot)}{t} \\right)_{\\text{fix}} = \\left( \\pdv{(\\cdot)}{t} \\right)_{\\text{mov}} + \\bm{\\Omega}^\\times(\\cdot)} \\end{equation}\nThe matrix \\(\\bm{\\Omega}^\\times\\) denotes a skew-symmetric matrix defined by:\n\\begin{equation} \\tcmbox{\\bm{\\Omega}^\\times = \\begin{bmatrix} 0 \u0026amp; -\\Omega_z \u0026amp; \\Omega_y \\\\\\\n\\Omega_z \u0026amp; 0 \u0026amp; -\\Omega_x \\\\\\\n-\\Omega_y \u0026amp; \\Omega_x \u0026amp; 0 \\end{bmatrix}} \\end{equation}\nNow consider the general motion of a rigid body shown in Figure fig:general_motion, in which a moving frame \\(\\{\\bm{B}\\}\\) is attached to the rigid body and the problem is to find the absolute velocity of point \\(P\\) with respect to a fixed frame \\(\\{\\bm{A}\\}\\).\n\n Figure 7: Instantaneous velocity of a point \\(P\\) with respect to a moving frame \\(\\{\\bm{B}\\}\\)\n The rigid body perform a general motion which is a combination of a translation, denoted by the vector \\({}^A\\bm{P}_{O_B}\\), and an instantaneous rotation. To determine the velocity of point \\(P\\), we start with the relation between absolute and relative position vectors: \\[ ^A\\bm{P} = {}^A\\bm{P}_{O_B} + {}^A\\bm{R}_B {}^B\\bm{P} \\]\nTo derive the velocity of point \\(P\\), we differentiate with respect to time: \\[ {}^A\\bm{v}_P = {}^A\\bm{v}_{O_B} + {}^A\\dot{\\bm{R}}_B{}^B\\bm{P} + {}^A\\bm{R}_B\\underbrace{{}^B\\bm{v}_P}_{=0} \\]\nThe time derivative of the rotation matrix \\({}^A\\dot{\\bm{R}}_B\\) is:\n\\begin{equation} \\tcmbox{{}^A\\dot{\\bm{R}}_B = {}^A\\bm{\\Omega}^\\times \\ {}^A\\bm{R}_B} \\end{equation}\nAnd we finally obtain equation eq:absolute_velocity_formula.\n \\begin{equation} {}^A\\bm{v}_P = {}^A\\bm{v}_{O_B} + {}^A\\bm{\\Omega}^\\times \\ {}^A\\bm{R}_B {}^B\\bm{P} \\end{equation}\n Screw Coordinates Finite rotation of a rigid body can be expressed as a rotation \\(\\theta\\) about a screw axis \\(\\hat{\\bm{s}}\\). Furthermore, it is shown that the angular velocity of a rigid body is also defined as the rate of instantaneous rotation angle \\(\\dot{\\theta}\\) about the same screw axis \\(\\hat{\\bm{s}}\\).\n The most general rigid-body displacement can be produced by a translation along a line followed by a rotation about the same line. Since this displacement is reminiscent of the displacement of a screw, it is called a screw displacement, and the line of axis is called the screw axis.\n Jacobian Matrices of a Parallel Manipulator Let \\(\\bm{q} = \\left[ q_1, q_2, \\ldots, q_m \\right]^T\\) denote the vector of actuated joint coordinates (linear displacement of an actuator prismatic joint or angular rotation of an actuated revolute joint) and \\(\\bm{\\mathcal{X}} = \\left[ x_1, x_2, \\ldots, x_n \\right]^T\\) denote the vector of moving platform motion variables (position or orientation).\n\\(m\\) denotes the number of actuated joints in the manipulator, \\(n\\) denotes the number of degrees-of-freedom of the manipulator.\nGenerally \\(m \\geq n\\), in which for a fully parallel manipulator \\(m=n\\) and for redundant manipulator \\(m\u0026gt;n\\).\n\\(\\bm{q}\\) and \\(\\bm{\\mathcal{X}}\\) are related through a system of nonlinear algebraic equations representing the kinematic constraints imposed by the limbs, which can be generally written as\n\\begin{equation} f(\\bm{q}, \\bm{\\mathcal{X}}) = 0 \\end{equation}\nWe can differentiate this equation with respect to time and obtain:\n\\begin{equation} \\tcmbox{\\bm{J}_x \\dot{\\bm{\\mathcal{X}}} = \\bm{J}_q \\dot{\\bm{q}}} \\end{equation}\nwhere\n\\begin{equation} \\bm{J}_x = \\pdv{f}{\\bm{\\mathcal{X}}} \\quad \\text{and} \\quad \\bm{J}_q = -\\pdv{f}{\\bm{q}} \\end{equation}\n The general Jacobian matrix is defined as:\n\\begin{equation} \\dot{\\bm{q}} = \\bm{J} \\dot{\\bm{\\mathcal{X}}} \\end{equation}\nFrom equation eq:jacobians, we have:\n\\begin{equation} \\bm{J} = {\\bm{J}_q}^{-1} \\bm{J}_x \\end{equation}\n Velocity Loop Closure The velocity loop closures are used for obtaining the Jacobian matrices in a straightforward manner. Velocity loop closures are derived by direct differentiation of kinematic loop closures.\nKinematic loop closures are: \\[ \\bm{p} = \\bm{a}_i + \\bm{d}_i - \\bm{R} \\bm{b}_i \\quad \\text{for}\\ i = 1, \\ldots, m \\]\nwith\n \\(\\bm{p}\\) the position vector of the moving platform w.r.t. frame \\(\\{\\bm{A}\\}\\) \\(\\bm{R}\\) the rotation matrix of the moving platform \\(\\bm{a}_i\\) the position vector of the \\(i\\)\u0026lsquo;th limb of the fixed platform w.r.t. frame \\(\\{\\bm{A}\\}\\) \\(\\bm{b}_i\\) the position vector of the \\(i\\)\u0026lsquo;th limb of the moving platform w.r.t. frame \\(\\{\\bm{B}\\}\\) \\(\\bm{d}_i\\) the limb vector By taking the time derivative, we obtain the following Velocity Loop Closure:\n\\begin{equation} \\tcmbox{\\dot{\\bm{p}} = \\dot{\\bm{d}_i} - \\bm{\\omega} \\times \\bm{R} \\bm{b}_i \\quad \\text{for}\\ i = 1, \\ldots, m} \\end{equation}\nSingularity Analysis of Parallel Manipulators The singularities occur when:\n \\(\\bm{J}_q\\) is rank deficient (Inverse kinematic singularity) \\(\\bm{J}_x\\) is rank deficient (Forward kinematic singularity) Inverse Kinematic Singularity Inverse kinematic singularity happens when \\(\\bm{J}_q\\) (\\(m \\times m\\) matrix) is rank deficient (\\(\\det \\bm{J}_q = 0\\)).\nThe corresponding configurations are located at the boundary of the manipulator workspace or on the internal boundaries between sub-regions of the workspace.\nIn such cases, there exist nonzero vectors \\(\\dot{\\bm{q}}\\) which correspond to a null Cartesian twist vector \\(\\dot{\\bm{\\mathcal{X}}}\\). In other words, infinitesimal motion of the moving platform along certain directions cannot be accomplished. The manipulator looses one or more degrees-of-freedom.\nForward Kinematic Singularity Forward kinematic singularity happens when \\(\\bm{J}_x\\) (\\(m \\times n\\) matrix) is rank deficient (\\(\\det({\\bm{J}_x}^T \\bm{J}_x) = 0\\)). If the manipulator is not redundantly actuated (\\(m=n\\)), then the Jacobian matrix \\(\\bm{J}_x\\) is square and the forward kinematic singularity happens when \\(\\det \\bm{J}_x = 0\\).\nThe degeneracy occur inside the manipulator\u0026rsquo;s Cartesian workspace and corresponds to the set of configurations for which two different branches of forward kinematic problem meet.\nThere exist nonzero cartesian twist vectors \\(\\dot{\\bm{\\mathcal{X}}}\\) that are mapped into a vanishing actuator velocity vector \\(\\dot{\\bm{\\mathcal{q}}}\\).\nThe corresponding configuration will be one in which an infinitesimal motion of the platform is possible even if the actuator are locked. The manipulator gains one or several degrees-of-freedom and its stiffness vanishes in the corresponding direction(s).\nJacobian Analysis of the Stewart-Gough Platform Velocity Loop Closure The input joint rate is denoted by \\(\\dot{\\bm{\\mathcal{L}}} = [ \\dot{l}_1, \\dot{l}_2, \\dot{l}_3, \\dot{l}_4, \\dot{l}_5, \\dot{l}_6 ]^T\\), and the output twist vector is denoted by \\(\\dot{\\bm{\\mathcal{X}}} = [^A\\bm{v}_p, {}^A\\bm{\\omega}]^T\\).\nThe jacobian matrix can be derived by formulating a velocity loop closure equation of each limb. The loop closure equations for each limb are:\n\\begin{equation} {}^A\\bm{P} + {}^A\\bm{R}_B {}^B\\bm{b}_i = l_i {}^A\\hat{\\bm{s}}_i + {}^A\\bm{a}_i \\end{equation}\nBy differentiate this with respect to time:\n\\begin{equation} {}^A\\bm{v}_p + {}^A \\dot{\\bm{R}}_B {}^B\\bm{b}_i = \\dot{l}_i {}^A\\hat{\\bm{s}}_i + l_i {}^A\\dot{\\hat{\\bm{s}}}_i \\end{equation}\nMoreover, we have:\n \\({}^A\\dot{\\bm{R}}_B {}^B\\bm{b}_i = {}^A\\bm{\\omega} \\times {}^A\\bm{R}_B {}^B\\bm{b}_i = {}^A\\bm{\\omega} \\times {}^A\\bm{b}_i\\) in which \\({}^A\\bm{\\omega}\\) denotes the angular velocity of the moving platform expressed in the fixed frame \\(\\{\\bm{A}\\}\\). \\(l_i {}^A\\dot{\\hat{\\bm{s}}}_i = l_i \\left( {}^A\\bm{\\omega}_i \\times \\hat{\\bm{s}}_i \\right)\\) in which \\({}^A\\bm{\\omega}_i\\) is the angular velocity of limb \\(i\\) express in fixed frame \\(\\{\\bm{A}\\}\\). Then, the velocity loop closure eq:loop_closure_limb_diff simplifies to \\[ {}^A\\bm{v}_p + {}^A\\bm{\\omega} \\times {}^A\\bm{b}_i = \\dot{l}_i {}^A\\hat{\\bm{s}}_i + l_i ({}^A\\bm{\\omega}_i \\times \\hat{\\bm{s}}_i) \\]\nBy dot multiply both side of the equation by \\(\\hat{\\bm{s}}_i\\): \\[ \\hat{\\bm{s}}_i {}^A\\bm{v}_p + ({}^A\\bm{b}_i \\times \\hat{\\bm{s}}_i) {}^A\\bm{\\omega} = \\dot{l}_i \\]\nWe then omit the superscript \\(A\\) and we can rearrange the 6 equations into a matrix form\n\\begin{equation} \\tcmbox{\\dot{\\bm{\\mathcal{L}}} = \\bm{J} \\dot{\\bm{\\mathcal{X}}}} \\end{equation}\n \\begin{equation} \\bm{J} = \\begin{bmatrix} {\\hat{\\bm{s}}_1}^T \u0026amp; (\\bm{b}_1 \\times \\hat{\\bm{s}}_1)^T \\\\\\\n{\\hat{\\bm{s}}_2}^T \u0026amp; (\\bm{b}_2 \\times \\hat{\\bm{s}}_2)^T \\\\\\\n{\\hat{\\bm{s}}_3}^T \u0026amp; (\\bm{b}_3 \\times \\hat{\\bm{s}}_3)^T \\\\\\\n{\\hat{\\bm{s}}_4}^T \u0026amp; (\\bm{b}_4 \\times \\hat{\\bm{s}}_4)^T \\\\\\\n{\\hat{\\bm{s}}_5}^T \u0026amp; (\\bm{b}_5 \\times \\hat{\\bm{s}}_5)^T \\\\\\\n{\\hat{\\bm{s}}_6}^T \u0026amp; (\\bm{b}_6 \\times \\hat{\\bm{s}}_6)^T \\end{bmatrix} \\end{equation}\n\\(\\bm{J}\\) then depends only on:\n \\(\\hat{\\bm{s}}_i\\) the orientation of the limbs \\(\\bm{b}_i\\) the position of the joints with respect to \\(O_B\\) and express in \\(\\{\\bm{A}\\}\\). Singularity Analysis It is of primary importance to avoid singularities in a given workspace. To study the singularity configurations of the Stewart-Gough platform, we consider the Jacobian matrix determined with the equation eq:jacobian_formula_stewart.\nFrom equation eq:jacobians, it is clear that for the Stewart-Gough platform, \\(\\bm{J}_q = \\bm{I}\\) and \\(\\bm{J}_x = \\bm{J}\\). Hence the manipulator has no inverse kinematic singularities within the manipulator workspace, but may possess forward kinematic singularity when \\(\\bm{J}\\) becomes rank deficient. This may occur when \\[ \\det \\bm{J} = 0 \\]\nStatic Forces in Parallel Manipulators The relation between the forces/moments applied to the environment at the point of contact and the actuator forces/torques is determined and analyzed in the study of static force analysis.\nIt is assumed that the manipulator is at a static equilibrium, and that the actuator forces required to produce the desired contact forces are determined.\nTwo methods are usually applied: the free-body diagram and the principle of virtual work.\nIn the free-body diagram approach, the actuator forces are determined to produce desired contact forces/moments as well as the internal and interacting forces/torques applied at the limbs. The analysis of such forces is essential in the design of a manipulator to determine the stresses and deflection of each link and joint.\nHowever, if only the actuator forces are desired to be determined, the principle of virtual work is more efficient and computationally less expensive.\nVirtual Work Approach A virtual displacement for a parallel manipulator refers to an infinitesimal change in the general displacement of the moving platform as a result of any arbitrary infinitesimal changes in the joint variables at a given instant of time.\nThe virtual displacement of the joints can be written as \\(\\delta \\bm{q} = [\\delta q_1, \\delta q_2, \\cdots, \\delta q_m]^T\\) and \\(\\delta \\bm{\\mathcal{X}} = [\\delta x, \\delta y, \\delta z, \\delta \\theta_x, \\delta \\theta_y, \\delta \\theta_z ]^T\\) denotes the virtual displacement of a contacting point of the moving platform. \\([\\delta \\theta_x, \\delta \\theta_y, \\delta \\theta_z ]^T = \\delta \\theta \\hat{\\bm{s}}\\) are the orientation variables represented by screw coordinates.\nLet the vector of actuator forces be denoted by \\(\\bm{\\tau} = [\\tau_1, \\tau_2, \\cdots, \\tau_m]^T\\), and the external forces/torque acting on the contact point of the moving platform denoted by a wrench in a screw coordinate as \\(\\bm{\\mathcal{F}} = [\\bm{f}, \\bm{n}]^T\\) in which \\(\\bm{f} = [f_x, f_y, f_z]^T\\) denotes the external forces, and \\(\\bm{n} = [n_x, n_y, n_z]^T\\) denotes the external torque action on the moving platform at the point of contact to the environment.\nWe assume that the frictional forces acting on the joints are negligible, and also that the gravitational forces of the limb links are much smaller than the interacting force of the moving platform to the environment. The principle of virtual work states that the total virtual work, \\(\\delta W\\), done by all actuators and external forces is equal to zero:\n\\begin{equation} \\tcmbox{\\delta W = \\bm{\\tau}^T \\delta \\bm{q} - \\bm{\\mathcal{F}}^T \\delta \\bm{\\mathcal{X}} = 0} \\end{equation}\nFurthermore, from the definition of the Jacobian, the virtual displacements \\(\\delta \\bm{q}\\) and \\(\\delta \\bm{\\mathcal{X}}\\) are related by the Jacobian: \\[ \\delta \\bm{q} = \\bm{J} \\cdot \\delta \\bm{\\mathcal{X}} \\]\nWe then have \\(\\left( \\bm{\\tau}^T \\bm{J} - \\bm{\\mathcal{F}}^T \\right) \\delta \\bm{\\mathcal{X}} = 0\\) that holds for any arbitrary virtual displacement \\(\\delta \\bm{\\mathcal{X}}\\), hence \\[ \\bm{\\tau}^T \\bm{J} - \\bm{\\mathcal{F}}^T = 0 \\]\n We obtain that the Jacobian matrix constructs the transformation needed to find the actuator forces \\(\\bm{\\tau}\\) from the wrench acting on the moving platform \\(\\bm{\\mathcal{F}}\\):\n\\begin{equation} \\bm{\\mathcal{F}} = \\bm{J}^T \\bm{\\tau} \\end{equation}\n Static Forces of the Stewart-Gough Platform As shown in Figure fig:stewart_static_forces, the twist of moving platform is described by a 6D vector \\(\\dot{\\bm{\\mathcal{X}}} = \\left[ {}^A\\bm{v}_P \\ {}^A\\bm{\\omega} \\right]^T\\), in which \\({}^A\\bm{v}_P\\) is the velocity of point \\(O_B\\), and \\({}^A\\bm{\\omega}\\) is the angular velocity of moving platform.\n\n Figure 8: Free-body diagram of forces and moments action on the moving platform and each limb of the Stewart-Gough platform\n Consider an external wrench generated by the manipulator and applied to the environment at the point \\(O_B\\) denoted by \\(\\bm{\\mathcal{F}} = [\\bm{f} \\ \\bm{n}]^T\\).\nIt is assumed that no external forces are applied to the limbs except the actuator forces. Therefore, the static force can be assumed to be along the limb axis \\(\\hat{\\bm{s}}_i\\), and the limb is subject to a tension/compression force \\(f_i\\).\nAt static equilibrium, the summation of all acting forces on the moving platform shall be zero, therefore\n\\begin{equation} -\\bm{f} + \\sum_{i=1}^6 f_i \\hat{\\bm{s}}_i = 0 \\end{equation}\nin which \\(-\\bm{f}\\) if the external force applied to the moving platform from the environment.\nThe summation of moments contributed by all forces acting on the moving platform about \\(O_B\\) is as follows:\n\\begin{equation} -\\bm{n} + \\sum_{i=1}^6 b_i \\times f_i \\hat{\\bm{s}}_i = 0 \\end{equation}\nin which \\(-n\\) is the external moment applied to the moving platform by the environment, and \\(b_i\\) is the position vector from the point \\(O_B\\) to the attached point \\(B_i\\) on the moving platform.\nWriting the two equations together in a matrix form results in\n\\begin{equation} \\begin{bmatrix} \\hat{\\bm{s}}_1 \u0026amp; \\hat{\\bm{s}}_2 \u0026amp; \\cdots \u0026amp; \\hat{\\bm{s}}_6 \\\\\\\n\\bm{b}_1 \\times \\hat{\\bm{s}}_1 \u0026amp; \\bm{b}_2 \\times \\hat{\\bm{s}}_2 \u0026amp; \\cdots \u0026amp; \\bm{b}_6 \\times \\hat{\\bm{s}}_6 \\end{bmatrix} \\cdot \\begin{bmatrix} f_1 \\ f_2 \\ \\vdots \\ f_6 \\end{bmatrix} = \\begin{bmatrix} \\bm{f} \\ \\bm{n} \\end{bmatrix} \\end{equation}\nThere we can recognize the transpose of the Jacobian matrix:\n\\begin{equation} \\tcmbox{\\bm{\\mathcal{F}} = \\bm{J}^T \\bm{\\tau}} \\end{equation}\nin which \\(\\bm{\\tau} = [f_1, f_2, \\cdots, f_6]^T\\) is the vector of actuator forces, and \\(\\bm{\\mathcal{F}} = [\\bm{f}, \\bm{n}]^T\\) is the 6D wrench applied by the manipulator to the environment.\nStiffness Analysis of Parallel Manipulators Here, we focus on the deflections of the manipulator moving platform that are the result of the applied wrench to the environment. The amount of these deflections are a function of the applied wrench as well as the manipulator structural stiffness. Thus, the stiffness of a manipulator has a direct impact on its overall positioning accuracy if the manipulator is in contact with a stiff environment.\nStiffness and Compliance Matrices The relation between the applied actuator force \\(\\tau_i\\) and the corresponding small deflection \\(\\Delta q_i\\) along the applied force axis can be approximated as a linear function:\n\\begin{equation} \\tcmbox{\\tau_i = k_i \\cdot \\Delta q_i} \\end{equation}\nin which \\(k_i\\) denotes the stiffness constant of the actuator.\nRe-writing the equation eq:stiffness_actuator for all limbs in a matrix form result in\n\\begin{equation} \\tcmbox{\\bm{\\tau} = \\mathcal{K} \\cdot \\Delta \\bm{q}} \\end{equation}\nin which \\(\\bm{\\tau}\\) is the vector of actuator forces, and \\(\\Delta \\bm{q}\\) corresponds to the actuator deflections. \\(\\mathcal{K} = \\text{diag}\\left[ k_1 \\ k_2 \\dots k_m \\right]\\) is an \\(m \\times m\\) diagonal matrix composed of the actuator stiffness constants.\nWriting the Jacobian relation given in equation eq:jacobian_disp for infinitesimal deflection read\n\\begin{equation} \\Delta \\bm{q} = \\bm{J} \\cdot \\Delta \\bm{\\mathcal{X}} \\end{equation}\nin which \\(\\Delta \\bm{\\mathcal{X}} = [\\Delta x\\ \\Delta y\\ \\Delta z\\ \\Delta\\theta x\\ \\Delta\\theta y\\ \\Delta\\theta z]\\) is the infinitesimal linear and angular deflection of the moving platform.\nFurthermore, rewriting the Jacobian as the projection of actuator forces to the moving platform eq:jacobian_forces gives\n\\begin{equation} \\bm{\\mathcal{F}} = \\bm{J}^T \\bm{\\tau} \\end{equation}\nHence, by substituting eq:stiffness_matrix_relation and eq:jacobian_disp_inf in eq:jacobian_force_inf, we obtain:\n\\begin{equation} \\tcmbox{\\bm{\\mathcal{F}} = \\underbrace{\\bm{J}^T \\mathcal{K} \\bm{J}}_{\\bm{K}} \\cdot \\Delta \\bm{\\mathcal{X}}} \\end{equation}\nEquation eq:stiffness_jacobian implies that the moving platform output wrench is related to its deflection by the stiffness matrix \\(K\\).\n \\begin{equation} \\bm{K} = \\bm{J}^T \\mathcal{K} \\bm{J} \\end{equation}\n The stiffness matrix has desirable characteristics for analysis:\n It is a symmetric positive definite matrix, however, it is configuration dependent If the manipulator actuators have all the same stiffness constants \\(k\\), the stiffness matrix is reduced to the form \\(\\bm{K} = k \\bm{J}^T \\bm{J}\\) If the stiffness matrix is inversible (\\(\\det( \\bm{J}^T \\bm{J}) \\ne 0\\)), the compliance matrix of the manipulator is defined as\n\\begin{equation} \\tcmbox{\\bm{C} = \\bm{K}^{-1} = (\\bm{J}^T \\mathcal{K} \\bm{J})^{-1}} \\end{equation}\nThe compliance matrix of a manipulator shows the mapping of the moving platform wrench to its deflection by\n\\begin{equation} \\Delta \\bm{\\mathcal{X}} = \\bm{C} \\cdot \\bm{\\mathcal{F}} \\end{equation}\nTransformation Ellipsoid As seen previously, the Jacobian matrix \\(\\bm{J}\\) transforms n-dimensional moving platform velocity vector \\(\\dot{\\bm{\\mathcal{X}}}\\) into m-dimensional actuated joint velocity \\(\\dot{\\bm{q}}\\). Also, the Jacobian transpose \\(\\bm{J}^T\\) maps m-dimensional actuated joint forces \\(\\bm{\\tau}\\) into n-dimensional applied wrench \\(\\bm{\\mathcal{F}}\\).\nOne way to characterize these transformation is to compare the amplitude and direction of the moving platform velocity generated by a unit actuator joint velocity. To achieve this goal, we confine the actuator joint velocity vector on a m-dimensional unit sphere \\[ \\dot{\\bm{q}}^T \\dot{\\bm{q}} = 1 \\] and compare the resulting moving platform velocity in n-dimensional space: \\[ \\dot{\\bm{\\mathcal{X}}}^T \\bm{J}^T \\bm{J} \\dot{\\bm{\\mathcal{X}}} = 1 \\]\nSimilarly, we can confine the exerted moving platform wrench \\(\\bm{\\mathcal{F}}^T \\bm{\\mathcal{F}} = 1\\) and compare the required actuator forces: \\(\\bm{\\tau}^T \\bm{J} \\bm{J}^T \\bm{\\tau} = 1\\).\nConsider the case of fully parallel manipulators. Then \\(\\bm{J}\\bm{J}^T\\) and \\(\\bm{J}^T\\bm{J}\\) transformations are represented by \\(n \\times n\\) matrices. Geometrically, these transformations represent a hyper-ellipsoid in n-dimensional space, whose principal axes are the eigenvectors of \\(\\bm{J}^T\\bm{J}\\) and \\(\\bm{J}\\bm{J}^T\\) respectively. Furthermore, the lengths of the principal axes are equal to the reciprocals of the square roots of the eigenvalues of \\(\\bm{J}\\bm{J}^T\\) and \\(\\bm{J}^T\\bm{J}\\), which are also equal to the reciprocals of the singular values of \\(\\bm{J}\\).\nThe shape of this hyper-ellipsoid in space indicates the characteristics of the transformation. As this hyper-ellipsoid is closer to a hyper-sphere, the transformation becomes more uniform in different directions. Since Jacobian matrix is configuration dependent, the shape of the hyper-ellipsoid is also configuration dependent, and as the moving platform moves from one pose to the other, the shape of the hyper-ellipsoid changes accordingly.\nA measure of the dexterity of the manipulator is the reciprocal of the Jacobian matrix condition number defined as:\n\\begin{equation} \\frac{1}{\\kappa} = \\frac{\\sigma_{\\text{min}}}{\\sigma_{\\text{max}}} \\end{equation}\nin which \\(\\sigma_{\\text{min}}\\) and \\(\\sigma_{\\text{max}}\\) are the smallest and the largest singular values of the Jacobian matrix.\nStiffness Analysis of the Stewart-Gough Platform In this section, we restrict our analysis to a 3-6 structure (Figure fig:stewart36) in which there exist six distinct attachment points \\(A_i\\) on the fixed base and three moving attachment point \\(B_i\\).\n\n Figure 9: Schematic of a 3-6 Stewart-Gough platform\n Denote the vector of actuated joint forces by \\(\\bm{\\tau} = [f_1 \\ f_2 \\ f_3 \\ f_4 \\ f_5 \\ f_6 ]\\), and the corresponding vector of infinitesimal displacements of actuated limbs denoted by \\(\\Delta \\bm{L} = [\\Delta l_1 \\ \\Delta l_2 \\ \\Delta l_3 \\ \\Delta l_4 \\ \\Delta l_5 \\ \\Delta l_6 ]\\). The relation between \\(\\Delta \\bm{L}\\) and \\(\\bm{\\tau}\\) is described by a diagonal \\(6 \\times 6\\) matrix \\(\\mathcal{K}\\): \\[ \\bm{\\tau} = \\mathcal{K} \\cdot \\Delta \\bm{L} \\]\nAlso, from the definition of the Jacobian, we have: \\[ \\Delta \\bm{L} = \\bm{J} \\cdot \\Delta \\bm{\\mathcal{X}} \\] in which \\(\\Delta \\bm{\\mathcal{X}} = [\\Delta_x \\ \\Delta_y \\ \\Delta_z \\ \\Delta \\theta_x \\ \\Delta \\theta_y \\ \\Delta \\theta_z ]\\) is the vector of infinitesimal linear and angular motions of the moving platform.\nAlso, the vector of the moving platform output wrench denoted by \\(\\bm{F} = [f_x \\ f_y \\ f_z \\ n_x \\ n_y \\ n_z ]\\) is related to the vector of actuated joint forces \\(\\bm{\\tau}\\) by: \\[ \\bm{F} = \\bm{J}^T \\cdot \\bm{\\tau} \\]\nBy substitution, we obtain: \\[ \\bm{\\mathcal{F}} = \\bm{K} \\cdot \\Delta \\bm{\\mathcal{X}} \\] in which \\[ \\bm{K} = \\bm{J}^T \\mathcal{K} \\bm{J} \\] where \\(K\\) is called the stiffness matrix of the Stewart-Gough manipulator.\nFor a given configuration of the moving platform, the eigenvalue of the stiffness matrix represents the stiffness of the manipulator in the corresponding eigenvector direction. Furthermore, the reciprocal of the stiffness matrix condition number may be used to represent the dexterity of the manipulator.\nThe maximum stiffness of the manipulator can be analyzed by the maximum singular value of the Jacobian matrix. The largest axis of the stiffness transformation hyper-ellipsoid is given by this value at each configuration.\nDynamics \nIntroduction The dynamic analysis of parallel manipulators presents an inherent complexity due to their closed-loop structure. Several approaches have been proposed.\nTraditional Newton-Euler formulation is used for dynamic analysis of general parallel manipulators. In this formulation, the equation of motion of each limb and the moving platform must be derived, which inevitably leads to a large number of equations and less computational efficiency. On the other hand, all the reaction forces can be computed, which is very useful in the design of a parallel manipulator.\nThe Lagrangian formulation eliminates all the unwanted reaction forces at the outset, and therefore, is quite efficient. However, because of the constraints imposed by the closed-loop structure, deriving explicit equations of motions in terms of a set of generalized coordinates becomes a prohibitive task.\nA third approach is to use the principle of virtual work, in which the computation of the constraint forces are bypassed. In this method, inertial forces and moments are computed using linear and angular accelerations of the bodies. Then, the whole manipulator is considered to be in static equilibrium by using the d\u0026rsquo;Alembert\u0026rsquo;s principle, and the principle of virtual work is applied to derive the input forces and torques.\nDifferent objectives require different forms of formulations, there are three key issues pursued to derive dynamic formulation of parallel manipulators:\n Calculation of internal forces either active or passive for the design process of the manipulator Study on dynamical properties of the manipulator for controller design Utilization of dynamic specifications in an inverse dynamics controller or any model-based control topology The first item is the main advantage of the Newton-Euler formulation, the second and third items are the benefits of using the Lagrange or virtual work approaches.\nThe dynamic equations in an explicit form can be written as:\n\\begin{equation} \\tcmbox{\\bm{M}(\\bm{\\mathcal{X}}) \\ddot{\\bm{\\mathcal{X}}} + \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}) \\dot{\\bm{\\mathcal{X}}} + \\bm{G}(\\bm{\\mathcal{X}}) = \\bm{\\mathcal{F}}} \\end{equation}\nin which:\n \\(\\bm{\\mathcal{X}}\\) is a vector of the generalized coordinates \\(\\bm{M}(\\bm{\\mathcal{X}})\\) denotes the system mass matrix \\(\\bm{C}(\\bm{X},\\dot{\\bm{X}})\\) denotes the Coriolis and centrifugal matrix \\(\\bm{G}(\\bm{X})\\) denotes the gravity vector \\(\\bm{\\mathcal{F}}\\) denotes the generalized force Deriving explicit dynamic equations for parallel manipulators is a very prohibitive task because of the closed-loop nature of the manipulator.\nDynamics of the Rigid Bodies Acceleration of Rigid Bodies The acceleration analysis consists of studying the variations of linear velocity of a point and angular velocity of a rigid body with respect to time.\n Direct differentiation of these vectors with respect to time in a fixed frame leads to linear velocity of a point and angular velocity of a rigid body, respectively. Note that, to determine the absolute linear velocity of a point, the derivative must be calculated relative to a fixed frame. In the study of robotic manipulators, usually multiple moving frames are defined to carefully determine the motion of the moving platform. Therefore, it is necessary to define the required arithmetics to transform the relative accelerations into absolute ones.\nAngular Acceleration of a Rigid Body To define angular acceleration of a rigid body, consider a moving frame \\(\\{\\bm{B}\\}\\) attached to the rigid body, and the motion analyzed with respect to a fixed frame. Angular acceleration is an attribute of a rigid body and describes the variation of angular velocity of frame \\(\\{\\bm{B}\\}\\) with respect to time.\n Angular acceleration vector, denoted by the symbol \\(\\dot{\\bm{\\Omega}}\\), describes the instantaneous change of the angular velocity of frame \\(\\{\\bm{B}\\}\\), denoted by \\(\\bm{\\Omega}\\), with respect to the fixed frame \\(\\{\\bm{A}\\}\\):\n\\begin{equation} \\begin{aligned} \\dot{\\bm{\\Omega}} = \\frac{d \\bm{\\Omega}}{dt} \u0026amp;= \\ddot{\\theta} \\hat{\\bm{s}} + \\dot{\\theta} \\dot{\\hat{\\bm{s}}} \\\\\\\n\u0026amp;= \\ddot{\\theta} \\hat{\\bm{s}} + \\dot{\\theta} (\\bm{\\Omega} \\times \\hat{\\bm{s}}) \\\\\\\n\u0026amp;= \\ddot{\\theta} \\hat{\\bm{s}} \\end{aligned} \\end{equation}\nwhere \\(\\{\\theta, \\hat{\\bm{s}}\\}\\) are the screw parameters representing the rotation of the rigid body.\n As shown by eq:angular_acceleration, the angular acceleration of the rigid body is also along the screw axis \\(\\hat{\\bm{s}}\\) with a magnitude equal to \\(\\ddot{\\theta}\\).\nLinear Acceleration of a Point Linear acceleration of a point \\(P\\) can be easily determined by time derivative of the velocity vector \\(\\bm{v}_P\\) of that point with respect to a fixed frame:\n\\begin{equation} \\bm{a}_p = \\dot{\\bm{v}}_p = \\left( \\frac{d\\bm{v}_p}{dt} \\right)_\\text{fix} \\end{equation}\nNote that this is correct only if the derivative is taken with respect to a fixed frame.\nNow consider the general motion of a rigid body, in which a moving frame \\(\\{\\bm{B}\\}\\) is attached to the rigid body and the problem is to find the absolute acceleration of point \\(P\\) with respect to the fixed frame \\(\\{\\bm{A}\\}\\). The rigid body performs a general motion, which is a combination of a translation, denoted by the velocity vector \\({}^A\\bm{v}_{O_B}\\), and an instantaneous angular rotation denoted by \\(\\bm{\\Omega}\\) (see Figure fig:general_motion). To determine acceleration of point \\(P\\), we start with the relation between absolute and relative velocities of point \\(P\\):\n\\begin{equation} {}^A\\bm{v}_P = {}^A\\bm{v}_{O_B} + {}^A\\bm{R}_B{}^B\\bm{v}_P + {}^A\\bm{\\Omega}^\\times {}^A\\bm{R}_B {}^B\\bm{P} \\end{equation}\nIn order to derive acceleration of point \\(P\\), we differentiate both sides with respect to time and we obtain\n\\begin{equation} \\begin{split} {}^A\\bm{a}_p\\ \u0026amp;= {}^A\\bm{a}_{O_B} \\quad \\text{(linear acc. of } \\{\\bm{B}\\} \\text{)} \\\\\\\n\u0026amp;+ {}^A\\bm{R}_B{}^B\\bm{a}_p \\quad \\text{(relative acc. of } P \\text{ w.r.t. } \\{\\bm{B}\\} \\text{)} \\\\\\\n\u0026amp;+ {}^A\\dot{\\bm{\\Omega}}^\\times {}^A\\bm{R}_B {}^B\\bm{P} \\quad \\text{(angular acceleration of } \\{\\bm{B}\\} \\text{)} \\\\\\\n\u0026amp;+ {}^A\\bm{\\Omega}^\\times ({}^A\\bm{\\Omega}^\\times {}^A\\bm{R}_B {}^B\\bm{P}) \\quad \\text{(centrifugal)} \\\\\\\n\u0026amp;+ 2{}^A\\bm{\\Omega}^\\times {}^A\\bm{R}_B {}^B\\bm{v}_P \\quad \\text{(Coriolis)} \\end{split} \\end{equation}\nFor the case where \\(P\\) is a point embedded in the rigid body, \\({}^B\\bm{v}_P = 0\\) and \\({}^B\\bm{a}_P = 0\\) and we obtain:\n\\begin{equation} \\begin{split} {}^A\\bm{a}_P = {}^A\\bm{a}_{O_B} \u0026amp;+ {}^A\\dot{\\bm{\\Omega}}^\\times {}^A\\bm{R}_B {}^B\\bm{P} \\\\\\\n\u0026amp;+ {}^A\\bm{\\Omega}^\\times ({}^A\\bm{\\Omega}^\\times {}^A\\bm{R}_B {}^B\\bm{P}) \\end{split} \\end{equation}\nMass Properties In this section, the properties of mass, namely center of mass, moments of inertia and its characteristics and the required transformations are described.\n\n Figure 10: Mass properties of a rigid body\n Center of Mass Consider a reference frame \\(\\{\\bm{A}\\}\\) in which the mass distribution of a material body is measured, and let \\(\\bm{p}\\) denote the position vector of a differential mass \\(\\rho dV\\) with respect to a reference frame.\nThe center of mass of a rigid body is defined as the point \\(C\\) which satisfied the following condition\n\\begin{equation} \\bm{p}_c = \\frac{1}{m} \\int_V \\bm{p} \\rho dV \\end{equation}\nin which the mass of the material body \\(\\{\\bm{B}\\}\\) with density \\(\\rho\\) and volume \\(V\\) is defined as\n\\begin{equation} m = \\int_V \\rho dV \\end{equation}\nMoments of Inertia As opposed to the mass, which introduces inertia to linear accelerations, moment of inertia is the property of mass which introduces inertia to angular accelerations. Basically, for rotational motion, the distribution of mass with respect to the axis of rotation introduces resistance to the angular acceleration.\nMoments of inertia \\(\\bm{I}\\) about \\(\\bm{A}\\) is defined by the second moment of the mass with respect to a reference frame of rotation as:\n\\begin{equation} {}^A\\bm{I} = \\begin{bmatrix} I_{XX} \u0026amp; I_{XY} \u0026amp; I_{XZ} \\\\\\\nI_{YX} \u0026amp; I_{YY} \u0026amp; I_{YZ} \\\\\\\nI_{ZX} \u0026amp; I_{ZY} \u0026amp; I_{ZZ} \\end{bmatrix} \\end{equation}\nin which\n\\begin{equation*} \\begin{aligned} I_{XX} \u0026amp;= \\int_V (y^2 + z^2) \\rho dV, \\quad I_{XY} = I_{YX} = -\\int_V xy \\rho dV \\\\\\\nI_{YY} \u0026amp;= \\int_V (x^2 + z^2) \\rho dV, \\quad I_{YZ} = I_{ZY} = -\\int_V yz \\rho dV \\\\\\\nI_{ZZ} \u0026amp;= \\int_V (x^2 + y^2) \\rho dV, \\quad I_{XZ} = I_{ZX} = -\\int_V xz \\rho dV \\end{aligned} \\end{equation*}\nPrincipal Axes As seen in equation eq:moment_inertia, the inertia matrix elements are a function of mass distribution of the rigid body with respect to the frame \\(\\{\\bm{A}\\}\\). Hence, it is possible to find orientations of frame \\(\\{\\bm{A}\\}\\) in which the product of inertia terms vanish and inertia matrix becomes diagonal:\n\\begin{equation} {}^A\\bm{I} = \\begin{bmatrix} I_{XX} \u0026amp; 0 \u0026amp; 0 \\\\\\\n0 \u0026amp; I_{YY} \u0026amp; 0 \\\\\\\n0 \u0026amp; 0 \u0026amp; I_{ZZ} \\end{bmatrix} \\end{equation}\nSuch axes are called the principal axes of inertia, and diagonal terms are called the principal moments of inertia, which represent the maximum, minimum and intermediate values of the moments of inertia for a particular chosen origin \\(\\{\\bm{A}\\}\\).\nIt can be shown that the principal moments of inertial and principal axes are invariant parameters and can be determined from an eigen value decomposition of the inertia matrix in any configuration of the reference frame \\(\\{\\bm{A}\\}\\).\nInertia Matrix Transformations The moment of inertia is usually given for frames passing through the center of mass of the rigid body. The inertia matrix changes under change of the reference frame.\nConsider frame \\(\\{\\bm{C}\\}\\) parallel to \\(\\{\\bm{A}\\}\\) and attached to the center of mass of a rigid body and let \\(\\bm{p}_c = [x_c, y_c, z_c]^T\\) denote the vector of the position of the center of mass with respect to frame \\(\\{\\bm{A}\\}\\). The relation between the inertia matrix about \\(A\\) and that about \\(C\\) is given by the following relation:\n\\begin{equation} \\tcmbox{{}^A\\bm{I} = {}^C\\bm{I} + m(\\bm{p}_c^T \\bm{p}_c \\bm{I}_{3 \\times 3} - \\bm{p}_c \\bm{p}_c^T)} \\end{equation}\nin which \\(m\\) denotes the mass of the rigid body and \\(\\bm{I}_{3 \\times 3}\\) denotes the identity matrix.\nOn the other hand, if the reference frame \\(\\{B\\}\\) has pure rotation with respect to the frame attached to the center of mass \\(\\{A\\}\\):\n\\begin{equation} {}^A\\bm{I} = {}^A\\bm{R}_C {}^C\\bm{I} {}^A\\bm{R}_C^T \\end{equation}\nMomentum and Kinetic Energy Linear Momentum Linear momentum of a material body, shown in Figure fig:angular_momentum_rigid_body, with respect to a reference frame \\(\\{\\bm{A}\\}\\) is defined as\n\\begin{equation} {}^A\\bm{G} = \\int_V \\frac{d\\bm{p}}{dt} \\rho dV \\end{equation}\nFor any mass element \\(\\rho dV\\), the position vector \\(\\bm{p}\\) can be written as \\[ p = p_c + r \\]\nAnd because \\(\\int_V r \\rho dV = 0\\), we have by substitution \\[ {}^A\\bm{G} = \\frac{d\\bm{p}_c}{dt} \\int_V \\rho dV \\] and thus\n\\begin{equation} \\tcmbox{{}^A\\bm{G} = m \\cdot {}^A\\bm{v}_C} \\end{equation}\nin which \\({}^A\\bm{v}_C\\) denotes the velocity of the center of mass with respect to the frame \\(\\{\\bm{A}\\}\\).\nThis result implies that the total linear momentum of differential masses is equal to the linear momentum of a point mass \\(m\\) located at the center of mass. This highlights the important of the center of mass in dynamic formulation of rigid bodies.\n\n Figure 11: The components of the angular momentum of a rigid body about \\(A\\)\n Angular Momentum Consider the solid body represented in Figure fig:angular_momentum_rigid_body. Angular momentum of the differential masses \\(\\rho dV\\) about a reference point \\(A\\), expressed in the reference frame \\(\\{\\bm{A}\\}\\) is defined as \\[ {}^A\\bm{H} = \\int_V \\left(\\bm{p} \\times \\frac{d\\bm{p}}{dt} \\right) \\rho dV \\] in which \\(d\\bm{p}/dt\\) denotes the velocity of differential mass with respect to the reference frame \\(\\{\\bm{A}\\}\\).\nBy substituting \\(\\bm{p} = \\bm{p}_c + \\bm{r}\\) in the previous equations, be obtain: \\[ {}^A\\bm{H} = \\bm{p}_c \\times m \\bm{v}_c + \\int_V \\bm{r} \\times (\\bm{\\Omega} \\times \\bm{r}) \\rho dV \\]\nTherefore, angular momentum of the rigid body about point \\(A\\) is reduced to\n\\begin{equation} \\tcmbox{{}^A\\bm{H} = \\bm{p}_c \\times \\bm{G}_c + {}^C\\bm{H}} \\end{equation}\nin which \\[ {}^C\\bm{H} = \\int_V \\bm{r} \\times (\\bm{\\Omega} \\times \\bm{r}) \\rho dV = {}^C\\bm{I} \\cdot \\bm{\\Omega} \\]\nEquation eq:angular_momentum reveals that angular momentum of a rigid body about a point \\(A\\) can be written as \\(\\bm{p}_c \\times \\bm{G}_c\\), which is the contribution of linear momentum of the rigid body about point \\(A\\), and \\({}^C\\bm{H}\\) which is the angular momentum of the rigid body about the center of mass.\nThis also highlights the important of the center of mass in the dynamic analysis of rigid bodies. If the center of mass is taken as the reference point, the relation describing angular momentum eq:angular_momentum is very analogous to that of linear momentum eq:linear_momentum.\nKinetic Energy The Kinetic energy of a rigid body is defined as\n\\begin{equation} \\tcmbox{\\bm{K} = \\frac{1}{2} \\int_V \\bm{v} \\cdot \\bm{v} \\rho dV} \\end{equation}\nThe velocity of a differential mass \\(\\rho dV\\) can be represented by linear velocity of the center of mass and angular velocity of the rigid body as \\[ \\bm{v} = \\bm{v}_p + \\bm{\\Omega} \\times \\bm{r} \\]\nBy substitution, the kinetic energy of the rigid body may be obtained by:\n\\begin{equation} \\tcmbox{\\bm{K} = \\frac{1}{2} \\bm{v}_c \\times \\bm{G}_c + \\frac{1}{2} \\bm{\\Omega} \\cdot {}^C\\bm{H}} \\end{equation}\nin which \\(\\bm{G}_C\\) is the linear momentum of the rigid body and \\({}^C\\bm{H}\\) is the angular momentum of the rigid body about the center of mass.\nThis equation reveals that kinetic energy of a moving body can be represented as the kinetic energy of a point mass located as the center of mass, in addition to the kinetic energy of a body rotating about the center of mass.\nNewton-Euler Laws The Newton and Euler laws can be written for three different cases where the angular motion:\n is about a fixed point in space is represented about the center of mass is represented about an arbitrary moving point in space We only examine the case in which all rotations are represented about the center of mass.\nConsider a rigid body under general motion, that is, a combination of translation and rotation.\n The Newton\u0026rsquo;s law relates the change of linear momentum of the rigid body to the resulting external forces applied to it \\[ \\sum \\bm{f}_\\text{ext} = \\frac{d\\bm{G}_c}{dt} \\]\n For the case of a constant mass rigid body, this law is reduced to \\[ \\sum \\bm{f}_\\text{ext} = m \\frac{d\\bm{v}_c}{dt} = m \\bm{a}_c \\] in which \\(\\bm{a}_c\\) is the linear acceleration of the center of mass.\n The Euler\u0026rsquo;s law relates the change of angular momentum of a rigid body about the center of mass, to the summation of all external moments applied to the rigid body about center of mass \\[ \\sum {}^c\\bm{n}_\\text{ext} = \\frac{d}{dt}({}^c\\bm{H}) \\]\n For the case of a constant mass rigid body, this law is reduced to \\[ \\sum {}^c\\bm{n}_\\text{ext} = \\frac{d}{dt}({}^c\\bm{I} \\bm{\\Omega}) = {}^c\\bm{I} \\dot{\\bm{\\Omega}} + \\bm{\\Omega} \\times ({}^c\\bm{I} \\bm{\\Omega}) \\] in which \\(\\sum {}^c\\bm{n}_\\text{ext}\\) is the summation of all external moments applied to the rigid body about the center of mass, \\({}^c\\bm{I}\\) is the moment of inertia about the center of mass, and \\(\\bm{\\Omega}\\) is the angular velocity of the rigid body.\nNewton-Euler Formulation The most popular approach used in robotics to derive the dynamic equation of motion of a parallel manipulator is the Newton-Euler formulation.\nIn the Newton-Euler formulation, the free-body diagrams of all the limbs and moving platform are considered and the Newton Euler laws are applied to each isolated body. To apply the laws to each body, it is necessary to derive linear acceleration of links, center of mass, as well as angular acceleration of the links. Hence, acceleration analysis would be performed on all the links of the manipulator and the moving platform.\nFurthermore, all the external forces and moments applied to the links and to the moving platform must be carefully determined. Gravitational forces acting on the center of masses, frictional forces and moments acting on the joints, and any possible disturbance force or moment applied to the links and to the moving platform would be identified. The most important external forces or moments applied on the manipulator are the one applied by the actuators, denoted by \\(\\bm{\\tau} = [\\tau_{1}, \\tau_{2}, \\dots, \\tau_{m}]^{T}\\). The forces and moments shall be derived from the set of Newton-Euler laws, which are written separately for each link and the moving platform.\nFinally, by elimination of these constraints forces and moments on the Newton-Euler equations written for the moving platform, the dynamic equations relating the actuator forces and moments \\(\\bm{\\tau}\\) to the motion variables of the moving platform \\(\\bm{\\mathcal{X}}\\), \\(\\dot{\\bm{\\mathcal{X}}}\\) and \\(\\ddot{\\bm{\\mathcal{X}}}\\) are derived.\nDynamic Formulation of the Stewart-Gough Platform Acceleration Analysis In acceleration analysis, it is intended to derive expressions for linear and angular acceleration of the limbs, namely \\(\\ddot{l}_{i}\\) and \\(\\dot{\\bm{\\omega}}_{i}\\) as a function of the moving platform acceleration \\(\\ddot{\\bm{\\mathcal{X}}} = [\\dot{\\bm{v}}_{p}, \\dot{\\bm{\\omega}}]^{T}\\). To obtain such a relation, let us rewrite the velocity loop closure:\n\\begin{equation} \\bm{v}_{p} + \\bm{\\omega} \\times \\bm{b}_{i} = \\dot{l}_{i} \\hat{\\bm{s}}_{i} + l_{i}(\\bm{\\omega}_{i} \\times \\hat{\\bm{s}}_{i}) \\end{equation}\nSince there is no actuation torque about \\(\\hat{\\bm{s}}_{i}\\), the limb angular velocity and acceleration vectors (\\(\\bm{\\omega}_i\\) and \\(\\dot{\\bm{\\omega}}_i\\)) are normal to \\(\\hat{\\bm{s}}_{i}\\) provided that the following assumption are considered for the platform:\n both end joints of the limb are spherical the limbs are symmetric with respect to their axes the effects of friction in spherical joints are neglected Considering these assumptions, it can be concluded that the limbs cannot spin about their axes: \\(\\bm{\\omega}_{i} \\cdot \\hat{\\bm{s}}_{i} = 0\\) and \\((\\hat{\\bm{s}}_i \\times (\\bm{\\omega}_i \\times \\hat{\\bm{s}}_i)) = \\bm{\\omega}_i\\).\nTo obtain the angular velocity of the limbs \\(\\bm{\\omega}_{i}\\), we cross multiply \\(\\hat{\\bm{s}}_{i}\\) to both sides of the previous equation:\n\\begin{equation} \\bm{\\omega}_{i} = \\frac{1}{l_i} ( \\hat{\\bm{s}}_i \\times \\bm{v}_{b_i} ) \\end{equation}\nWith \\(\\bm{v}_{b_{i}}\\) an intermediate variable corresponding to the velocity of point \\(\\bm{b}_{i}\\):\n\\begin{equation} \\bm{v}_{b_{i}} = \\bm{v}_{p} + \\bm{\\omega} \\times \\bm{b}_{i} \\end{equation}\nAs illustrated in Figure fig:free_body_diagram_stewart, the piston-cylinder structure of the limbs is decomposed into two separate parts, the masses of which are denoted by \\(m_{i_1}\\) and \\(m_{i_2}\\). The position vector of these two center of masses can be determined by the following equations:\n\\begin{align} \\bm{p}_{i_1} \u0026amp;= \\bm{a}_{i} + c_{i_1} \\hat{\\bm{s}}_{i} \\\\\\\n\\bm{p}_{i_2} \u0026amp;= \\bm{a}_{i} + ( l_i - c_{i_2}) \\hat{\\bm{s}}_{i} \\end{align}\n\n Figure 12: Free-body diagram of the limbs and the moving platform of a general Stewart-Gough manipulator\n By differentiating the previous equations and doing some manipulations, we obtain:\n\\begin{align} \\ddot{l}_i \u0026amp;= \\bm{a}_{b_i} \\times \\hat{\\bm{s}}_i + l_i (\\bm{\\omega_i} \\cdot \\bm{\\omega_i}) \\\\\\\n\\dot{\\bm{\\omega}}_i \u0026amp;= \\frac{1}{l_i} (\\hat{\\bm{s}}_i \\times \\bm{a}_{b_i} - 2 \\dot{l}_i \\bm{\\omega}_i) \\\\\\\n\\bm{a}_{i_1} \u0026amp;= c_{i_1} ( \\dot{\\bm{\\omega}}_i \\times \\hat{\\bm{s}}_{i} + \\bm{\\omega}_i \\times (\\bm{\\omega}_i \\times \\hat{\\bm{s}}_i)) \\\\\\\n\\bm{a}_{i_2} \u0026amp;= ( l_i - c_{i_2}) (\\dot{\\bm{\\omega}}_i \\times \\hat{\\bm{s}}_{i} - (\\bm{\\omega}_i \\cdot \\bm{\\omega}_i) \\hat{\\bm{s}}_i) + 2 \\dot{l}_i (\\bm{\\omega}_i \\times \\hat{\\bm{s}}_i) + \\ddot{l}_i \\hat{\\bm{s}}_i \\end{align}\nwith\n\\begin{equation} \\bm{a}_{b_i} = \\bm{a}_p + \\dot{\\bm{\\omega}} \\times \\bm{b}_i + \\bm{\\omega} \\times (\\bm{\\omega} \\times \\bm{b}_i) \\end{equation}\nDynamic Formulation of the Limbs To derive the dynamic formulation of the Stewart-Gough platform, the manipulator is decomposed into a moving platform and six identical limbs. We assume that each limb consists of two parts, the cylinder and the piston, where the velocities and the accelerations of their centers of masses are determined. We also assume that the centers of masses of the cylinder and the piston are located at a distance of \\(c_{i_1}\\) and \\(c_{i_2}\\) above their foot points, and their masses are denoted by \\(m_{i_1}\\) and \\(m_{i_2}\\). Moreover, consider that the pistons are symmetric about their axes, and their centers of masses lie at their midlengths.\nThe free-body diagrams of the limbs and the moving platforms is given in Figure fig:free_body_diagram_stewart. The reaction forces at fixed points \\(A_i\\) are denoted by \\(\\bm{f}_{a_i}\\), the internal force at moving points \\(B_i\\) are dentoed by \\(\\bm{f}_{b_i}\\), and the internal forces and moments between cylinders and pistons are denoted by \\(\\bm{f}_{c_i}\\) and \\(\\bm{M_{c_i}}\\) respectively.\nAssume that the only existing external disturbance wrench is applied on the moving platform and is denoted by \\(\\bm{\\mathcal{F}}_d = [\\bm{F}_d, \\bm{n}_d]^T\\).\n \\begin{equation} \\begin{aligned} \\bm{f}_{b_i} \u0026amp;= \\frac{1}{l_i}(I_{xx_i} + l_i^2 m_{c_e}) \\hat{\\bm{s}}_i \\times \\dot{\\bm{\\omega}}_i \\\\\\\n\u0026amp;\\quad + \\frac{2}{l_i} m_{i_2} c_{i_2} \\dot{l}_i \\hat{\\bm{s}}_i \\times \\bm{\\omega}_i \\\\\\\n\u0026amp;\\quad - m_{g_e} \\hat{\\bm{s}}_i \\times (\\hat{\\bm{s}}_i \\times \\bm{g}) \\end{aligned} \\end{equation}\nin which \\(m_{c_e}\\) is defined as\n\\begin{equation} m_{c_e} = \\frac{1}{l_i^2} \\left( m_{i_1} c_{i_1}^2 + m_{i_2} c_{i_2}^2 \\right) \\end{equation}\n Dynamic Formulation of the Moving Platform Assume that the moving platform center of mass is located at the center point \\(P\\) and it has a mass \\(m\\) and moment of inertia \\({}^A\\bm{I}_{P}\\). Furthermore, consider that gravitational force and external disturbance wrench are applied on the moving platform, \\(\\bm{\\mathcal{F}}_d = [\\bm{F}_d, \\bm{n}_d]^T\\) as depicted in Figure fig:free_body_diagram_stewart.\nThe Newton-Euler formulation of the moving platform is as follows:\n\\begin{align} \\sum \\bm{F}_{\\text{ext}} \u0026amp;= \\sum_{i=1}^6 \\bm{f}_{b_i} + m \\bm{g} + \\bm{F}_{d} = m \\bm{a}_p \\\\\\\n\\sum {}^p\\bm{n}_{\\text{ext}} \u0026amp;= \\bm{n}_d + \\sum_{i=1}^6 \\bm{b}_i \\times \\bm{f}_{b_i} \\nonumber \\\\\\\n\u0026amp; = {}^{A}\\bm{I}_{P} \\dot{\\bm{\\omega}} + \\bm{\\omega} \\times {}^{A}\\bm{I}_{P} \\bm{\\omega} \\end{align}\nin which \\({}^A\\bm{I}_P\\) is considered in the fixed frame \\(\\{\\bm{A}\\}\\) and can be calculated by:\n\\begin{equation} {}^A\\bm{I}_P = {}^A\\bm{R}_B {}^B\\bm{I}_P {}^A\\bm{R}_B^T \\end{equation}\nThese equations can be rewritten in an implicit form as\n \\begin{align} \u0026amp; m(\\bm{a}_p - \\bm{g}) - \\bm{F}_d - \\sum_{i=1}^{6} \\bm{f}_{b_i} = \\bm{0} \\label{eq:dyn_form_implicit_trans}\\\\\\\n\u0026amp; {}^A\\bm{I}_P \\dot{\\bm{\\omega}} + \\bm{\\omega} \\times {}^A\\bm{I}_P\\bm{\\omega} - \\bm{n}_d - \\sum_{i=1}^{6} \\bm{b}_{i} \\times \\bm{f}_{b_i} = \\bm{0} \\label{eq:dyn_form_implicit_rot} \\end{align}\n These two equations are the governing dynamic formulation of the Stewart-Gough platform, in which \\(\\bm{\\mathcal{F}}_d = [\\bm{F}_{d}, \\bm{n}_{d}]^T\\) denotes the disturbance wrench exerted on the moving plateform.\nThey can be viewed in an implicit vector form of\n\\begin{equation} \\bm{f}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}, \\ddot{\\bm{\\mathcal{X}}}, \\bm{\\mathcal{F}}_d, \\bm{\\tau}) = \\bm{0} \\end{equation}\nin which \\(\\bm{\\mathcal{X}} = [\\bm{x}_P, \\bm{\\theta}]^T\\) is the motion variable of the moving platform consisting of the linear position of point \\(P\\) and the moving platform orientation represented by screw coordinates.\nClosed-Form Dynamics While dynamic formulation in the form of Equation eq:dynamic_formulation_implicit can be used to simulate inverse dynamics of the Stewart-Gough platform, its implicit nature makes it unpleasant for the dynamic analysis and control.\nClosed-Form Dynamics of the Limbs To derive a closed-form dynamic formulation for the Stewart-Gough platform as\n\\begin{equation} \\bm{M}(\\bm{\\mathcal{X}})\\ddot{\\bm{\\mathcal{X}}} + \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\bm{G}(\\bm{\\mathcal{X}}) = \\bm{\\mathcal{F}} \\end{equation}\nfirst consider an intermediate generalized coordinate \\(x_i\\), which is in fact the position of point \\(b_i\\). This generalized coordinate is used to harmonize the limb and the moving platform dynamic formulation and to derive an closed-form structure for the whole manipulator.\nNow, manipulate each limb dynamic equations to convert them into the closed form. Let us first introduce some relations to substitute kinematic parameters like \\(\\dot{\\bm{\\omega}}_i\\), \\(\\ddot{\\bm{\\omega}}_i\\), \\(\\ddot{l}_i\\) with the intermediate generalized coordinate \\(x_i\\) and its time derivatives.\nAfter some manipulations, we obtain the following closed form equation:\n\\begin{equation} \\bm{M}_i \\ddot{\\bm{x}}_i + \\bm{C}_i \\dot{\\bm{x}}_i + \\bm{G}_i = \\bm{F}_i \\end{equation}\nthe corresponding mass matrix \\(\\bm{M}_i\\), the Coriolis matrix \\(\\bm{C}_i\\), and the gravity vector \\(\\bm{G}_i\\) can be simplified into the following form:\n\\begin{align} \\bm{M}_i \u0026amp;= m_{i_2}\\hat{\\bm{s}}_i \\hat{\\bm{s}}_i^T - \\frac{1}{l_i^2} I_{xx_i} \\hat{\\bm{s}}_{i \\times}^2 \\\\\\\n\\bm{C}_i \u0026amp;= -\\frac{2}{l_i} m_{c_o}\\dot{l}_i \\hat{\\bm{s}}_{i\\times}^2 - \\frac{1}{l_i^2} m_{i_2} c_{i_2} \\hat{\\bm{s}}_i \\dot{\\bm{x}}_i^T \\hat{\\bm{s}}_{i \\times}^2 \\\\\\\n\\bm{G}_i \u0026amp;= \\big( m_{g_e} \\hat{\\bm{s}}_{i\\times}^2 - m_{i_2} \\hat{\\bm{s}}_i \\hat{\\bm{s}}_i^T \\big) \\bm{g} \\\\\\\n\\bm{F}_i \u0026amp;= -\\bm{f}_{b_i} + \\tau_i \\hat{\\bm{s}}_i \\end{align}\nin which\n\\begin{align} m_{c_e} \u0026amp;= \\frac{1}{l_i^2} (m_{i_1} c_{i_1}^2 + m_{i_2} c_{i_2}^2) \\\\\\\nm_{c_o} \u0026amp;= \\frac{1}{l_i} m_{i_2} c_{i_2} - \\frac{1}{l_i^2} (I_{xx_i} + l_i^2 m_{c_e}) \\\\\\\nm_{g_e} \u0026amp;= \\frac{1}{l_i} (m_{i_1} c_{i_1} + m_{i_2}(l_i - c_{i_2})) \\end{align}\nClosed-Form Dynamics of the Moving Platform In this section, the dynamic equations of the moving platform are transformed in the following closed-form formulation\n\\begin{equation} \\bm{M}_{p}\\ddot{\\bm{\\mathcal{X}}} + \\bm{C}_{p}\\dot{\\bm{\\mathcal{X}}} + \\bm{G}_{p} = \\bm{\\mathcal{F}}_{p} \\end{equation}\nin which \\(\\bm{\\mathcal{X}}\\) consists of six coordinates: the first three \\(\\bm{x}_p\\) represent linear motion of the moving platform, and the last three \\(\\bm{\\theta}\\) its angular motion. It is preferable to use the screw coordinates for representing the angular motion as its derivative is also a vector representing angular velocity:\n\\begin{equation} \\tcmbox{\\bm{\\mathcal{X}} = \\begin{bmatrix}\\bm{x}_p \\ \\bm{\\theta}\\end{bmatrix}; \\quad \\dot{\\bm{\\mathcal{X}}} = \\begin{bmatrix}\\bm{v}_p \\ \\bm{\\omega}\\end{bmatrix}; \\quad \\ddot{\\bm{\\mathcal{X}}} = \\begin{bmatrix}\\bm{a}_p \\ \\dot{\\bm{\\omega}}\\end{bmatrix}} \\end{equation}\nEquations eq:dyn_form_implicit_trans and eq:dyn_form_implicit_rot can be simply converted into a closed form of Equation eq:close_form_dynamics_platform with the following terms:\n\\begin{equation} \\begin{aligned} \u0026amp;\\bm{M}_p = \\begin{bmatrix} m\\bm{I}_{3 \\times 3} \u0026amp; \\bm{O}_{3\\times 3} \\ \\bm{O}_{3\\times 3} \u0026amp; {}^A \\bm{I}_p \\end{bmatrix}_{6\\times 6}; \\bm{C}_p = \\begin{bmatrix} \\bm{O}_{3\\times 3} \u0026amp; \\bm{O}_{3\\times 3} \\ \\bm{O}_{3\\times 3} \u0026amp; \\omega_{\\times} {}^A\\bm{I}_p \\end{bmatrix}_{6 \\times 6} \\\\\\\n\u0026amp;\\bm{G}_p = \\begin{bmatrix}-m\\bm{g} \\ \\bm{O}_{3\\times 1}\\end{bmatrix}_{6 \\times 1}; \\bm{\\mathcal{F}}_p = \\begin{bmatrix} \\bm{F}_d + \\sum \\bm{f}_{b_i} \\ \\bm{n}_d + \\sum \\bm{b}_{i \\times} \\bm{f}_{b_i} \\end{bmatrix}_{6\\times 1} \\end{aligned} \\end{equation}\nClosed-Form Dynamics of the Stewart-Gough Manipulator To derive the closed-form dynamic formulation for the whole manipulator, a transformation is required to map the intermediate generalized coordinates \\(x_i\\) into the principal generalized coordinates \\(\\bm{\\mathcal{X}}\\).\nUsing such a transformation, and by adding the resulting equations of the limbs and the moving platform, the internal forces \\(\\bm{f}_{b_i}\\) can be eliminated, and closed-form dynamic formulation for the whole manipulator can be derived.\nTo generate such a transformation define a Jacobian matrix \\(\\bm{J}_i\\) relating the intermediate coordinates to that of the principal generalized coordinate:\n\\begin{equation} \\dot{\\bm{x}}_i = \\bm{J}_i \\dot{\\bm{\\mathcal{X}}} \\end{equation}\nin which\n\\begin{equation} \\bm{J}_i = \\begin{bmatrix} \\bm{I}_{3 \\times 3} \u0026amp; -\\bm{b}_{i \\times} \\end{bmatrix} \\end{equation}\n\\begin{equation} \\bm{M}_{li} \\ddot{\\bm{x}}_i + \\bm{C}_{li} + \\dot{\\bm{x}}_i + \\bm{G}_{li} = \\bm{\\mathcal{F}}_{li} \\end{equation}\nin which\n\\begin{equation} \\begin{aligned} \\bm{M}_{li} = \\bm{J}_i^T \\bm{M}_i \\bm{J}_i; \\quad \u0026amp; \\bm{C}_{li} = J_i^T \\bm{M}_i \\dot{\\bm{J}}_i + \\bm{J}_i^T \\bm{C}_i \\bm{J}_i \\\\\\\n\\bm{G}_{li} = \\bm{J}_i^T G_i; \\quad \u0026amp; \\bm{\\mathcal{F}}_{li} = \\bm{J}_i^T \\bm{F}_i \\end{aligned} \\end{equation}\n \\begin{equation} \\begin{aligned} \\bm{M}(\\bm{\\mathcal{X}}) \u0026amp;= \\bm{M}_p + \\sum_{i=1}^6 \\bm{M}_{li} \\\\\\\n\\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}) \u0026amp;= \\bm{C}_p + \\sum_{i=1}^6 \\bm{C}_{li} \\\\\\\n\\bm{G}(\\bm{\\mathcal{X}}) \u0026amp;= \\bm{G}_p + \\sum_{i=1}^6 \\bm{G}_{li} \\\\\\\n\\bm{\\mathcal{F}}(\\bm{\\mathcal{X}}) \u0026amp;= \\bm{\\mathcal{F}}_d + \\sum_{i=1}^6 \\bm{\\mathcal{F}}_{\\tau_i} \\end{aligned} \\end{equation}\n Forward Dynamics Simulations As shown in Figure fig:stewart_forward_dynamics, it is assumed that actuator forces and external disturbance wrench applied to the manipulator are given and the resulting trajectory of the moving platform is to be determined.\n\n Figure 13: Flowchart of forward dynamics implementation sequence\n The closed-form dynamic formulation of the Stewart-Gough platform corresponds to the set of equations given in eq:closed_form_dynamic_stewart_wanted, whose terms are given in eq:close_form_dynamics_stewart_terms.\nInverse Dynamics Simulation In inverse dynamics simulations, it is assumed that the trajectory of the manipulator is given, and the actuator forces required to generate such trajectories are to be determined.\nAs illustrated in Figure fig:stewart_inverse_dynamics, inverse dynamic formulation is implemented in the following sequence. The first step is trajectory generation for the manipulator moving platform. Many different algorithms are developed for a smooth trajectory generation. For such a trajectory, \\(\\bm{\\mathcal{X}}_{d}(t)\\) and the time derivatives \\(\\dot{\\bm{\\mathcal{X}}}_{d}(t)\\), \\(\\ddot{\\bm{\\mathcal{X}}}_{d}(t)\\) are known.\nThe next step is to solve the inverse kinematics of the manipulator and to find the limbs\u0026rsquo; linear and angular positions, velocity and acceleration as a function of the manipulator trajectory. The manipulator Jacobian matrix \\(\\bm{J}\\) is also calculated in this step.\nNext, the dynamic matrices given in the closed-form formulations of the limbs and the moving platform are calculated using equations eq:closed_form_intermediate_parameters and eq:close_form_dynamics_stewart_terms, respectively.\nTo combine the corresponding matrices, an to generate the whole manipulator dynamics, it is necessary to find intermediate Jacobian matrices \\(\\bm{J}_i\\), given in eq:jacobian_intermediate, and then compute compatible matrices for the limbs given in eq:closed_form_stewart_manipulator. Now that all the terms required to computed to actuator forces required to generate such a trajectory is computed, let us define \\(\\bm{\\mathcal{F}}\\) as the resulting Cartesian wrench applied to the moving platform. This wrench can be calculated from the summation of all inertial and external forces excluding the actuator torques \\(\\bm{\\tau}\\) in the closed-form dynamic formulation eq:closed_form_dynamic_stewart_wanted.\nBy this definition, \\(\\bm{\\mathcal{F}}\\) can be viewed as the projector of the actuator forces acting on the manipulator, mapped to the Cartesian space. Since there is no redundancy in actuation in the Stewart-Gough manipulator, the Jacobian matrix \\(\\bm{J}\\), squared and actuator forces can be uniquely determined from this wrench, by \\(\\bm{\\tau} = \\bm{J}^{-T} \\bm{\\mathcal{F}}\\), provided \\(\\bm{J}\\) is non-singular. Therefore, actuator forces \\(\\bm{\\tau}\\) are computed in the simulation from\n\\begin{equation} \\bm{\\tau} = \\bm{J}^{-T} \\left( \\bm{M}(\\bm{\\mathcal{X}})\\ddot{\\bm{\\mathcal{X}}} + \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\bm{G}(\\bm{\\mathcal{X}}) - \\bm{\\mathcal{F}}_d \\right) \\end{equation}\n\n Figure 14: Flowchart of inverse dynamics implementation sequence\n Virtual Work Formulation Lagrange Formulation \\begin{equation} K(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}) = \\frac{1}{2} \\dot{\\bm{\\mathcal{X}}}^T \\bm{M}(\\bm{\\mathcal{X}}) \\dot{\\bm{\\mathcal{X}}} \\end{equation}\n\\begin{equation} \\bm{G}(\\bm{\\mathcal{X}}) = \\frac{\\partial P(\\bm{\\mathcal{X}})}{\\partial \\bm{\\mathcal{X}}} \\end{equation}\n\\begin{equation} \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}) = \\frac{1}{2} (\\dot{\\bm{M}} + \\bm{U}^T - \\bm{U}) \\end{equation}\nMotion Control \nIntroduction Parallel robots are designed for two different types of applications.\nIn the first type, the moving platform of the robot accurately follows a desired position and orientation path in a specific time frame, while no interacting forces need to be applied to the environment.\nThe second type of application include situations where the robot moving platform is in contact with a stiff environment (e.g. precision machining). In such application, the contact force describe the state of interaction more effectively than the position and orientation of the moving platform. The problem of force control can be described as to derive the actuator forces for such a manipulator required to generate a prescribed desired wrench (force and torque) at the manipulator moving platform, while the manipulator is performing its motion.\nAlthough a multiple degrees-of-freedom robotic manipulator can usually be represented by a MIMO and nonlinear model, many industrial controllers for such robots consist of a number of linear controller designed to control individual joint motions. One of the reasons why such decentralization can perform well in practice is the use of large gear reductions in robot actuators, which significantly reduces the coupling and non linear behavior of robot dynamics.\nHowever, using advanced techniques in nonlinear and MIMO control permits to overcome limitations of the SISO approach.\nController Topology \n In motion control of parallel manipulator, it is assumed that the controller computes the required actuator forces or torques to cause the robot motion to follow a desired position and orientation trajectory.\n Let us use the motion variables as the generalized coordinate of the moving platform defined by \\(\\bm{\\mathcal{X}} = [\\bm{x}_P, \\bm{\\theta}]^T\\), in which the linear motion is represented by \\(\\bm{x}_p = [x_p, y_p, z_p]^T\\), while the moving platform orientation is represented by screw coordinates \\(\\bm{\\theta} = \\theta[s_x, s_y, s_z]^T = [\\theta_x, \\theta_y, \\theta_z]^T\\).\nConsider the general closed-form dynamics formulation of a parallel robot\n\\begin{equation} \\tcmbox{\\bm{M}(\\bm{\\mathcal{X}})\\ddot{\\bm{\\mathcal{X}}} + \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\bm{G}(\\bm{\\mathcal{X}}) = \\bm{\\mathcal{F}}} \\end{equation}\nwhere\n \\(\\bm{M}(\\bm{\\mathcal{X}})\\) denotes the mass matrix \\(\\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\) denotes the Coriolis and centrifugal matrix \\(\\bm{G}(\\bm{\\mathcal{X}})\\) denotes the gravity vector \\(\\bm{\\mathcal{F}}\\) denotes the generalized forces applied to the moving platform center of mass The generalized forces can be decomposed as follow \\[ \\bm{\\mathcal{F}} = \\bm{J}^T \\bm{\\tau} + \\bm{\\mathcal{F}}_d \\] with\n \\(\\bm{J}\\) is the Jacobian \\(\\bm{\\tau}\\) are the actuator forces \\(\\bm{\\mathcal{F}}_d\\) are any external wrenches Control topology is referred to the structure of the control system used to compute the actuator forces/torques from the measurements, and the required pre and post processing.\n For motion control of a manipulator, the controller has to compute the actuator force/torques required to cause the motion of the moving platform according to the desired trajectory. In general, the desired motion of the moving platform may be represented by the desired generalized coordinate of the manipulator, denoted by \\(\\bm{\\mathcal{X}}_d\\).\nTo perform such motion in closed loop, it is necessary to measure the output motion \\(\\bm{\\mathcal{X}}\\) of the manipulator by an instrumentation system. Such instrumentation usually consists of two subsystems: the first subsystem may use accurate accelerometers, or global positioning systems to calculate the position of a point on the moving platform; and a second subsystem may use inertial or laser gyros to determine orientation of the moving platform.\nFigure fig:general_topology_motion_feedback shows the general topology of a motion controller using direct measurement of the motion variable \\(\\bm{\\mathcal{X}}\\), as feedback in the closed-loop system. In such a structure, the measured position and orientation of the manipulator is compared to its desired value to generate the motion error vector \\(\\bm{e}_\\mathcal{X}\\). The controller uses this error information to generate suitable commands for the actuators to minimize the tracking error.\n\n Figure 15: The general topology of motion feedback control: motion variable \\(\\bm{\\mathcal{X}}\\) is measured\n However, it is usually much easier to measure the active joint variable rather than measuring the final position and orientation of the moving platform. The relation between the joint variable \\(\\bm{q}\\) and motion variable of the moving platform \\(\\bm{\\mathcal{X}}\\) is dealt with the forward and inverse kinematics. The relation between the differential motion variables \\(\\dot{\\bm{q}}\\) and \\(\\dot{\\bm{\\mathcal{X}}}\\) is studied through the Jacobian analysis.\nIt is then possible to use the forward kinematic analysis to calculate \\(\\bm{\\mathcal{X}}\\) from the measured joint variables \\(\\bm{q}\\), and one may use the control topology depicted in Figure fig:general_topology_motion_feedback_bis to implement such a controller.\n\n Figure 16: The general topology of motion feedback control: the active joint variable \\(\\bm{q}\\) is measured\n In this topology, the forward kinematic analysis of the manipulator has to be performed to implement the feedback loop. As described earlier, this is a complex task for parallel manipulators. It is even more complex when a solution has to be found in real time.\nHowever, as shown herein before, the inverse kinematic analysis of parallel manipulators is much easier to carry out. To overcome the implementation problem of the control topology in Figure fig:general_topology_motion_feedback_bis, another control topology is usually implemented for parallel manipulators.\nIn this topology, depicted in Figure fig:general_topology_motion_feedback_ter, the desired motion trajectory of the robot \\(\\bm{\\mathcal{X}}_d\\) is used in an inverse kinematic analysis to find the corresponding desired values for joint variable \\(\\bm{q}_d\\). Hence, the controller is designed based on the joint space error \\(\\bm{e}_q\\).\n\n Figure 17: The general topology of motion feedback control: the active joint variable \\(\\bm{q}\\) is measured, and the inverse kinematic analysis is used\n Therefore, the structure and characteristics of the controller in this topology is totally different from that given in the first two topologies.\nThe input and output of the controller depicted in Figure fig:general_topology_motion_feedback_ter are both in the joint space. However, this is not the case in the previous topologies where the input to the controller is the motion error in task space, while its output is in the joint space.\nFor the topology in Figure fig:general_topology_motion_feedback_ter, independent controllers for each joint may be suitable.\nTo generate a direct input to output relation in the task space, consider the topology depicted in Figure fig:general_topology_motion_feedback_quater. A force distribution block is added which maps the generated wrench in the task space \\(\\bm{\\mathcal{F}}\\), to its corresponding actuator forces/torque \\(\\bm{\\tau}\\).\n\n Figure 18: The general topology of motion feedback control in task space: the motion variable \\(\\bm{\\mathcal{X}}\\) is measured, and the controller output generates wrench in task space\n For a fully parallel manipulator such as the Stewart-Gough platform, this mapping can be constructed from the Jacobian transpose of the manipulator: \\[ \\bm{\\mathcal{F}} = \\bm{J}^T \\bm{\\tau}; \\quad \\bm{\\tau} = \\bm{J}^{-T} \\bm{\\mathcal{F}} \\]\nMotion Control in Task Space \nDecentralized PD Control In the control structure in Figure fig:decentralized_pd_control_task_space, a number of linear PD controllers are used in a feedback structure on each error component. The decentralized controller consists of six disjoint linear controllers acting on each error component \\(\\bm{e}_x = [e_x,\\ e_y,\\ e_z,\\ e_{\\theta_x},\\ e_{\\theta_y},\\ e_{\\theta_z}]\\). The PD controller is denoted by \\(\\bm{K}_d s + \\bm{K}_p\\), in which \\(\\bm{K}_d\\) and \\(\\bm{K}_p\\) are \\(6 \\times 6\\) diagonal matrices denoting the derivative and proportional controller gains for each error term.\n\n Figure 19: Decentralized PD controller implemented in task space\n Hence, by this structure, each tracking error component is treated separately. The output of the controller is denoted by \\(\\bm{\\mathcal{F}} = [F_x\\ F_y\\ F_z\\ \\tau_x\\ \\tau_y\\ \\tau_z]\\).\nIn practice, the calculated output wrench is transformed into actuator forces through the force distribution block. This mapping is implemented through inverse of the manipulator Jacobian transpose by \\(\\bm{\\tau} = \\bm{J}^{-T} \\bm{\\mathcal{F}}\\).\nDifferent alternatives of linear controllers can be used instead of the PD controller used in this structure, however PD controller is the simplest form which can preserve the manipulator stability while providing suitable tracking performance.\nThe proposed decentralized PD controller is very simple in structure and therefore easily implementable. The design of such a controller needs no detailed information on the manipulator dynamics. The controller gains are generally tuned experimentally based on physical realization of the controller by trial and error.\nFeed Forward Control A feedforward wrench denoted by \\(\\bm{\\mathcal{F}}_{ff}\\) may be added to the decentralized PD controller structure as depicted in Figure fig:feedforward_control_task_space. This term is generated from the dynamic model of the manipulator in the task space, represented in a closed form by the following equation: \\[ \\bm{\\mathcal{F}}_{ff} = \\bm{\\hat{M}}(\\bm{\\mathcal{X}}_d)\\ddot{\\bm{\\mathcal{X}}}_d + \\bm{\\hat{C}}(\\bm{\\mathcal{X}}_d, \\dot{\\bm{\\mathcal{X}}}_d)\\dot{\\bm{\\mathcal{X}}}_d + \\bm{\\hat{G}}(\\bm{\\mathcal{X}}_d) \\]\n\n Figure 20: Feed forward wrench added to the decentralized PD controller in task space\n The desired trajectory in task space \\(\\bm{\\mathcal{X}}_d\\), and its derivatives \\(\\dot{\\bm{\\mathcal{X}}}_d\\), \\(\\ddot{\\bm{\\mathcal{X}}}_d\\) are the required inputs for the feedforward block. This term is called feedforward since no online information of the output motion trajectory \\(\\bm{\\mathcal{X}}\\) is needed for its computation.\nIn order to generate this term, dynamic formulation of the robots and its kinematic and dynamic parameters are needed. In practice, exact knowledge of dynamic matrices are not available, and therefore, estimate of these matrices are used in practice, denoted by \\(\\hat{\\bm{M}}\\), \\(\\hat{\\bm{C}}\\) and \\(\\hat{\\bm{G}}\\).\nThe information required to generate the feedforward wrench \\(\\bm{\\mathcal{F}}_{ff}\\) is usually available beforehand and can be derived offline. The closed-loop dynamic formulation for the manipulator becomes:\n\\begin{equation} \\begin{aligned} \\bm{M}(\\bm{\\mathcal{X}})\\ddot{\\bm{\\mathcal{X}}} \u0026amp;+ \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\bm{G}(\\bm{\\mathcal{X}}) \\\\\\\n\u0026amp;= \\bm{\\mathcal{F}} + \\bm{\\mathcal{F}}_d \\\\\\\n\u0026amp;= \\bm{\\mathcal{F}}_{pd} + \\bm{\\mathcal{F}}_{ff} + \\bm{\\mathcal{F}}_d \\\\\\\n\u0026amp;= \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x + \\bm{\\mathcal{F}}_{ff} + \\bm{\\hat{M}}\\ddot{\\bm{\\mathcal{X}}}_d + \\bm{\\hat{C}}\\dot{\\bm{\\mathcal{X}}}_d + \\bm{\\hat{G}} \\end{aligned} \\end{equation}\nIf the knowledge of the dynamic matrices is complete, we may assume that \\(\\hat{\\bm{M}} = \\bm{M}\\), \\(\\hat{\\bm{C}} = \\bm{C}\\) and \\(\\hat{\\bm{G}} = \\bm{G}\\). Furthermore, if we consider that the controller performs well such that \\(\\bm{\\mathcal{X}}(t) \\simeq \\bm{\\mathcal{X}}_d(t)\\) and \\(\\dot{\\bm{\\mathcal{X}}}(t) \\simeq \\dot{\\bm{\\mathcal{X}}}_d(t)\\), the simplified closed-loop dynamics become:\n\\begin{equation} \\begin{aligned} \\bm{M} (\\ddot{\\bm{\\mathcal{X}}}_d - \\ddot{\\bm{\\mathcal{X}}}) + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x + \\bm{\\mathcal{F}}_d \u0026amp;= 0 \\\\\\\n\\bm{M} \\ddot{\\bm{e}}_x + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x + \\bm{\\mathcal{F}}_d \u0026amp;= 0 \\end{aligned} \\end{equation}\nThis equation implies that, if the mentioned assumptions hold, the error dynamics satisfies a set of second-order system in the presence of disturbance. By choosing appropriate gains for PD controller, the transient and steady-state performance of tracking error can be designed so as to satisfy the application requirements.\nNote that except the mass matrix, the error dynamic terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains to work well within the whole workspace of the robot.\nHowever, this method faces a number of limitations in practice. The most important limitation of this control technique is the stringent assumption of a complete knowledge requirement of the dynamic matrices. In practice, derivation of these matrices is a prohibitive task.\nFinally, because of the dependency of the mass matrix to the configuration of the robot, the error dynamics are not completely decoupled. This means that correction in one error component may be considered as a disturbance effect to the other components. To overcome these limitations, inverse dynamic approach is given in the following section.\nInverse Dynamics Control In inverse dynamics control (IDC), nonlinear dynamics of the model is used to add a corrective term to the decentralized PD controller. By this means, nonlinear and coupling behavior of the robotic manipulator is significantly attenuated, and therefore, the performance of linear controller is greatly improved.\n General structure of IDC applied to a parallel manipulator is depicted in Figure fig:inverse_dynamics_control_task_space. A corrective wrench \\(\\bm{\\mathcal{F}}_{fl}\\) is added in a feedback structure to the closed-loop system, which is calculated from the Coriolis and centrifugal matrix and gravity vector of the manipulator dynamic formulation.\nFurthermore, mass matrix is added in the forward path in addition to the desired trajectory acceleration \\(\\ddot{\\bm{\\mathcal{X}}}_d\\).\nAs for the feedforward control, the dynamics and kinematic parameters of the robot are needed, and in practice estimates of these matrices are used.\n\n Figure 21: General configuration of inverse dynamics control implemented in task space\n The controller output wrench applied to the manipulator may be derived as follows:\n\\begin{subequations} \\begin{align} \\bm{\\mathcal{F}} \u0026amp;= \\hat{\\bm{M}}(\\bm{\\mathcal{X}}) \\bm{a} + \\bm{\\mathcal{F}}_{fl} \\\\\\\n\u0026amp;= \\hat{\\bm{M}}(\\bm{\\mathcal{X}}) \\bm{a} + \\hat{\\bm{C}}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}) \\dot{\\bm{\\mathcal{X}}} + \\hat{\\bm{G}}(\\bm{\\mathcal{X}}) \\\\\\\n\\bm{a} \u0026amp;= \\ddot{\\bm{\\mathcal{X}}}_d + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x \\end{align} \\end{subequations}\nThe closed-loop dynamic formulation for the manipulator becomes:\n\\begin{equation} \\begin{aligned} \\bm{M}(\\bm{\\mathcal{X}})\\ddot{\\bm{\\mathcal{X}}} \u0026amp;+ \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\bm{G}(\\bm{\\mathcal{X}}) \\\\\\\n\u0026amp;= \\bm{\\mathcal{F}} + \\bm{\\mathcal{F}}_d \\\\\\\n\u0026amp;= \\hat{\\bm{M}}(\\bm{\\mathcal{X}}) \\left(\\ddot{\\bm{\\mathcal{X}}}_d + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x \\right) \\\\\\\n\u0026amp;\\quad + \\hat{\\bm{C}}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\hat{\\bm{G}}(\\bm{\\mathcal{X}}) + \\bm{\\mathcal{F}}_d \\\\\\\n\\end{aligned} \\end{equation}\nIf the knowledge of the dynamic matrices is complete, the closed-loop dynamic formulation simplifies to:\n\\begin{equation} \\hat{\\bm{M}}(\\bm{\\mathcal{X}}) \\left(\\ddot{\\bm{e}}_d + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x \\right) + \\bm{\\mathcal{F}}_d = 0 \\end{equation}\nThis control technique is very popular in practice because of the fact that this technique can significantly linearize and decouple dynamic formulation of the closed-loop error dynamics. Furthermore, the error dynamic terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains for suitable performance in the whole workspace of the robot.\nHowever, note that for a good performance, and accurate model of the system is required, and the overall procedure is not robust to modeling uncertainty. Furthermore, this technique is computationally intensive in terms of the online computations needed to carry out the closed-loop control structure.\nPartial Linearization IDC Inverse dynamics control has several features making it very attractive in practice. However, to apply this method, complete knowledge of the dynamic formulation matrices is required. This requirement has the main drawbacks that the dynamic formulation of the parallel manipulator is a complicated step to be carried out.\nTo implement all the terms in IDC structure, not only the structure and components of such matrices must be carefully determined, but also the kinematics and inertial parameters of the robot are needed to be identified and calibrated. This step requires the use of high-precision calibration equipment which are not usually accessible. Finally, if all the terms and parameters are well known, implementation of full inverse dynamic linearization is computationally intensive.\nThese are the reasons why, in practice, IDC control is extended to different forms where the above-mentioned stringent requirements are reduced.\nTo develop the simplest possible implementable IDC, let us recall dynamic formulation complexities:\n the manipulator mass matrix \\(\\bm{M}(\\bm{\\mathcal{X}})\\) is derived from kinetic energy of the manipulator (Eq. eq:kinetic_energy) the gravity vector \\(\\bm{G}(\\bm{\\mathcal{X}})\\) is derived from potential energy (Eq. eq:gravity_vectory) the Coriolis and centrifugal matrix \\(\\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\) is derived from Eq. eq:gravity_vectory The computation of the Coriolis and centrifugal matrix is more intensive than that of the mass matrix. Gravity vector is more easily computable.\nHowever, it is shown that certain properties hold for mass matrix, gravity vector and Coriolis and centrifugal matrix, which might be directly used in the control techniques developed for parallel manipulators. One of the most important properties of dynamic matrices is the skew-symmetric property of the matrix \\(\\dot{\\bm{M}} - 2 \\bm{C}\\) .\nConsider dynamic formulation of parallel robot given in Eq. eq:closed_form_dynamic_formulation, in which the skew-symmetric property of dynamic matrices is satisfied. The simplest form of IDC control effort \\(\\bm{\\mathcal{F}}\\) consists of: \\[ \\bm{\\mathcal{F}} = \\bm{\\mathcal{F}}_{pd} + \\bm{\\mathcal{F}}_{fl} \\] in which the first term \\(\\bm{\\mathcal{F}}_{pd}\\) is generated by the simplified PD form on the motion error: \\[ \\bm{\\mathcal{F}}_{pd} = \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p + \\bm{e}_x \\]\nThe second term \\(\\bm{\\mathcal{F}}_{fl}\\) is considered to be only the gravity vector of the manipulator \\(\\bm{G}(\\bm{\\mathcal{X}})\\), at any configuration, and the computationally intensive Coriolis and centrifugal term is not used: \\[ \\bm{\\mathcal{F}}_{fl} = \\bm{G}(\\bm{\\mathcal{X}}) \\]\nNote that for an appreciable tracking performance with no static error at steady state, it is required to have complete knowledge of only the gravity term. By this means, computations required in this control technique are significantly less than that of the general IDC.\nDespite the simple structure of such a controller, the resulting control technique is very well performed, especially at steady state. We can show that this control topology achieves asymptotic tracking for a constant desired trajectory motion, that is, \\(\\dot{\\bm{\\mathcal{X}}}_d = 0\\).\nThis reveals the fact that even if the mass matrix and Coriolis and centrifugal matrix are not used in the feedback, and the closed-loop dynamics is not completely linearized, the PD control structure with gravity compensation can still lead to asymptotic tracking. However, to suitable transient performance, more information of the system dynamics must be used in the linearization technique given in IDC.\nRobust and Adaptative Control Inverse dynamics control faces the stringent requirement that for a good performance, an accurate model of the system is required, and the overall procedure is not robust to modeling uncertainty. Furthermore, this technique is computationally intensive in terms of online computation needed to carry out the closed-loop control structure. The proposed modified inverse dynamics control, while being beneficial in terms of computational cost, is not suitable in terms of a closed-loop transient performance.\nAnother approach to modify IDC is to consider a complete linearization, but assume that complete knowledge of dynamic formulation matrices is not available. To compensate for the lack of knowledge, two advanced control methods, namely robust and adaptive control are proposed:\n In the robust approach, a fixed controller is designed to satisfy the control objectives for the worst possible case of modeling uncertainty and disturbance wrenches. In the adaptive approach, the estimates of dynamic formulation matrices are updated such that the difference between the true values of these matrices to their estimates converges to zero. A global understanding of the trade-offs involved in each method is needed to employ either of them in practice.\nRobust Inverse Dynamics Control Various sources of uncertainties such as unmodelled dynamics, unknown parameters, calibration error, unknown disturbance wrenches, and varying payloads may exist, and are not seen in dynamic model of the manipulator.\nTo consider these modeling uncertainty in the closed-loop performance of the manipulator, recall the general closed-form dynamic formulation of the manipulator given in Eq. eq:closed_form_dynamic_formulation, and modify the inverse dynamics control input \\(\\bm{\\mathcal{F}}\\) as\n\\begin{align*} \\bm{\\mathcal{F}} \u0026amp;= \\hat{\\bm{M}}(\\bm{\\mathcal{X}}) \\bm{a}_r + \\hat{\\bm{C}}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}) \\dot{\\bm{\\mathcal{X}}} + \\hat{\\bm{G}}(\\bm{\\mathcal{X}})\\\\\\\n\\bm{a}_r \u0026amp;= \\ddot{\\bm{\\mathcal{X}}}_d + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x + \\bm{\\delta}_a \\end{align*}\nin which \\(\\bm{a}_r\\) is the robustified control input.\nComparing this equation to the usual IDC, a robustifying term \\(\\bm{\\delta}_a\\) is added to compensate for modeling uncertainties.\nNote that, as defined earlier, the notation \\(\\hat{(.)}\\) represents the estimated value of \\((.)\\) and \\(\\tilde{(.)}\\) is defined as the error mismatch between the estimated value and the true value as \\(\\tilde{(.)} = \\hat{(.)}- (.)\\).\nIn a similar manner \\(\\tilde{(.)}\\) notation may be applied to the motion variables as \\[ \\tilde{\\bm{\\mathcal{X}}} = \\bm{\\mathcal{X}} - \\bm{\\mathcal{X}}_d = - \\bm{e}_x \\]\nThe closed-loop dynamic formulation of the manipulator can be written as: \\[ \\ddot{\\bm{\\mathcal{X}}} = \\bm{a}_r + \\bm{\\eta}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}, \\bm{a}_r) \\] in which \\[ \\bm{\\eta} = \\bm{M}^{-1} \\left( \\tilde{\\bm{M}} \\bm{a}_r + \\tilde{\\bm{C}} \\dot{\\bm{\\mathcal{X}}} + \\tilde{\\bm{G}} \\right) \\] is a measure of modeling uncertainty.\n\n Figure 22: General configuration of robust inverse dynamics control implemented in the task space\n Adaptive Inverse Dynamics Control \n Figure 23: General configuration of adaptative inverse dynamics control implemented in task space\n Motion Control in Joint Space Although the motion control schemes developed in section sec:control_task_space are very effective for tracking performance, they suffer from an implementation constraint that the motion variable \\(\\bm{\\mathcal{X}}\\) must be measured in practice.\nIf this measurement is available without any doubt, such topologies are among the best routines to be implemented in practice. However, as explained in Section sec:control_topology, in many practical situations measurement of the motion variable \\(\\bm{\\mathcal{X}}\\) is difficult or expensive, and usually just the active joint variables \\(\\bm{q}\\) are measured. In such cases, the controllers developed in the joint space may be recommended for practical implementation.\nTo generate a direct input to output relation in the joint space, consider the topology depicted in Figure fig:general_topology_motion_feedback_bis. In this topology, the controller input is the joint variable error vector \\(\\bm{e}_q = \\bm{q}_d - \\bm{q}\\), and the controller output is directly the actuator force vector \\(\\bm{\\tau}\\), and hence there exists a one-to-one correspondence between the controller input to its output.\nThe general form of dynamic formulation of parallel robot is usually given in the task space. For motion control in joint space, we need to transform the dynamic formulation in the joint space, by which the actuator forces \\(\\bm{\\tau}\\) are directly related to the active joint variables \\(\\bm{q}\\).\nDynamic Formation in the Joint Space The relation between the task space variables to their counterparts in the joint space can be derived by forward and inverse kinematics relations. Although both analyses involve solution to a set of non-linear equations, for parallel manipulators, inverse kinematic solution proves to be much easier to obtain than that of forward kinematic solution.\nThis relation in differential kinematics is much simpler and can be completely determined by the Jacobian matrix: \\[ \\tcmbox{\\dot{\\bm{q}} = \\bm{J} \\dot{\\bm{\\mathcal{X}}} \\Longrightarrow \\dot{\\bm{\\mathcal{X}}} = \\bm{J}^{-1} \\dot{\\bm{q}}} \\]\nThe acceleration variables are then: \\[ \\ddot{\\bm{q}} = \\dot{\\bm{J}} \\dot{\\bm{\\mathcal{X}}} + \\bm{J} \\ddot{\\mathcal{X}} \\Longrightarrow \\ddot{X} = \\bm{J}^{-1} \\ddot{\\bm{q}} - \\bm{J}^{-1} \\dot{\\bm{J}} \\dot{\\bm{\\mathcal{X}}} \\]\nFurthermore, the relation between the actuator force vector \\(\\bm{\\tau}\\) to the corresponding task space wrench is given by: \\[ \\tcmbox{\\bm{\\mathcal{F}} = \\bm{J}^T \\bm{\\tau} \\Longrightarrow \\bm{\\tau} = \\bm{J}^{-T} \\bm{\\mathcal{F}}} \\]\nSubstituting \\(\\dot{\\bm{\\mathcal{X}}}\\) and \\(\\ddot{\\bm{\\mathcal{X}}}\\) from the above equations into the dynamic formulation of the parallel robot gives:\n\\begin{equation*} \\begin{aligned} \u0026amp; \\left( \\bm{J}^{-T} \\bm{M} \\bm{J}^{-1} \\right) \\ddot{\\bm{q}} \\\\\\\n\u0026amp; \\quad + \\bm{J}^{-T} \\left( \\bm{C} - \\bm{M} \\bm{J}^{-1} \\dot{\\bm{J}} \\right) \\bm{J}^{-1} \\dot{\\bm{q}} \\\\\\\n\u0026amp; \\quad + \\bm{J}^{-T} \\bm{G} + \\bm{J}^{-T} \\bm{\\mathcal{F}}_d = \\bm{\\tau} \\end{aligned} \\end{equation*}\n \\begin{equation} \\bm{M}_q \\ddot{\\bm{q}} + \\bm{C}_q \\dot{\\bm{q}} + \\bm{G}_q + \\bm{\\tau}_d = \\bm{\\tau} \\label{eq:dynamics_joint_space} \\end{equation}\nwith:\n\\begin{subequations} \\begin{align} \\bm{M}_q =\u0026amp; \\bm{J}^{-T} \\bm{M} \\bm{J}^{-1} \\\\\\\n\\bm{D}_q =\u0026amp; \\bm{J}^{-T} \\left( \\bm{C} - \\bm{M} \\bm{J}^{-1} \\dot{\\bm{J}} \\right) \\bm{J}^{-1} \\\\\\\n\\bm{G}_q =\u0026amp; \\bm{J}^{-T} \\bm{G} \\\\\\\n\\bm{\\tau}_q =\u0026amp; \\bm{J}^{-T} \\bm{\\mathcal{F}}_d \\end{align} \\end{subequations}\n Equation eq:dynamics_joint_space represents the closed form dynamic formulation of a general parallel robot in the joint space.\nNote that the dynamic matrices are not explicitly represented in terms of the joint variable vector \\(\\bm{q}\\). In fact, to fully derive these matrices, the Jacobian matrices must be computed and are generally derived as a function of the motion variables \\(\\bm{\\mathcal{X}}\\). Furthermore, the main dynamic matrices are all functions of the motion variable \\(\\bm{\\mathcal{X}}\\). Hence, in practice, to find the dynamic matrices represented in the joint space, forward kinematics should be solved to find the motion variable \\(\\bm{\\mathcal{X}}\\) for any given joint motion vector \\(\\bm{q}\\).\nSince in parallel robots the forward kinematic analysis is computationally intensive, there exist inherent difficulties in finding the dynamic matrices in the joint space as an explicit function of \\(\\bm{q}\\). In this case it is possible to solve forward kinematics in an online manner, it is recommended to use the control topology depicted in fig:general_topology_motion_feedback_bis, and implement control law design in the task space.\nHowever, one implementable alternative to calculate the dynamic matrices represented in the joint space is to use the desired motion trajectory \\(\\bm{\\mathcal{X}}_d\\) instead of the true value of motion vector \\(\\bm{\\mathcal{X}}\\) in the calculations. This approximation significantly reduces the computational cost, with the penalty of having mismatch between the estimated values of these matrices to their true values.\nDecentralized PD Control The first control strategy introduced in the joint space consists of the simplest form of feedback control in such manipulators. In this control structure, depicted in Figure fig:decentralized_pd_control_joint_space, a number of PD controllers are used in a feedback structure on each error component.\nThe PD controller is denoted by \\(\\bm{K}_d s + \\bm{K}_p\\), where \\(\\bm{K}_d\\) and \\(\\bm{K}_p\\) are \\(n \\times n\\) diagonal matrices denoting the derivative and proportional controller gains, respectively.\n\n Figure 24: Decentralized PD controller implemented in joint space\n By this structure, each tracking error component is treated separately by its disjoint PD controller. The proposed decentralized PD controller is very simple in structure, and therefore very easy to be implemented on the manipulator. The design of such a controller needs no detailed information on the manipulator dynamic formulation and parameters. However, the tracking performance of such a controller is relatively poor, and static tracking errors might be unavoidable. Also, the performance of the closed-loop system is configuration dependent.\nIn practice, the gains are tuned experimentally and obtained as a trade-off between transient behavior and steady-state errors at different configurations. As the dynamics of the system in the joint space is configuration dependent, finding suitable controller gains to result in required performance in all configurations is a difficult task.\nThe performance of the controller to attenuate measurement noise and external disturbance wrenches are also poor in practice. To remedy these shortcomings, some modifications have been proposed to this structure and further described.\nFeedforward Control The tracking performance of the simple PD controller implemented in the joint space is usually not sufficient at different configurations. To improve the tracking performance, a feedforward actuator force denoted by \\(\\bm{\\tau}_{ff}\\) may be added to the structure of the controller as depicted in Figure fig:feedforward_pd_control_joint_space.\n\n Figure 25: Feed forward actuator force added to the decentralized PD controller in joint space\n The feedforward term is generated from the dynamic formulation of the manipulator. The desired trajectory in the task space \\(\\bm{\\mathcal{X}}_d\\) and its derivatives \\(\\dot{\\bm{\\mathcal{X}}}_d\\), \\(\\ddot{\\bm{\\mathcal{X}}}_d\\) are thus required.\nIn practice, exact knowledge of dynamic matrices are not available, and therefore, estimates of these matrices are used in this derivation denoted by \\(\\hat{\\bm{M}}\\), \\(\\hat{\\bm{C}}\\) and \\(\\hat{\\bm{G}}\\).\nThe information required to generate the feedforward actuator force \\(\\bm{\\tau}_{ff}\\) is usually available beforehand, and in such a case, the feedforward term corresponding to a given trajectory can be determined off-line, while the computation of the decentralized feedback term would be executed online.\nIf complete information of the dynamic matrices is available, and if we assume that the system is performing well, meaning that \\(\\bm{\\mathcal{X}}(t) \\simeq \\bm{\\mathcal{X}}_d(t)\\) and \\(\\dot{\\bm{\\mathcal{X}}}(t) \\simeq \\dot{\\bm{\\mathcal{X}}}_d(t)\\), we can write the closed loop dynamics as follow: \\[ \\bm{M}_q \\ddot{\\bm{e}}_q + \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q = \\bm{\\tau}_d \\]\nThe error dynamics satisfy a set of second-order differential equations in the presence of disturbance. Therefore, by choosing appropriate gains of the PD controller, the transient and steady-state performance of the tracking error can be suitably designed.\nNote that except for the mass matrix, the error dynamics terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains to work well in the whole workspace of the robot in such a structure.\nHowever, this method suffers from a number of limitations in practice. The most important limitation is the stringent assumption of the complete information requirement of dynamics matrices. Furthermore, even is all the assumption hold, because of the configuration dependence of the mass matrix, the error dynamics is still not completely decoupled. This means that correction in one component may be considered as a disturbance effect to the other components. To overcome these limitations, the inverse dynamic approach has been developed and is given in the following section.\nInverse Dynamics Control As seen in the previous section, the tracking performance of a decentralized PD controller implemented in the joint space is not uniform at different configurations. To compensate for such effects, a feedforward torque is added to the structure of the controller, by which the shortcomings of the decentralized controller is partially remedied. However, the closed-loop performance still faces a number of limitations, which cannot be completely remedied because of the inherent conditions on feedforward structure of that proposed controller. To overcome these limitations, in this section, a control technique based on inverse dynamic feedback of the manipulator in the joint space is presented.\n In the inverse dynamics control (IDC) strategy, the nonlinear dynamics of the model is used to add a corrective term to the decentralized PD controller. By this means, the nonlinear and coupling characteristics of robotic manipulator is significantly attenuated, and therefore, the performance of linear controller is significantly improved.\n The general structure of inverse dynamics control applied to a parallel manipulator in the joint space is depicted in Figure fig:inverse_dynamics_control_joint_space.\nA corrective torque \\(\\bm{\\tau}_{fl}\\) is added in a feedback structure to the closed-loop system, which is calculated from the Coriolis and Centrifugal matrix, and the gravity vector of the manipulator dynamic formulation in the joint space. Furthermore, the mass matrix is acting in the forward path, in addition to the desired trajectory acceleration \\(\\ddot{\\bm{q}}_q\\). Note that to generate this term, the dynamic formulation of the robot, and its kinematic and dynamic parameters are needed. In practice, exact knowledge of dynamic matrices are not available, and there estimates are used.\n\n Figure 26: General configuration of inverse dynamics control implemented in joint space\n The controller output torque applied to the manipulator may be calculated by:\n\\begin{subequations} \\begin{align} \\bm{\\tau} \u0026amp;= \\hat{\\bm{M}}_q \\bm{a}_q + \\bm{\\tau}_{fl} \\\\\\\n\\bm{\\tau}_{fl} \u0026amp;= \\hat{\\bm{C}}_q \\dot{\\bm{q}} + \\hat{\\bm{G}}_q \\\\\\\n\\bm{a}_q \u0026amp;= \\ddot{\\bm{q}}_d + \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q \\end{align} \\end{subequations}\nIf the knowledge of dynamic matrices is complete, the closed-loop dynamic formulation is simplified to: \\[ \\hat{\\bm{M}}_q \\left( \\ddot{\\bm{e}}_q + \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q \\right) + \\bm{\\tau}_d = 0 \\]\nThis equation implies that if there exist complete knowledge of the dynamic matrices, the tracking error dynamic equation satisfies a set of second-order systems in the presence of disturbance. Consider the case where no disturbance wrench is applied to the manipulator, as the mass matrix \\(\\bm{M}_q\\) is positive definite at all non-singular configurations, it can be inverted, and the error dynamics simplifies to: \\[ \\ddot{\\bm{e}}_q + \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q = 0 \\]\nThis control technique is very popular in practice because of the fact that it can significantly linearize and decouple the dynamic formulation of the closed-loop system for error dynamics components. Furthermore, the error dynamic terms are all configuration independent, and therefore, it is much easier to tune the PD controller gains to perform well in the whole workspace of the robot.\nHowever, note that for a good performance, an accurate model of the system is required, and the overall procedure is not robust to model uncertainties.\nSummary of Motion Control Techniques In this section, a number of control techniques have been developed for parallel robots. Based on the dynamic formulation given in Section sec:dynamics, many model-based control techniques have been developed for implementation in the task space as well as in the joint space. These control techniques are presented from the simplest form of decentralized PD control to more advanced robust and adaptive inverse dynamics control.\nA summary of these techniques is given below.\nDynamic Formulations The dynamic formulation of a parallel robot may be directly represented as a function of motion variable \\(\\bm{\\mathcal{X}}\\) in the task space as follows:\n\\begin{equation*} \\bm{M}(\\bm{\\mathcal{X}})\\ddot{\\bm{\\mathcal{X}}} + \\bm{C}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\bm{G}(\\bm{\\mathcal{X}}) = \\bm{\\mathcal{F}} + \\bm{\\mathcal{F}}_d \\end{equation*}\nThe dynamic formulation may be represented as a function of actuator motion variable \\(\\bm{q}\\) as\n\\begin{equation*} \\bm{M}_q \\ddot{\\bm{q}} + \\bm{C}_q \\dot{\\bm{q}} + \\bm{G}_q = \\bm{\\tau} + \\bm{\\tau}_d \\end{equation*}\nin which these two formulations are closely related to each other by the following relations:\n\\begin{equation*} \\begin{aligned} \\bm{M}_q \u0026amp;= \\bm{J}^{-T} \\bm{M} \\bm{J}^{-1} \\\\\\\n\\bm{C}_q \u0026amp;= \\bm{J}^{-T} \\left( \\bm{C} - \\bm{M}\\bm{J}^{-1}\\dot{\\bm{J}} \\right) \\bm{J}^{-1} \\\\\\\n\\bm{D}_q \u0026amp;= \\bm{J}^{-T} \\bm{G} \\\\\\\n\\bm{\\tau}_q \u0026amp;= \\bm{J}^{-T} \\bm{\\mathcal{F}} \\end{aligned} \\end{equation*}\nDecentralized PD Control The simplest controller for a parallel robot can be considered as a decentralized PD controller being implemented individually on each error component. If such a structure is implemented in the task space, the control effort is calculated by\n\\begin{equation*} \\bm{\\mathcal{F}} = \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x \\end{equation*}\nand the actuator effort can be generally determined through a force distribution scheme.\nFor a completely parallel manipulator, the actuator forces can be generated by \\(\\bm{\\tau} = \\bm{J}^{-T} \\bm{\\mathcal{F}}\\) at non-singular configurations.\nDecentralized PD control can be directly implemented in the joint space by the following equation:\n\\begin{equation*} \\bm{\\tau} = \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q \\end{equation*}\nFeed Forward Control The reduce the performance limitations of simple PD control, the control effort may be enforced with a feed forward wrench given by\n\\begin{equation*} \\bm{\\mathcal{F}} = \\bm{\\mathcal{F}}_{pd} + \\bm{\\mathcal{F}}_{ff} \\end{equation*}\nin which\n\\begin{equation*} \\begin{aligned} \\bm{\\mathcal{F}}_{ff} \u0026amp;= \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x \\\\\\\n\u0026amp;+ \\hat{\\bm{M}}(\\bm{\\mathcal{X}}_d)\\ddot{\\bm{\\mathcal{X}}}_d + \\hat{\\bm{C}}(\\bm{\\mathcal{X}}_d, \\dot{\\bm{\\mathcal{X}}}_d)\\dot{\\bm{\\mathcal{X}}}_d + \\hat{\\bm{G}}(\\bm{\\mathcal{X}}_d) \\end{aligned} \\end{equation*}\nwhere \\(\\hat{\\bm{M}}\\), \\(\\hat{\\bm{C}}\\) and \\(\\hat{\\bm{G}}\\) are estimation of the dynamic matrices.\nThis controller can be implemented in joint space as follows\n\\begin{equation*} \\begin{aligned} \\bm{\\tau} \u0026amp;= \\bm{\\tau}_{pd} + \\bm{\\tau}_{ff} \\\\\\\n\u0026amp;= \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q + \\bm{J}^{-T} \\bm{\\mathcal{F}}_{ff} \\end{aligned} \\end{equation*}\nInverse Dynamics Control In the inverse dynamics control, the nonlinear dynamics of the model is used to add a corrective term to the decentralized PD controller. If such a structure is implemented in the task space, the control effort is calculated by\n\\begin{equation*} \\begin{aligned} \\bm{\\mathcal{F}} \u0026amp;= \\hat{\\bm{M}}(\\bm{\\mathcal{X}})\\bm{a} + \\hat{\\bm{C}}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\hat{\\bm{G}}(\\bm{\\mathcal{X}}) \\\\\\\n\\bm{a} \u0026amp;= \\ddot{\\bm{\\mathcal{X}}}_d + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x \\end{aligned} \\end{equation*}\nIn general, the tracking error dynamics can be represented by\n\\begin{equation*} \\ddot{\\bm{e}}_x + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x + \\hat{\\bm{M}}^{-1} \\left[ \\tilde{\\bm{M}} \\ddot{\\bm{\\mathcal{X}}} + \\tilde{\\bm{C}} \\dot{\\bm{\\mathcal{X}}} + \\tilde{\\bm{G}} + \\bm{\\mathcal{F}}_d \\right] = 0 \\end{equation*}\nThis controller can be implemented in the joint space as follows:\n\\begin{equation*} \\begin{aligned} \\bm{\\tau} \u0026amp;= \\hat{\\bm{M}}_q \\bm{a}_q + \\hat{\\bm{C}}_q \\dot{\\bm{q}} + \\hat{\\bm{G}}_q \\\\\\\n\\bm{a}_q \u0026amp;= \\ddot{\\bm{q}}_d + \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q \\end{aligned} \\end{equation*}\nby which the tracking error dynamics is summarized as\n\\begin{equation*} \\ddot{\\bm{e}}_q + \\bm{K}_d \\dot{\\bm{e}}_q + \\bm{K}_p \\bm{e}_q + \\hat{\\bm{M}}_{q}^{-1} \\left[ \\tilde{\\bm{M}}_q \\ddot{\\bm{q}} + \\tilde{\\bm{C}}_q \\dot{\\bm{q}} + \\tilde{\\bm{G}}_q + \\bm{\\mathcal{\\tau}}_d \\right] = 0 \\end{equation*}\nPartial Linearization IDC To reduce the computational cost of the inverse dynamic control, it is possible to use partial linearization of dynamic formulation, just by gravity compensation, while keeping asymptotic tracking stability of the closed-loop system. In which a case, the control input wrench in the task space is simplified to\n\\begin{equation*} \\bm{\\mathcal{F}} = \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x + \\hat{\\bm{G}}(\\bm{\\mathcal{X}}) \\end{equation*}\nThe following Lyapunov function may be used to analyze the stability of tracking dynamics of the closed-loop system:\n\\begin{equation*} \\dot{V} = \\dot{\\bm{\\mathcal{X}}}^T \\bm{M} \\ddot{\\bm{\\mathcal{X}}} + \\frac{1}{2} \\dot{\\bm{\\mathcal{X}}}^T \\dot{\\bm{M}} \\dot{\\bm{\\mathcal{X}}} + \\bm{e}_x^T \\bm{K}_p \\bm{e}_x \\end{equation*}\nStability analysis of the closed-loop system in this case reveals the fact that this simplified version of inverse dynamics control can lead to asymptotic tracking for constant desired trajectories.\nRobust Inverse Dynamics Control To accommodate modeling uncertainties in inverse dynamic control, the following robust control scheme in the task space is developed:\n\\begin{equation*} \\begin{aligned} \\bm{\\mathcal{F}} \u0026amp;= \\hat{\\bm{M}}(\\bm{\\mathcal{X}}) \\bm{a}_r + \\hat{\\bm{C}}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}})\\dot{\\bm{\\mathcal{X}}} + \\hat{\\bm{G}}(\\bm{\\mathcal{X}}) \\\\\\\n\\bm{a}_r \u0026amp;= \\ddot{\\bm{\\mathcal{X}}}_d + \\bm{K}_d \\dot{\\bm{e}}_x + \\bm{K}_p \\bm{e}_x + \\bm{\\delta}_a \\end{aligned} \\end{equation*}\nin which the robustifying corrective term \\(\\bm{\\delta}_a\\) is found through a Lyapunov stability analysis of tracking error dynamics. The tracking error dynamics can be represented by the following linear and nonlinear components:\n\\begin{equation*} \\bm{A} = \\begin{bmatrix} \\bm{0} \u0026amp; \\bm{I} \\\\\\\n-\\bm{K}_p \u0026amp; -\\bm{K}_d \\end{bmatrix}, \\quad \\bm{B} = \\begin{bmatrix} \\bm{0} \\ \\bm{I} \\end{bmatrix} \\end{equation*}\nThe corrective term \\(\\bm{\\delta}_a\\) can be found as\n\\begin{equation*} \\bm{\\delta}_a = \\left\\{ \\begin{matrix} - \\rho \\frac{v}{\\|v\\|} \u0026amp; \\text{if} \\|v\\| \u0026gt; \\epsilon \\\\\\\n- \\rho \\frac{v}{\\epsilon} \u0026amp; \\text{if} \\|v\\| \\le \\epsilon \\end{matrix} \\right. \\end{equation*}\nin which \\(v\\) is defined by \\(v = \\bm{B}^T \\bm{P} \\bm{\\epsilon}\\), where \\(\\bm{P}\\) is the solution to the matrix Lyapunov equation and \\(\\epsilon\\) is a smoothing threshold. It is shown that by adding this corrective term to the regular inverse dynamics control, the closed-loop system achieves uniform ultimate bounded tracking errors.\nAdaptive Inverse Dynamics Control In the adaptive version of the inverse dynamics control, full feedback linearization is considered through adaptive update of dynamic formulation matrices. The error dynamics in this case is\n\\begin{equation*} \\dot{\\bm{\\epsilon}} = \\bm{A} \\bm{\\epsilon} + \\bm{B} \\bm{\\Phi} \\tilde{\\bm{\\theta}} \\end{equation*}\nin which\n\\begin{equation*} \\begin{aligned} \\bm{A} \u0026amp;= \\begin{bmatrix} \\bm{0} \u0026amp; \\bm{I} \\ -bm{K}_p \u0026amp; -\\bm{K}_d \\end{bmatrix}, \\quad \\bm{B} = \\begin{bmatrix} \\bm{0} \\ \\bm{I} \\end{bmatrix} \\\\\\\n\\bm{\\Phi} \u0026amp;= \\hat{\\bm{M}}^{-1} \\bm{\\Upsilon}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}, \\ddot{\\bm{\\mathcal{X}}}) \\end{aligned} \\end{equation*}\nBased on the Lyapunov stability analysis, by using the following Lyapunov function\n\\begin{equation*} V = \\bm{\\epsilon}^T \\bm{P} \\bm{\\epsilon} + \\tilde{\\bm{\\theta}}^T \\bm{\\Gamma} \\bm{\\theta} \\end{equation*}\nthe following parameter adaptation law is derived for updates\n\\begin{equation*} \\dot{\\hat{\\bm{\\theta}}} = - \\bm{\\Gamma}^{-1} \\bm{\\Phi}^T \\bm{B}^T \\bm{P} \\bm{\\epsilon} \\end{equation*}\nBy this means, the closed-loop system achieves asymptotic tracking performance, while the parameter estimation errors remain bounded.\nMotion Control of the Stewart-Gough Platform Control in the Task space For the Stewart-Gough platform, the motion variable in the task space is a six-dimensional vector \\[ \\bm{\\mathcal{X}} = \\begin{bmatrix} \\bm{x}_p \\ \\bm{\\theta} \\end{bmatrix} \\] with:\n \\(\\bm{x}_p = [x_p\\ y_p\\ z_p]^T\\) is the position vector of the motion platform center of mass \\(\\bm{\\theta} = \\theta [s_x\\ s_y\\ s_z]^T = [\\theta_x\\ \\theta_y\\ \\theta_z]^T\\) is the moving platform orientation expressed by screw coordinates Therefore, the tracking error is defined as \\(\\bm{e} = [e_x\\ e_y\\ e_z\\ e_{\\theta_x}\\ e_{\\theta_y}\\ e_{\\theta_z}]^T\\).\nThe decentralized controller consists of six disjoint proportional derivative controllers acting on each error component and is denoted by \\(\\bm{K}_d s + \\bm{K}_p\\).\nThe output of the controller is denoted by \\(\\bm{\\mathcal{F}} = [F_x\\ F_y\\ F_z\\ \\tau_x\\ \\tau_y\\ \\tau_z]^T\\). Note that since the output of the controller is defined in the task space, each wrench component directly manipulates the corresponding tracking error component, and therefore, the overall tracking performance of the manipulator is suitable is high controller gains are used.\nIn practice, the calculated output wrench is transformed into actuator forces through the force distribution block corresponding to the inverse of Jacobian transpose.\nControl in the Joint space The joint variable \\(\\bm{q}(t)\\) is a six-dimensional vector consisting of the limb lengths denoted by \\(\\bm{q} = [l_1\\ l_2\\ l_3\\ l_4\\ l_5\\ l_6]^T\\). Therefore, the tracking error is defined as \\(\\bm{e}_q = \\bm{q}_d - \\bm{q}\\), in which is the desired motion variable in the joint space \\(\\bm{q}_d\\) is determined by the solution of inverse kinematics, and \\(\\bm{q}\\) is given by direct measurement of the limb lengths.\nThe decentralized controller, therefore, consists of six disjoint PD controllers acting on each error component. The output of the controller directly generates the actuator torques denoted by \\(\\tau\\).\nIn simulation, it is observe that the orientation error significantly increase in the joint space control scheme. The main reason is that the controller gains directly penalize the position error of the limb lengths, and not the orientation errors, and therefore, there is no direct controller action to be suitably tuned to reduce the orientation error.\nComparing the closed-loop performance of the PD controllers designed in the joint space to those designed in the task space, it can be concluded that tuning of the PD gains for a suitable performance is much easier in task space designs. Furthermore, a very small error signature in the joint space may be accumulated to produce relatively larger tracking errors in the task space. Hence, it is recommended to design and implement controllers in the task space, if the required motion variables can be directly measured or the forward kinematic solution can be calculated in an online routine.\nForce Control \nIntroduction In many applications, it may occur that the robot moving platform is in contact with a stiff environment and specific interacting wrench is required. In such applications, the contact wrench describes the state of interaction more effectively than the position and orientation of the moving platform.\n The problem of force control can be described as to derive the actuator forces required to generate a prescribed desired wrench at the manipulator moving platform, when the manipulator is carrying out its desired motion.\n This problem and its extents are treated in the force control algorithms described in this chapter. A force control strategy is one that modifies position trajectories based on the sensed wrench, or force-motion relations.\nIf a pure motion control scheme is used for manipulator, in case it contacts an environment, the robot does not sense the presence of the environment, and its driving forces become harshly high to reduce the tracking errors. In such a case, the robot may break the object it is in contact or will break its internal structure. Additional sensors should be included in the manipulator in order for it to be able to feel the interaction and to control the interacting forces. Different wrench sensors are developed for such applications, and it is possible to use joint torque or link force measurement units to determine the projection of the interacting forces in the joint space.\nThe use of wrench sensors either in the task space or in the joint space open horizons to use different force control topologies for the manipulators. Using such sensors does not imply that regular motion sensors used in motion control schemes are not necessary. The use of motion sensors and the usual corresponding control topologies are usually necessary, since the motion of the manipulator is one of the outputs to be controlled. Depending on the type and configuration of the wrench sensors, different force control topologies are developed.\nController Topology For a force control scheme, the desired interacting wrench of the moving platform and the environment may be of interest. This quantity may be denoted by \\(\\bm{\\mathcal{F}}_d\\), which has the same dimension and structure of the manipulator wrench \\(\\bm{\\mathcal{F}}\\). To carry out such a control task in a closed-loop structure, it is necessary to measure the output wrench of the manipulator through an instrumentation system.\nAlthough there are many commercial six-degrees-of-freedom wrench sensors available in the market, they are usually more expensive than single joint force measurement units. Another alternative for force measurement is direct measurement of the actuator forces. Many commercial linear actuators are available in the market in which embedded force measurement is considered in their design. Therefore, it might be preferable in some applications to use direct actuator force measurements to carry out the feedback control.\nCascade Control In a general force control scheme, the prime objective is tracking of the interacting wrench between the moving platform and the environment. However, note that the motion control of the robot when the robot is in interaction with the environment is also another less-important objective and when the contact of the robot moving platform is released, motion control becomes the prime objective.\n To follow two objectives with different properties in one control system, usually a hierarchy of two feedback loops is used in practice. This kind of control topology is called cascade control, which is used when there are several measurements and one prime control variable. Cascade control is implemented by nesting the control loops, as shown in Figure fig:cascade_control. The output control loop is called the primary loop, while the inner loop is called the secondary loop and is used to fulfill a secondary objective in the closed-loop system.\n \n Figure 27: Block diagram of a closed-loop system with cascade control\n The measured variables are here the motion and interacting wrench that may be measured in the task space or in the joint space, and therefore, different control topologies may be advised for each set of measurement variables.\nTo improve the performance of the control system for a particular objective, it is important to choose the right variables for internal and external feedback loops, and to design suitable controllers for each feedback system. Although these differ in different topologies described in the following sections, some general rules are applied to design a well performing cascade control system.\nA general idea in cascade control design is the ideal case, in which the inner loop is designed so tight that the secondary (inner) loop behaves as a perfect servo, and responds very quickly to the internal control command. This idea is effectively used in many applications, wherein a nearly-perfect actuator to respond to the requested commands is designed by using an inner control feedback.\n The design criteria for the inner loop is to have a high control gain such that the time response of the secondary variable is at least 5 times more than that of the primary variable, and such that it can overcome the effect of disturbances and unmodelled dynamics in the internal feedback structure.\n It is also necessary to have a well-defined relation between the primary and secondary variables, to have harmony in the objectives followed in the primary and secondary loops.\nForce Feedback in Outer Loop Consider the force control schemes, in which force tracking is the prime objective. In such a case, it is advised that the outer loop of cascade control structure is constructed by wrench feedback, while the inner loop is based on position feedback. Since different types of measurement units may be used in parallel robots, different control topologies may be constructed to implement such a cascade structure.\nConsider first the cascade control topology shown in Figure fig:taghira13_cascade_force_outer_loop in which the measured variables are both in the task space. The inner loop is constructed by position feedback while the outer loop is based on force feedback. As seen in Figure fig:taghira13_cascade_force_outer_loop, the force controller block is fed to the motion controller, and this might be seen as the generated desired motion trajectory for the inner loop.\nThe output of motion controller is also designed in the task space, and to convert it to implementable actuator force \\(\\bm{\\tau}\\), the force distribution block is considered in this topology.\n\n Figure 28: Cascade topology of force feedback control: position in inner loop and force in outer loop. Moving platform wrench \\(\\bm{\\mathcal{F}}\\) and motion variable \\(\\bm{\\mathcal{X}}\\) are measured in the task space\n Other alternatives for force control topology may be suggested based on the variations of position and force measurements. If the force is measured in the joint space, the topology suggested in Figure fig:taghira13_cascade_force_outer_loop_tau can be used. In this topology, the measured actuator force vector \\(\\bm{\\tau}\\) is mapped into its corresponding wrench in the task space by the Jacobian transpose mapping \\(\\bm{\\mathcal{F}} = \\bm{J}^T \\bm{\\tau}\\).\n\n Figure 29: Cascade topology of force feedback control: position in inner loop and force in outer loop. Actuator forces \\(\\bm{\\tau}\\) and motion variable \\(\\bm{\\mathcal{X}}\\) are measured\n Consider the case where the force and motion variables are both measured in the joint space. Figure fig:taghira13_cascade_force_outer_loop_tau_q suggests the force control topology in the joint space, in which the inner loop is based on measured motion variable in the joint space, and the outer loop uses the measured actuator force vector. In this topology, it is advised that the force controller is designed in the task space, and the Jacobian transpose mapping is used to project the measured actuator force vector into its corresponding wrench in the task space. However, as the inner loop is constructed in the joint space, the desired motion variable \\(\\bm{\\mathcal{X}}_d\\) is mapped into joint space using inverse kinematic solution.\nTherefore, the structure and characteristics of the position controller in this topology is totally different from that given in the first two topologies.\n\n Figure 30: Cascade topology of force feedback control: position in inner loop and force in outer loop. Actuator forces \\(\\bm{\\tau}\\) and joint motion variable \\(\\bm{q}\\) are measured in the joint space\n Force Feedback in Inner Loop Consider the force control scheme in which the motion-force relation is the prime objective. In such a case, force tracking is not the primary objective, and it is advised that the outer loop of cascade control structure consists of a motion control feedback.\nSince different type of measurement units may be used in parallel robots, different control topologies may be constructed to implement such cascade controllers.\nFigure fig:taghira13_cascade_force_inner_loop_F illustrates the cascade control topology for the system in which the measured variables are both in the task space (\\(\\bm{\\mathcal{F}}\\) and \\(\\bm{\\mathcal{X}}\\)). The inner loop is loop is constructed by force feedback while the outer loop is based on position feedback. By this means, when the manipulator is not in contact with a stiff environment, position tracking is guaranteed through the primary controller. However, when there is interacting wrench \\(\\bm{\\mathcal{F}}_e\\) applied to the moving platform, this structure controls the force-motion relation. This configuration may be seen as if the outer loop generates a desired force trajectory for the inner loop.\n\n Figure 31: Cascade topology of force feedback control: force in inner loop and position in outer loop. Moving platform wrench \\(\\bm{\\mathcal{F}}\\) and motion variable \\(\\bm{\\mathcal{X}}\\) are measured in the task space\n Other alternatives for control topology may be suggested based on the variations of position and force measurements. If the force is measured in the joint space, control topology shown in Figure fig:taghira13_cascade_force_inner_loop_tau can be used. In such case, the Jacobian transpose is used to map the actuator force to its corresponding wrench in the task space.\n\n Figure 32: Cascade topology of force feedback control: force in inner loop and position in outer loop. Actuator forces \\(\\bm{\\tau}\\) and motion variable \\(\\bm{\\mathcal{X}}\\) are measured\n If the force and motion variables are both measured in the joint space, the control topology shown in Figure fig:taghira13_cascade_force_inner_loop_tau_q is suggested. The inner loop is based on the measured actuator force vector in the joint space \\(\\bm{\\tau}\\), and the outer loop is based on the measured actuated joint position vector \\(\\bm{q}\\). In this topology, the desired motion in the task space is mapped into the joint space using inverse kinematic solution, and both the position and force feedback controllers are designed in the joint space. Thus, independent controllers for each joint may be suitable for this topology.\n\n Figure 33: Cascade topology of force feedback control: force in inner loop and position in outer loop. Actuator forces \\(\\bm{\\tau}\\) and joint motion variable \\(\\bm{q}\\) are measured in the joint space\n Stiffness Control Single-Degree-of-Freedom Stiffness Control General Stiffness Control Stiffness Contorl of the Stewart-Gough Platform Direct Force Control \n Figure 34: Direct force control scheme, force feedback in the outer loop and motion feedback in the inner loop\n Impedance Control For the stiffness control and direct force control schemes, it is observed that when the manipulator-moving platform is in contact with a stiff environment, the motion variable \\(\\bm{\\mathcal{X}}\\) and the interacting force variable \\(\\bm{\\mathcal{F}}\\) are two dynamically dependent quantities.\nIn stiffness control, it is aimed to adjust the static relation between these two quantities. In this scheme, no force measurement is required, however, careful design on the desired motion trajectory and PD controller gains is needed to tune the stiffness property of the interaction at steady stage.\nIn force control schemes, on the other hand, the force tracking is the prime objective, and force measurement is a stringent requirement to implement such schemes.\nThe main reason that the motion and force variables are not being gable to be controlled independently is that for an n-degrees-of-freedom manipulator, only n-independent control inputs are available, and therefore, only n-independent variables can be controlled, while the force and motion quantities count to \\(2n\\) independent variables.\n The key idea behind impedance control schemes, is to tune the dynamic relation between the force and the motion variables, and not a hierarchy of tracking objectives in force and in position variables. In this scheme, contrary to stiffness control schemes, both force and position variables are measured and used in the control structure.\n The definition of mechanical impedance is given in an analogy of the well-known electrical impedance definition as the relationship between the effort and flow variables. Since this relation can be well determined in the frequency domain, the dynamical relation of force and motion variable may be represented by mechanical impedance. Impedance control schemes provide control topology to tune the mechanical impedance of a system to a desired value. By this means, the force and the motion variables are not controlled independently, or in a hierarchy, but their dynamic relation represented by mechanical impedance is suitably controlled.\nImpedance Impedance was first defined in electrical networks as the measure of the opposition that an electrical circuit presents to the passage of a current when a voltage is applied. To generalize the impedance definition to other disciplines, voltage is generalized to the effort and current is generalized to the flow.\nImpedance is a complex function defined as the ratio of the Laplace transform of the effort to the Laplace transform of the flow.\nImpedance is usually denoted by \\(\\bm{Z}(s)\\) and it may be represented by writing its magnitude and phase in the form of \\(\\abs{\\bm{Z}(s)}\\) and \\(\\angle{\\bm{Z}(s)}\\). The magnitude of the complex impedance \\(\\abs{\\bm{Z}}\\) is the ratio of the effort amplitude to that of the flow, while the phase \\(\\angle{\\bm{Z}}\\) is the phase shift by which the flow is ahead of the effort.\n Mechanical Impedance is defined as the ratio of the Laplace transform of the mechanical effort to the Laplace transform of the mechanical flow:\n\\begin{equation} \\bm{Z}(s) = \\frac{\\bm{F}(s)}{\\bm{v}(s)} \\end{equation}\nin which effort in mechanical systems is represented by force \\(\\bm{F}\\) and flow is represented by velocity \\(\\bm{v}\\).\n Note that this definition is given for a single-degree-of-freedom motion system. The motion can be generalized to angular motion, in which the effort is represented by torque, while the flow is represented by angular velocity. Furthermore, the impedance may be generalized to multiple-degrees-of-freedom system, in which for a general spatial motion effort is represented by a wrench \\(\\bm{\\mathcal{F}}\\), while flow is represented by motion twist \\(\\dot{\\bm{\\mathcal{X}}}\\).\nNevertheless, note that Laplace transform is only applicable for linear time invariant systems, and for a parallel manipulator the dynamic formulation of which is nonlinear, the concept of mechanical impedance may be extended to the differential equation relating the mechanical wrench \\(\\bm{\\mathcal{F}}\\) to motion twist \\(\\dot{\\bm{\\mathcal{X}}}\\).\n Consider an RLC circuit depicted in Figure fig:taghirad13_impedance_control_rlc. The differential equation relating voltage \\(v\\) to the current \\(i\\) is given by \\[ v = L\\frac{di}{dt} + Ri + \\int_0^t \\frac{1}{C} i(\\tau)d\\tau \\] in which \\(L\\) denote the inductance, \\(R\\) the resistance and \\(C\\) the capacitance.\nThe impedance of the system may be found from the Laplace transform of the above equation:\n\\begin{equation} Z(s) = \\frac{v(s)}{i(s)} = Ls + R + \\frac{1}{Cs} \\label{eq:rlc_impedance} \\end{equation}\n Consider the mass-spring-damper system depicted in Figure fig:taghirad13_impedance_control_rlc. The governing dynamic formulation for this system is given by \\[ m \\ddot{x} + c \\dot{x} + k x = f \\] in which \\(m\\) denote the body mass, \\(c\\) the damper viscous coefficient and \\(k\\) the spring stiffness.\nThe impedance of the system may be found from the Laplace transform of the above equation:\n\\begin{equation} Z(s) = \\frac{f(s)}{v(s)} = ms + c + \\frac{k}{s} \\label{eq:mass_spring_damper_impedance} \\end{equation}\n \n Figure 35: Analogy of electrical impedance in (a) an electrical RLC circuit to (b) a mechanical mass-spring-damper system\n As inferred from the above two examples, although the physical nature of the system may differ from each other, they may be represented by similar impedances. From this analogy, a terminology for impedance is introduced.\n An impedance \\(\\bm{Z}(s)\\) is called\n Inductive if \\(\\abs{\\bm{Z}(0)} = 0\\) Resistive if \\(\\abs{\\bm{Z}(0)} = R\\) Capacitive if \\(\\lim_{s\\to 0} \\abs{\\bm{K}(s)} = \\infty\\) Hence, for the mechanical system represented in Figure fig:taghirad13_impedance_control_rlc:\n mass represents inductive impedance viscous friction represents resistive impedance spring stiffness represents capacitive impedance The environments that a robot interacts with may be represented by these classified impedance components. A very stiff environment may be represented by high-capacitive impedance models, whereas an environment with high structural damping may be represented by high-resitive impedance.\nImpedance Control Concept The key idea behind impedance control schemes is to tune the dynamic relation between force and motion variables. Impedance control schemes provide control topology to tune the mechanical impedance of a system toward a desired impedance.\nA desired impedance could be adjusted by desired inductive, resistive and capacitive impedances, which forms a desired linear impedance for the closed-loop system as follows: \\[ \\bm{Z}_d(s) = \\bm{M}_d s + \\bm{C}_d + \\frac{1}{s} \\bm{K}_d \\] where \\(\\bm{Z}_d\\) denotes the desired impedance of the closed-loop system, which is composed of the desired inductive impedance \\(\\bm{M}_d\\), desired resistive impedance \\(\\bm{C}_d\\) and desired capacitive impedance \\(\\bm{K}_d\\). Impedance control structures may be used to tune the closed-loop impedance of the system suitably to follow such a desired impedance.\nImpedance Control Structure Consider a parallel robot with multiple-degrees-of-freedom interacting with a stiff environment. In such a case, the motion of the robot end effector is represented by the motion vector \\(\\bm{\\mathcal{X}}\\), and the interacting wrench applied to the robot end effector is denoted by \\(\\bm{\\mathcal{F}}_e\\). It is considered that the interacting wrench is measured in the task space and is used in the inner force feedback loop. Furthermore, it is considered that the motion variable \\(\\bm{\\mathcal{X}}\\) is measured and is used in the outer feedback loop.\nIn the impedance control scheme, regulation of the motion-force dynamic relation is the prime objective, and since force tracking is not the primary objective, it is advised to used a cascade control structure with motion control feedback in the outer loop and force feedback in the inner loop.\nTherefore, when the manipulator is not in contact with a stiff environment, position tracking is guaranteed by a primary controller. However, when there is an interacting wrench \\(\\bm{\\mathcal{F}}_e\\) applied to the moving platform, this structure may be designed to control the force-motion dynamic relation.\nAs a possible impedance control scheme, consider the closed-loop system depicted in Figure fig:taghira13_impedance_control, in which the position feedback is considered in the outer loop, while force feedback is used in the inner loop. This structure is advised when a desired impedance relation between the force and motion variables is required that consists of desired inductive, resistive, and capacitive impedances. As shown in Figure fig:taghira13_impedance_control, the motion-tracking error is directly determined from motion measurement by \\(\\bm{e}_x = \\bm{\\mathcal{X}}_d - \\bm{\\mathcal{X}}\\) in the outer loop and the motion controller is designed to satisfy the required impedance.\nMoreover, direct force-tracking objective is not assigned in this control scheme, and therefore the desired force trajectory \\(\\bm{\\mathcal{F}}_d\\) is absent in this scheme. However, an auxiliary force trajectory \\(\\bm{\\mathcal{F}}_a\\) is generated from the motion control law and is used as the reference for the force tracking. By this means, no prescribed force trajectory is tracked, while the motion control scheme would advise a force trajectory for the robot to ensure the desired impedance regulation.\n\n Figure 36: Impedance control scheme; motion feedback in the outer loop and force feedback in the inner loop\n The required wrench \\(\\bm{\\mathcal{F}}\\) in the impedance control scheme, is based on inverse dynamics control and consists of three main parts. In the inner loop, the force control scheme is based on a feedback linearization part in addition to a mass matrix adjustment, while in the outer loop usually a linear motion controller is considered based on the desired impedance requirements.\nAlthough many different impedance structures may be considered as the basis of the control law, in Figure fig:taghira13_impedance_control, a linear impedance relation between the force and motion variables is generated that consists of desired inductive \\(\\bm{M}_d\\), resistive \\(\\bm{C}_d\\) and capacitive impedances \\(\\bm{K}_d\\).\nAccording to Figure fig:taghira13_impedance_control, the controller output wrench \\(\\bm{\\mathcal{F}}\\), applied to the manipulator may be formulated as \\[ \\bm{\\mathcal{F}} = \\hat{\\bm{M}} \\bm{M}_d^{-1} \\bm{e}_F + \\bm{\\mathcal{F}}_{fl} \\] with:\n\\begin{align*} \\bm{e}_F \u0026amp;= \\bm{\\mathcal{F}}_a - \\bm{\\mathcal{F}}_m \\\\\\\n\\bm{\\mathcal{F}}_a \u0026amp;= \\bm{M}_d \\ddot{\\bm{\\mathcal{X}}}_{d} + \\bm{C}_{d} \\dot{\\bm{e}}_{x} + \\bm{K}_{d} \\bm{e}_{x} \\end{align*}\n\\(\\bm{M}_d\\) denotes the desired inductive impedance, \\(\\bm{C}_d\\) the desired resistive impedance and \\(\\bm{K}_d\\) is desired capacitive impedance matrices.\nThe feedback linearizing term is given by: \\[ \\bm{\\mathcal{F}}_{fl} = \\hat{\\bm{C}}(\\bm{\\mathcal{X}}, \\dot{\\bm{\\mathcal{X}}}) \\dot{\\bm{\\mathcal{X}}} + \\hat{\\bm{G}}(\\bm{\\mathcal{X}}) + \\bm{\\mathcal{F}}_m \\]\nIf the information on the dynamic matrices is complete, and if the force measurements are noise free (\\(\\bm{\\mathcal{F}}_m = \\bm{\\mathcal{F}}_e\\)), the closed-loop dynamic formulation simplifies to: \\[ \\bm{M}_d \\ddot{\\bm{e}}_x + \\bm{C}_d \\dot{\\bm{e}}_x + \\bm{K}_d \\bm{e}_x = \\bm{\\mathcal{F}}_e \\]\nAnd thus the closed-loop error dynamic equation satisfies a set of second-order systems with the desired impedance coefficients in relation to the interacting force. In other words, the control structure guarantees that the force and motion relation follows a desired impedance. Therefore, by choosing appropriate impedance matrices, the transient performance of the force-motion relation can be shaped so as to have a fast but stable interaction. By this means, what is controlled is the dynamic relation between the force and motion variables, and not directly the position. However, if the robot is moving freely in space and has no interaction with the environment, \\(\\bm{\\mathcal{F}}_e = 0\\), the closed-loop system will provide a suitable motion tracking thanks to the motion controller in the outer loop.\nThe impedance control scheme is very popular in practice, wherein tuning the force and motion relation in a robot manipulator interacting with a stiff environment is the prime objective. However, note that for a good performance, an accurate model of the system is required, and the obtained force and motion dynamics are not robust to modeling uncertainty.\nBibliography Taghirad, H., Parallel robots : mechanics and control (2013), Boca Raton, FL: CRC Press. ↩\n","permalink":"/book/taghirad13_paral/","tags":null,"title":"Parallel robots : mechanics and control"},{"categories":null,"contents":" Tags Multivariable Control, Positioning Stations Reference (Hans Butler, 2011) Author(s) Butler, H. Year 2011 Bibliography Butler, H., Position control in lithographic equipment, IEEE Control Systems, 31(5), 28–47 (2011). http://dx.doi.org/10.1109/mcs.2011.941882 ↩\n","permalink":"/paper/butler11_posit_contr_lithog_equip/","tags":null,"title":"Position control in lithographic equipment"},{"categories":null,"contents":" Tags Inertial Sensors Reviews of position sensors (Collette {\\it et al.}, 2012) Fleming, A. J., A review of nanometer resolution position sensors: operation and performance (Andrew Fleming, 2013) (Notes) Relative Position Sensors \nTable 1: Characteristics of relative measurement sensors collette11_review Technology Frequency Resolution Range T Range LVDT DC-200 Hz 10 nm rms 1-10 mm -50,100 °C Eddy current 5 kHz 0.1-100 nm rms 0.5-55 mm -50,100 °C Capacitive DC-100 kHz 0.05-50 nm rms 50 nm - 1 cm -40,100 °C Interferometer 300 kHz 0.1 nm rms 10 cm -250,100 °C Encoder DC-1 MHz 1 nm rms 7-27 mm 0,40 °C Bragg Fibers DC-150 Hz 0.3 nm rms 3.5 cm -30,80 °C \nTable 2: Summary of position sensor characteristics. The dynamic range (DNR) and resolution are approximations based on a full-scale range of \\(100 \\mu m\\) and a first order bandwidth of \\(1 kHz\\) fleming13_review_nanom_resol_posit_sensor Sensor Type Range DNR Resolution Max. BW Accuracy Metal foil \\(10-500 \\mu m\\) 230 ppm 23 nm 1-10 kHz 1% FSR Piezoresistive \\(1-500 \\mu m\\) 5 ppm 0.5 nm \u0026gt;100 kHz 1% FSR Capacitive \\(10 \\mu m\\) to \\(10 mm\\) 24 ppm 2.4 nm 100 kHz 0.1% FSR Electrothermal \\(10 \\mu m\\) to \\(1 mm\\) 100 ppm 10 nm 10 kHz 1% FSR Eddy current \\(100 \\mu m\\) to \\(80 mm\\) 10 ppm 1 nm 40 kHz 0.1% FSR LVDT \\(0.5-500 mm\\) 10 ppm 5 nm 1 kHz 0.25% FSR Interferometer Meters 0.5 nm \u0026gt;100kHz 1 ppm FSR Encoder Meters 6 nm \u0026gt;100kHz 5 ppm FSR Strain Gauge Capacitive Sensor Description:\n http://www.lionprecision.com/tech-library/technotes/cap-0020-sensor-theory.html https://www.lionprecision.com/comparing-capacitive-and-eddy-current-sensors Micro Sense link Micro-Epsilon link PI link Unipulse link Lion-Precision link Inductive Sensor (Eddy Current) Micro-Epsilon link Lion Precision link Inductive Sensor (LVDT) Micro-Epsilon link Keyence link Interferometers Attocube link Zygo link Smaract link Qutools link Renishaw link Sios link Keysight link Table 3: Characteristics of Environmental Units Temperature (\\(\\pm\\ ^oC\\)) Pressure (\\(\\pm\\ hPa\\)) Humidity \\(\\pm\\% RH\\) Wavelength Accuracy (\\(\\pm\\ \\text{ppm}\\)) Attocube 0.1 1 2 0.5 Renishaw 0.2 1 6 1 Picoscale 0.2 2 2 1 (Yoon-Soo Jang \u0026amp; Seung-Woo Kim, 2017)\n\n Figure 1: Expected precision of interferometer as a function of measured distance\n Fiber Optic Displacement Sensor Unipulse link Bibliography Collette, C., Janssens, S., Mokrani, B., Fueyo-Roza, L., Artoos, K., Esposito, M., Fernandez-Carmona, P., …, Comparison of new absolute displacement sensors, In , International Conference on Noise and Vibration Engineering (ISMA) (pp. ) (2012). : . ↩\nFleming, A. J., A review of nanometer resolution position sensors: operation and performance, Sensors and Actuators A: Physical, 190(nil), 106–126 (2013). http://dx.doi.org/10.1016/j.sna.2012.10.016 ↩\nCollette, C., Artoos, K., Guinchard, M., Janssens, S., Carmona Fernandez, P., \u0026amp; Hauviller, C., Review of sensors for low frequency seismic vibration measurement (2011). ↩\nJang, Y., \u0026amp; Kim, S., Compensation of the refractive index of air in laser interferometer for distance measurement: a review, International Journal of Precision Engineering and Manufacturing, 18(12), 1881–1890 (2017). http://dx.doi.org/10.1007/s12541-017-0217-y ↩\nBacklinks Measurement technologies for precision positioning A review of nanometer resolution position sensors: operation and performance ","permalink":"/zettels/position_sensors/","tags":null,"title":"Position Sensors"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Interferometric characterization of rotation stages for x-ray nanotomography Position control in lithographic equipment An instrument for 3d x-ray nano-imaging ","permalink":"/zettels/positioning_stations/","tags":null,"title":"Positioning Stations"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Design for precision: current status and trends Basics of precision engineering - 1st edition ","permalink":"/zettels/precision_engineering/","tags":null,"title":"Precision Engineering"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Modal testing: theory, practice and application The art of electronics - third edition Vibration Control of Active Structures - Fourth Edition Parallel robots : mechanics and control The design of high performance mechatronics - 2nd revised edition Multivariable feedback control: analysis and design ","permalink":"/zettels/reference_books/","tags":null,"title":"Reference Books"},{"categories":null,"contents":" Tags Vibration Isolation Reference (Christophe Collette {\\it et al.}, 2011) Author(s) Collette, C., Janssens, S., \u0026amp; Artoos, K. Year 2011 Background and Motivations Passive Isolation Tradeoffs \\[ X(s) = \\underbrace{\\frac{cs + k}{ms^2 + cs + k}}_{T_{wx}(s)} W(s) + \\underbrace{\\frac{1}{ms^2 + cs + k}}_{T_{Fx}(s)} F(s) \\]\n \\(T_{wx}(s)\\) is called the transmissibility of the isolator. It characterize the way seismic vibrations \\(w\\) are transmitted to the equipment. \\(T_{Fx}(s)\\) is called the compliance. It characterize the capacity of disturbing forces \\(F\\) to create motion \\(x\\) of the equipment. In order to minimize the vibrations of a sensitive equipment, a general objective to design a good isolator is to minimize both \\(\\abs{T_{wx}}\\) and \\(\\abs{T_{Fx}}\\) in the frequency range of interest.\nTo decrease the amplitude of the overshoot at the resonance frequency, damping can be increased. The price to pay is degradation of the isolation at high frequency (the roll off becomes \\(-1\\) instead of \\(-2\\)).\nFirst Trade-off: Trade-off between damping and isolation.\nTo improve the transmissibility, the resonance frequency can be decreased. However, the systems becomes more sensitive to external force \\(F\\) applied on the equipment.\nSecond trade-off: Trade-off between isolation and robustness to external force\nActive Isolation We apply a feedback control. The general expression of the force delivered by the actuator is \\(f = g_a \\ddot{x} + g_v \\dot{x} + g_p x\\). \\(g_a\\), \\(g_v\\) and \\(g_p\\) are constant gains.\n\nTable 1: Active isolation techniques Feedback Signal Effect Applications Acceleration Add virtual mass Few Velocity Add virtual dashpot connected to the sky Sky-Hook Damping Position Add virtual spring connected to the sky Sky-Hook Spring Practical Realizations Sensor Limitations Conclusions \n Figure 1: Comparison of Active Vibration Isolation Strategies\n Bibliography Collette, C., Janssens, S., \u0026amp; Artoos, K., Review of active vibration isolation strategies, Recent Patents on Mechanical Engineeringe, 4(3), 212–219 (2011). http://dx.doi.org/10.2174/2212797611104030212 ↩\n","permalink":"/paper/collette11_review_activ_vibrat_isolat_strat/","tags":null,"title":"Review of active vibration isolation strategies"},{"categories":null,"contents":"This file exists solely to respond to /search URL with the related search layout template.\nNo content shown here is rendered, all content is based in the template layouts/page/search.html\nSetting a very low sitemap priority will tell search engines this is not important content.\nThis implementation uses Fusejs, jquery and mark.js\nInitial setup Search depends on additional output content type of JSON in config.toml ``` [outputs] home = [\u0026ldquo;HTML\u0026rdquo;, \u0026ldquo;JSON\u0026rdquo;] ```\nSearching additional fileds To search additional fields defined in front matter, you must add it in 2 places.\nEdit layouts/_default/index.JSON This exposes the values in /index.json i.e. add category ``` \u0026hellip; \u0026ldquo;contents\u0026rdquo;:{{ .Content | plainify | jsonify }} {{ if .Params.tags }}, \u0026ldquo;tags\u0026rdquo;:{{ .Params.tags | jsonify }}{{end}}, \u0026ldquo;categories\u0026rdquo; : {{ .Params.categories | jsonify }}, \u0026hellip; ```\nEdit fuse.js options to Search static/js/search.js ``` keys: [ \u0026ldquo;title\u0026rdquo;, \u0026ldquo;contents\u0026rdquo;, \u0026ldquo;tags\u0026rdquo;, \u0026ldquo;categories\u0026rdquo; ] ```\n","permalink":"/search/","tags":null,"title":"Search Results"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Sensor fusion for active vibration isolation in precision equipment Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs Sensor fusion methods for high performance active vibration isolation systems Nanopositioning system with force feedback for high-performance tracking and vibration control Nanopositioning with multiple sensors: a case study in data storage ","permalink":"/zettels/sensor_fusion/","tags":null,"title":"Sensor Fusion"},{"categories":null,"contents":" Tags Sensor Fusion, Vibration Isolation Reference (Tjepkema {\\it et al.}, 2012) Author(s) Tjepkema, D., Dijk, J. v., \u0026amp; Soemers, H. Year 2012 Relative motion Control Control law: \\(f = -G(x-w)\\)\n\\[ \\frac{x}{w} = \\frac{k+G}{ms^2 + k+G} \\] \\[ \\frac{x}{F} = \\frac{1}{ms^2 + k+G} \\]\nForce Control Control law: \\(f = -G F_a = -G \\left(f-k(x-w)\\right)\\)\n\\[ \\frac{x}{w} = \\frac{k}{(1+G)ms^2 + k} \\] \\[ \\frac{x}{F} = \\frac{1+G}{(1+G)ms^2 + k} \\]\nInertial Control Control law: \\(f = -Gx\\)\n\\[ \\frac{x}{w} = \\frac{k}{ms^2 + k+G} \\] \\[ \\frac{x}{F} = \\frac{1}{ms^2 + k+G} \\]\nDesign constraints and control bandwidth Heavier sensor =\u0026gt; lower noise but it is harder to maintain collocation with the actuator =\u0026gt; that limits the bandwidth. There is a compromise between sensor noise and the influence of the sensor size on the system\u0026rsquo;s design and on the control bandwidth.\nBibliography Tjepkema, D., Dijk, J. v., \u0026amp; Soemers, H., Sensor fusion for active vibration isolation in precision equipment, Journal of Sound and Vibration, 331(4), 735–749 (2012). http://dx.doi.org/10.1016/j.jsv.2011.09.022 ↩\n","permalink":"/paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/","tags":null,"title":"Sensor fusion for active vibration isolation in precision equipment"},{"categories":null,"contents":" Tags Sensor Fusion, Vibration Isolation Reference (Collette \u0026amp; Matichard, 2015) Author(s) Collette, C., \u0026amp; Matichard, F. Year 2015 In order to have good stability margins, it is common practice to collocate sensors and actuators. This ensures alternating poles and zeros along the imaginary axis. Then, each phase lag introduced by the poles is compensed by phase leag introduced by the zeroes. This guarantees stability and such system is referred to as hyperstable.\nIn this paper, we study and compare different sensor fusion methods combining inertial sensors at low frequency with sensors adding stability at high frequency. The stability margins of the controller can be significantly increased with no or little effect on the low-frequency active isolation, provided that the two following conditions are fulfilled:\n the high frequency sensor and the actuator are dual there exists a bandwidth where we can superimpose the open loop transfer functions obtained with the two sensors. Bibliography Collette, C., \u0026amp; Matichard, F., Sensor fusion methods for high performance active vibration isolation systems, Journal of Sound and Vibration, 342(nil), 1–21 (2015). http://dx.doi.org/10.1016/j.jsv.2015.01.006 ↩\n","permalink":"/paper/collette15_sensor_fusion_method_high_perfor/","tags":null,"title":"Sensor fusion methods for high performance active vibration isolation systems"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation, Cubic Architecture Reference (Hauge \u0026amp; Campbell, 2004) Author(s) Hauge, G., \u0026amp; Campbell, M. Year 2004 Discusses:\n Choice of sensors and control architecture Predictability and limitations of the system dynamics Two-Sensor control architecture Vibration isolation using a Stewart platform Experimental comparison of Force sensor and Inertial Sensor and associated control architecture for vibration isolation \n Figure 1: Hexapod for active vibration isolation\n Stewart platform (Figure 1):\n Low corner frequency Large actuator stroke (\\(\\pm5mm\\)) Sensors in each strut (Figure 2): three-axis load cell base and payload geophone in parallel with the struts LVDT \n Figure 2: Strut\n Force sensors typically work well because they are not as sensitive to payload and base dynamics, but are limited in performance by a low-frequency zero pair resulting from the cross-axial stiffness.\n Performance Objective (frequency domain metric):\n The transmissibility should be close to 1 between 0-1.5Hz \\(-3dB \u0026lt; |T(\\omega)| \u0026lt; 3db\\) The transmissibility should be below -20dB in the 5-20Hz range \\(|T(\\omega)| \u0026lt; -20db\\) With \\(|T(\\omega)|\\) is the Frobenius norm of the transmissibility matrix and is used to obtain a scalar performance metric.\nChallenge:\n small frequency separation between the two requirements Robustness:\n minimization of the transmissibility amplification (Bode\u0026rsquo;s \u0026ldquo;pop\u0026rdquo;) outside the performance region Model:\n single strut axis as the cubic Stewart platform can be decomposed into 6 single-axis systems \n Figure 3: Strut model\n Zero Pair when using a Force Sensor:\n The frequency of the zero pair corresponds to the resonance frequency of the payload mass and the \u0026ldquo;parasitic\u0026rdquo; stiffness (sum of the cross-axial, suspension, wiring stiffnesses) This zero pair is usually not predictable nor repeatable In this Stewart platform, this zero pair uncertainty is due to the internal wiring of the struts Control:\n Single-axis controllers =\u0026gt; combine them into a full six-axis controller =\u0026gt; evaluate the full controller in terms of stability and robustness Sensitivity weighted LQG controller (SWLQG) =\u0026gt; address robustness in flexible dynamic systems Three type of controller: Force feedback (cell-based) Inertial feedback (geophone-based) Combined force/velocity feedback (load cell/geophone based) The use of multivariable and robust control on the full 6x6 hexapod does not improve performance over single-axis designs.\n \nTable 1: Typical characteristics of sensors used for isolation in hexapod systems Load cell Geophone Type Relative Inertial Relationship with voice coil Collocated and Dual Non-Collocated and non-Dual Open loop transfer function (+) Alternating poles/zeros (-) Large phase drop Limitation from low-frequency zero pair (-) Yes (+) No Sensitive to payload/base dynamics (+) No (-) Yes Best frequency range High (low-freq zero limitation) Low (high-freq toll-off limitation) Ability of a sensor-actuator pair to improve performance: General system with input \\(u\\), performance \\(z\\), output \\(y\\) disturbance \\(u\\).\nGiven a sensor \\(u\\) and actuator \\(y\\) and a controller \\(u = -K(s) y\\), the closed loop disturbance to performance transfer function can be written as:\n\\[ \\left[ \\frac{z}{w} \\right]_\\text{CL} = \\frac{G(s)_{zw} + K(G(s)_{zw} G(s)_{yu} - G(s)_{zu} G(s)_{yw})}{1 + K G(s)_{yu}} \\]\nIn order to obtain a significant performance improvement is to use a high gain controller, provided the term \\(G(s)_{zw} + K(G(s)_{zw} G(s)_{yu} - G(s)_{zu} G(s)_{yw})\\) is small.\nWe can compare the transfer function from \\(w\\) to \\(z\\) with and without a high gain controller. And we find that for \\(u\\) and \\(y\\) to be an acceptable pair for high gain control: \\[ \\left| \\frac{G(j\\omega)_{zw} G(j\\omega)_{yu} - G(j\\omega)_{zu} G(j\\omega)_{yw}}{K G(j\\omega)_{yu}} \\right| \\ll |G_{zw}(j\\omega)| \\]\nControllers:\nForce feedback:\n Performance limited by the low frequency zero-pair It is desirable to separate the zero-pair and first most are separated by at least a decade in frequency This can be achieve by reducing the cross-axis stiffness If the low frequency zero pair is inverted, robustness is lost Thus, the force feedback controller should be designed to have combined performance and robustness at frequencies at least a decade above the zero pair The presented controller as a high pass filter at to reduce the gain below the zero-pair, a lag at low frequency to improve phase margin, and a low pass filter for roll off Inertial feedback:\n Non-Collocated =\u0026gt; multiple phase drops that limit the bandwidth of the controller Good performance, but the transmissibility \u0026ldquo;pops\u0026rdquo; due to low phase margin and thus this indicates robustness problems Combined force/velocity feedback:\n Use the low frequency performance advantages of geophone sensor with the high robustness advantages of the load cell sensor A Single-Input-Multiple-Outputs (SIMO) controller is found using LQG The performance requirements are met Good robustness \n Figure 4: Experimental open loop (solid) and closed loop six-axis transmissibility using the geophone only controller (dotted), and combined geophone/load cell controller (dashed)\n Bibliography Hauge, G., \u0026amp; Campbell, M., Sensors and control of a space-based six-axis vibration isolation system, Journal of Sound and Vibration, 269(3-5), 913–931 (2004). http://dx.doi.org/10.1016/s0022-460x(03)00206-2 ↩\n","permalink":"/paper/hauge04_sensor_contr_space_based_six/","tags":null,"title":"Sensors and control of a space-based six-axis vibration isolation system"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation Reference (Xiaochun Li {\\it et al.}, 2001) Author(s) Li, X., Hamann, J. C., \u0026amp; McInroy, J. E. Year 2001 if the hexapod is designed such that the payload mass/inertia matrix (\\(M_x\\)) and \\(J^T J\\) are diagonal, the dynamics from \\(u\\) to \\(y\\) are decoupled. Bibliography Li, X., Hamann, J. C., \u0026amp; McInroy, J. E., Simultaneous vibration isolation and pointing control of flexure jointed hexapods, In , Smart Structures and Materials 2001: Smart Structures and Integrated Systems (pp. ) (2001). : . ↩\n","permalink":"/paper/li01_simul_vibrat_isolat_point_contr/","tags":null,"title":"Simultaneous vibration isolation and pointing control of flexure jointed hexapods"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation, Cubic Architecture, Flexible Joints, Multivariable Control Reference @phdthesis{li01_simul_fault_vibrat_isolat_point, author = {Li, Xiaochun}, school = {University of Wyoming}, title = {Simultaneous, Fault-tolerant Vibration Isolation and Pointing Control of Flexure Jointed Hexapods}, year = 2001, tags = {parallel robot}, } Author(s) Li, X. Year 2001 Introduction Stewart Platform:\n Cubic (mutually orthogonal) Flexure Joints =\u0026gt; eliminate friction and backlash but add complexity to the dynamics \n Figure 1: Flexure jointed Stewart platform used for analysis and control\n Goal:\n Precise pointing in two axes (sub micro-radians) simultaneously, providing both passive and active vibration isolation in six axes Jacobian Analysis: \\[ \\delta \\mathcal{L} = J \\delta \\mathcal{X} \\] The origin of \\(\\{P\\}\\) is taken as the center of mass of the payload.\nDecoupling: If we refine the (force) inputs and (displacement) outputs as shown in Figure 2 or in Figure 3, we obtain a decoupled plant provided that:\n the payload mass/inertia matrix must be diagonal (the CoM is coincident with the origin of frame \\(\\{P\\}\\)) the geometry of the hexapod and the attachment of the payload to the hexapod must be carefully chosen For instance, if the hexapod has a mutually orthogonal geometry (cubic configuration), the payload\u0026rsquo;s center of mass must coincide with the center of the cube formed by the orthogonal struts.\n \n Figure 2: Decoupling the dynamics of the Stewart Platform using the Jacobians\n \n Figure 3: Decoupling the dynamics of the Stewart Platform using the Jacobians\n Simultaneous Vibration Isolation and Pointing Control Basic idea:\n acceleration feedback is used to provide high-frequency vibration isolation cartesian pointing feedback can be used to provide low-frequency pointing The compensation is divided in frequency because:\n pointing sensors often have low bandwidth acceleration sensors often have a poor low frequency response The control bandwidth is divided as follows:\n low-frequency disturbances as attenuated and tracking is accomplished by feedback from low bandwidth pointing sensors mid-frequency disturbances are attenuated by feedback from band-pass sensors like accelerometer or load cells high-frequency disturbances are attenuated by passive isolation techniques Vibration Isolation The system is decoupled into six independent SISO subsystems using the architecture shown in Figure 4.\n\n Figure 4: Figure caption\n One of the subsystem plant transfer function is shown in Figure 4\n\n Figure 5: Plant transfer function of one of the SISO subsystem for Vibration Control\n Each compensator is designed using simple loop-shaping techniques.\nThe unity control bandwidth of the isolation loop is designed to be from 5Hz to 50Hz.\n Despite a reasonably good match between the modeled and the measured transfer functions, the model based decoupling algorithm does not produce the expected decoupling. Only about 20 dB separation is achieve between the diagonal and off-diagonal responses.\n Pointing Control A block diagram of the pointing control system is shown in Figure 6.\n\n Figure 6: Figure caption\n The plant is decoupled into two independent SISO subsystems. The compensators are design with inverse-dynamics methods.\nThe unity control bandwidth of the pointing loop is designed to be from 0Hz to 20Hz.\nA feedforward control is added as shown in Figure 7.\n\n Figure 7: Feedforward control\n Simultaneous Control The simultaneous vibration isolation and pointing control is approached in two ways:\n design and implement the vibration isolation control first, identify the pointing plant when the isolation loops are closed, then implement the pointing compensators the reverse design order Figure 8 shows a parallel control structure where \\(G_1(s)\\) is the dynamics from input force to output strut length.\n\n Figure 8: A parallel scheme\n The transfer function matrix for the pointing loop after the vibration isolation is closed is still decoupled. The same happens when closing the pointing loop first and looking at the transfer function matrix of the vibration isolation.\nThe effect of the isolation loop on the pointing loop is large around the natural frequency of the plant as shown in Figure 9.\n\n Figure 9: \\(\\theta_x/\\theta_{x_d}\\) transfer function with the isolation loop closed (simulation)\n The effect of pointing control on the isolation plant has not much effect.\n The interaction between loops may affect the transfer functions of the first closed loop, and thus affect its relative stability.\n The dynamic interaction effect:\n only happens in the unity bandwidth of the loop transmission of the first closed loop. affect the closed loop transmission of the loop first closed (see Figures 10 and 11) As shown in Figure 10, the peak resonance of the pointing loop increase after the isolation loop is closed. The resonances happen at both crossovers of the isolation loop (15Hz and 50Hz) and they may show of loss of robustness.\n\n Figure 10: Closed-loop transfer functions \\(\\theta_y/\\theta_{y_d}\\) of the pointing loop before and after the vibration isolation loop is closed\n The same happens when first closing the vibration isolation loop and after the pointing loop (Figure 11). The first peak resonance of the vibration isolation loop at 15Hz is increased when closing the pointing loop.\n\n Figure 11: Closed-loop transfer functions of the vibration isolation loop before and after the pointing control loop is closed\n The isolation loop adds a second resonance peak at its high-frequency crossover in the pointing closed-loop transfer function, which may cause instability. Thus, it is recommended to design and implement the isolation control system first, and then identify the pointing plant with the isolation loop closed.\n Experimental results Two hexapods are stacked (Figure 12):\n the bottom hexapod is used to generate disturbances matching candidate applications the top hexapod provide simultaneous vibration isolation and pointing control \n Figure 12: Stacked Hexapods\n Using the vibration isolation control alone, no attenuation is achieved below 1Hz as shown in figure 13.\n\n Figure 13: Vibration isolation control: open-loop (solid) vs. closed-loop (dashed)\n The simultaneous control is of dual use:\n it provide simultaneous pointing and isolation control it can also be used to expand the bandwidth of the isolation control to low frequencies because the pointing loops suppress pointing errors due to both base vibrations and tracking The results of simultaneous control is shown in Figure 14 where the bandwidth of the isolation control is expanded to very low frequency.\n\n Figure 14: Simultaneous control: open-loop (solid) vs. closed-loop (dashed)\n Future research areas Proposed future research areas include:\n Include base dynamics in the control: The base dynamics is here neglected since the movements of the base are very small. The base dynamics could be measured by mounting accelerometers at the bottom of each strut or by using force sensors. It then could be included in the feedforward path. Robust control and MIMO design New decoupling method: The proposed decoupling algorithm do not produce the expected decoupling, despite a reasonably good match between the modeled and the measured transfer functions. Incomplete decoupling increases the difficulty in designing the controller. New decoupling methods are needed. These methods must be static in order to be implemented practically on precision hexapods Identification: Many advanced control methods require a more accurate model or identified plant. A closed-loop identification method is propose to solve some problems with the current identification methods used. Other possible sensors: Many sensors can be used to expand the utility of the Stewart platform: 3-axis load cells to investigate the Coriolis and centripetal terms and new decoupling methods LVDT to provide differential position of the hexapod payload with respect to the base Geophones to provide payload and base velocity information Bibliography Li, X., Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods (Doctoral dissertation) (2001). University of Wyoming, . ↩\n","permalink":"/paper/li01_simul_fault_vibrat_isolat_point/","tags":null,"title":"Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods"},{"categories":null,"contents":" Tags Stewart Platforms, Vibration Isolation Reference (Zhen Zhang {\\it et al.}, 2011) Author(s) Zhang, Z., Liu, J., Mao, J., Guo, Y., \u0026amp; Ma, Y. Year 2011 Non-cubic stewart platform Flexible joints Magnetostrictive actuators Strong coupled motions along different axes Non-cubic architecture =\u0026gt; permits to have larger workspace which was required Structure parameters (radius of plates, length of struts) are determined by optimization of the condition number of the Jacobian matrix Accelerometers for active isolation Adaptive FIR filters for active isolation control \n Figure 1: Prototype of the non-cubic stewart platform\n Bibliography Zhang, Z., Liu, J., Mao, J., Guo, Y., \u0026amp; Ma, Y., Six dof active vibration control using stewart platform with non-cubic configuration, In , 2011 6th IEEE Conference on Industrial Electronics and Applications (pp. ) (2011). : . ↩\n","permalink":"/paper/zhang11_six_dof/","tags":null,"title":"Six dof active vibration control using stewart platform with non-cubic configuration"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Six dof active vibration control using stewart platform with non-cubic configuration Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Parallel robots : mechanics and control Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Identification and decoupling control of flexure jointed hexapods The stewart platform manipulator: a review Modeling and control of vibration in mechanical systems Studies on stewart platform manipulator: a review Nanometre-cutting machine using a stewart-platform parallel mechanism An intelligent control system for multiple degree-of-freedom vibration isolation Active isolation and damping of vibrations via stewart platform Sensors and control of a space-based six-axis vibration isolation system Dynamic modeling and experimental analyses of stewart platform with flexible hinges Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods A new isotropic and decoupled 6-dof parallel manipulator Simultaneous vibration isolation and pointing control of flexure jointed hexapods A six-axis single-stage active vibration isolator based on stewart platform Vibration Control of Active Structures - Fourth Edition A soft 6-axis active vibration isolator ","permalink":"/zettels/stewart_platforms/","tags":null,"title":"Stewart Platforms"},{"categories":null,"contents":" Tags Stewart Platforms Reference (Mohd Furqan {\\it et al.}, 2017) Author(s) Furqan, M., Suhaib, M., \u0026amp; Ahmad, N. Year 2017 Lots of references.\nBibliography Furqan, M., Suhaib, M., \u0026amp; Ahmad, N., Studies on stewart platform manipulator: a review, Journal of Mechanical Science and Technology, 31(9), 4459–4470 (2017). http://dx.doi.org/10.1007/s12206-017-0846-1 ↩\n","permalink":"/paper/furqan17_studies_stewar_platf_manip/","tags":null,"title":"Studies on stewart platform manipulator: a review"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Modal testing: theory, practice and application ","permalink":"/zettels/system_identification/","tags":null,"title":"System Identification"},{"categories":null,"contents":" This is a quote!\n 1 2 a = 2; figure; This is an important part of the text.\n See Eq. eq:test1 and eq:test2.\n\\begin{equation} a = 1 \\end{equation}\n\\begin{equation} a = 2 \\label{eq:test2} \\end{equation}\nAlso look at 1 \\eqref{eq:test2}.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\nSome text.\n","permalink":"/zettels/test/","tags":null,"title":"Test File"},{"categories":null,"contents":" Tags Reference Books, Electronics Reference (Horowitz, 2015) Author(s) Horowitz, P. Year 2015 Bibliography Horowitz, P., The art of electronics - third edition (2015), New York, NY, USA: Cambridge University Press. ↩\n","permalink":"/book/horowitz15_art_of_elect_third_edition/","tags":null,"title":"The art of electronics - third edition"},{"categories":null,"contents":" Tags Reference Books Reference (Schmidt {\\it et al.}, 2014) Author(s) Schmidt, R. M., Schitter, G., \u0026amp; Rankers, A. Year 2014 Section 2.2 Mechanics\n The core of a mechatronic system is its mechanical construction and in spite of many decade of excellent designs, optimizing the mechanical structure in strength, mass and endurance, the mechanical behavior will always remain the limiting factor of the performance of any mechatronic system.\n Section 2.2.2 Force and Motion\n Statics deals with the stress levels that are present in the mechanical system when (quasi-)static forces are exerted on it. It analyses the linear and non-linear strain effects that are caused by elastic and plastic deformation under these stress levels.\nDynamics deals with the behaviour of the mechanical system under changing forces, while often the effects are linearised and limited to strain levels well below any irreversible plastic deformation. One should however be aware that another non-destructive source of non-linearity is found in a tried important field of mechanics, called kinematics. The relation between angles and positions is often non-linear in such a mechanism, because of the changing angles, and controlling these often requires special precautions to overcome the inherent non-linearities by linearisation around actual position and adapting the optimal settings of the controller to each position.\n \n Figure 1: Stabiliby condition and robustness of a feedback controlled system. The desired shape of these curves guide the control design by optimising the lvels and sloppes of the amplitude Bode-plot at low and high frequencies for suppression of the disturbances and of the base Bode-plot in the cross-over frequency region. This is called loop shaping design\n Section 4.3.3\n On might say that a high value of the unity-gain crossover frequency and corresponding high-frequency bandwidth limit is rather an unwanted side-effect of the required high loop-gain at lower frequencies, than a target for the design of a control system as such.\n Section 9.3: Mass Dilemma\n A reduced mass requires improved system dynamics that enable a higher control bandwidth to compensate for the increase sensitivity for external vibrations.\n Bibliography Schmidt, R. M., Schitter, G., \u0026amp; Rankers, A., The design of high performance mechatronics - 2nd revised edition (2014), : Ios Press. ↩\n","permalink":"/book/schmidt14_desig_high_perfor_mechat_revis_edition/","tags":null,"title":"The design of high performance mechatronics - 2nd revised edition"},{"categories":null,"contents":" Tags Stewart Platforms Reference (Bhaskar Dasgupta \u0026amp; Mruthyunjaya, 2000) Author(s) Dasgupta, B., \u0026amp; Mruthyunjaya, T. Year 2000 \nTable 1: Parallel VS serial manipulators Advantages Disadvantages Serial Manoeuverability Poor precision Large workspace Bends under high load Vibrate at high speed Parallel High stiffness Small workspace Good dynamic performances Precise positioning The generalized Stewart platforms consists of two rigid bodies (referred to as the base and the platoform) connected through six extensible legs, each with sherical joints at both ends.\nBibliography Dasgupta, B., \u0026amp; Mruthyunjaya, T., The stewart platform manipulator: a review, Mechanism and Machine Theory, 35(1), 15–40 (2000). http://dx.doi.org/10.1016/s0094-114x(99)00006-3 ↩\n","permalink":"/paper/dasgupta00_stewar_platf_manip/","tags":null,"title":"The stewart platform manipulator: a review"},{"categories":null,"contents":" Tags Vibration Isolation, Reference Books, Stewart Platforms, HAC-HAC Reference (Andre Preumont, 2018) Author(s) Preumont, A. Year 2018 Introduction Active Versus Passive Active structure may be cheaper or lighter than passive structures of comparable performances; or they may offer performances that no passive structure could offer.\nActive is not always better, and a control systems cannot compensate for a bad design. Active solution should be considered only after all other passive means have been exhausted.\nFeedback control can compensate for external disturbances only in a limited frequency range (the bandwidth), the disturbances are actually amplified by the control system outside this frequency band.\nVibration Suppression Vibration reduction can be achieved in many different ways:\n stiffening: consists of shifting the resonance frequency of the structure beyond the frequency band of excitation damping: consists of reducing the resonance peaks by dissipating the vibration energy isolation: consists of preventing the propagation of disturbances to sensitive parts of the system The design of an active control system involves many issues such as how to configurate the sensors and actuators, how to secure stability and robustness. The power requirements will often determine the size of the actuators and the cost of the project.\nSmart Materials and Structures An active structure consists of a structure provided with a set of actuators and sensors coupled by a controller. If the bandwidth of the controller includes some vibration modes of the structure, its dynamic response must be considered.\nIf the set of actuators and sensors are located at discrete points of the structure, they can be treated separately. However, for smart structures, the actuators and sensors are often distributed and have a high degree of integration inside the structure, which makes a separate modelling impossible.\nSome smart materials are:\n Shape Memory Alloys (SMA): recoverable strain of \\(\\SI{5}{\\percent}\\) induced by temperature. They can be used at low frequency and for low precision applications Piezoelectric materials: recoverable strain of \\(\\SI{0.1}{\\percent}\\) under electric field. They can be used as actuators as well as sensors. Two main classes: ceramics and polymers. Piezopolymers are used mostly as sensors as they require high voltage. The best-known piezoceramic is the Lead-Zirconate-Titanate (PZT). Magnetostrictive materials: recoverable strain of \\(\\SI{0.15}{\\percent}\\) under magnetic field Magneto-Rheological fluids (MR): consists of viscous fluids containing micronsized particules of magnetic material. When the fluid is subjected to a magnetic field, the particules create colunmar structures requiring a minimum shear stress to initiate the flow. Control Strategies There are two radically different approached to disturbance rejection: feedback and feedforward.\nFeedback \n Figure 1: Principle of feedback control\n The principle of feedback is represented on figure fig:classical_feedback_small. The output \\(y\\) of the system is compared to the reference signal \\(r\\), and the error signal \\(\\epsilon = r-y\\) is passed into a compensator \\(K(s)\\) and applied to the system \\(G(s)\\), \\(d\\) is the disturbance. The design problem consists of finding the appropriate compensator \\(K(s)\\) such that the closed-loop system is stable and behaves in the appropriate manner.\nIn the control of lightly damped structures, feedback control is used for two distinct and complementary purposes: active damping and model-based feedback.\nActive Damping:\n The objective of active damping is to reduce the effect of resonant peaks on the response of the structure. From \\(\\frac{y}{d} = \\frac{1}{1 + GK}\\), this requires \\(GK \\gg 1\\) near the resonances It can be generally be achieved without a model of the structure, with guaranteed stability, provided that the actuator and sensor are collocated and have perfect dynamics. Model based feedback: The objective is to control a variable \\(y\\) to a desired value \\(r\\) in spite of the external disturbances \\(d\\).\n From \\(\\frac{y}{r} = \\frac{GK}{1 + GK}\\) we see that this requires large values of \\(GK\\) in the frequency range where \\(y\\approx r\\) (bandwidth) The bandwidth \\(\\omega_c\\) is limited by the accuracy of the model The disturbance rejection within the bandwidth of the control system is always compensated by an amplification of the disturbances outside the bandwidth When implemented digitally, the sampling frequency \\(\\omega_s\\) must always be two orders of magnitude larger than \\(\\omega_c\\) to preseve reasonably the behavior of the continuous system Feedforward \n Figure 2: Principle of feedforward control\n The method relies on the availability of a reference signal correlated to the primary disturbance. The idea is to produce a second disturbance such that is cancels the effect of the primary disturbance at the location of the sensor error. Its principle is explained in figure 2.\nThe filter coefficients are adapted in such a way that the error signal at one or several critical points is minimized.\nThere is no guarantee that the global response is reduced at other locations. This method is therefor considered as a local one. Because it is less sensitive to phase lag than feedback, it can be used at higher frequencies (\\(\\omega_c \\approx \\omega_s/10\\)).\nThe table 1 summarizes the main features of the two approaches.\n\nTable 1: Advantages and Disadvantages of some types of control Advantages Disadvantages Active Damping - Simple to implement - Effective only near resonance - Does not required accurate model - Guaranteed stability (collocated) Model Based - Global method - Requires accurate model - Attenuate all disturbance within bandwidth - Limited bandwidth - Spillover - Amplification of disturbances outside bandwidth Feedforward Adaptive filtering - No model is necessary - Error signal required - Robust to change in plant transfer function - Local method: may amplify vibration elsewhere - More effective for narrowband disturbance - Large amount of real-time computation The Various Steps of the Design \n Figure 3: The various steps of the design\n The various steps of the design of a controlled structure are shown in figure 3.\nThe starting point is:\n Mechanical system Performance objectives Specification of the disturbances Then the open loop performances can be evaluated:\n The need for active control can be assessed The needed bandwidth can be roughly specified The next step consist of selecting the proper type and location of sensors and actuators:\n The controllability and Observability are important concepts A model of the structure is developped:\n FEM or identification Model reduction to limit the DoF If the dynamics of the sensors and actuators may significantly affect the behavior of the system, they must be included in the model before the controller design.\nPlant Description, Error and Control Budget From the block diagram of the control system (figure fig:general_plant):\n\\begin{align*} y \u0026amp;= (I - G_{yu}H)^{-1} G_{yw} w\\\\\\\nz \u0026amp;= T_{zw} w = [G_{zw} + G_{zu}H(I - G_{yu}H)^{-1} G_{yw}] w \\end{align*}\n\n Figure 4: Block diagram of the control System\n The frequency content of the disturbance \\(w\\) is usually described by its power spectral density \\(\\Phi_w (\\omega)\\) which describes the frequency distribution of the meas-square value.\n \\[\\sigma_w = \\sqrt{\\int_0^\\infty \\Phi_w(\\omega) d\\omega}\\]\n Even more interesting for the design is the Cumulative Mean Square response defined by the integral of the PSD in the frequency range \\([\\omega, \\infty[\\).\n \\[\\sigma_z^2(\\omega) = \\int_\\omega^\\infty \\Phi_z(\\nu) d\\nu = \\int_\\omega^\\infty |T_{zw}|^2 \\Phi_w(\\nu) d\\nu \\]\n It is a monotonously decreasing function of frequency and describes the contribution of all frequencies above \\(\\omega\\) to the mean-square value of \\(z\\). \\(\\sigma_z(0)\\) is then the global RMS response.\nA typical plot of \\(\\sigma_z(\\omega)\\) is shown figure fig:cas_plot. It is useful to identify the critical modes in a design, at which the effort should be targeted.\nThe diagram can also be used to assess the control laws and compare different actuator and sensor configuration.\n\n Figure 5: Error budget distribution in OL and CL for increasing gains\n Pseudo-inverse Under-actuated System Consider the linear system of equation: \\[w = J v\\] With:\n \\(w\\) a vector with \\(m\\) components (measurements) \\(v\\) a vector with \\(n\\) components (inputs) We assume \\(m\u0026gt;n\\) (under-actuated) We seek the pseudo-inverse of \\(J\\) such that \\(v = J^+ w\\)\nThe columns of \\(J\\) are the influence function of the actuators. If the columns of \\(J\\) are independant, the Jacobian is full rang (\\(r=n\\)) and the Moore-Penrose pseudo inverse is: \\[J^+ = (J^T J)^{-1} J^T\\]\nOver-actuated System If there are more actuator than sensor (\\(m\u0026lt;n\\)), we obtain: \\[J^+ = J^T(J J^T)^{-1}\\]\nNote that the Singular Value Decomposition offers a practical way to compute the pseudo-inverse, both for \\(m\u0026gt;n\\) and \\(n\u0026gt;m\\).\nSingular Value Decomposition The Singular Value Decomposition (SVD) is a generalization of the eigenvalue decomposition of a rectangular matrix: \\[ J = U \\Sigma V^T = \\sum_{i=1}^r \\sigma_i u_i v_i^T \\] With:\n \\(U\\) and \\(V\\) orthogonal matrices. The columns \\(u_i\\) and \\(v_i\\) of \\(U\\) and \\(V\\) are the eigenvectors of the square matrices \\(JJ^T\\) and \\(J^TJ\\) respectively \\(\\Sigma\\) a rectangular diagonal matrix of dimension \\(m \\times n\\) containing the square root of the common non-zero eigenvalues of \\(JJ^T\\) and \\(J^TJ\\) \\(r\\) is the number of non-zero singular values of \\(J\\) The pseudo-inverse of \\(J\\) is: \\[ J^+ = V\\Sigma^+U^T = \\sum_{i=1}^r \\frac{1}{\\sigma_i} v_i u_i^T \\]\nThe conditioning of the Jacobian is measured by the condition number: \\[ c(J) = \\frac{\\sigma_{max}}{\\sigma_{min}} \\]\nWhen \\(c(J)\\) becomes large, the most straightforward way to handle the ill-conditioning is to truncate the smallest singular value out of the sum. This will have usually little impact of the fitting error while reducing considerably the actuator inputs \\(v\\).\nSome Concepts in Structural Dynamics Equation of Motion of a Discrete System The general form of the equation of motion governing the dynamic equilibrium between the external, elastic, inertia and damping forces acting on a discrete, flexible structure with a finite number \\(n\\) of degrees of freedom is\n \\begin{equation} M \\ddot{x} + C \\dot{x} + K x = f \\end{equation}\nWith:\n \\(x\\) is the vector of generalized displacements (translations and rotations) \\(f\\) is the vector of generalized forces (point forces and torques) \\(M\\), \\(C\\) and \\(K\\) are respectively the mass, damping and stiffness matrices; they are symmetric and semi-positive definite The damping matrix \\(C\\) represents the various dissipation mechanisms in the structure, which are usually poorly known. One of the popular hypotheses is the Rayleigh damping.\n \\begin{equation} C = \\alpha M + \\beta K \\end{equation}\n \\(\\alpha\\) and \\(\\beta\\) are selected to fit the structure under consideration.\nVibration Modes Consider the free response of an undamped system of order \\(n\\): \\[ M\\ddot{x} + K x = 0 \\]\nIf one tries a solution of the form \\(x = \\phi_i e^{j\\omega_i t}\\), \\(\\phi_i\\) and \\(\\omega_i\\) must statisfy the eigenvalue problem \\[ (K - \\omega_i^2 M)\\phi_i = 0 \\] with:\n \\(\\omega_i\\): the natural frequency \\(\\phi_i\\): the corresponding mode shape The number of mode shapes is equal to the number of degrees of freedom \\(n\\).\nThe mode shapes are orthogonal with respect to the stiffness and mass matrices:\n\\begin{align} \\phi_i^T M \\phi_j \u0026amp;= \\mu_i \\delta_{ij} \\\\\\\n\\phi_i^T K \\phi_j \u0026amp;= \\mu_i \\omega_i^2 \\delta_{ij} \\end{align}\nWith \\(\\mu_i\\) the modal mass (also called the generalized mass) of mode \\(i\\).\nModal Decomposition Structure Without Rigid Body Modes Let perform a change of variable from physical coordinates \\(x\\) to modal coordinates \\(z\\).\n \\begin{equation} x = \\Phi z \\end{equation}\nWith:\n \\(\\Phi = [\\phi_1, \\phi_2, \u0026hellip;, \\phi_n]\\) the matrix of the mode shapes \\(z\\) the vector of modal amplitudes The dynamic equation of the system becomes: \\[ M \\Phi \\ddot{z} + C \\Phi \\dot{z} + K \\Phi z = f \\]\nIf we left multiply the equation by \\(\\Phi^T\\) and we use the orthogonalily relationships: \\[ diag(\\mu_i) \\ddot{z} + \\Phi^T C \\Phi + diag(\\mu_i \\omega_i^2) z = \\Phi^T f \\]\nIf \\(\\Phi^T C \\Phi\\) is diagonal, the damping is said classical or normal. In this case: \\[ \\Phi^T C \\Phi = diag(2 \\xi_i \\mu_i \\omega_i) \\]\nOne can verify that the Rayleigh damping \\eqref{eq:rayleigh_damping} complies with this condition with modal damping ratios \\(\\xi_i = \\frac{1}{2} ( \\frac{\\alpha}{\\omega_i} + \\beta\\omega_i )\\).\nAnd we obtain decoupled modal equations \\eqref{eq:modal_eom}.\n \\begin{equation} \\ddot{z} + 2 \\xi \\Omega \\dot{z} + \\Omega^2 z = z^{-1} \\Phi^T f \\end{equation}\nwith:\n \\(\\xi = diag(\\xi_i)\\) \\(\\Omega = diag(\\omega_i)\\) \\(\\mu = diag(\\mu_i)\\) Typical values of the modal damping ratio are summarized on table tab:damping_ratio.\n\nTable 2: Typical Damping ratio Damping Ratio Application \\(\\xi \\simeq 0.001 - 0.005\\) Space structures \\(\\xi \\simeq 0.01 - 0.02\\) Mechanical engineering \\(\\xi \\simeq 0.05\\) Civil engineering \\(\\xi \\simeq 0.2\\) When ground is involved The assumption of classical damping is often justified for light damping, but it is questionable when the damping is large.\nIf one accepts the assumption of classical damping, the only difference between equation \\eqref{eq:general_eom} and \\eqref{eq:modal_eom} lies in the change of coordinates. However, in physical coordinates, the number of degrees of freedom is usually very large. If a structure is excited in by a band limited excitation, its response is dominated by the modes whose natural frequencies are inside the bandwidth of the excitation and the equation \\eqref{eq:modal_eom} can often be restricted to theses modes. Therefore, the number of degrees of freedom contribution effectively to the response is reduced drastically in modal coordinates.\nDynamic Flexibility Matrix If we consider the steady-state response of equation \\eqref{eq:general_eom} to harmonic excitation \\(f=F e^{j\\omega t}\\), the response is also harmonic \\(x = Xe^{j\\omega t}\\). The amplitude of \\(F\\) and \\(X\\) is related by: \\[ X = G(\\omega) F \\]\nWhere \\(G(\\omega)\\) is called the Dynamic flexibility Matrix: \\[ G(\\omega) = (-\\omega^2 M + j\\omega C + K)^{-1} F \\]\nFrom the modal expansion of the dynamic flexibility matrix can be obtained by coordinate transformation \\(x = \\phi z\\) and we obtain:\n\\begin{equation} G(\\omega) = \\sum_{i=1}^n \\frac{\\phi_i \\phi_i^T}{\\mu_i \\omega_i^2} D_i(\\omega) \\end{equation}\nWith:\n \\(D_i(\\omega)\\) is the dynamic amplification factor of mode \\(i\\) given by \\begin{equation} D_i(\\omega) = \\frac{1}{1 - \\omega^2/\\omega_i^2 + 2 j \\xi_i \\omega/\\omega_i} \\end{equation}\n\n Figure 6: Fourier spectrum of the excitation \\(F\\) and dynamic amplitification \\(D_i\\) of mode \\(i\\) and \\(k\\) such that \\(\\omega_i \u0026lt; \\omega_b\\) and \\(\\omega_k \\gg \\omega_b\\)\n If the excitation has a limited bandwidth \\(\\omega_b\\), the contribution of the high frequency modes \\(\\omega_k \\gg \\omega_b\\) can be evaluated by assuming \\(D_k(\\omega) \\approx 1\\) (as shown on figure fig:neglected_modes).\nAnd \\(G(\\omega)\\) can be rewritten on terms of the low frequency modes only: \\[ G(\\omega) \\approx \\sum_{i=1}^m \\frac{\\phi_i \\phi_i^T}{\\mu_i \\omega_i^2} D_i(\\omega) + R \\]\nThe quasi-static correction of the high frequency modes \\(R\\) is called the residual mode. This introduces a feedthrough component in the transfer matrix.\nStructure with Rigid Body Modes Collocated Control System A collocated control system is a control system where:\n the actuator and the sensor are attached to the same degree of freedom they are dual: the product of the actuator signal and the sensor signal represents the energy exchange between the structure and the control system \nTable 3: Examples of dual actuators and sensors Actuator Sensor Force Translation Torque Rotation The open-loop FRF of a collocated system corresponds to a diagonal component of the dynamic flexibility matrix.\nIf we assumes that the collocated system is undamped and is attached to the DoF \\(k\\), the open-loop FRF is purely real: \\[ G_{kk}(\\omega) = \\sum_{i=1}^m \\frac{\\phi_i^2(k)}{\\mu_i (\\omega_i^2 - \\omega^2)} + R_{kk} \\]\n\\(G_{kk}\\) is a monotonously increasing function of \\(\\omega\\) (figure fig:collocated_control_frf).\n\n Figure 7: Open-Loop FRF of an undamped structure with collocated actuator/sensor pair\n The amplitude of the FRF goes from \\(-\\infty\\) at the resonance frequencies \\(\\omega_i\\) to \\(+\\infty\\) at the next resonance frequency \\(\\omega_{i+1}\\). Therefore, in every interval, there is a frequency \\(z_i\\) such that \\(\\omega_i \u0026lt; z_i \u0026lt; \\omega_{i+1}\\) where the amplitude of the FRF vanishes. The frequencies \\(z_i\\) are called anti-resonances.\n Undamped collocated control systems have alternating poles and zeros on the imaginary axis. For lightly damped structure, the poles and zeros are just moved a little bit in the left-half plane, but they are still interlacing.\n If the undamped structure is excited harmonically by the actuator at the frequency of the transmission zero \\(z_i\\), the amplitude of the response of the collocated sensor vanishes. That means that the structure oscillates at the frequency \\(z_i\\) according to the mode shape shown in dotted line figure fig:collocated_zero.\n\n Figure 8: Structure with collocated actuator and sensor\n The frequency of the transmission zero \\(z_i\\) and the mode shape associated are the natural frequency and the mode shape of the system obtained by constraining the d.o.f. on which the control systems acts.\nThe open-loop zeros are asymptotic values of the closed-loop poles when the feedback gain goes to infinity.\nThe open-loop poles are independant of the actuator and sensor configuration while the open-loop zeros do depend on it.\n By looking at figure fig:collocated_control_frf, we see that neglecting the residual mode in the modelling amounts to translating the FRF diagram vertically. That produces a shift in the location of the transmission zeros to the right.\n\n Figure 9: Bode plot of a lighly damped structure with collocated actuator and sensor\n The open-loop transfer function of a lighly damped structure with a collocated actuator/sensor pair can be written:\n\\begin{equation} G(s) = G_0 \\frac{\\Pi_i(s^2/z_i^2 + 2 \\xi_i s/z_i + 1)}{\\Pi_j(s^2/\\omega_j^2 + 2 \\xi_j s /\\omega_j + 1)} \\end{equation}\nThe corresponding Bode plot is represented in figure 9. Every imaginary pole at \\(\\pm j\\omega_i\\) introduces a \\(\\SI{180}{\\degree}\\) phase lag and every imaginary zero at \\(\\pm jz_i\\) introduces a phase lead of \\(\\SI{180}{\\degree}\\). In this way, the phase diagram is always contained between \\(\\SI{0}{\\degree}\\) and \\(\\SI{-180}{\\degree}\\) as a consequence of the interlacing property.\nElectromagnetic and Piezoelectric Transducers Introduction Transducers are critical in active structures technology. In many applications, the actuators are the most critical part of the system; however, the sensors become very important in precision engineering where submicron amplitudes must be detected.\nTwo broad categories of actuators can be distinguish:\n grounded actuator: react on a fixed support. They include torque motors, force motors (shakers), tendons structure borne actuator: includes jets, reaction wheels, proof-mass actuators, piezo strips, \u0026hellip; Voice Coil Transducer A voice coil transducer is an energy transformer which converts electrical power into mechanical power and vice versa.\nThe system consists of (see figure fig:voice_coil_schematic):\n A permanent magnet which produces a uniform flux density \\(B\\) normal to the gap A coil which is free to move axially \n Figure 10: Physical principle of a voice coil transducer\n We note:\n \\(v\\) the velocity of the coil \\(f\\) the external force acting to maintain the coil in equilibrium againt the electromagnetic forces \\(e\\) the voltage difference across the coil \\(i\\) the current into the coil Faraday\u0026rsquo;s law:\n\\begin{equation} e = 2\\pi n r B v = T v \\end{equation}\nWith \\(T = 2\\pi n r B\\) is the transducer constant.\nLorentz force law:\n\\begin{equation} f = -i 2\\pi n r B = - T i \\end{equation}\n The total power delivered to the moving coil transducer is equal to the sum of the electric power and the mechanical power: \\[ ei + fv = 0 \\]\nThus, at any time, there is an equilibrium between the electrical power absorbed by the device and the mechanical power delivered.\nProof-Mass Actuator A reaction mass \\(m\\) is conected to the support structure by a spring \\(k\\) , and damper \\(c\\) and a force actuator \\(f = T i\\) (figure fig:proof_mass_actuator).\n\n Figure 11: Proof-mass actuator\n If we apply the second law of Newton on the mass: \\[ m\\ddot{x} + c\\dot{x} + kx = f = Ti \\]\nIn the Laplace domain: \\[ x = \\frac{Ti}{ms^2 + cs + k} \\]\nThe total force applied on the support is: \\[ F = -f + cs + k = -m s^2 x = \\frac{-ms^2Ti}{ms^2 + cs + k} \\]\nThe transfer function between the total force and the current \\(i\\) applied to the coil is :\n \\begin{equation} \\frac{F}{i} = \\frac{-s^2 T}{s^2 + 2\\xi_p \\omega_p s + \\omega_p^2} \\end{equation}\nwith:\n \\(T\\) is the transducer constant \\(\\omega_p = \\frac{k}{m}\\) is the natural frequency of the spring-mass system \\(\\xi_p\\) is the damping ratio Above some critical frequency \\(\\omega_c \\approx 2\\omega_p\\), the proof-mass actuator can be regarded as an ideal force generator (figure fig:proof_mass_tf).\n\n Figure 12: Bode plot \\(F/i\\) of the proof-mass actuator\n Geophone The geophone is a transducer which behaves like an absolute velocity sensor above some cutoff frequency. The voltage \\(e\\) of the coil is used as the sensor output.\nIf \\(x_0\\) is the displacement of the support and if the voice coil is open (\\(i=0\\)), the governing equations are:\n\\begin{align*} m\\ddot{x} + c(\\dot{x}-\\dot{x_0}) + k(x-x_0) \u0026amp;= 0\\\\\\\nT(\\dot{x}-\\dot{x_0}) \u0026amp;= e \\end{align*}\nBy using the two equations, we obtain:\n\\begin{equation} \\frac{e}{\\dot{x_0}} = \\frac{-s^2 T}{s^2 + 2\\xi_p\\omega_p s + \\omega_p^2} \\end{equation}\nAbove the corner frequency, the gain of the geophone is equal to the transducer constant \\(T\\).\n\n Figure 13: Model of a geophone based on a voice coil transducer\n Designing geophones with very low corner frequency is in general difficult. Active geophones where the frequency is lowered electronically may constitute a good alternative option.\nGeneral Electromechanical Transducer The consitutive behavior of a wide class of electromechanical transducers can be modelled as in figure fig:electro_mechanical_transducer.\n\n Figure 14: Electrical analog representation of an electromechanical transducer\n In Laplace form the constitutive equations read:\n\\begin{align} e \u0026amp; = Z_e i + T_{em} v \\label{eq:gen_trans_e} \\\\\\\nf \u0026amp; = T_{em} i + Z_m v \\label{eq:gen_trans_f} \\end{align}\nWith:\n \\(e\\) is the Laplace transform of the input voltage across the electrical terminals \\(i\\) is the input current \\(f\\) is the force applied to the mechanical terminals \\(v\\) is the velocity of the mechanical part \\(Z_e\\) is the blocked electrical impedance (for \\(v=0\\)) \\(T_{em}\\) is the transduction coefficient representing the electromotive force (in \\(\\si{\\volt\\second\\per\\meter}\\)) \\(T_{me}\\) is the transduction coefficient representing the force acting on the mechanical terminals to balance the electromagnetic force induced per unit current input (in \\(\\si{\\newton\\per\\ampere}\\)) \\(Z_m\\) is the mechanical impedance measured when \\(i=0\\) Equation \\eqref{eq:gen_trans_e} shows that the voltage across the electrical terminals of any electromechanical transducer is the sum of a contribution proportional to the current applied and a contribution proportional to the velocity of the mechanical terminals. Thus, if \\(Z_ei\\) can be measured and substracted from \\(e\\), a signal proportional to the velocity is obtained.\nTo do so, the bridge circuit as shown on figure fig:bridge_circuit can be used.\nWe can show that\n\\begin{equation} V_4 - V_2 = \\frac{-Z_b T_{em}}{Z_e + Z_b} v \\end{equation}\nwhich is indeed a linear function of the velocity \\(v\\) at the mechanical terminals.\n\n Figure 15: Bridge circuit for self-sensing actuation\n Smart Materials Smart materials have the ability to respond significantly to stimuli of different physical nature. Figure fig:smart_materials lists various effects that are observed in materials in response to various inputs.\n\n Figure 16: Stimulus response relations indicating various effects in materials. The smart materials corresponds to the non-diagonal cells\n Piezoelectric Transducer Piezoelectric materials exhibits two effects described below.\n Ability to generate an electrical charge in proportion to an external applied force.\n An electric filed parallel to the direction of polarization induces an expansion of the material.\n The most popular piezoelectric materials are Lead-Zirconate-Titanate (PZT) which is a ceramic, and Polyvinylidene fluoride (PVDF) which is a polymer.\nWe here consider a transducer made of one-dimensional piezoelectric material.\n \\begin{subequations} \\begin{align} D \u0026amp; = \\epsilon^T E + d_{33} T\\\\\\\nS \u0026amp; = d_{33} E + s^E T \\end{align} \\end{subequations}\nWith:\n \\(D\\) is the electric displacement \\([C/m^2]\\) \\(E\\) is the electric field \\([V/m]\\) \\(T\\) is the stress \\([N/m^2]\\) \\(S\\) is the strain \\(\\epsilon^T\\) is the dielectric constant under constant stress \\(s^E\\) is the compliance when the eletric field is constant (inverse of Young modulus) \\(d_{33}\\) is the piezoelectric constant \\([m/V]\\) or \\([C/N]\\) in the poling direction of the material (convention) Constitutive Relations of a Discrete Transducer The set of equations \\eqref{eq:piezo_eq} can be written in a matrix form:\n\\begin{equation} \\begin{bmatrix}D\\S\\end{bmatrix} \\begin{bmatrix} \\epsilon^T \u0026amp; d_{33}\\\\\\\nd_{33} \u0026amp; s^E \\end{bmatrix} \\begin{bmatrix}E\\T\\end{bmatrix} \\end{equation}\nWhere \\((E, T)\\) are the independent variables and \\((D, S)\\) are the dependent variable.\nIf \\((E, S)\\) are taken as independant variables:\n\\begin{equation} \\begin{bmatrix}D\\T\\end{bmatrix} \\begin{bmatrix} \\epsilon^T(1-k^2) \u0026amp; e_{33}\\\\\\\n-e_{33} \u0026amp; c^E \\end{bmatrix} \\begin{bmatrix}E\\S\\end{bmatrix} \\end{equation}\nWith:\n \\(c^E = \\frac{1}{s^E}\\) is the Young modulus under short circuited electrodes (\\(E = 0\\)) in \\([N/m^2]\\) \\(e_{33} = \\frac{d_{33}}{s^E}\\) is the constant relating the electric displacement to the strain for short-circuited electrodes \\([C/m^2]\\) \\begin{equation} k^2 = \\frac{{d_{33}}^2}{s^E \\epsilon^T} = \\frac{{e_{33}}^2}{c^E \\epsilon^T} \\end{equation}\n\\(k\\) is called the electromechanical coupling factor of the material. It measures the efficiency of the conversion of the mechanical energy into electrical energy, and vice versa.\n If one assumes that all the electrical and mechanical quantities are uniformly distributed in a linear transducer formed by a stack (see figure fig:piezo_stack) of \\(n\\) disks of thickness \\(t\\) and cross section \\(A\\), the global constitutive equations of the transducer are obtained by integrating \\eqref{eq:piezo_eq_matrix_bis} over the volume of the transducer:\n\\begin{equation} \\begin{bmatrix}Q\\\\Delta\\end{bmatrix} \\begin{bmatrix} C \u0026amp; nd_{33}\\\\\\\nnd_{33} \u0026amp; 1/K_a \\end{bmatrix} \\begin{bmatrix}V\\f\\end{bmatrix} \\end{equation}\nwhere\n \\(Q = n A D\\) is the total electric charge on the electrodes of the transducer \\(\\Delta = S l\\) is the total extension (\\(l = nt\\) is the length of the transducer) \\(f = AT\\) is the total force \\(V\\) is the voltage applied between the electrodes of the transducer \\(C = \\epsilon^T A n^2/l\\) is the capacitance of the transducer with no external load (\\(f = 0\\)) \\(K_a = A/s^El\\) is the stiffness with short-circuited electrodes (\\(V = 0\\)) \n Figure 17: Piezoelectric linear transducer\n Equation \\eqref{eq:piezo_stack_eq} can be inverted to obtain\n\\begin{equation} \\begin{bmatrix}V\\f\\end{bmatrix} \\frac{K_a}{C(1-k^2)} \\begin{bmatrix} 1/K_a \u0026amp; -nd_{33}\\\\\\\n-nd_{33} \u0026amp; C \\end{bmatrix} \\begin{bmatrix}Q\\\\Delta\\end{bmatrix} \\end{equation}\nEnergy Stored in the Piezoelectric Transducer Let us write the total stored electromechanical energy of a discrete piezoelectric transducer as shown on figure fig:piezo_discrete.\nThe total power delivered to the transducer is the sum of electric power \\(V i\\) and the mechanical power \\(f \\dot{\\Delta}\\). The net work of the transducer is\n\\begin{equation} dW = V i dt + f \\dot{\\Delta} dt = V dQ + f d\\Delta \\end{equation}\n\n Figure 18: Discrete Piezoelectric Transducer\n By integrating equation \\eqref{eq:piezo_work} and using the constitutive equations \\eqref{eq:piezo_stack_eq_inv}, we obtain the analytical expression of the stored electromechanical energy for the discrete transducer:\n\\begin{equation} W_e(\\Delta, Q) = \\frac{Q^2}{2 C (1 - k^2)} - \\frac{n d_{33} K_a}{C(1-k^2)} Q\\Delta + \\frac{K_a}{1-k^2}\\frac{\\Delta^2}{2} \\end{equation}\n The first term is the electrical energy stored in the capacitance \\(C(1-k^2)\\) (corresponding to fixed geometry \\(\\Delta = 0\\)) The second term is the piezoelectric energy The third term is the elastic strain energy stored in a spring stiffness \\(K_a/(1-k^2)\\) (corresponding to open electrodes \\(Q=0\\)) The constitutive equations can be recovered by differentiate the stored energy: \\[ f = \\frac{\\partial W_e}{\\partial \\Delta}, \\quad V = \\frac{\\partial W_e}{\\partial Q} \\]\nInterpretation of \\(k^2\\) Consider a piezoelectric transducer subjected to the following mechanical cycle: first, it is loaded with a force \\(F\\) with short-circuited electrodes; the resulting extension is \\(\\Delta_1 = F/K_a\\) where \\(K_a = A/(s^El)\\) is the stiffness with short-circuited electrodes. The energy stored in the system is: \\[ W_1 = \\int_0^{\\Delta_1} f dx = \\int_0^{\\Delta_1} K_a x dx = \\frac{F^2}{2 K_a} \\]\nAt this point, the electrodes are open and the transducer is unloaded according to a path of slope \\(K_a/(1-k^2)\\), the resulting extension is \\(\\Delta_2 = \\frac{F(1-k^2)}{K_a}\\). The energy recovered is \\[ W_1 = \\int_0^{\\Delta_2} f dx = \\frac{F \\Delta_2}{2} = \\frac{F^2(1-k^2)}{2 K_a} \\]\nThe ratio between the remaining stored energy and the initial stored energy is \\[ \\frac{W_1 - W_2}{W_1} = k^2 \\]\nAdmittance of the Piezoelectric Transducer Consider the system of figure fig:piezo_stack_admittance, where the piezoelectric transducer is assumed massless and is connected to a mass \\(M\\). The force acting on the mass is negative of that acting on the transducer, \\(f = -M \\ddot{x}\\).\n\n Figure 19: Elementary dynamical model of the piezoelectric transducer\n From the constitutive equations, one finds\n\\begin{equation} \\frac{I}{V} = s C (1-k^2) \\frac{s^2 + z^2}{s^2 + p^2} \\end{equation}\nwhere the poles and zeros are respectively \\[ p^2 = \\frac{K_a}{M},\\quad z^2 = \\frac{K_a/(1-k^2)}{M} \\]\nAnd one can see that\n\\begin{equation} \\frac{z^2 - p^2}{z^2} = k^2 \\end{equation}\nEquation \\eqref{eq:distance_p_z} constitutes a practical way to determine the electromechanical coupling factor from the poles and zeros of the admittance measurement (figure fig:piezo_admittance_curve).\n\n Figure 20: Typical admittance FRF of the transducer\n Piezoelectric Beam, Plate and Truss Piezoelectric Material Constitutive Relations Coenergy Density Function Hamilton\u0026rsquo;s Principle Piezoelectric Beam Actuator Hamilton\u0026rsquo;s Principle Piezoelectric Loads Laminar Sensor Current and Charge Amplifiers Distributed Sensor Output Charge Amplifier Dynamics Spatial Modal Filters Modal Actuator Modal Sensor Active Beam with Collocated Actuator/Sensor Frequency Response Function Pole-Zero Pattern Modal Truncation Admittance of a Beam with a Piezoelectric Patch Piezoelectric Laminate Two-Dimensional Constitutive Equations Kirchhoff Theory Stiffness Matrix of a Multilayer Elastic Laminate Multilayer Laminate with a Piezoelectric Layer Equivalent Piezoelectric Loads Sensor Output Beam Model Versus Plate Model Additional Remarks Active Truss Open-Loop Transfer Function Admittance Function Finite Element Formulation Problems References Passive Damping with Piezoelectric Transducers Introduction Resistive Shunting Inductive Shunting Equal Peak Design Robustness of the Equal Peak Design Switched Shunt Equivalent Damping Ratio Collocated Versus Non-collocated Control Pole-Zero Flipping The Root Locus shows, in a graphical form, the evolution of the poles of the closed-loop system as a function of the scalar gain \\(g\\) applied to the compensator. The Root Locus is the locus of the solution \\(s\\) of the closed loop characteristic equation \\(1 + gG(s)H(s) = 0\\) when \\(g\\) goes from zero to infinity.\n If the open-loop transfer function is written \\[ G(s)H(s) = k \\frac{\\Pi_{i=1}^{m} (s - z_i)}{\\Pi_{i=1}^{n} (s - p_i)} \\] The locus goes from the poles \\(p_i\\) (for \\(g=0\\)) to the zeros \\(z_i\\) (as \\(g \\rightarrow \\infty\\)).\nThe Two-Mass Problem Collocated Control Non-collocated Control Notch Filter Effect of Pole-Zero Flipping on the Bode Plots Nearly Collocated Control System Non-collocated Control Systems The Role of Damping Active Damping with Collocated System Introduction The role of active damping is to increase the negative real parts of system poles wile maintaining the natural frequencies essentially unchanged.\nActive damping requires relatively little control effort; this is why it is also called Low Authority Control (LAC). Other control strategies which fully relocate the closed loop poles are called High Autority Control (HAC).\nLead Control \\[H(s) = g \\frac{s+z}{z+p} \\quad p \\gg z \\]\nIt produces a phase lead in the frequency band between \\(z\\) and \\(p\\), bringing active damping to all the modes belonging to \\(z \u0026lt; \\omega_i \u0026lt; p\\).\nThe closed-loop poles start at the open-llop poles for \\(g=0\\) and go to the open-loop zeros for \\(g\\rightarrow\\infty\\).\nThe controller does not have any roll-off, but the roll-off of the structure is enough to guarantee gain stability at high frequency.\nDirect Velocity Feedback (DVF) This is a particular case of the Lead controller as \\(z\\rightarrow 0\\) and \\(p\\rightarrow\\infty\\).\nStructure: \\[M \\ddot{x} + K x = b u\\]\nOutput is a velocity sensor: \\[y = b^T \\dot{x}\\]\nControl: \\[u = -g y\\]\nPositive Position Feedback (PPF) Sometimes the plant does not have a roll-off of \\(-40dB/\\text{decade}\\), then we can use a second-order PPF: \\[H(s) = \\frac{-g}{s^2 + 2 \\xi_f \\omega_f s + {\\omega_f}^2}\\]\nIntegral Force Feedback (IFF) Duality Between the Lead and the IFF Controllers Root Locus of a Single Mode Open-Loop Poles and Zeros Actuator and Sensor Dynamics Decentralized Control with Collocated Pairs Cross talk Force Actuator and Displacement Sensor Displacement Actuator and Force Sensor Proof of Equation (7.18)–(7.32) Vibration Isolation Introduction Relaxation Isolator Electromagnetic Realization Active Isolation Sky-Hook Damper Integral Force Feedback Flexible Body Free-Free Beam with Isolator Payload Isolation in Spacecraft Interaction Isolator/Attitude Control Gough–Stewart Platform Six-Axis Isolator Relaxation Isolator Integral Force Feedback Spherical Joints, Modal Spread Active Versus Passive Car Suspension State Space Approach Introduction State Space Description Single Degree of Freedom Oscillator Flexible Structure Inverted Pendulum System Transfer Function Poles and Zeros Pole Placement by State Feedback Example: Oscillator Linear Quadratic Regulator Symmetric Root Locus Inverted Pendulum Observer Design Kalman Filter Inverted Pendulum Reduced-Order Observer Oscillator Inverted Pendulum Separation Principle Transfer Function of the Compensator The Two-Mass Problem Analysis and Synthesis in the Frequency Domain Gain and Phase Margins Nyquist Criterion Cauchy\u0026rsquo;s Principle Nyquist Stability Criterion Nichols Chart Feedback Specification for SISO Systems Sensitivity Tracking Error Performance Specification Unstructured Uncertainty Robust Performance and Robust Stability Bode Gain–Phase Relationships The Bode Ideal Cutoff Non-minimum Phase Systems Usual Compensators System Type Lead Compensator PI Compensator Lag Compensator PID Compensator Multivariable Systems Performance Specification Small Gain Theorem Stability Robustness Tests Residual Dynamics Optimal Control Introduction Quadratic Integral Deterministic LQR Stochastic Response to a White Noise Remark Stochastic LQR Asymptotic Behavior of the Closed Loop Prescribed Degree of Stability Gain and Phase Margins of the LQR Full State Observer Covariance of the Reconstruction Error Kalman Filter (KF) Linear Quadratic Gaussian (LQG) Duality Spillover Spillover Reduction Loop Transfer Recovery (LTR) Integral Control with State Feedback Frequency Shaping Weakness of LQG:\n use frequency independant cost function use noise statistics with uniform distribution To overcome the weakness =\u0026gt; frequency shaping either by:\n considering a frequency dependant cost function using colored noise statistics Frequency-Shaped Cost Functionals Noise Model Controllability and Observability Introduction Definitions Controllability and Observability Matrices Examples Cart with Two Inverted Pendulums Double Inverted Pendulum Two d.o.f. Oscillator State Transformation Control Canonical Form Left and Right Eigenvectors Diagonal Form PBH Test Residues Example Sensitivity Controllability and Observability Gramians Internally Balanced Coordinates Model Reduction Transfer Equivalent Realization Internally Balanced Realization Example Stability Introduction Phase Portrait Linear Systems Routh\u0026ndash;Hurwitz Criterion Lyapunov\u0026rsquo;s Direct Method Introductory Example Stability Theorem Asymptotic Stability Theorem Lasalle\u0026rsquo;s Theorem Geometric Interpretation Instability Theorem Lyapunov Functions for Linear Systems Lyapunov\u0026rsquo;s Indirect Method An Application to Controller Design Energy Absorbing Controls Applications Digital Implementation Sampling, Aliasing, and Prefiltering Zero-Order Hold, Computational Delay Quantization Discretization of a Continuous Controller Active Damping of a Truss Structure Actuator Placement Implementation, Experimental Results Active Damping Generic Interface Active Damping Experiment Pointing and Position Control Active Damping of a Plate Control Design Active Damping of a Stiff Beam System Design The HAC/LAC Strategy In active structures for precision engineering applications, the control system is used to reduce the effect of transient and steady-state disturbances on the controlled variables. Active damping is very effective in reducing the settling time of transient disturbances and the effect of steady state disturbances near the resonance frequencies of the system; however, away from the resonances, the active damping is completely ineffective and leaves the closed-loop response essentially unchanged. Such low-gain controllers are often called Low Authority Controllers (LAC), because they modify the poles of the system only slightly.\nTo attenuate wide-band disturbances, the controller needs larger gains, in order to cause more substantial modifications to the poles of the open-loop system; this is the reason why they are often called High Authority Controllers (HAC). Their design requires a model of the structure, and there is usually a trade-off between the conflicting requirements of performance-bandwidth and stability in the face of parametric uncertainty and unmodelled dynamics.\nWhen collocated actuator/sensor pairs can be used, stability can be achieved using positivity concepts, but in many situations, collocated pairs are not feasible for HAC.\nThe HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure fig:hac_lac_control. The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure. This approach has the following advantages:\n The active damping extends outside the bandwidth of the HAC and reduces the settling time of the modes which are outsite the bandwidth The active damping makes it easier to gain-stabilize the modes outside the bandwidth of the output loop (improved gain margin) The larger damping of the modes within the controller bandwidth makes them more robust to the parmetric uncertainty (improved phase margin) \n Figure 21: Principle of the dual-loop HAC/LAC control\n Wide-Band Position Control Compensator Design Results Vibroacoustics: Volume Displacement Sensors QWSIS Sensor Discrete Array Sensor Spatial Aliasing Distributed Sensor Tendon Control of Cable Structures Introduction Tendon Control of Strings and Cables Active Damping Strategy Basic Experiment Linear Theory of Decentralized Active Damping Guyed Truss Experiment Microprecision Interferometer Testbed Free-Floating Truss Experiment Application to Cable-Stayed Bridges Laboratory Experiment Control of Parametric Resonance Large Scale Experiment Application to Suspension Bridges Footbridge Laboratory Experiment Active Control of Large Telescopes: Adaptive Optics Introduction Wavefront Sensor Zernike Modes Fried Length, Seeing Kolmogorov Turbulence Model Strehl Ratio Power Spectral Density of the Zernike Modes Deformable Mirror for Adaptive Optics Stoney Formula Stroke Versus Natural Frequency Feedback Control of an AO Mirror Quasi-static Control Control of the Mirror Based on the Jacobian Control of Zernike Modes Dynamic Response of the AO Mirror Dynamic Model of the Mirror Control-Structure Interaction Passive Damping Active Damping Miscellaneous Segmented AO Mirror Initial Curvature of the AO Mirror Active Control of Large Telescopes: Active Optics Introduction Monolithic Primary Mirror Segmented Primary Mirror SVD Controller Loop Shaping of the SVD Controller Dynamics of a Segmented Mirror Control-Structure Interaction SISO System MIMO System Spillover Alleviation Scaling Rules Static Deflection Under Gravity First Resonance Frequency Control Bandwidth Adaptive Thin Shell Space Reflectors Introduction Adaptive Plates Versus Adaptive Shells Adaptive Spherical Shell Quasi-static Control: Hierarchical Approach Petal Configuration MATS Demonstrator Manufacturing of the Demonstrator Semi-active Control Introduction Magneto-Rheological Fluids MR Devices Semi-active Suspension Semi-active Devices Narrow-Band Disturbance Quarter-Car Semi-active Suspension Problems Bibliography Preumont, A., Vibration control of active structures - fourth edition (2018), : Springer International Publishing. ↩\n","permalink":"/book/preumont18_vibrat_contr_activ_struc_fourt_edition/","tags":null,"title":"Vibration Control of Active Structures - Fourth Edition"},{"categories":null,"contents":" Tags Vibration Isolation, Sensor Fusion Reference (Collette \u0026amp; Matichard, 2014) Author(s) Collette, C., \u0026amp; Matichard, F. Year 2014 Introduction Sensor fusion is used to combine the benefits of different types of sensors:\n Relative sensor for DC positioning capability at low frequency Inertial sensors for isolation at high frequency Force sensor / collocated sensor to improve the robustness Different types of sensors In this paper, three types of sensors are used. Their advantages and disadvantages are summarized table 1.\n Several types of sensors can be used for the feedback control of vibration isolation systems:\n Feedback control based on relative motion sensors (inductive, capactive, ferromagnetic sensors\u0026hellip;) typically permits to servo-position a system or platform relative to a reference (e.g. floor or support base), but does not provide isolation from the ground motion. Feedback control based on force sensors typically lowers the effective natural frequency, and therefore increases the isolation, but sacrifices the systems compliance in doing so. Feedback control based on inertial sensors (geophones, seismometers, accelerometers\u0026hellip;) improves not only the vibration isolation but also the compliance. Inertial sensors are, however, AC coupled and noisy at low frequencies. \nTable 1: Types of sensors Sensors Advantages Disadvantages Relative motion Servo-position No isolation from gorund motion Force sensors Improve isolation Increase compliance Inertial sensors Improve isolation and compliance AC couple and noisy at high frequency Inertial Control and sensor fusion configurations For a simple 1DoF model, two fusion-sensor configuration are studied. The results are summarized Table 2.\n\nTable 2: Sensor fusion configurations Low freq. sensor High freq. sensor Transmissibility Compliance Trade-off Inertial Force sensor Unchanged Degraded Sensor noise filtering / compliance degradation Inertial Relative sensor Degraded Unchanged Isolation in the bandwidth / amplification outside Flexible structure Flexibility is added between the inertial sensor and the actuator. Now the sensor and actuator are not collocated anymore and the system is unstable because there is no zero between the two poles. We use sensor fusion to obtain stability at high frequency.\nInertial and small accelerometer The idea is to use a small accelerometer which is easier to locate near the actuator at high frequency. However, it is important to verify that the noise introduced by the accelerometer does not degrades too much the isolation performance.\nInertial and force sensor Here the advantage is that the deformation mode is almost not present in the open-loop transfer function. This simplifies the loop shaping of the controller.\nInertial and relative sensor The relative sensor introduces coupling between both side of the actuator which induces degradation of the isolation at high frequency. However, the compliance remains unchanged at high frequency.\nConclusion Fusion of inertial instruments with sensors collocated with the actuator permits to increase the feedback control bandwidth of active isolation systems.\nThree types of sensors have been considered for the high frequency part of the fusion:\n The fusion with a relative sensor improves the stability but compromises the transmissibility. It can be of interested for stiff suspension where high frequency isolation can be sacrified to improve stability. The fusion with an accelerometre is used to increase the loop gain. However, as the accelerometer is not dual with the actuator, there is no guaranty stability when the isolation stage is mounted on a flexible support. The fusion with a force sensor can be used to increase the loop gain with little effect on the compliance and passive isolation, provided that the blend is possible and that no active damping of flexible modes is required. Bibliography Collette, C., \u0026amp; Matichard, F., Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs, In , International Conference on Noise and Vibration Engineering (ISMA2014) (pp. ) (2014). : . ↩\n","permalink":"/paper/collette14_vibrat/","tags":null,"title":"Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs"},{"categories":null,"contents":"Tags :\n\u0026lt;./biblio/references.bib\u0026gt;\nBacklinks Six dof active vibration control using stewart platform with non-cubic configuration Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Review of active vibration isolation strategies Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs Sensor fusion methods for high performance active vibration isolation systems Modeling and control of vibration in mechanical systems An intelligent control system for multiple degree-of-freedom vibration isolation Active isolation and damping of vibrations via stewart platform Sensors and control of a space-based six-axis vibration isolation system Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Simultaneous vibration isolation and pointing control of flexure jointed hexapods An exploration of active hard mount vibration isolation for precision equipment Force feedback versus acceleration feedback in active vibration isolation A six-axis single-stage active vibration isolator based on stewart platform Vibration Control of Active Structures - Fourth Edition A soft 6-axis active vibration isolator Sensor fusion for active vibration isolation in precision equipment ","permalink":"/zettels/vibration_isolation/","tags":null,"title":"Vibration Isolation"}] \ No newline at end of file diff --git a/public/index.xml b/public/index.xml deleted file mode 100644 index 5138f9b..0000000 --- a/public/index.xml +++ /dev/null @@ -1,867 +0,0 @@ - - - - My digital brain - / - Recent content on My digital brain - Hugo -- gohugo.io - en - - - - - - A new isotropic and decoupled 6-dof parallel manipulator - /paper/legnani12_new_isotr_decoup_paral_manip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/legnani12_new_isotr_decoup_paral_manip/ - Tags Stewart Platforms Reference (Legnani {\it et al.}, 2012) Author(s) Legnani, G., Fassi, I., Giberti, H., Cinquemani, S., &amp; Tosi, D. Year 2012 Concepts of isotropy and decoupling for parallel manipulators isotropy: the kinetostatic properties (same applicable force, same possible velocity, same stiffness) are identical in all directions (e.g. cubic configuration for Stewart platform) decoupling: each DoF of the end effector can be controlled by a single actuator (not the case for the Stewart platform) Example of generated isotropic manipulator (not decoupled). - - - - A review of nanometer resolution position sensors: operation and performance - /paper/fleming13_review_nanom_resol_posit_sensor/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/fleming13_review_nanom_resol_posit_sensor/ - Tags Position Sensors Reference (Andrew Fleming, 2013) Author(s) Fleming, A. J. Year 2013 Define concise performance metric and provide expressions for errors sources (non-linearity, drift, noise) Review current position sensor technologies and compare their performance Sensor Characteristics Calibration and nonlinearity Usually quoted as a percentage of the fill-scale range (FSR): -\begin{equation} \text{mapping error (%)} = \pm 100 \frac{\max{}|e_m(v)|}{\text{FSR}} \end{equation} -With \(e_m(v)\) is the mapping error. - - - - A six-axis single-stage active vibration isolator based on stewart platform - /paper/preumont07_six_axis_singl_stage_activ/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/preumont07_six_axis_singl_stage_activ/ - Tags Vibration Isolation, Stewart Platforms, Flexible Joints Reference (Preumont {\it et al.}, 2007) Author(s) Preumont, A., Horodinca, M., Romanescu, I., Marneffe, B. d., Avraam, M., Deraemaeker, A., Bossens, F., … Year 2007 Summary: - Cubic Stewart platform (Figure 3) Provides uniform control capability Uniform stiffness in all directions minimizes the cross-coupling among actuators and sensors of different legs Flexible joints (Figure 2) Piezoelectric force sensors Voice coil actuators Decentralized feedback control approach for vibration isolation Effect of parasitic stiffness of the flexible joints on the IFF performance (Figure 1) The Stewart platform has 6 suspension modes at different frequencies. - - - - A soft 6-axis active vibration isolator - /paper/spanos95_soft_activ_vibrat_isolat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/spanos95_soft_activ_vibrat_isolat/ - Tags Stewart Platforms, Vibration Isolation Reference (Spanos {\it et al.}, 1995) Author(s) Spanos, J., Rahman, Z., &amp; Blackwood, G. Year 1995 Stewart Platform (Figure 1): - Voice Coil Flexible joints (cross-blades) Force Sensors Cubic Configuration - Figure 1: Stewart Platform - Total mass of the paylaod: 30kg Center of gravity is 9cm above the geometry center of the mount (cube&rsquo;s center?). -Limitation of the Decentralized Force Feedback: - - - - A survey of control issues in nanopositioning - /paper/devasia07_survey_contr_issues_nanop/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/devasia07_survey_contr_issues_nanop/ - Tags : - Reference (Devasia {\it et al.}, 2007) Author(s) Devasia, S., Eleftheriou, E., &amp; Moheimani, S. R. Year 2007 Talks about Scanning Tunneling Microscope (STM) and Scanning Probe Microscope (SPM) Piezoelectric actuators: Creep, Hysteresis, Vibrations, Modeling errors Interesting analysis about Bandwidth-Precision-Range tradeoffs Control approaches for piezoelectric actuators: feedforward, Feedback, Iterative, Sensorless controls - Figure 1: Tradeoffs between bandwidth, precision and range - Bibliography Devasia, S. - - - - Active Damping - /zettels/active_damping/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/active_damping/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Active isolation and damping of vibrations via stewart platform Active damping based on decoupled collocated control - - - - Active damping based on decoupled collocated control - /paper/holterman05_activ_dampin_based_decoup_colloc_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/holterman05_activ_dampin_based_decoup_colloc_contr/ - Tags Active Damping Reference (Holterman &amp; deVries, 2005) Author(s) Holterman, J., &amp; deVries, T. Year 2005 Bibliography Holterman, J., &amp; deVries, T., Active damping based on decoupled collocated control, IEEE/ASME Transactions on Mechatronics, 10(2), 135–145 (2005). http://dx.doi.org/10.1109/tmech.2005.844702 ↩ - - - - Active isolation and damping of vibrations via stewart platform - /paper/hanieh03_activ_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/hanieh03_activ_stewar/ - Tags Stewart Platforms, Vibration Isolation, Active Damping Reference @phdthesis{hanieh03_activ_stewar, author = {Hanieh, Ahmed Abu}, school = {Universit{'e} Libre de Bruxelles, Brussels, Belgium}, title = {Active isolation and damping of vibrations via Stewart platform}, year = 2003, tags = {parallel robot}, } Author(s) Hanieh, A. A. Year 2003 Bibliography Hanieh, A. A., Active isolation and damping of vibrations via stewart platform (Doctoral dissertation) (2003). Universit{'e} Libre de Bruxelles, Brussels, Belgium, . - - - - Active structural vibration control: a review - /paper/alkhatib03_activ_struc_vibrat_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/alkhatib03_activ_struc_vibrat_contr/ - Tags : - Reference (Rabih Alkhatib &amp; Golnaraghi, 2003) Author(s) Alkhatib, R., &amp; Golnaraghi, M. F. Year 2003 Process of designing an active vibration control system Analyze the structure to be controled Obtain an idealized mathematical model with FEM or experimental modal analysis Reduce the model order is necessary Analyze the resulting model: dynamics properties, types of disturbances, &hellip; Quantify sensors and actuators requirements. Decide on their types and location Analyze the impact of the sensors and actuators on the overall dynamic characteristics Specify performance criteria and stability tradeoffs Device of the type of control algorythm to be employed and design a controller to meet the specifications Simulate the resulting controlled system on a computer If the controller does not meet the requirements, adjust the specifications or modify the type of controller Choose hardware and software and integrate the components on a pilot plant Formulate experiments and perform system identification and model updating Implement controller and carry out system test to evaluate the performance Feedback control Active damping The objective is to reduce the resonance peaks of the closed loop transfer function. - - - - Actuators - /zettels/actuators/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/actuators/ - Tags : -How to choose the correct actuator for my application? For vibration isolation: - In (Shingo Ito &amp; Georg Schitter, 2016), the effect of the actuator stiffness on the attainable vibration isolation is studied (Notes) Piezoelectric Suppliers Links Cedrat link PI link Piezo System link Noliac link A model of a multi-layer monolithic piezoelectric stack actuator is described in (Fleming, 2010) (Notes). - - - - Advanced motion control for precision mechatronics: control, identification, and learning of complex systems - /paper/oomen18_advan_motion_contr_precis_mechat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/oomen18_advan_motion_contr_precis_mechat/ - Tags Motion Control Reference (Tom Oomen, 2018) Author(s) Oomen, T. Year 2018 - Figure 1: Envisaged developments in motion systems. In traditional motion systems, the control bandwidth takes place in the rigid-body region. In the next generation systemes, flexible dynamics are foreseen to occur within the control bandwidth. - Bibliography Oomen, T., Advanced motion control for precision mechatronics: control, identification, and learning of complex systems, IEEJ Journal of Industry Applications, 7(2), 127–140 (2018). - - - - Advances in internal model control technique: a review and future prospects - /paper/saxena12_advan_inter_model_contr_techn/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/saxena12_advan_inter_model_contr_techn/ - Tags Complementary Filters Reference (Sahaj Saxena &amp; YogeshV Hote, 2012) Author(s) Saxena, S., &amp; Hote, Y. Year 2012 Proposed Filter \(F(s)\) \begin{align*} F(s) &amp;= \frac{1}{(\lambda s + 1)^n} \\\ -F(s) &amp;= \frac{n \lambda + 1}{(\lambda s + 1)^n} \end{align*} -Internal Model Control Central concept in IMC: control can be acheive only if the control system involves, either implicitly or explicitly, some representation of the process to be controlled. - - - - An exploration of active hard mount vibration isolation for precision equipment - /paper/poel10_explor_activ_hard_mount_vibrat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/poel10_explor_activ_hard_mount_vibrat/ - Tags Vibration Isolation Reference @phdthesis{poel10_explor_activ_hard_mount_vibrat, author = {van der Poel, Gerrit Wijnand}, doi = {10.3990/1.9789036530163}, isbn = {978-90-365-3016-3}, school = {University of Twente}, title = {An Exploration of Active Hard Mount Vibration Isolation for Precision Equipment}, url = {https://doi.org/10.3990/1.9789036530163}, year = 2010, year = 2010, tags = {parallel robot}, } Author(s) van der Poel, G. W. Year 2010 Bibliography van der Poel, G. W., An exploration of active hard mount vibration isolation for precision equipment (Doctoral dissertation) (2010). - - - - An instrument for 3d x-ray nano-imaging - /paper/holler12_instr_x_ray_nano_imagin/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/holler12_instr_x_ray_nano_imagin/ - Tags Nano Active Stabilization System, Positioning Stations Reference (Holler {\it et al.}, 2012) Author(s) Holler, M., Raabe, J., Diaz, A., Guizar-Sicairos, M., Quitmann, C., Menzel, A., &amp; Bunk, O. Year 2012 Instrument similar to the NASS. Obtain position stability of 10nm (standard deviation). - - Figure 1: Schematic of the tomography setup - Limited resolution due to instrumentation: The resolution of ptychographic tomography remains above 100nm due to instabilities and drifts of the scanning systems. - - - - An intelligent control system for multiple degree-of-freedom vibration isolation - /paper/geng95_intel_contr_system_multip_degree/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/geng95_intel_contr_system_multip_degree/ - Tags Stewart Platforms, Vibration Isolation Reference (Jason Geng {\it et al.}, 1995) Author(s) Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., &amp; Garba, J. A. Year 1995 - Figure 1: Local force feedback and adaptive acceleration feedback for active isolation - Bibliography Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., &amp; Garba, J. A., An intelligent control system for multiple degree-of-freedom vibration isolation, Journal of Intelligent Material Systems and Structures, 6(6), 787–800 (1995). - - - - Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution - /paper/wang12_autom_marker_full_field_hard/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/wang12_autom_marker_full_field_hard/ - Tags Nano Active Stabilization System Reference (Jun Wang {\it et al.}, 2012) Author(s) Wang, J., Chen, Y. K., Yuan, Q., Tkachuk, A., Erdonmez, C., Hornberger, B., &amp; Feser, M. Year 2012 Introduction of Markers: That limits the type of samples that is studied -There is a need for markerless nano-tomography =&gt; the key requirement is the precision and stability of the positioning stages. -Passive rotational run-out error system: It uses calibrated metrology disc and capacitive sensors - - - - Basics of precision engineering - 1st edition - /book/leach18_basic_precis_engin_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/leach18_basic_precis_engin_edition/ - Tags Precision Engineering Reference (Richard Leach &amp; Stuart Smith, 2018) Author(s) Leach, R., &amp; Smith, S. T. Year 2018 Bibliography Leach, R., &amp; Smith, S. T., Basics of precision engineering - 1st edition (2018), : CRC Press. ↩ - - - - Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation - /paper/ito16_compar_class_high_precis_actuat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/ito16_compar_class_high_precis_actuat/ - Tags Vibration Isolation, Actuators Reference (Shingo Ito &amp; Georg Schitter, 2016) Author(s) Ito, S., &amp; Schitter, G. Year 2016 Classification of high-precision actuators Table 1: Zero/Low and High stiffness actuators Categories Pros Cons Zero stiffness No vibration transmission Large and Heavy Low stiffness High vibration isolation Typically for low load High Stiffness High control bandwidth High vibration transmission Time Delay of Piezoelectric Electronics In this paper, the piezoelectric actuator/electronics adds a time delay which is much higher than the time delay added by the voice coil/electronics. - - - - Complementary Filters - /zettels/complementary_filters/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/complementary_filters/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Advances in internal model control technique: a review and future prospects - - - - Control Bootcamp - /websites/control_bootcamp/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /websites/control_bootcamp/ - Tags : -https://www.youtube.com/playlist?list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m -Overview Linear Systems Stability and Eigenvalues Linearizing Around a Fixed Point Controllability Controllability, Reachability, and Eigenvalue Placement Controllability and the Discrete-Time Impulse Response Degrees of Controllability and Gramians Controllability and the PBH Test Cayley-Hamilton Theorem Reachability and Controllability with Cayley-Hamilton Inverted Pendulum on a Cart Eigenvalue Placement for the Inverted Pendulum on a Cart Linear Quadratic Regulator (LQR) Control for the Inverted Pendulum on a Cart Motivation for Full-State Estimation Observability Full-State Estimation Kalman Filter Observability Example in Matlab Observability Example in Matlab (Part 2) Kalman Filter Example in Matlab Linear Quadratic Gaussian (LQG) LQG Example in Matlab Introduction to Robust Control Three Equivalent Representations of Linear Systems Example Frequency Response (Bode Plot) for Spring-Mass-Damper Laplace Transforms and the Transfer Function Benefits of Feedback on Cruise Control Example Benefits of Feedback on Cruise Control Example (Part 2) Cruise Control Example with Proportional-Integral (PI) control Sensitivity and Complementary Sensitivity Sensitivity and Complementary Sensitivity (Part 2) Loop shaping Loop Shaping Example for Cruise Control Sensitivity and Robustness Limitations on Robustness Cautionary Tale About Inverting the Plant Dynamics Control systems with non-minimum phase dynamics &lt;. - - - - Control of spacecraft and aircraft - /paper/bryson93_contr_spacec_aircr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/bryson93_contr_spacec_aircr/ - Tags HAC-HAC Reference (Bryson, 1993) Author(s) Bryson, A. E. Year 1993 9.2.3 Roll-Off Filters Synthesizing control logic using only one vibration mode means we are consciously neglecting the higher-order vibration modes. When doing this, it is a good idea to insert &ldquo;roll-off&rdquo; into the control logic, so that the loop-transfer gain decreases rapidly with frequency beyond the control bandwidth. This reduces the possibility of destabilizing the unmodelled higher frequency dynamics (&quot;spillover&quot;). - - - - Cubic Architecture - /zettels/cubic_architecture/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/cubic_architecture/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Sensors and control of a space-based six-axis vibration isolation system Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods - - - - Data-Driven Dynamical Systems with Machine Learning - /websites/data_driven_dynamical_systems_with_machine_learning/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /websites/data_driven_dynamical_systems_with_machine_learning/ - Tags : -Data-Driven Control Overview Challenges With modern control (LQR, LQG, H-Infinity), we work with linear system (or linearized systems) and we develop a control law that minimize some cost function. -Challenging systems where modern control is not efficient: - Non-linear systems System with unknown dynamics High dimensional systems Limited measurements or control inputs For these kinds of systems, data-driven control seems to be a good alternative. -What is control? - - - - Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments - /paper/tang18_decen_vibrat_contr_voice_coil/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/tang18_decen_vibrat_contr_voice_coil/ - Tags Stewart Platforms Reference (Jie Tang {\it et al.}, 2018) Author(s) Tang, J., Cao, D., &amp; Yu, T. Year 2018 Bibliography Tang, J., Cao, D., &amp; Yu, T., Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments, Proceedings of the Institution of Mechanical Engineers, Part C: Journal of Mechanical Engineering Science, 233(1), 132–145 (2018). http://dx.doi.org/10.1177/0954406218756941 ↩ - - - - Design for precision: current status and trends - /paper/schellekens98_desig_precis/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/schellekens98_desig_precis/ - Tags Precision Engineering Reference (Schellekens {\it et al.}, 1998) Author(s) Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., &amp; Pril, W. Year 1998 Bibliography Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., &amp; Pril, W., Design for precision: current status and trends, Cirp Annals, (2), 557–586 (1998). http://dx.doi.org/10.1016/s0007-8506(07)63243-0 ↩ - - - - Design, modeling and control of nanopositioning systems - /book/fleming14_desig_model_contr_nanop_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/fleming14_desig_model_contr_nanop_system/ - Tags : - Reference (Andrew Fleming &amp; Kam Leang, 2014) Author(s) Fleming, A. J., &amp; Leang, K. K. Year 2014 Bibliography Fleming, A. J., &amp; Leang, K. K., Design, modeling and control of nanopositioning systems (2014), : Springer International Publishing. ↩ - - - - Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation - /paper/yang19_dynam_model_decoup_contr_flexib/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/yang19_dynam_model_decoup_contr_flexib/ - Tags Stewart Platforms, Vibration Isolation, Flexible Joints, Cubic Architecture Reference (Yang {\it et al.}, 2019) Author(s) Yang, X., Wu, H., Chen, B., Kang, S., &amp; Cheng, S. Year 2019 Discusses: - flexible-rigid model of Stewart platform the impact of joint stiffness is compensated using a displacement sensor and a force sensor then the MIMO system is decoupled in modal space and 6 SISO controllers are applied for vibration isolation using force sensors The joint stiffness impose a limitation on the control performance using force sensors as it adds a zero at low frequency in the dynamics. - - - - Dynamic modeling and experimental analyses of stewart platform with flexible hinges - /paper/jiao18_dynam_model_exper_analy_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/jiao18_dynam_model_exper_analy_stewar/ - Tags Stewart Platforms, Flexible Joints Reference (Jian Jiao {\it et al.}, 2018) Author(s) Jiao, J., Wu, Y., Yu, K., &amp; Zhao, R. Year 2018 Bibliography Jiao, J., Wu, Y., Yu, K., &amp; Zhao, R., Dynamic modeling and experimental analyses of stewart platform with flexible hinges, Journal of Vibration and Control, 25(1), 151–171 (2018). http://dx.doi.org/10.1177/1077546318772474 ↩ - - - - Electronics - /zettels/electronics/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/electronics/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks The art of electronics - third edition - - - - Estimating the resolution of nanopositioning systems from frequency domain data - /paper/fleming12_estim/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/fleming12_estim/ - Tags : - Reference (Andrew Fleming, 2012) Author(s) Fleming, A. J. Year 2012 Bibliography Fleming, A. J., Estimating the resolution of nanopositioning systems from frequency domain data, In , 2012 IEEE International Conference on Robotics and Automation (pp. ) (2012). : . ↩ - - - - Flexible Joints - /zettels/flexible_joints/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/flexible_joints/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks A six-axis single-stage active vibration isolator based on stewart platform Nanometre-cutting machine using a stewart-platform parallel mechanism Dynamic modeling and experimental analyses of stewart platform with flexible hinges Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Identification and decoupling control of flexure jointed hexapods - - - - Force feedback versus acceleration feedback in active vibration isolation - /paper/preumont02_force_feedb_versus_accel_feedb/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/preumont02_force_feedb_versus_accel_feedb/ - Tags Vibration Isolation Reference (Preumont {\it et al.}, 2002) Author(s) Preumont, A., A. Francois, Bossens, F., &amp; Abu-Hanieh, A. Year 2002 Summary: - Compares the force feedback and acceleration feedback for active damping The use of a force sensor always give alternating poles and zeros in the open-loop transfer function between for force actuator and the force sensor which guarantees the stability of the closed loop Acceleration feedback produces alternating poles and zeros only when the flexible structure is stiff compared to the isolation system The force applied to a rigid body is proportional to its acceleration, thus sensing the total interface force gives a measured of the absolute acceleration of the solid body. - - - - Force Sensors - /zettels/force_sensors/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/force_sensors/ - Tags : -Suppliers PCB link Dynamics and Noise of a piezoelectric force sensor An analysis the dynamics and noise of a piezoelectric force sensor is done in (Fleming, 2010) (Notes). -Bibliography Fleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422 ↩ - - - - Fundamental principles of engineering nanometrology - /book/leach14_fundam_princ_engin_nanom/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/leach14_fundam_princ_engin_nanom/ - Tags Metrology Reference (Richard Leach, 2014) Author(s) Leach, R. Year 2014 Measurement of angles Unit: - radian for plane angle steradian for solid angle \(1 rad \approx 55.3deg\) -Instrument principles: - subdivision: index tacle, angular gratings, polygons, &hellip; ratio of two lengths: angular interferometers, sin cars, small angle generators, &hellip; autocollimators with a flat mirror Sources of error in displacement interferometry Two error sources: - error sources that are proportional to the displacement being measured \(L\): cumulative errors error sources that are independent of the displacement being measured: non-cumulative errors Thermal expansion of the metrology frame Deadpath length Deadpath length, \(d\), is defined as the difference in distance in air between the reference and measurement reflectors and the beam splitter when the interferometer measurement is initiated. - - - - Guidelines for the selection of weighting functions for h-infinity control - /paper/bibel92_guidel_h/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/bibel92_guidel_h/ - Tags H Infinity Control Reference (Bibel &amp; Malyevac, 1992) Author(s) Bibel, J. E., &amp; Malyevac, D. S. Year 1992 Properties of feedback control - Figure 1: Control System Diagram - From the figure 1, we have: -\begin{align*} y(s) &amp;= T(s) r(s) + S(s) d(s) - T(s) n(s)\\\ -e(s) &amp;= S(s) r(s) - S(s) d(s) - S(s) n(s)\\\ -u(s) &amp;= S(s)K(s) r(s) - S(s)K(s) d(s) - S(s)K(s) n(s) \end{align*} - - - - H Infinity Control - /zettels/h_infinity_control/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/h_infinity_control/ - Tags : -Nice Citations From Rosenbrock, H. H. (1974). Computer-Aided Control System Design, Academic Press, New York: - Solutions are constrained by so many requirements that it is virtually impossible to list them all. The designer finds himself threading a maze of such requirements, attempting to reconcile conflicting demands of cost, performance, easy maintenance, and so on. A good design usually has strong aesthetic appeal to those who are competent in the subject. - - - - HAC-HAC - /zettels/hac_hac/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/hac_hac/ - Tags : -High-Authority Control/Low-Authority Control -From (Andre Preumont, 2018): - The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure 1. The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure. This approach has the following advantages: - The active damping extends outside the bandwidth of the HAC and reduces the settling time of the modes which are outsite the bandwidth The active damping makes it easier to gain-stabilize the modes outside the bandwidth of the output loop (improved gain margin) The larger damping of the modes within the controller bandwidth makes them more robust to the parmetric uncertainty (improved phase margin) - - - - Identification and decoupling control of flexure jointed hexapods - /paper/chen00_ident_decoup_contr_flexur_joint_hexap/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/chen00_ident_decoup_contr_flexur_joint_hexap/ - Tags Stewart Platforms, Flexible Joints Reference (Yixin Chen &amp; McInroy, 2000) Author(s) Chen, Y., &amp; McInroy, J. Year 2000 Bibliography Chen, Y., &amp; McInroy, J., Identification and decoupling control of flexure jointed hexapods, In , Proceedings 2000 ICRA. Millennium Conference. IEEE International Conference on Robotics and Automation. Symposia Proceedings (Cat. No.00CH37065) (pp. ) (2000). : . ↩ - - - - Implementation challenges for multivariable control: what you did not learn in school! - /paper/garg07_implem_chall_multiv_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/garg07_implem_chall_multiv_contr/ - Tags Multivariable Control Reference (Sanjay Garg, 2007) Author(s) Garg, S. Year 2007 Discusses: - When to use multivariable control and when not to? Two major issues with implementing multivariable control: gain scheduling and integrator wind up protection Inline simple gain and phase margin measured for SISO, &ldquo;robustness&rdquo; determination of multivariable control requires complex analyses using singular value techniques and Monte Carlo simulations. - When to use multivariable control: - - - - Inertial Sensors - /zettels/inertial_sensors/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/inertial_sensors/ - Tags Position Sensors Reviews (Collette {\it et al.}, 2012) Accelerometers Micromega Dynamics link MMF link PCB link Wireless Accelerometers - https://micromega-dynamics.com/products/recovib/miniature-vibration-recorder/ - Figure 1: Characteristics of commercially available accelerometers (Collette {it et al.}, 2011) - Geophones Sercel link Wilcoxon link - - - - Interferometric characterization of rotation stages for x-ray nanotomography - /paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/ - Tags Nano Active Stabilization System, Positioning Stations Reference (Tomas Stankevic {\it et al.}, 2017) Author(s) Stankevic, T., Engblom, C., Langlois, F., Alves, F., Lestrade, A., Jobert, N., Cauchon, G., … Year 2017 Similar Station than the NASS Similar Metrology with fiber based interferometers and cylindrical reference mirror - Figure 1: Positioning Station - Thermal expansion: Stabilized down to \(5mK/h\) using passive water flow through the baseplate below the sample stage and in the interferometry reference frame. - - - - Investigation on active vibration isolation of a stewart platform with piezoelectric actuators - /paper/wang16_inves_activ_vibrat_isolat_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/wang16_inves_activ_vibrat_isolat_stewar/ - Tags Stewart Platforms, Vibration Isolation, Flexible Joints Reference (Wang {\it et al.}, 2016) Author(s) Wang, C., Xie, X., Chen, Y., &amp; Zhang, Z. Year 2016 Model of the Stewart platform: - Struts are treated as flexible beams Payload and the base are treated as flexible plates The FRF synthesis method permits to derive FRFs of the Stewart platform The model is compared with a Finite Element model and is shown to give the same results. - - - - Measurement technologies for precision positioning - /paper/gao15_measur_techn_precis_posit/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/gao15_measur_techn_precis_posit/ - Tags Position Sensors Reference (Gao {\it et al.}, 2015) Author(s) Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., … Year 2015 Bibliography Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., …, Measurement technologies for precision positioning, CIRP Annals, 64(2), 773–796 (2015). http://dx.doi.org/10.1016/j.cirp.2015.05.009 ↩ - - - - Metrology - /zettels/metrology/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/metrology/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Fundamental principles of engineering nanometrology - - - - Modal testing: theory, practice and application - /book/ewins00_modal/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/ewins00_modal/ - Tags System Identification, Reference Books Reference (Ewins, 2000) Author(s) Ewins, D. Year 2000 Overview Introduction to Modal Testing The major objectives of modal testing are: - Determining the nature and extent of vibration response levels in operation Verifying theoretical models and predictions of the vibrations Measurement of the essential materials properties under dynamic loading, such as damping capacity, friction and fatigue endurance For many applications, vibrations is directly related to performance and it is important that the vibration levels are anticipated and brought under satisfactory control. - - - - Modeling and control of vibration in mechanical systems - /book/du10_model_contr_vibrat_mechan_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/du10_model_contr_vibrat_mechan_system/ - Tags Stewart Platforms, Vibration Isolation Reference (Chunling Du &amp; Lihua Xie, 2010) Author(s) Du, C., &amp; Xie, L. Year 2010 Read Chapter 1 and 3. -Bibliography Du, C., &amp; Xie, L., Modeling and control of vibration in mechanical systems (2010), : CRC Press. ↩ - - - - Motion Control - /zettels/motion_control/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/motion_control/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Advanced motion control for precision mechatronics: control, identification, and learning of complex systems - - - - Multi-stage actuation systems and control - /book/du19_multi_actuat_system_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/du19_multi_actuat_system_contr/ - Tags : - Reference (Chunling Du &amp; Chee Khiang Pang, 2019) Author(s) Du, C., &amp; Pang, C. K. Year 2019 Mechanical Actuation Systems Introduction When high bandwidth, high position accuracy and long stroke are required simultaneously: dual-stage systems composed of a coarse (or primary) actuator and a fine actuator working together are used. -Popular choices for coarse actuator are: - DC motor Voice coil motor (VCM) Permanent magnet stepper motor Permanent magnet linear synchronous motor As fine actuators, most of the time piezoelectric actuator are used. - - - - Multivariable Control - /zettels/multivariable_control/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/multivariable_control/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Position control in lithographic equipment Implementation challenges for multivariable control: what you did not learn in school! Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Multivariable control systems: an engineering approach Multivariable feedback control: analysis and design - - - - Multivariable control systems: an engineering approach - /book/albertos04_multiv_contr_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/albertos04_multiv_contr_system/ - Tags Multivariable Control Reference (Albertos &amp; Antonio, 2004) Author(s) Albertos, P., &amp; Antonio, S. Year 2004 Bibliography Albertos, P., &amp; Antonio, S., Multivariable control systems: an engineering approach (2004), : Springer-Verlag. ↩ - - - - Multivariable feedback control: analysis and design - /book/skogestad07_multiv_feedb_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/skogestad07_multiv_feedb_contr/ - Tags Reference Books, Multivariable Control Reference (Skogestad &amp; Postlethwaite, 2007) Author(s) Skogestad, S., &amp; Postlethwaite, I. Year 2007 \( % H Infini \newcommand{\hinf}{\mathcal{H}_\infty} % H 2 \newcommand{\htwo}{\mathcal{H}_2} % Omega \newcommand{\w}{\omega} % H-Infinity Norm \newcommand{\hnorm}[1]{\left\|#1\right\|_{\infty}} % H-2 Norm \newcommand{\normtwo}[1]{\left\|#1\right\|_{2}} % Norm \newcommand{\norm}[1]{\left\|#1\right\|} % Absolute value \newcommand{\abs}[1]{\left\lvert#1\right\lvert} % Maximum for all omega \newcommand{\maxw}{\text{max}_{\omega}} % Maximum singular value \newcommand{\maxsv}{\overline{\sigma}} % Minimum singular value \newcommand{\minsv}{\underline{\sigma}} % Under bar \newcommand{\ubar}[1]{\text{\b{$#1$}}} % Diag keyword \newcommand{\diag}[1]{\text{diag}\{{#1}\}} % Vector \newcommand{\colvec}[1]{\begin{bmatrix}#1\end{bmatrix}} \) \( \newcommand{\tcmbox}[1]{\boxed{#1}} % Simulate SIunitx \newcommand{\SI}[2]{#1\,#2} \newcommand{\ang}[1]{#1^{\circ}} \newcommand{\degree}{^{\circ}} \newcommand{\radian}{\text{rad}} \newcommand{\percent}{\%} \newcommand{\decibel}{\text{dB}} \newcommand{\per}{/} % Bug with subequations \newcommand{\eatLabel}[2]{} \newenvironment{subequations}{\eatLabel}{} \) Introduction - - - - Nano Active Stabilization System - /zettels/nano_active_stabilization_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/nano_active_stabilization_system/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Interferometric characterization of rotation stages for x-ray nanotomography Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution An instrument for 3d x-ray nano-imaging - - - - Nanometre-cutting machine using a stewart-platform parallel mechanism - /paper/furutani04_nanom_cuttin_machin_using_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/furutani04_nanom_cuttin_machin_using_stewar/ - Tags Stewart Platforms, Flexible Joints Reference (Katsushi Furutani {\it et al.}, 2004) Author(s) Furutani, K., Suzuki, M., &amp; Kudoh, R. Year 2004 Lever mechanism to amplify the motion of piezoelectric stack actuators Use of flexure joints Eddy current displacement sensors for control (decentralized) Isotropic performance (cubic configuration even if not said so) Possible sources of error: - position error of the link ends in assembly =&gt; simulation of position error and it is not significant Inaccurate modelling of the links insufficient generative force unwanted deformation of the links To minimize the errors, a calibration is done between the required leg length and the wanted platform pose. - - - - Nanopositioning system with force feedback for high-performance tracking and vibration control - /paper/fleming10_nanop_system_with_force_feedb/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/fleming10_nanop_system_with_force_feedb/ - Tags Sensor Fusion, Force Sensors Reference (Fleming, 2010) Author(s) Fleming, A. Year 2010 Summary: - The noise generated by a piezoelectric force sensor is much less than a capacitive sensor Dynamical model of a piezoelectric stack actuator and piezoelectric force sensor Noise of a piezoelectric force sensor IFF with a piezoelectric stack actuator and piezoelectric force sensor A force sensor is used as a displacement sensor below the frequency of the first zero Sensor fusion architecture with a capacitive sensor and a force sensor and using complementary filters Virtual sensor fusion architecture (called low-frequency bypass) Analog implementation of the control strategies to avoid quantization noise, finite resolution and sampling delay Model of a multi-layer monolithic piezoelectric stack actuator - - - - Nanopositioning with multiple sensors: a case study in data storage - /paper/sebastian12_nanop_with_multip_sensor/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/sebastian12_nanop_with_multip_sensor/ - Tags Sensor Fusion Reference (Abu Sebastian &amp; Angeliki Pantazi, 2012) Author(s) Sebastian, A., &amp; Pantazi, A. Year 2012 Bibliography Sebastian, A., &amp; Pantazi, A., Nanopositioning with multiple sensors: a case study in data storage, IEEE Transactions on Control Systems Technology, 20(2), 382–394 (2012). http://dx.doi.org/10.1109/tcst.2011.2177982 ↩ - - - - Parallel robots : mechanics and control - /book/taghirad13_paral/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/taghirad13_paral/ - Tags Stewart Platforms, Reference Books Reference (Taghirad, 2013) Author(s) Taghirad, H. Year 2013 Introduction -This book is intended to give some analysis and design tools for the increase number of engineers and researchers who are interested in the design and implementation of parallel robots. A systematic approach is presented to analyze the kinematics, dynamics and control of parallel robots. To define the motion characteristics of such robots, it is necessary to represent 3D motion of the robot moving platform with respect to a fixed coordinate. - - - - Position control in lithographic equipment - /paper/butler11_posit_contr_lithog_equip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/butler11_posit_contr_lithog_equip/ - Tags Multivariable Control, Positioning Stations Reference (Hans Butler, 2011) Author(s) Butler, H. Year 2011 Bibliography Butler, H., Position control in lithographic equipment, IEEE Control Systems, 31(5), 28–47 (2011). http://dx.doi.org/10.1109/mcs.2011.941882 ↩ - - - - Position Sensors - /zettels/position_sensors/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/position_sensors/ - Tags Inertial Sensors Reviews of position sensors (Collette {\it et al.}, 2012) Fleming, A. J., A review of nanometer resolution position sensors: operation and performance (Andrew Fleming, 2013) (Notes) Relative Position Sensors -Table 1: Characteristics of relative measurement sensors collette11_review Technology Frequency Resolution Range T Range LVDT DC-200 Hz 10 nm rms 1-10 mm -50,100 °C Eddy current 5 kHz 0. - - - - Positioning Stations - /zettels/positioning_stations/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/positioning_stations/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Interferometric characterization of rotation stages for x-ray nanotomography Position control in lithographic equipment An instrument for 3d x-ray nano-imaging - - - - Precision Engineering - /zettels/precision_engineering/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/precision_engineering/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Design for precision: current status and trends Basics of precision engineering - 1st edition - - - - Reference Books - /zettels/reference_books/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/reference_books/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Modal testing: theory, practice and application The art of electronics - third edition Vibration Control of Active Structures - Fourth Edition Parallel robots : mechanics and control The design of high performance mechatronics - 2nd revised edition Multivariable feedback control: analysis and design - - - - Review of active vibration isolation strategies - /paper/collette11_review_activ_vibrat_isolat_strat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/collette11_review_activ_vibrat_isolat_strat/ - Tags Vibration Isolation Reference (Christophe Collette {\it et al.}, 2011) Author(s) Collette, C., Janssens, S., &amp; Artoos, K. Year 2011 Background and Motivations Passive Isolation Tradeoffs \[ X(s) = \underbrace{\frac{cs + k}{ms^2 + cs + k}}_{T_{wx}(s)} W(s) + \underbrace{\frac{1}{ms^2 + cs + k}}_{T_{Fx}(s)} F(s) \] - \(T_{wx}(s)\) is called the transmissibility of the isolator. It characterize the way seismic vibrations \(w\) are transmitted to the equipment. \(T_{Fx}(s)\) is called the compliance. - - - - Search Results - /search/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /search/ - This file exists solely to respond to /search URL with the related search layout template. -No content shown here is rendered, all content is based in the template layouts/page/search.html -Setting a very low sitemap priority will tell search engines this is not important content. -This implementation uses Fusejs, jquery and mark.js -Initial setup Search depends on additional output content type of JSON in config.toml ``` [outputs] home = [&ldquo;HTML&rdquo;, &ldquo;JSON&rdquo;] ``` - - - - Sensor Fusion - /zettels/sensor_fusion/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/sensor_fusion/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Sensor fusion for active vibration isolation in precision equipment Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs Sensor fusion methods for high performance active vibration isolation systems Nanopositioning system with force feedback for high-performance tracking and vibration control Nanopositioning with multiple sensors: a case study in data storage - - - - Sensor fusion for active vibration isolation in precision equipment - /paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/ - Tags Sensor Fusion, Vibration Isolation Reference (Tjepkema {\it et al.}, 2012) Author(s) Tjepkema, D., Dijk, J. v., &amp; Soemers, H. Year 2012 Relative motion Control Control law: \(f = -G(x-w)\) -\[ \frac{x}{w} = \frac{k+G}{ms^2 + k+G} \] \[ \frac{x}{F} = \frac{1}{ms^2 + k+G} \] -Force Control Control law: \(f = -G F_a = -G \left(f-k(x-w)\right)\) -\[ \frac{x}{w} = \frac{k}{(1+G)ms^2 + k} \] \[ \frac{x}{F} = \frac{1+G}{(1+G)ms^2 + k} \] - - - - Sensor fusion methods for high performance active vibration isolation systems - /paper/collette15_sensor_fusion_method_high_perfor/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/collette15_sensor_fusion_method_high_perfor/ - Tags Sensor Fusion, Vibration Isolation Reference (Collette &amp; Matichard, 2015) Author(s) Collette, C., &amp; Matichard, F. Year 2015 In order to have good stability margins, it is common practice to collocate sensors and actuators. This ensures alternating poles and zeros along the imaginary axis. Then, each phase lag introduced by the poles is compensed by phase leag introduced by the zeroes. This guarantees stability and such system is referred to as hyperstable. - - - - Sensors and control of a space-based six-axis vibration isolation system - /paper/hauge04_sensor_contr_space_based_six/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/hauge04_sensor_contr_space_based_six/ - Tags Stewart Platforms, Vibration Isolation, Cubic Architecture Reference (Hauge &amp; Campbell, 2004) Author(s) Hauge, G., &amp; Campbell, M. Year 2004 Discusses: - Choice of sensors and control architecture Predictability and limitations of the system dynamics Two-Sensor control architecture Vibration isolation using a Stewart platform Experimental comparison of Force sensor and Inertial Sensor and associated control architecture for vibration isolation - Figure 1: Hexapod for active vibration isolation - - - - Simultaneous vibration isolation and pointing control of flexure jointed hexapods - /paper/li01_simul_vibrat_isolat_point_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/li01_simul_vibrat_isolat_point_contr/ - Tags Stewart Platforms, Vibration Isolation Reference (Xiaochun Li {\it et al.}, 2001) Author(s) Li, X., Hamann, J. C., &amp; McInroy, J. E. Year 2001 if the hexapod is designed such that the payload mass/inertia matrix (\(M_x\)) and \(J^T J\) are diagonal, the dynamics from \(u\) to \(y\) are decoupled. Bibliography Li, X., Hamann, J. C., &amp; McInroy, J. E., Simultaneous vibration isolation and pointing control of flexure jointed hexapods, In , Smart Structures and Materials 2001: Smart Structures and Integrated Systems (pp. - - - - Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods - /paper/li01_simul_fault_vibrat_isolat_point/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/li01_simul_fault_vibrat_isolat_point/ - Tags Stewart Platforms, Vibration Isolation, Cubic Architecture, Flexible Joints, Multivariable Control Reference @phdthesis{li01_simul_fault_vibrat_isolat_point, author = {Li, Xiaochun}, school = {University of Wyoming}, title = {Simultaneous, Fault-tolerant Vibration Isolation and Pointing Control of Flexure Jointed Hexapods}, year = 2001, tags = {parallel robot}, } Author(s) Li, X. Year 2001 Introduction Stewart Platform: - Cubic (mutually orthogonal) Flexure Joints =&gt; eliminate friction and backlash but add complexity to the dynamics - - - - Six dof active vibration control using stewart platform with non-cubic configuration - /paper/zhang11_six_dof/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/zhang11_six_dof/ - Tags Stewart Platforms, Vibration Isolation Reference (Zhen Zhang {\it et al.}, 2011) Author(s) Zhang, Z., Liu, J., Mao, J., Guo, Y., &amp; Ma, Y. Year 2011 Non-cubic stewart platform Flexible joints Magnetostrictive actuators Strong coupled motions along different axes Non-cubic architecture =&gt; permits to have larger workspace which was required Structure parameters (radius of plates, length of struts) are determined by optimization of the condition number of the Jacobian matrix Accelerometers for active isolation Adaptive FIR filters for active isolation control - - - - Stewart Platforms - /zettels/stewart_platforms/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/stewart_platforms/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Six dof active vibration control using stewart platform with non-cubic configuration Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Parallel robots : mechanics and control Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Identification and decoupling control of flexure jointed hexapods The stewart platform manipulator: a review Modeling and control of vibration in mechanical systems Studies on stewart platform manipulator: a review Nanometre-cutting machine using a stewart-platform parallel mechanism An intelligent control system for multiple degree-of-freedom vibration isolation Active isolation and damping of vibrations via stewart platform Sensors and control of a space-based six-axis vibration isolation system Dynamic modeling and experimental analyses of stewart platform with flexible hinges Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods A new isotropic and decoupled 6-dof parallel manipulator Simultaneous vibration isolation and pointing control of flexure jointed hexapods A six-axis single-stage active vibration isolator based on stewart platform Vibration Control of Active Structures - Fourth Edition A soft 6-axis active vibration isolator - - - - Studies on stewart platform manipulator: a review - /paper/furqan17_studies_stewar_platf_manip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/furqan17_studies_stewar_platf_manip/ - Tags Stewart Platforms Reference (Mohd Furqan {\it et al.}, 2017) Author(s) Furqan, M., Suhaib, M., &amp; Ahmad, N. Year 2017 Lots of references. -Bibliography Furqan, M., Suhaib, M., &amp; Ahmad, N., Studies on stewart platform manipulator: a review, Journal of Mechanical Science and Technology, 31(9), 4459–4470 (2017). http://dx.doi.org/10.1007/s12206-017-0846-1 ↩ - - - - System Identification - /zettels/system_identification/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/system_identification/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Modal testing: theory, practice and application - - - - Test File - /zettels/test/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/test/ - This is a quote! - 1 2 a = 2; figure; This is an important part of the text. - See Eq. eq:test1 and eq:test2. -\begin{equation} a = 1 \end{equation} -\begin{equation} a = 2 \label{eq:test2} \end{equation} -Also look at 1 \eqref{eq:test2}. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. - - - - The art of electronics - third edition - /book/horowitz15_art_of_elect_third_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/horowitz15_art_of_elect_third_edition/ - Tags Reference Books, Electronics Reference (Horowitz, 2015) Author(s) Horowitz, P. Year 2015 Bibliography Horowitz, P., The art of electronics - third edition (2015), New York, NY, USA: Cambridge University Press. ↩ - - - - The design of high performance mechatronics - 2nd revised edition - /book/schmidt14_desig_high_perfor_mechat_revis_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/schmidt14_desig_high_perfor_mechat_revis_edition/ - Tags Reference Books Reference (Schmidt {\it et al.}, 2014) Author(s) Schmidt, R. M., Schitter, G., &amp; Rankers, A. Year 2014 Section 2.2 Mechanics - The core of a mechatronic system is its mechanical construction and in spite of many decade of excellent designs, optimizing the mechanical structure in strength, mass and endurance, the mechanical behavior will always remain the limiting factor of the performance of any mechatronic system. - - - - The stewart platform manipulator: a review - /paper/dasgupta00_stewar_platf_manip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/dasgupta00_stewar_platf_manip/ - Tags Stewart Platforms Reference (Bhaskar Dasgupta &amp; Mruthyunjaya, 2000) Author(s) Dasgupta, B., &amp; Mruthyunjaya, T. Year 2000 -Table 1: Parallel VS serial manipulators Advantages Disadvantages Serial Manoeuverability Poor precision Large workspace Bends under high load Vibrate at high speed Parallel High stiffness Small workspace Good dynamic performances Precise positioning The generalized Stewart platforms consists of two rigid bodies (referred to as the base and the platoform) connected through six extensible legs, each with sherical joints at both ends. - - - - Vibration Control of Active Structures - Fourth Edition - /book/preumont18_vibrat_contr_activ_struc_fourt_edition/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /book/preumont18_vibrat_contr_activ_struc_fourt_edition/ - Tags Vibration Isolation, Reference Books, Stewart Platforms, HAC-HAC Reference (Andre Preumont, 2018) Author(s) Preumont, A. Year 2018 Introduction Active Versus Passive Active structure may be cheaper or lighter than passive structures of comparable performances; or they may offer performances that no passive structure could offer. -Active is not always better, and a control systems cannot compensate for a bad design. Active solution should be considered only after all other passive means have been exhausted. - - - - Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs - /paper/collette14_vibrat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/collette14_vibrat/ - Tags Vibration Isolation, Sensor Fusion Reference (Collette &amp; Matichard, 2014) Author(s) Collette, C., &amp; Matichard, F. Year 2014 Introduction Sensor fusion is used to combine the benefits of different types of sensors: - Relative sensor for DC positioning capability at low frequency Inertial sensors for isolation at high frequency Force sensor / collocated sensor to improve the robustness Different types of sensors In this paper, three types of sensors are used. - - - - Vibration Isolation - /zettels/vibration_isolation/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/vibration_isolation/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Six dof active vibration control using stewart platform with non-cubic configuration Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Review of active vibration isolation strategies Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs Sensor fusion methods for high performance active vibration isolation systems Modeling and control of vibration in mechanical systems An intelligent control system for multiple degree-of-freedom vibration isolation Active isolation and damping of vibrations via stewart platform Sensors and control of a space-based six-axis vibration isolation system Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Simultaneous vibration isolation and pointing control of flexure jointed hexapods An exploration of active hard mount vibration isolation for precision equipment Force feedback versus acceleration feedback in active vibration isolation A six-axis single-stage active vibration isolator based on stewart platform Vibration Control of Active Structures - Fourth Edition A soft 6-axis active vibration isolator Sensor fusion for active vibration isolation in precision equipment - - - - \ No newline at end of file diff --git a/public/js/main.4bada4f824623eea2eb7cfd5cf8c1d99c3dd797297e7e8cbc59a41da450bb334.js b/public/js/main.4bada4f824623eea2eb7cfd5cf8c1d99c3dd797297e7e8cbc59a41da450bb334.js deleted file mode 100644 index 15e4fe4..0000000 --- a/public/js/main.4bada4f824623eea2eb7cfd5cf8c1d99c3dd797297e7e8cbc59a41da450bb334.js +++ /dev/null @@ -1,283 +0,0 @@ -'use strict'; - -const Even = {}; - -Even.backToTop = function() { - const $backToTop = $('#back-to-top'); - - $(window).scroll(function() { - if ($(window).scrollTop() > 100) { - $backToTop.fadeIn(1000); - } else { - $backToTop.fadeOut(1000); - } - }); - - $backToTop.click(function() { - $('body,html').animate({scrollTop: 0}); - }); -}; - -Even.mobileNavbar = function() { - const $mobileNav = $('#mobile-navbar'); - const $mobileNavIcon = $('.mobile-navbar-icon'); - const slideout = new Slideout({ - 'panel': document.getElementById('mobile-panel'), - 'menu': document.getElementById('mobile-menu'), - 'padding': 180, - 'tolerance': 70, - }); - slideout.disableTouch(); - - $mobileNavIcon.click(function() { - slideout.toggle(); - }); - - slideout.on('beforeopen', function() { - $mobileNav.addClass('fixed-open'); - $mobileNavIcon.addClass('icon-click').removeClass('icon-out'); - }); - - slideout.on('beforeclose', function() { - $mobileNav.removeClass('fixed-open'); - $mobileNavIcon.addClass('icon-out').removeClass('icon-click'); - }); - - $('#mobile-panel').on('touchend', function() { - slideout.isOpen() && $mobileNavIcon.click(); - }); -}; - -Even._initToc = function() { - const SPACING = 20; - const $toc = $('.post-toc'); - const $footer = $('.post-footer'); - - if ($toc.length) { - const minScrollTop = $toc.offset().top - SPACING; - const maxScrollTop = $footer.offset().top - $toc.height() - SPACING; - - const tocState = { - start: { - 'position': 'absolute', - 'top': minScrollTop, - }, - process: { - 'position': 'fixed', - 'top': SPACING, - }, - end: { - 'position': 'absolute', - 'top': maxScrollTop, - }, - }; - - $(window).scroll(function() { - const scrollTop = $(window).scrollTop(); - - if (scrollTop < minScrollTop) { - $toc.css(tocState.start); - } else if (scrollTop > maxScrollTop) { - $toc.css(tocState.end); - } else { - $toc.css(tocState.process); - } - }); - } - - const HEADERFIX = 30; - const $toclink = $('.toc-link'); - const $headerlink = $('.headerlink'); - const $tocLinkLis = $('.post-toc-content li'); - - const headerlinkTop = $.map($headerlink, function(link) { - return $(link).offset().top; - }); - - const headerLinksOffsetForSearch = $.map(headerlinkTop, function(offset) { - return offset - HEADERFIX; - }); - - const searchActiveTocIndex = function(array, target) { - for (let i = 0; i < array.length - 1; i++) { - if (target > array[i] && target <= array[i + 1]) return i; - } - if (target > array[array.length - 1]) return array.length - 1; - return -1; - }; - - $(window).scroll(function() { - const scrollTop = $(window).scrollTop(); - const activeTocIndex = searchActiveTocIndex(headerLinksOffsetForSearch, scrollTop); - - $($toclink).removeClass('active'); - $($tocLinkLis).removeClass('has-active'); - - if (activeTocIndex !== -1) { - $($toclink[activeTocIndex]).addClass('active'); - let ancestor = $toclink[activeTocIndex].parentNode; - while (ancestor.tagName !== 'NAV') { - $(ancestor).addClass('has-active'); - ancestor = ancestor.parentNode.parentNode; - } - } - }); -}; - -Even.highlight = function() { - const blocks = document.querySelectorAll('pre code'); - for (let i = 0; i < blocks.length; i++) { - const block = blocks[i]; - const rootElement = block.parentElement; - const lineCodes = block.innerHTML.split(/\n/); - if (lineCodes[lineCodes.length - 1] === '') lineCodes.pop(); - const lineLength = lineCodes.length; - - let codeLineHtml = ''; - for (let i = 0; i < lineLength; i++) { - codeLineHtml += `
${i + 1}
`; - } - - let codeHtml = ''; - for (let i = 0; i < lineLength; i++) { - codeHtml += `
${lineCodes[i]}
`; - } - - block.className += ' highlight'; - const figure = document.createElement('figure'); - figure.className = block.className; - figure.innerHTML = `
${codeLineHtml}
${codeHtml}
`; - - rootElement.parentElement.replaceChild(figure, rootElement); - } -}; - -Even.chroma = function() { - const blocks = document.querySelectorAll('.highlight > .chroma'); - for (let i = 0; i < blocks.length; i++) { - const block = blocks[i]; - const afterHighLight = block.querySelector('pre.chroma > code[data-lang]'); - const lang = afterHighLight ? afterHighLight.className : ''; - block.className += ' ' + lang; - } -}; - -Even.toc = function() { - const tocContainer = document.getElementById('post-toc'); - if (tocContainer !== null) { - const toc = document.getElementById('TableOfContents'); - if (toc === null) { - // toc = true, but there are no headings - tocContainer.parentNode.removeChild(tocContainer); - } else { - this._refactorToc(toc); - this._linkToc(); - this._initToc(); - } - } -}; - -Even._refactorToc = function(toc) { - // when headings do not start with `h1` - const oldTocList = toc.children[0]; - let newTocList = oldTocList; - let temp; - while (newTocList.children.length === 1 - && (temp = newTocList.children[0].children[0]).tagName === 'UL') { - newTocList = temp; - } - - if (newTocList !== oldTocList) toc.replaceChild(newTocList, oldTocList); -}; - -Even._linkToc = function() { - const links = document.querySelectorAll('#TableOfContents a:first-child'); - for (let i = 0; i < links.length; i++) links[i].className += ' toc-link'; - - for (let num = 1; num <= 6; num++) { - const headers = document.querySelectorAll('.post-content>h' + num); - for (let i = 0; i < headers.length; i++) { - const header = headers[i]; - header.innerHTML = `${header.innerHTML}`; - } - } -}; - -Even.flowchart = function() { - if (!window.flowchart) return; - - const blocks = document.querySelectorAll('pre code.language-flowchart, pre code.language-flow'); - for (let i = 0; i < blocks.length; i++) { - if (!window.hljs && i % 2 === 0) continue; - - const block = blocks[i]; - const rootElement = window.hljs - ? block.parentElement - : block.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement; - - const container = document.createElement('div'); - const id = `js-flowchart-diagrams-${i}`; - container.id = id; - container.className = 'align-center'; - rootElement.parentElement.replaceChild(container, rootElement); - - const diagram = flowchart.parse(block.childNodes[0].nodeValue); - diagram.drawSVG(id, window.flowchartDiagramsOptions ? window.flowchartDiagramsOptions : {}); - } -}; - -Even.sequence = function() { - if (!window.Diagram) return; - - const blocks = document.querySelectorAll('pre code.language-sequence'); - for (let i = 0; i < blocks.length; i++) { - if (!window.hljs && i % 2 === 0) continue; - - const block = blocks[i]; - const rootElement = window.hljs - ? block.parentElement - : block.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement; - - const container = document.createElement('div'); - const id = `js-sequence-diagrams-${i}`; - container.id = id; - container.className = 'align-center'; - rootElement.parentElement.replaceChild(container, rootElement); - - const diagram = Diagram.parse(block.childNodes[0].nodeValue); - diagram.drawSVG(id, window.sequenceDiagramsOptions - ? window.sequenceDiagramsOptions - : {theme: 'simple'}); - } -}; - -Even.responsiveTable = function() { - const tables = document.querySelectorAll('.post-content > table'); - for (let i = 0; i < tables.length; i++) { - const table = tables[i]; - const wrapper = document.createElement('div'); - wrapper.className = 'table-wrapper'; - table.parentElement.replaceChild(wrapper, table); - wrapper.appendChild(table); - } -}; - - -; -$(document).ready(function () { - Even.backToTop(); - Even.mobileNavbar(); - Even.toc(); -}); - -Even.responsiveTable(); -Even.flowchart(); -Even.sequence(); - -if (window.hljs) { - hljs.initHighlighting(); - Even.highlight(); -} else { - Even.chroma(); -} - diff --git a/public/lib/highlight/highlight.pack.js b/public/lib/highlight/highlight.pack.js deleted file mode 100644 index f688617..0000000 --- a/public/lib/highlight/highlight.pack.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */ -!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/&/g,"&").replace(//g,">")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){s+=""}function c(e){("start"===e.event?o:u)(e.node)}for(var l=0,s="",f=[];e.length||r.length;){var g=i();if(s+=n(a.substring(l,g[0].offset)),l=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===l);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return s+n(a.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return l("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function l(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=l(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!y[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){L+=null!=E.sL?d():h(),k=""}function v(e){L+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(L+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,E=i||N,x={},L="";for(R=E;R!==N;R=R.parent)R.cN&&(L=p(R.cN,"",!0)+L);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(L+=C);return{r:B,value:L,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"
":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,l=n.textContent,r=s?f(s,l,!0):g(l),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),l)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,s,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function R(){return x(y)}function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}var E=[],x=Object.keys,y={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="
",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("scss",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",i={cN:"variable",b:"(\\$"+t+")\\b"},r={cN:"number",b:"#[0-9A-Fa-f]+"};({cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:!0,i:"[^\\s]",starts:{eW:!0,eE:!0,c:[r,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"meta",b:"!important"}]}});return{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},i,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[i,r,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[i,e.QSM,e.ASM,r,e.CSSNM,{b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,s.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:o}});hljs.registerLanguage("ini",function(e){var b={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},b,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("erlang",function(e){var r="[a-z'][a-zA-Z0-9_']*",c="("+r+":"+r+"|"+r+")",b={keyword:"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor",literal:"false true"},i=e.C("%","$"),n={cN:"number",b:"\\b(\\d+#[a-fA-F0-9]+|\\d+(\\.\\d+)?([eE][-+]?\\d+)?)",r:0},a={b:"fun\\s+"+r+"/\\d+"},d={b:c+"\\(",e:"\\)",rB:!0,r:0,c:[{b:c,r:0},{b:"\\(",e:"\\)",eW:!0,rE:!0,r:0}]},o={b:"{",e:"}",r:0},t={b:"\\b_([A-Z][A-Za-z0-9_]*)?",r:0},f={b:"[A-Z][a-zA-Z0-9_]*",r:0},l={b:"#"+e.UIR,r:0,rB:!0,c:[{b:"#"+e.UIR,r:0},{b:"{",e:"}",r:0}]},s={bK:"fun receive if try case",e:"end",k:b};s.c=[i,a,e.inherit(e.ASM,{cN:""}),s,d,e.QSM,n,o,t,f,l];var u=[i,a,s,d,e.QSM,n,o,t,f,l];d.c[1].c=u,o.c=u,l.c[1].c=u;var h={cN:"params",b:"\\(",e:"\\)",c:u};return{aliases:["erl"],k:b,i:"(",rB:!0,i:"\\(|#|//|/\\*|\\\\|:|;",c:[h,e.inherit(e.TM,{b:r})],starts:{e:";|\\.",k:b,c:u}},i,{b:"^-",e:"\\.",r:0,eE:!0,rB:!0,l:"-"+e.IR,k:"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec",c:[h]},n,e.QSM,l,t,f,o,{b:/\.$/}]}});hljs.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:t,i:""}]}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("swift",function(e){var i={keyword:"__COLUMN__ __FILE__ __FUNCTION__ __LINE__ as as! as? associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet",literal:"true false nil",built_in:"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip"},t={cN:"type",b:"\\b[A-Z][\\wÀ-ʸ']*",r:0},n=e.C("/\\*","\\*/",{c:["self"]}),r={cN:"subst",b:/\\\(/,e:"\\)",k:i,c:[]},a={cN:"number",b:"\\b([\\d_]+(\\.[\\deE_]+)?|0x[a-fA-F0-9_]+(\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b",r:0},o=e.inherit(e.QSM,{c:[r,e.BE]});return r.c=[a],{k:i,c:[o,e.CLCM,n,t,a,{cN:"function",bK:"func",e:"{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{b://},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:i,c:["self",a,o,e.CBCM,{b:":"}],i:/["']/}],i:/\[|%/},{cN:"class",bK:"struct protocol class extension enum",k:i,e:"\\{",eE:!0,c:[e.inherit(e.TM,{b:/[A-Za-z$_][\u00C0-\u02B80-9A-Za-z$_]*/})]},{cN:"meta",b:"(@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain)"},{bK:"import",e:/$/,c:[e.CLCM,n]}]}});hljs.registerLanguage("python",function(e){var r={keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},b={cN:"meta",b:/^(>>>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[b],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[b],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[b,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[b,c]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[c]},{b:/(fr|rf|f)"/,e:/"/,c:[c]},e.ASM,e.QSM]},s={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},i={cN:"params",b:/\(/,e:/\)/,c:["self",b,s,a]};return c.c=[a,s,b],{aliases:["py","gyp"],k:r,i:/(<\/|->|\?)|=>/,c:[b,s,a,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,i,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[t.BE]},{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},i={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},t.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and or not",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},n=[e,t.CLCM,t.CBCM,s,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"",k:c,c:["self",e]},{b:t.IR+"::",k:c},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:c,c:n.concat([{b:/\(/,e:/\)/,k:c,c:n.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s,e]},t.CLCM,t.CBCM,i]},{cN:"class",bK:"class struct",e:/[{;:]/,c:[{b://,c:["self"]},t.TM]}]),exports:{preprocessor:i,strings:r,k:c}}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",k:"unless",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",w=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(w).concat(d)}});hljs.registerLanguage("yaml",function(e){var b="true false yes no null",a="^[ \\-]*",r="[a-zA-Z_][\\w\\-]*",t={cN:"attr",v:[{b:a+r+":"},{b:a+'"'+r+'":'},{b:a+"'"+r+"':"}]},c={cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]},l={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/\S+/}],c:[e.BE,c]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[t,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:l.c,e:t.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},e.HCM,{bK:b,k:{literal:b}},e.CNM,l]}});hljs.registerLanguage("haskell",function(e){var i={v:[e.C("--","$"),e.C("{-","-}",{c:["self"]})]},a={cN:"meta",b:"{-#",e:"#-}"},l={cN:"meta",b:"^#",e:"$"},c={cN:"type",b:"\\b[A-Z][\\w']*",r:0},n={b:"\\(",e:"\\)",i:'"',c:[a,l,{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TM,{b:"[_a-z][\\w']*"}),i]},s={b:"{",e:"}",c:n.c};return{aliases:["hs"],k:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",c:[{bK:"module",e:"where",k:"module where",c:[n,i],i:"\\W\\.|;"},{b:"\\bimport\\b",e:"$",k:"import qualified as hiding",c:[n,i],i:"\\W\\.|;"},{cN:"class",b:"^(\\s*)?(class|instance)\\b",e:"where",k:"class family instance where",c:[c,n,i]},{cN:"class",b:"\\b(data|(new)?type)\\b",e:"$",k:"data family type newtype deriving",c:[a,c,n,s,i]},{bK:"default",e:"$",c:[c,n,i]},{bK:"infix infixl infixr",e:"$",c:[e.CNM,i]},{b:"\\bforeign\\b",e:"$",k:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",c:[c,e.QSM,i]},{cN:"meta",b:"#!\\/usr\\/bin\\/env runhaskell",e:"$"},a,l,e.QSM,e.CNM,c,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),i,{b:"->|<-"}]}});hljs.registerLanguage("cs",function(e){var i={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long nameof object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},t={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},r=e.inherit(t,{i:/\n/}),a={cN:"subst",b:"{",e:"}",k:i},c=e.inherit(a,{i:/\n/}),n={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,c]},s={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},a]},o=e.inherit(s,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},c]});a.c=[s,n,t,e.ASM,e.QSM,e.CNM,e.CBCM],c.c=[o,n,r,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[s,n,t,e.ASM,e.QSM]},b=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:i,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{cN:"meta",b:"^\\s*\\[",eB:!0,e:"\\]",eE:!0,c:[{cN:"meta-string",b:/"/,e:/"/}]},{bK:"new return throw await else",r:0},{cN:"function",b:"("+b+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:i,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("lisp",function(b){var e="[a-zA-Z_\\-\\+\\*\\/\\<\\=\\>\\&\\#][a-zA-Z0-9_\\-\\+\\*\\/\\<\\=\\>\\&\\#!]*",c="\\|[^]*?\\|",r="(\\-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|\\-)?\\d+)?",a={cN:"meta",b:"^#!",e:"$"},l={cN:"literal",b:"\\b(t{1}|nil)\\b"},n={cN:"number",v:[{b:r,r:0},{b:"#(b|B)[0-1]+(/[0-1]+)?"},{b:"#(o|O)[0-7]+(/[0-7]+)?"},{b:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{b:"#(c|C)\\("+r+" +"+r,e:"\\)"}]},i=b.inherit(b.QSM,{i:null}),t=b.C(";","$",{r:0}),s={b:"\\*",e:"\\*"},u={cN:"symbol",b:"[:&]"+e},d={b:e,r:0},f={b:c},m={b:"\\(",e:"\\)",c:["self",l,i,n,d]},o={c:[n,i,s,u,m,d],v:[{b:"['`]\\(",e:"\\)"},{b:"\\(quote ",e:"\\)",k:{name:"quote"}},{b:"'"+c}]},v={v:[{b:"'"+e},{b:"#'"+e+"(::"+e+")*"}]},N={b:"\\(\\s*",e:"\\)"},A={eW:!0,r:0};return N.c=[{cN:"name",v:[{b:e},{b:c}]},A],A.c=[o,v,N,l,n,i,t,s,u,f,d],{i:/\S/,c:[n,a,l,i,t,o,v,N,d]}});hljs.registerLanguage("shell",function(s){return{aliases:["console"],c:[{cN:"meta",b:"^\\s{0,3}[\\w\\d\\[\\]()@-]*[>%$#]",starts:{e:"$",sL:"bash"}}]}});hljs.registerLanguage("typescript",function(e){var r={keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise"};return{aliases:["ts"],k:r,c:[{cN:"meta",b:/^\s*['"]use strict['"]/},e.ASM,e.QSM,{cN:"string",b:"`",e:"`",c:[e.BE,{cN:"subst",b:"\\$\\{",e:"\\}"}]},e.CLCM,e.CBCM,{cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+e.IR+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:e.IR},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:["self",e.CLCM,e.CBCM]}]}]}],r:0},{cN:"function",b:"function",e:/[\{;]/,eE:!0,k:r,c:["self",e.inherit(e.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:[e.CLCM,e.CBCM],i:/["'\(]/}],i:/%/,r:0},{bK:"constructor",e:/\{/,eE:!0,c:["self",{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:r,c:[e.CLCM,e.CBCM],i:/["'\(]/}]},{b:/module\./,k:{built_in:"module"},r:0},{bK:"module",e:/\{/,eE:!0},{bK:"interface",e:/\{/,eE:!0,k:"interface extends"},{b:/\$[(.]/},{b:"\\."+e.IR,r:0},{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("less",function(e){var r="[\\w-]+",t="("+r+"|@{"+r+"})",a=[],c=[],s=function(e){return{cN:"string",b:"~?"+e+".*?"+e}},b=function(e,r,t){return{cN:e,b:r,r:t}},n={b:"\\(",e:"\\)",c:c,r:0};c.push(e.CLCM,e.CBCM,s("'"),s('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},b("number","#[0-9A-Fa-f]+\\b"),n,b("variable","@@?"+r,10),b("variable","@{"+r+"}"),b("built_in","~?`[^`]*?`"),{cN:"attribute",b:r+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var i=c.concat({b:"{",e:"}",c:a}),o={bK:"when",eW:!0,c:[{bK:"and not"}].concat(c)},u={b:t+"\\s*:",rB:!0,e:"[;}]",r:0,c:[{cN:"attribute",b:t,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",r:0,c:c}}]},l={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:c,r:0}},C={cN:"variable",v:[{b:"@"+r+"\\s*:",r:15},{b:"@"+r}],starts:{e:"[;}]",rE:!0,c:i}},p={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:t,e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",r:0,c:[e.CLCM,e.CBCM,o,b("keyword","all\\b"),b("variable","@{"+r+"}"),b("selector-tag",t+"%?",0),b("selector-id","#"+t),b("selector-class","\\."+t,0),b("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:i},{b:"!important"}]};return a.push(e.CLCM,e.CBCM,l,C,u,p),{cI:!0,i:"[=>'/<($\"]",c:a}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("groovy",function(e){return{k:{literal:"true false null",keyword:"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof"},c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,{cN:"string",b:'"""',e:'"""'},{cN:"string",b:"'''",e:"'''"},{cN:"string",b:"\\$/",e:"/\\$",r:10},e.ASM,{cN:"regexp",b:/~?\/[^\/\n]+\//,c:[e.BE]},e.QSM,{cN:"meta",b:"^#!/usr/bin/env",e:"$",i:"\n"},e.BNM,{cN:"class",bK:"class interface trait enum",e:"{",i:":",c:[{bK:"extends implements"},e.UTM]},e.CNM,{cN:"meta",b:"@[A-Za-z]+"},{cN:"string",b:/[^\?]{0}[A-Za-z0-9_$]+ *:/},{b:/\?/,e:/\:/},{cN:"symbol",b:"^\\s*[A-Za-z0-9_$]+:",r:0}],i:/#|<\//}});hljs.registerLanguage("makefile",function(e){var i={cN:"variable",v:[{b:"\\$\\("+e.UIR+"\\)",c:[e.BE]},{b:/\$[@%)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",s="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",c={cN:"number",b:s,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},c,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("http",function(e){var t="HTTP/[0-9\\.]+";return{aliases:["https"],i:"\\S",c:[{b:"^"+t,e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{b:"^[A-Z]+ (.*?) "+t+"$",rB:!0,e:"$",c:[{cN:"string",b:" ",e:" ",eB:!0,eE:!0},{b:t},{cN:"keyword",b:"[A-Z]+"}]},{cN:"attribute",b:"^\\w",e:": ",eE:!0,i:"\\n|\\s|=",starts:{e:"$",r:0}},{b:"\\n\\n",starts:{sL:[],eW:!0}}]}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:_,l:i,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:i,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("lua",function(e){var t="\\[=*\\[",a="\\]=*\\]",r={b:t,e:a,c:["self"]},n=[e.C("--(?!"+t+")","$"),e.C("--"+t,a,{c:[r],r:10})];return{l:e.UIR,k:{literal:"true false nil",keyword:"and break do else elseif end for goto if in local not or repeat return then until while",built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"},c:n.concat([{cN:"function",bK:"function",e:"\\)",c:[e.inherit(e.TM,{b:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{cN:"params",b:"\\(",eW:!0,c:n}].concat(n)},e.CNM,e.ASM,e.QSM,{cN:"string",b:t,e:a,c:[r],r:5}])}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("scala",function(e){var t={cN:"meta",b:"@[A-Za-z]+"},a={cN:"subst",v:[{b:"\\$[A-Za-z0-9_]+"},{b:"\\${",e:"}"}]},r={cN:"string",v:[{b:'"',e:'"',i:"\\n",c:[e.BE]},{b:'"""',e:'"""',r:10},{b:'[a-z]+"',e:'"',i:"\\n",c:[e.BE,a]},{cN:"string",b:'[a-z]+"""',e:'"""',c:[a],r:10}]},c={cN:"symbol",b:"'\\w[\\w\\d_]*(?!')"},i={cN:"type",b:"\\b[A-Z][A-Za-z0-9_]*",r:0},s={cN:"title",b:/[^0-9\n\t "'(),.`{}\[\]:;][^\n\t "'(),.`{}\[\]:;]+|[^0-9\n\t "'(),.`{}\[\]:;=]/,r:0},n={cN:"class",bK:"class object trait type",e:/[:={\[\n;]/,eE:!0,c:[{bK:"extends with",r:10},{b:/\[/,e:/\]/,eB:!0,eE:!0,r:0,c:[i]},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,r:0,c:[i]},s]},l={cN:"function",bK:"def",e:/[:={\[(\n;]/,eE:!0,c:[s]};return{k:{literal:"true false null",keyword:"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit"},c:[e.CLCM,e.CBCM,r,c,i,l,n,e.CNM,t]}});hljs.registerLanguage("matlab",function(e){var a=[e.CNM,{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]}],s={r:0,c:[{b:/'['\.]*/}]};return{k:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson"},i:'(//|"|#|/\\*|\\s+/\\w+)',c:[{cN:"function",bK:"function",e:"$",c:[e.UTM,{cN:"params",v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}]}]},{b:/[a-zA-Z_][a-zA-Z_0-9]*'['\.]*/,rB:!0,r:0,c:[{b:/[a-zA-Z_][a-zA-Z_0-9]*/,r:0},s.c[0]]},{b:"\\[",e:"\\]",c:a,r:0,starts:s},{b:"\\{",e:/}/,c:a,r:0,starts:s},{b:/\)/,r:0,starts:s},e.C("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.C("\\%","$")].concat(a)}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("kotlin",function(e){var t={keyword:"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit initinterface annotation data sealed internal infix operator out by constructor super trait volatile transient native default",built_in:"Byte Short Char Int Long Boolean Float Double Void Unit Nothing",literal:"true false null"},r={cN:"keyword",b:/\b(break|continue|return|this)\b/,starts:{c:[{cN:"symbol",b:/@\w+/}]}},i={cN:"symbol",b:e.UIR+"@"},n={cN:"subst",b:"\\${",e:"}",c:[e.ASM,e.CNM]},a={cN:"variable",b:"\\$"+e.UIR},c={cN:"string",v:[{b:'"""',e:'"""',c:[a,n]},{b:"'",e:"'",i:/\n/,c:[e.BE]},{b:'"',e:'"',i:/\n/,c:[e.BE,a,n]}]},s={cN:"meta",b:"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\s*:(?:\\s*"+e.UIR+")?"},o={cN:"meta",b:"@"+e.UIR,c:[{b:/\(/,e:/\)/,c:[e.inherit(c,{cN:"meta-string"})]}]};return{k:t,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,r,i,s,o,{cN:"function",bK:"fun",e:"[(]|$",rB:!0,eE:!0,k:t,i:/fun\s+(<.*>)?[^\s\(]+(\s+[^\s\(]+)\s*=/,r:5,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"type",b://,k:"reified",r:0},{cN:"params",b:/\(/,e:/\)/,endsParent:!0,k:t,r:0,c:[{b:/:/,e:/[=,\/]/,eW:!0,c:[{cN:"type",b:e.UIR},e.CLCM,e.CBCM],r:0},e.CLCM,e.CBCM,s,o,c,e.CNM]},e.CBCM]},{cN:"class",bK:"class interface trait",e:/[:\{(]|$/,eE:!0,i:"extends implements",c:[{bK:"public protected internal private constructor"},e.UTM,{cN:"type",b://,eB:!0,eE:!0,r:0},{cN:"type",b:/[,:]\s*/,e:/[<\(,]|$/,eB:!0,rE:!0},s,o]},c,{cN:"meta",b:"^#!/usr/bin/env",e:"$",i:"\n"},e.CNM]}}); \ No newline at end of file diff --git a/public/lib/jquery/jquery-3.2.1.min.js b/public/lib/jquery/jquery-3.2.1.min.js deleted file mode 100644 index 644d35e..0000000 --- a/public/lib/jquery/jquery-3.2.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), -a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), -null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/bibel92_guidel_h/index.html b/public/paper/bibel92_guidel_h/index.html deleted file mode 100644 index 6639f5a..0000000 --- a/public/paper/bibel92_guidel_h/index.html +++ /dev/null @@ -1,352 +0,0 @@ - - - - - - Guidelines for the selection of weighting functions for h-infinity control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Guidelines for the selection of weighting functions for h-infinity control

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
H Infinity Control
-
Reference
-
(Bibel & Malyevac, 1992)
-
Author(s)
-
Bibel, J. E., & Malyevac, D. S.
-
Year
-
1992
-
-

Properties of feedback control

-

-
- Figure 1: Control System Diagram
-

Figure 1: Control System Diagram

-
-
- -

From the figure 1, we have:

-

\begin{align*} -y(s) &= T(s) r(s) + S(s) d(s) - T(s) n(s)\\\
-e(s) &= S(s) r(s) - S(s) d(s) - S(s) n(s)\\\
-u(s) &= S(s)K(s) r(s) - S(s)K(s) d(s) - S(s)K(s) n(s) -\end{align*}

-

With the following definitions

-
    -
  • \(L(s) = G(s)K(s)\) is the loop transfer matrix
  • -
  • \(S(s) = [I+G(s)K(s)]^{-1}\) is the Sensitivity function matrix
  • -
  • \(T(s) = [I+G(s)K(s)]^{-1}G(s)K(s)\) is the Transmissibility function matrix
  • -
-
-
-

\[ S(s) + T(s) = 1 \]

-
-
-
-
    -
  • Command following: \(S=0\) and \(T=1\) => large gains
  • -
  • Disturbance rejection: \(S=0\) => large gains
  • -
  • Sensor noise attenuation: \(T\) small where the noise is concentrated
  • -
  • Control Sensitivity minimization: \(K S\) small
  • -
  • Robustness to modeling errors: \(T\) small in the frequency range of the expected model undertainties
  • -
-
-

SISO tradeoff

-

We want \(S\) small for command following and disturbance rejection. -We want \(T\) small to remain insensitive to sensor noise and modeling errors and to reduce control sensitivity.

-

However we cannot keep both \(S\) and \(T\) small as \(S(s)+T(s)=1\).

-

We must determine some tradeoff between the sensitivity and the complementary sensitivity functions.

-

Usually, reference signals and disturbances occur at low frequencies, while noise and modeling errors are concentrated at high frequencies. The tradeoff, in a SISO sense, is to make \(|S(j\omega)|\) small as low frequencies and \(|T(j\omega)|\) small at high frequencies.

-

\(H_\infty\) and weighting functions

-
-
-

\(\mathcal{H}_\infty\) control is a design technique with a state-space computation solution that utilizes frequency-dependent weighting functions to tune the controller’s performance and robustness characteristics.

-
-

-
- Figure 2: \(\mathcal{H}_\infty\) control framework
-

Figure 2: \(\mathcal{H}_\infty\) control framework

-
-
- -

New design framework (figure 2): \(P(s)\) is the generalized plant transfer function matrix:

-
    -
  • \(w\): exogenous inputs
  • -
  • \(z\): regulated performance output
  • -
  • \(u\): control inputs
  • -
  • \(y\): measured output variables
  • -
-

The plant \(P\) has two inputs and two outputs, it can be decomposed into four sub-transfer function matrices: -\[P = \begin{bmatrix}P_{11} & P_{12} \ P_{21} & P_{22} \end{bmatrix}\]

-

Lower Linear Fractional Transformation

-

The transformation from the input \(w\) to the output \(z\), \(T_{zw}\) is called the Lower Linear Fractional Transformation \(F_l (P, K)\).

-
-
-

\[T_{zw} = F_l (P, K) = P_{11} + P_{12}K (I-P_{22})^{-1} P_{21}\]

-
-

The \(H_\infty\) control problem is to find a controller that minimizes \(\| T_{zw} \|_\infty\) over the space of all realizable controllers \(K(s)\) that stabilize the closed-loop system.

-

Weights for inputs/outputs signals

-

Since \(S\) and \(T\) cannot be minimized together at all frequency, weights are introduced to shape the solutions. Not only can \(S\) and \(T\) be weighted, but other regulated performance variables and inputs (figure 3).

-

-
- Figure 3: Input and Output weights in \(\mathcal{H}_\infty\) framework
-

Figure 3: Input and Output weights in \(\mathcal{H}_\infty\) framework

-
-
- -

The weights on the input and output variables are selected to reflect the spatial and frequency dependence of the respective signals and performance specifications.

-

These inputs and output weighting functions are defined as rational, stable and minimum-phase transfer function (no poles or zero in the right half plane).

-

General Guidelines for Weight Selection: \(W_S\)

-

\(W_S\) is selected to reflect the desired performance characteristics. -The sensitivity function \(S\) should have low gain at low frequency for good tracking performance and high gain at high frequencies to limit overshoot. -We have to select \(W_S\) such that \({W_S}^-1\) reflects the desired shape of \(S\).

-
-
-
    -
  • Low frequency gain: set to the inverse of the desired steady state tracking error
  • -
  • High frequency gain: set to limit overshoot (\(0.1\) to \(0.5\) is a good compromise between overshoot and response speed)
  • -
  • Crossover frequency: chosen to limit the maximum closed-loop time constant (\(\omega_c \approx 1/\tau\))
  • -
-
-

General Guidelines for Weight Selection: \(W_T\)

-

We want \(T\) near unity for good tracking of reference and near zero for noise suppresion.

-
-
-

A high pass weight is usualy used on \(T\) because the noise energy is mostly concentrated at high frequencies. It should have the following characteristics:

-
    -
  • The crossover frequency is chosen to limit the closed-loop bandwidth
  • -
  • The high frequency gain is set high to proide sensor noise rejection and high frequency gain attenuation
  • -
-
-

When using both \(W_S\) and \(W_T\), it is important to make sure that the magnitude of theise weights at the crossover frequency is less that one to not violate \(S+T=1\).

-

Unmodeled dynamics weighting function

-

Another method of limiting the controller bandwidth and providing high frequency gain attenuation is to use a high pass weight on an unmodeled dynamics uncertainty block that may be added from the plant input to the plant output (figure 4).

-

-
- Figure 4: Unmodeled dynamics model
-

Figure 4: Unmodeled dynamics model

-
-
- -

The weight is chosen to cover the expected worst case magnitude of the unmodeled dynamics. A typical unmodeled dynamics weighting function is shown figure 5.

-

-
- Figure 5: Example of unmodeled dynamics weight
-

Figure 5: Example of unmodeled dynamics weight

-
-
- -

Inputs and Output weighting function

-

It is possible to weight the control input and actuator rate. -This is used to prevent actuator saturation and limit amplification of sensor noise signals on the control input signal.

-

Typically actuator input weights are constant over frequency and set at the inverse of the saturation limit.

-

Order of the weighting functions

-

The order of the optimal controller is equal to the order of the nominal plant model plus the order of the weights. The complexity of the controller is increase as the order of the weights increases.

-

The order of the weights should be kept reasonably low to reduce the order of th resulting optimal compensator and avoid potential convergence problems in the DK interactions.

-

Bibliography

-

Bibel, J. E., & Malyevac, D. S., Guidelines for the selection of weighting functions for h-infinity control (1992).

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/bryson93_contr_spacec_aircr/index.html b/public/paper/bryson93_contr_spacec_aircr/index.html deleted file mode 100644 index 787b458..0000000 --- a/public/paper/bryson93_contr_spacec_aircr/index.html +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - Control of spacecraft and aircraft - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Control of spacecraft and aircraft

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
HAC-HAC
-
Reference
-
(Bryson, 1993)
-
Author(s)
-
Bryson, A. E.
-
Year
-
1993
-
-

9.2.3 Roll-Off Filters

-
-

Synthesizing control logic using only one vibration mode means we are consciously neglecting the higher-order vibration modes. -When doing this, it is a good idea to insert “roll-off” into the control logic, so that the loop-transfer gain decreases rapidly with frequency beyond the control bandwidth. -This reduces the possibility of destabilizing the unmodelled higher frequency dynamics ("spillover").

-
-

9.5 Robust Compensator Synthesis

-
-

LQG synthesis using feedback of estimated states will produce almost the same good response as LQR […] for systems with control system bandwidths that are well below the frequency of the first vibration mode. -However, it may not be true for systems with higher control system bandwidths, even when one or more vibration modes are included in the control design model.

-
- -
-

If a rate sensor is co-located with an actuator on a flexible body, and its signal is fed back to the actuator, all vibration modes are stabilized. -If a rate sensor is not co-located with an actuator on a flexible body, ans its signal is fed back to the actuator, some vibration modes are stabilized and others are destabilized, depending on the location of the sensor relative to the actuator.

-
-

9.5.2 Low-Authority Control/High-Authority Control

-
-

Figure fig:bryson93_hac_lac shows the concept of Low-Authority Control/High-Authority Control (LAC/HAC) is the s-plane. -LAC uses a co-located rate sensor to add damping to all the vibratory modes (but not the rigid-body mode). -HAC uses a separated displacement sensor to stabilize the rigid body mode, which slightly decreases the damping of the vibratory modes but not enough to produce instability (called “spillover”)

-
-

-
- Figure 1: HAC-LAC control concept
-

Figure 1: HAC-LAC control concept

-
-
- -
-

LAC/HAC is usually insensitive to small deviation of the plant dynamics away from the design values, that is, it is robust to plant parameter changes.

-
-

Bibliography

-

Bryson, A. E., Control of spacecraft and aircraft (1993), : Princeton university press Princeton, New Jersey.

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/butler11_posit_contr_lithog_equip/index.html b/public/paper/butler11_posit_contr_lithog_equip/index.html deleted file mode 100644 index 1172326..0000000 --- a/public/paper/butler11_posit_contr_lithog_equip/index.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - Position control in lithographic equipment - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Position control in lithographic equipment

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Multivariable Control, Positioning Stations
-
Reference
-
(Hans Butler, 2011)
-
Author(s)
-
Butler, H.
-
Year
-
2011
-
-

Bibliography

-

Butler, H., Position control in lithographic equipment, IEEE Control Systems, 31(5), 28–47 (2011). http://dx.doi.org/10.1109/mcs.2011.941882

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/chen00_ident_decoup_contr_flexur_joint_hexap/index.html b/public/paper/chen00_ident_decoup_contr_flexur_joint_hexap/index.html deleted file mode 100644 index 50987dc..0000000 --- a/public/paper/chen00_ident_decoup_contr_flexur_joint_hexap/index.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - Identification and decoupling control of flexure jointed hexapods - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Identification and decoupling control of flexure jointed hexapods

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Flexible Joints
-
Reference
-
(Yixin Chen & McInroy, 2000)
-
Author(s)
-
Chen, Y., & McInroy, J.
-
Year
-
2000
-
-

Bibliography

-

Chen, Y., & McInroy, J., Identification and decoupling control of flexure jointed hexapods, In , Proceedings 2000 ICRA. Millennium Conference. IEEE International Conference on Robotics and Automation. Symposia Proceedings (Cat. No.00CH37065) (pp. ) (2000). : .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/collette11_review_activ_vibrat_isolat_strat/index.html b/public/paper/collette11_review_activ_vibrat_isolat_strat/index.html deleted file mode 100644 index 0664c0f..0000000 --- a/public/paper/collette11_review_activ_vibrat_isolat_strat/index.html +++ /dev/null @@ -1,278 +0,0 @@ - - - - - - Review of active vibration isolation strategies - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Review of active vibration isolation strategies

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Vibration Isolation
-
Reference
-
(Christophe Collette {\it et al.}, 2011)
-
Author(s)
-
Collette, C., Janssens, S., & Artoos, K.
-
Year
-
2011
-
-

Background and Motivations

-

Passive Isolation Tradeoffs

-
-
-

\[ X(s) = \underbrace{\frac{cs + k}{ms^2 + cs + k}}_{T_{wx}(s)} W(s) + \underbrace{\frac{1}{ms^2 + cs + k}}_{T_{Fx}(s)} F(s) \]

-
-
    -
  • \(T_{wx}(s)\) is called the transmissibility of the isolator. It characterize the way seismic vibrations \(w\) are transmitted to the equipment.
  • -
  • \(T_{Fx}(s)\) is called the compliance. It characterize the capacity of disturbing forces \(F\) to create motion \(x\) of the equipment.
  • -
-

In order to minimize the vibrations of a sensitive equipment, a general objective to design a good isolator is to minimize both \(\abs{T_{wx}}\) and \(\abs{T_{Fx}}\) in the frequency range of interest.

-

To decrease the amplitude of the overshoot at the resonance frequency, damping can be increased. -The price to pay is degradation of the isolation at high frequency (the roll off becomes \(-1\) instead of \(-2\)).

-

First Trade-off: Trade-off between damping and isolation.

-

To improve the transmissibility, the resonance frequency can be decreased. -However, the systems becomes more sensitive to external force \(F\) applied on the equipment.

-

Second trade-off: Trade-off between isolation and robustness to external force

-

Active Isolation

-

We apply a feedback control. -The general expression of the force delivered by the actuator is \(f = g_a \ddot{x} + g_v \dot{x} + g_p x\). \(g_a\), \(g_v\) and \(g_p\) are constant gains.

-

-
- Table 1: - Active isolation techniques -
- - - - - - - - - - - - - - - - - - - - - - - - - -
Feedback SignalEffectApplications
AccelerationAdd virtual massFew
VelocityAdd virtual dashpot connected to the skySky-Hook Damping
PositionAdd virtual spring connected to the skySky-Hook Spring
-

Practical Realizations

-

Sensor Limitations

-

Conclusions

-

-
- Figure 1: Comparison of Active Vibration Isolation Strategies
-

Figure 1: Comparison of Active Vibration Isolation Strategies

-
-
- -

Bibliography

-

Collette, C., Janssens, S., & Artoos, K., Review of active vibration isolation strategies, Recent Patents on Mechanical Engineeringe, 4(3), 212–219 (2011). http://dx.doi.org/10.2174/2212797611104030212

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/collette14_vibrat/index.html b/public/paper/collette14_vibrat/index.html deleted file mode 100644 index bf16734..0000000 --- a/public/paper/collette14_vibrat/index.html +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Vibration Isolation, Sensor Fusion
-
Reference
-
(Collette & Matichard, 2014)
-
Author(s)
-
Collette, C., & Matichard, F.
-
Year
-
2014
-
-

Introduction

-

Sensor fusion is used to combine the benefits of different types of sensors:

-
    -
  • Relative sensor for DC positioning capability at low frequency
  • -
  • Inertial sensors for isolation at high frequency
  • -
  • Force sensor / collocated sensor to improve the robustness
  • -
-

Different types of sensors

-

In this paper, three types of sensors are used. Their advantages and disadvantages are summarized table 1.

-
-

Several types of sensors can be used for the feedback control of vibration isolation systems:

-
    -
  • Feedback control based on relative motion sensors (inductive, capactive, ferromagnetic sensors…) typically permits to servo-position a system or platform relative to a reference (e.g. floor or support base), but does not provide isolation from the ground motion.
  • -
  • Feedback control based on force sensors typically lowers the effective natural frequency, and therefore increases the isolation, but sacrifices the systems compliance in doing so.
  • -
  • Feedback control based on inertial sensors (geophones, seismometers, accelerometers…) improves not only the vibration isolation but also the compliance. Inertial sensors are, however, AC coupled and noisy at low frequencies.
  • -
-
-

-
- Table 1: - Types of sensors -
- - - - - - - - - - - - - - - - - - - - - - - - - -
SensorsAdvantagesDisadvantages
Relative motionServo-positionNo isolation from gorund motion
Force sensorsImprove isolationIncrease compliance
Inertial sensorsImprove isolation and complianceAC couple and noisy at high frequency
-

Inertial Control and sensor fusion configurations

-

For a simple 1DoF model, two fusion-sensor configuration are studied. The results are summarized Table 2.

-

-
- Table 2: - Sensor fusion configurations -
- - - - - - - - - - - - - - - - - - - - - - - - - - -
Low freq. sensorHigh freq. sensorTransmissibilityComplianceTrade-off
InertialForce sensorUnchangedDegradedSensor noise filtering / compliance degradation
InertialRelative sensorDegradedUnchangedIsolation in the bandwidth / amplification outside
-

Flexible structure

-

Flexibility is added between the inertial sensor and the actuator. -Now the sensor and actuator are not collocated anymore and the system is unstable because there is no zero between the two poles. -We use sensor fusion to obtain stability at high frequency.

-

Inertial and small accelerometer

-

The idea is to use a small accelerometer which is easier to locate near the actuator at high frequency. -However, it is important to verify that the noise introduced by the accelerometer does not degrades too much the isolation performance.

-

Inertial and force sensor

-

Here the advantage is that the deformation mode is almost not present in the open-loop transfer function. -This simplifies the loop shaping of the controller.

-

Inertial and relative sensor

-

The relative sensor introduces coupling between both side of the actuator which induces degradation of the isolation at high frequency. However, the compliance remains unchanged at high frequency.

-

Conclusion

-

Fusion of inertial instruments with sensors collocated with the actuator permits to increase the feedback control bandwidth of active isolation systems.

-

Three types of sensors have been considered for the high frequency part of the fusion:

-
    -
  • The fusion with a relative sensor improves the stability but compromises the transmissibility. It can be of interested for stiff suspension where high frequency isolation can be sacrified to improve stability.
  • -
  • The fusion with an accelerometre is used to increase the loop gain. However, as the accelerometer is not dual with the actuator, there is no guaranty stability when the isolation stage is mounted on a flexible support.
  • -
  • The fusion with a force sensor can be used to increase the loop gain with little effect on the compliance and passive isolation, provided that the blend is possible and that no active damping of flexible modes is required.
  • -
-

Bibliography

-

Collette, C., & Matichard, F., Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs, In , International Conference on Noise and Vibration Engineering (ISMA2014) (pp. ) (2014). : .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/collette15_sensor_fusion_method_high_perfor/index.html b/public/paper/collette15_sensor_fusion_method_high_perfor/index.html deleted file mode 100644 index 1dce473..0000000 --- a/public/paper/collette15_sensor_fusion_method_high_perfor/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - Sensor fusion methods for high performance active vibration isolation systems - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Sensor fusion methods for high performance active vibration isolation systems

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Sensor Fusion, Vibration Isolation
-
Reference
-
(Collette & Matichard, 2015)
-
Author(s)
-
Collette, C., & Matichard, F.
-
Year
-
2015
-
-

In order to have good stability margins, it is common practice to collocate sensors and actuators. This ensures alternating poles and zeros along the imaginary axis. Then, each phase lag introduced by the poles is compensed by phase leag introduced by the zeroes. This guarantees stability and such system is referred to as hyperstable.

-

In this paper, we study and compare different sensor fusion methods combining inertial sensors at low frequency with sensors adding stability at high frequency. -The stability margins of the controller can be significantly increased with no or little effect on the low-frequency active isolation, provided that the two following conditions are fulfilled:

-
    -
  • the high frequency sensor and the actuator are dual
  • -
  • there exists a bandwidth where we can superimpose the open loop transfer functions obtained with the two sensors.
  • -
-

Bibliography

-

Collette, C., & Matichard, F., Sensor fusion methods for high performance active vibration isolation systems, Journal of Sound and Vibration, 342(nil), 1–21 (2015). http://dx.doi.org/10.1016/j.jsv.2015.01.006

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/dasgupta00_stewar_platf_manip/index.html b/public/paper/dasgupta00_stewar_platf_manip/index.html deleted file mode 100644 index 460758b..0000000 --- a/public/paper/dasgupta00_stewar_platf_manip/index.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - - - The stewart platform manipulator: a review - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

The stewart platform manipulator: a review

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms
-
Reference
-
(Bhaskar Dasgupta & Mruthyunjaya, 2000)
-
Author(s)
-
Dasgupta, B., & Mruthyunjaya, T.
-
Year
-
2000
-
-

-
- Table 1: - Parallel VS serial manipulators -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
AdvantagesDisadvantages
SerialManoeuverabilityPoor precision
Large workspaceBends under high load
Vibrate at high speed
ParallelHigh stiffnessSmall workspace
Good dynamic performances
Precise positioning
-

The generalized Stewart platforms consists of two rigid bodies (referred to as the base and the platoform) connected through six extensible legs, each with sherical joints at both ends.

-

Bibliography

-

Dasgupta, B., & Mruthyunjaya, T., The stewart platform manipulator: a review, Mechanism and Machine Theory, 35(1), 15–40 (2000). http://dx.doi.org/10.1016/s0094-114x(99)00006-3

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/devasia07_survey_contr_issues_nanop/index.html b/public/paper/devasia07_survey_contr_issues_nanop/index.html deleted file mode 100644 index 2ec3ded..0000000 --- a/public/paper/devasia07_survey_contr_issues_nanop/index.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - - - A survey of control issues in nanopositioning - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

A survey of control issues in nanopositioning

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-
-
Reference
-
(Devasia {\it et al.}, 2007)
-
Author(s)
-
Devasia, S., Eleftheriou, E., & Moheimani, S. R.
-
Year
-
2007
-
-
    -
  • Talks about Scanning Tunneling Microscope (STM) and Scanning Probe Microscope (SPM)
  • -
  • Piezoelectric actuators: Creep, Hysteresis, Vibrations, Modeling errors
  • -
  • Interesting analysis about Bandwidth-Precision-Range tradeoffs
  • -
  • Control approaches for piezoelectric actuators: feedforward, Feedback, Iterative, Sensorless controls
  • -
-

-
- Figure 1: Tradeoffs between bandwidth, precision and range
-

Figure 1: Tradeoffs between bandwidth, precision and range

-
-
- -

Bibliography

-

Devasia, S., Eleftheriou, E., & Moheimani, S. R., A survey of control issues in nanopositioning, IEEE Transactions on Control Systems Technology, 15(5), 802–823 (2007).

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/fleming10_nanop_system_with_force_feedb/index.html b/public/paper/fleming10_nanop_system_with_force_feedb/index.html deleted file mode 100644 index 241a9a1..0000000 --- a/public/paper/fleming10_nanop_system_with_force_feedb/index.html +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - Nanopositioning system with force feedback for high-performance tracking and vibration control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Nanopositioning system with force feedback for high-performance tracking and vibration control

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Sensor Fusion, Force Sensors
-
Reference
-
(Fleming, 2010)
-
Author(s)
-
Fleming, A.
-
Year
-
2010
-
-

Summary:

-
    -
  • The noise generated by a piezoelectric force sensor is much less than a capacitive sensor
  • -
  • Dynamical model of a piezoelectric stack actuator and piezoelectric force sensor
  • -
  • Noise of a piezoelectric force sensor
  • -
  • IFF with a piezoelectric stack actuator and piezoelectric force sensor
  • -
  • A force sensor is used as a displacement sensor below the frequency of the first zero
  • -
  • Sensor fusion architecture with a capacitive sensor and a force sensor and using complementary filters
  • -
  • Virtual sensor fusion architecture (called low-frequency bypass)
  • -
  • Analog implementation of the control strategies to avoid quantization noise, finite resolution and sampling delay
  • -
-

Model of a multi-layer monolithic piezoelectric stack actuator

-

-
- Figure 1: Schematic of a multi-layer monolithic piezoelectric stack actuator model
-

Figure 1: Schematic of a multi-layer monolithic piezoelectric stack actuator model

-
-
- -

The actuator experiences an internal stress in response to an applied voltage. -This stress is represented by the voltage dependent force \(F_a\) and is related to free displacement by -\[ \Delta L = \frac{F_a}{k_a} \]

-
    -
  • \(\Delta L\) is the change in actuator length in [m]
  • -
  • \(k_a\) is the actuator stiffness in [N/m]
  • -
-

The developed force \(F_a\) is related to the applied voltage by: -\[ \Delta L = d_{33} n V_a \]

-
    -
  • \(d_{33}\) is the piezoelectric strain constant in [m/V]
  • -
  • \(n\) is the number of layers
  • -
  • \(V_a\) is the applied voltage in [V]
  • -
-

Combining the two equations, we obtain: -\[ F_a = d_{33} n k_a V_a \]

-

The ratio of the developed force to applied voltage is \(d_{33} n k_a\) in [N/V]. -We denote this constant by \(g_a\) and: -\[ F_a = g_a V_a, \quad g_a = d_{33} n k_a \]

-

Dynamics of a piezoelectric force sensor

-

Piezoelectric force sensors provide a high sensitivity and bandwidth with low noise at high frequencies.

-

If a single wafer of piezoelectric material is sandwiched between the actuator and platform: -\[ D = d_{33} T \]

-
    -
  • \(D\) is the amount of generated charge per unit area in \([C/m^2]\)
  • -
  • \(T\) is the stress in \([N/m^2]\)
  • -
  • \(d_{33}\) is the piezoelectric strain constant in \([m/V] = [C/N]\)
  • -
-

The generated charge is then -\[ q = d_{33} F_s \]

-

If an n-layer piezoelectric transducer is used as a force sensor, the generated charge is then: -\[ q = n d_{33} F_s \]

-
-

We can use a charge amplifier to measure the force \(F_s\).

-
- Figure 2: Electrical model of a piezoelectric force sensor is shown in gray. Developed charge \(q\) is proportional to the strain and hence the force experienced by the sensor. Op-amp charge amplifier produces an output voltage \(V_s\) equal to \(-q/C_s\)
-

Figure 2: Electrical model of a piezoelectric force sensor is shown in gray. Developed charge \(q\) is proportional to the strain and hence the force experienced by the sensor. Op-amp charge amplifier produces an output voltage \(V_s\) equal to \(-q/C_s\)

-
-
- -

The output voltage \(V_s\) is equal to -\[ V_s = -\frac{q}{C_s} = -\frac{n d_{33}F_s}{C_s} \] -that is, the scaling between the force and voltage is \(-\frac{n d_{33}F_s}{C_s}\ [V/N]\) .

-
-

We can also use a voltage amplifier. -In that case, the generated charge is deposited on the transducer’s internal capacitance.

-

The open-circuit voltage of a piezoelectric force sensor is: -\[ V_s = \frac{n d_{33} F_s}{C} \]

-
    -
  • \(C\) is the transducer capacitance defined by \(C = n \epsilon_T A / h\) in [F] -
      -
    • \(A\) is the area in \([m^2]\)
    • -
    • \(h\) is the layer thickness in [m]
    • -
    • \(\epsilon_T\) is the dielectric permittivity under a constant stress in \([F/m]\)
    • -
    -
  • -
-

We obtain -\[ V_s = g_s F_s, \quad g_s = \frac{n d_{33}}{C} \]

-

Noise of a piezoelectric force sensor

-

As piezoelectric sensors have a capacitive source impedance, the sensor noise density \(N_{V_s}(\omega)\) is primarily due to current noise \(i_n\) reacting the capacitive source impedance: -\[ N_{V_s}(\omega) = i_n \frac{1}{C \omega} \]

-
    -
  • \(N_{V_s}\) is the measured noise in \(V/\sqrt{\text{Hz}}\)
  • -
  • \(i_n\) is the current noise in \(A/\sqrt{\text{Hz}}\)
  • -
  • \(C\) is the capacitance of the piezoelectric in \(F\)
  • -
-

The current noise density of a general purpose LM833 FET-input op-amp is \(0.5\ pA/\sqrt{\text{Hz}}\). -The capacitance of a piezoelectric stack is typically between \(1 \mu F\) and \(100 \mu F\).

-

Bibliography

-

Fleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422

- - - -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/fleming12_estim/index.html b/public/paper/fleming12_estim/index.html deleted file mode 100644 index 10214a9..0000000 --- a/public/paper/fleming12_estim/index.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - Estimating the resolution of nanopositioning systems from frequency domain data - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Estimating the resolution of nanopositioning systems from frequency domain data

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-
-
Reference
-
(Andrew Fleming, 2012)
-
Author(s)
-
Fleming, A. J.
-
Year
-
2012
-
-

Bibliography

-

Fleming, A. J., Estimating the resolution of nanopositioning systems from frequency domain data, In , 2012 IEEE International Conference on Robotics and Automation (pp. ) (2012). : .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/fleming13_review_nanom_resol_posit_sensor/index.html b/public/paper/fleming13_review_nanom_resol_posit_sensor/index.html deleted file mode 100644 index 571da12..0000000 --- a/public/paper/fleming13_review_nanom_resol_posit_sensor/index.html +++ /dev/null @@ -1,409 +0,0 @@ - - - - - - A review of nanometer resolution position sensors: operation and performance - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

A review of nanometer resolution position sensors: operation and performance

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Position Sensors
-
Reference
-
(Andrew Fleming, 2013)
-
Author(s)
-
Fleming, A. J.
-
Year
-
2013
-
-
    -
  • Define concise performance metric and provide expressions for errors sources (non-linearity, drift, noise)
  • -
  • Review current position sensor technologies and compare their performance
  • -
-

Sensor Characteristics

-

Calibration and nonlinearity

-

Usually quoted as a percentage of the fill-scale range (FSR):

-

\begin{equation} -\text{mapping error (%)} = \pm 100 \frac{\max{}|e_m(v)|}{\text{FSR}} -\end{equation}

-

With \(e_m(v)\) is the mapping error.

-

-
- Figure 1: The actual position versus the output voltage of a position sensor. The calibration function \(f_{cal}(v)\) is an approximation of the sensor mapping function \(f_a(v)\) where \(v\) is the voltage resulting from a displacement \(x\). \(e_m(v)\) is the residual error.
-

Figure 1: The actual position versus the output voltage of a position sensor. The calibration function \(f_{cal}(v)\) is an approximation of the sensor mapping function \(f_a(v)\) where \(v\) is the voltage resulting from a displacement \(x\). \(e_m(v)\) is the residual error.

-
-
- -

Drift and Stability

-

If the shape of the mapping function actually varies with time, the maximum error due to drift must be evaluated by finding the worst-case mapping error.

-

-
- Figure 2: The worst case range of a linear mapping function \(f_a(v)\) for a given error in sensitivity and offset.
-

Figure 2: The worst case range of a linear mapping function \(f_a(v)\) for a given error in sensitivity and offset.

-
-
- -

Bandwidth

-

The bandwidth of a position sensor is the frequency at which the magnitude of the transfer function \(P(s) = v(s)/x(s)\) drops by \(3,dB\).

-

Although the bandwidth specification is useful for predicting the resolution of sensor, it reveals very little about the measurement errors caused by sensor dynamics.

-

The frequency domain position error is

-

\begin{equation} -\begin{aligned} -e_{bw}(s) &= x(s) - v(s) \\\
-&= x(s) (1 - P(s)) -\end{aligned} -\end{equation}

-

If the actual position is a sinewave of peak amplitude \(A = \text{FSR}/2\):

-

\begin{equation} -\begin{aligned} -e_{bw} &= \pm \frac{\text{FSR}}{2} |1 - P(s)| \\\
-&\approx \pm A n \frac{f}{f_c} -\end{aligned} -\end{equation}

-

with \(n\) is the low pass filter order corresponding to the sensor dynamics and \(f_c\) is the measurement bandwidth.

-

Thus, the sensor bandwidth must be significantly higher than the operating frequency if dynamic errors are to be avoided.

-

Noise

-

In addition to the actual position signal, all sensors produce some additive measurement noise. -In many types of sensor, the majority of noise arises from the thermal noise in resistors and the voltage and current noise in conditioning circuit transistors. -These noise processes can usually be approximated by a Gaussian random process.

-

A Gaussian random process is usually described by its autocorrelation function or its Power Spectral Density.

-

The autocorrelation function of a random process \(\mathcal{X}\) is

-

\begin{equation} -R_{\mathcal{X}}(\tau) = E[\mathcal{X}(t)\mathcal{X}(t + \tau)] -\end{equation}

-

where \(E\) is the expected value operator.

-

The variance of the process is equal to \(R_\mathcal{X}(0)\) and is the expected value of the varying part squared:

-

\begin{equation} -\text{Var} \mathcal{X} = E \left[ (\mathcal{X} - E[\mathcal{X}])^2 \right] -\end{equation}

-

The standard deviation \(\sigma\) is the square root of the variance:

-

\begin{equation} -\sigma_\mathcal{X} = \sqrt{\text{Var} \mathcal{X}} -\end{equation}

-

The standard deviation is also the Root Mean Square (RMS) value of a zero-mean random process.

-

The Power Spectral Density \(S_\mathcal{X}(f)\) of a random process represents the distribution of power (or variance) across frequency \(f\).

-

For example, if the random process under consideration was measured in volts, the power spectral density would have the units of \(V^2/\text{Hz}\).

-

The Power Spectral Density can be obtained from the autocorrelation function from the Wiener-Khinchin relation:

-

\begin{equation} -S_{\mathcal{X}} = 2 \mathcal{F}\{ R_\mathcal{X}(\tau) \} = 2 \int_{-\infty}^{\infty} R_\mathcal{X}(\tau) e^{-2j\pi f \tau} d\tau -\end{equation}

-

If the power Spectral Density is known, the variance of the generating process can be found from the area under the curve:

-

\begin{equation} -\sigma_\mathcal{X}^2 = E[\mathcal{X}^2(t)] = R_\mathcal{X}(0) = \int_0^\infty S_\mathcal{X}(f) df -\end{equation}

-

Rather than plotting the frequency distribution of power, it is often convenient to plot the frequency distribution of the standard deviation, which is referred to as the spectral density. -It is related to the power spectral density by a square root:

-

\begin{equation} -\text{spectral density} = \sqrt{S_\mathcal{X}(f)} -\end{equation}

-

The units of \(\sqrt{S_\mathcal{X}(f)}\) are \(\text{units}/\sqrt{Hz}\).

-

The spectral density if preferred in the electronics literature as the RMS value of a noise process can be determined directly from the noise density and effective bandwidth.

-

Resolution

-

The random noise of a position sensor causes an uncertainty in the measured position. -If the distance between two measured locations is smaller than the uncertainty, it is possible to mistake one point for the other.

-

To characterize the resolution, we use the probability that the measured value is within a certain error bound.

-

If the measurement noise is approximately Gaussian, the resolution can be quantified by the standard deviation \(\sigma\) (RMS value).

-

The empirical rule states that there is a \(99.7%\) probability that a sample of a Gaussian random process lie within \(\pm 3 \sigma\). -This if we define the resolution as \(\delta = 6 \sigma\), we will referred to as the \(6\sigma\text{-resolution}\).

-

Another important parameter that must be specified when quoting resolution is the sensor bandwidth. -There is usually a trade-off between bandwidth and resolution (figure 3).

-

-
- Figure 3: The resolution versus banwidth of a position sensor.
-

Figure 3: The resolution versus banwidth of a position sensor.

-
-
- -

Many type of sensor have a limited full-scale-range (FSR) and tend to have an approximated proportional relationship between the resolution and range. -As a result, it is convenient to consider the ratio of resolution to the FSR, or equivalently, the dynamic range (DNR). -A convenient method for reporting this ratio is in parts-per-million (ppm):

-

\begin{equation} -\text{DNR}_{\text{ppm}} = 10^6 \frac{\text{full scale range}}{6\sigma\text{-resolution}} -\end{equation}

-

Comparison and summary

-

-
- Table 1: - Summary of position sensor characteristics. The dynamic range (DNR) and resolution are approximations based on a full-scale range of \(100\,\mu m\) and a first order bandwidth of \(1\,kHz\) -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sensor TypeRangeDNRResolutionMax. BWAccuracy
Metal foil\(10-500,\mu m\)230 ppm23 nm1-10 kHz1% FSR
Piezoresistive\(1-500,\mu m\)5 ppm0.5 nm>100 kHz1% FSR
Capacitive\(10,\mu m\) to \(10,mm\)24 ppm2.4 nm100 kHz0.1% FSR
Electrothermal\(10,\mu m\) to \(1,mm\)100 ppm10 nm10 kHz1% FSR
Eddy current\(100,\mu m\) to \(80,mm\)10 ppm1 nm40 kHz0.1% FSR
LVDT\(0.5-500,mm\)10 ppm5 nm1 kHz0.25% FSR
InterferometerMeters0.5 nm>100kHz1 ppm FSR
EncoderMeters6 nm>100kHz5 ppm FSR
-

Bibliography

-

Fleming, A. J., A review of nanometer resolution position sensors: operation and performance, Sensors and Actuators A: Physical, 190(nil), 106–126 (2013). http://dx.doi.org/10.1016/j.sna.2012.10.016

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/furqan17_studies_stewar_platf_manip/index.html b/public/paper/furqan17_studies_stewar_platf_manip/index.html deleted file mode 100644 index 87f3f6f..0000000 --- a/public/paper/furqan17_studies_stewar_platf_manip/index.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - Studies on stewart platform manipulator: a review - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Studies on stewart platform manipulator: a review

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms
-
Reference
-
(Mohd Furqan {\it et al.}, 2017)
-
Author(s)
-
Furqan, M., Suhaib, M., & Ahmad, N.
-
Year
-
2017
-
-

Lots of references.

-

Bibliography

-

Furqan, M., Suhaib, M., & Ahmad, N., Studies on stewart platform manipulator: a review, Journal of Mechanical Science and Technology, 31(9), 4459–4470 (2017). http://dx.doi.org/10.1007/s12206-017-0846-1

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/furutani04_nanom_cuttin_machin_using_stewar/index.html b/public/paper/furutani04_nanom_cuttin_machin_using_stewar/index.html deleted file mode 100644 index 6787686..0000000 --- a/public/paper/furutani04_nanom_cuttin_machin_using_stewar/index.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - Nanometre-cutting machine using a stewart-platform parallel mechanism - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Nanometre-cutting machine using a stewart-platform parallel mechanism

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Flexible Joints
-
Reference
-
(Katsushi Furutani {\it et al.}, 2004)
-
Author(s)
-
Furutani, K., Suzuki, M., & Kudoh, R.
-
Year
-
2004
-
-
    -
  • Lever mechanism to amplify the motion of piezoelectric stack actuators
  • -
  • Use of flexure joints
  • -
  • Eddy current displacement sensors for control (decentralized)
  • -
-
- -
- -
    -
  • Isotropic performance (cubic configuration even if not said so)
  • -
-

Possible sources of error:

-
    -
  • position error of the link ends in assembly => simulation of position error and it is not significant
  • -
  • Inaccurate modelling of the links
  • -
  • insufficient generative force
  • -
  • unwanted deformation of the links
  • -
-

To minimize the errors, a calibration is done between the required leg length and the wanted platform pose. -Then, it is fitted with 4th order polynomial and included in the control architecture.

-

Bibliography

-

Furutani, K., Suzuki, M., & Kudoh, R., Nanometre-cutting machine using a stewart-platform parallel mechanism, Measurement Science and Technology, 15(2), 467–474 (2004). http://dx.doi.org/10.1088/0957-0233/15/2/022

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/gao15_measur_techn_precis_posit/index.html b/public/paper/gao15_measur_techn_precis_posit/index.html deleted file mode 100644 index ae2120d..0000000 --- a/public/paper/gao15_measur_techn_precis_posit/index.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - Measurement technologies for precision positioning - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Measurement technologies for precision positioning

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Position Sensors
-
Reference
-
(Gao {\it et al.}, 2015)
-
Author(s)
-
Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., …
-
Year
-
2015
-
-

Bibliography

-

Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., …, Measurement technologies for precision positioning, CIRP Annals, 64(2), 773–796 (2015). http://dx.doi.org/10.1016/j.cirp.2015.05.009

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/garg07_implem_chall_multiv_contr/index.html b/public/paper/garg07_implem_chall_multiv_contr/index.html deleted file mode 100644 index 26f91b7..0000000 --- a/public/paper/garg07_implem_chall_multiv_contr/index.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - Implementation challenges for multivariable control: what you did not learn in school! - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Implementation challenges for multivariable control: what you did not learn in school!

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Multivariable Control
-
Reference
-
(Sanjay Garg, 2007)
-
Author(s)
-
Garg, S.
-
Year
-
2007
-
-

Discusses:

-
    -
  • When to use multivariable control and when not to?
  • -
  • Two major issues with implementing multivariable control: gain scheduling and integrator wind up protection
  • -
-
-

Inline simple gain and phase margin measured for SISO, “robustness” determination of multivariable control requires complex analyses using singular value techniques and Monte Carlo simulations.

-
-

When to use multivariable control:

-
    -
  • System has high input/output coupling and not much separation between loop bandwidth
  • -
  • System is complex with large number of states
  • -
  • When sequential SISO loop closure will not meet performance requirements
  • -
-

Importance of having a mechanism to limit the control rate in the synthesis process. -The control rate should be weighted appropriately in order to not saturate the system and stay in the linearity regime.

-
    -
  • importance of scaling the plant prior to synthesis and also replacing pure integrators with slow poles
  • -
-

Bibliography

-

Garg, S., Implementation challenges for multivariable control: what you did not learn in school!, In , AIAA Guidance, Navigation and Control Conference and Exhibit (pp. ) (2007). : .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/geng95_intel_contr_system_multip_degree/index.html b/public/paper/geng95_intel_contr_system_multip_degree/index.html deleted file mode 100644 index 729c5b1..0000000 --- a/public/paper/geng95_intel_contr_system_multip_degree/index.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - An intelligent control system for multiple degree-of-freedom vibration isolation - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

An intelligent control system for multiple degree-of-freedom vibration isolation

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation
-
Reference
-
(Jason Geng {\it et al.}, 1995)
-
Author(s)
-
Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., & Garba, J. A.
-
Year
-
1995
-
-

-
- Figure 1: Local force feedback and adaptive acceleration feedback for active isolation
-

Figure 1: Local force feedback and adaptive acceleration feedback for active isolation

-
-
- -

Bibliography

-

Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., & Garba, J. A., An intelligent control system for multiple degree-of-freedom vibration isolation, Journal of Intelligent Material Systems and Structures, 6(6), 787–800 (1995). http://dx.doi.org/10.1177/1045389x9500600607

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/hanieh03_activ_stewar/index.html b/public/paper/hanieh03_activ_stewar/index.html deleted file mode 100644 index 62791e9..0000000 --- a/public/paper/hanieh03_activ_stewar/index.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - Active isolation and damping of vibrations via stewart platform - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Active isolation and damping of vibrations via stewart platform

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation, Active Damping
-
Reference
-
@phdthesis{hanieh03_activ_stewar, -author = {Hanieh, Ahmed Abu}, -school = {Universit{'e} Libre de Bruxelles, Brussels, Belgium}, -title = {Active isolation and damping of vibrations via Stewart -platform}, -year = 2003, -tags = {parallel robot}, -}
-
Author(s)
-
Hanieh, A. A.
-
Year
-
2003
-
-

Bibliography

-

Hanieh, A. A., Active isolation and damping of vibrations via stewart platform (Doctoral dissertation) (2003). Universit{'e} Libre de Bruxelles, Brussels, Belgium, .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/hauge04_sensor_contr_space_based_six/index.html b/public/paper/hauge04_sensor_contr_space_based_six/index.html deleted file mode 100644 index 80a152a..0000000 --- a/public/paper/hauge04_sensor_contr_space_based_six/index.html +++ /dev/null @@ -1,377 +0,0 @@ - - - - - - Sensors and control of a space-based six-axis vibration isolation system - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Sensors and control of a space-based six-axis vibration isolation system

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation, Cubic Architecture
-
Reference
-
(Hauge & Campbell, 2004)
-
Author(s)
-
Hauge, G., & Campbell, M.
-
Year
-
2004
-
-

Discusses:

-
    -
  • Choice of sensors and control architecture
  • -
  • Predictability and limitations of the system dynamics
  • -
  • Two-Sensor control architecture
  • -
  • Vibration isolation using a Stewart platform
  • -
  • Experimental comparison of Force sensor and Inertial Sensor and associated control architecture for vibration isolation
  • -
-

-
- Figure 1: Hexapod for active vibration isolation
-

Figure 1: Hexapod for active vibration isolation

-
-
- -

Stewart platform (Figure 1):

-
    -
  • Low corner frequency
  • -
  • Large actuator stroke (\(\pm5mm\))
  • -
  • Sensors in each strut (Figure 2): -
      -
    • three-axis load cell
    • -
    • base and payload geophone in parallel with the struts
    • -
    • LVDT
    • -
    -
  • -
-

-
- Figure 2: Strut
-

Figure 2: Strut

-
-
- -
-

Force sensors typically work well because they are not as sensitive to payload and base dynamics, but are limited in performance by a low-frequency zero pair resulting from the cross-axial stiffness.

-
-

Performance Objective (frequency domain metric):

-
    -
  • The transmissibility should be close to 1 between 0-1.5Hz -\(-3dB < |T(\omega)| < 3db\)
  • -
  • The transmissibility should be below -20dB in the 5-20Hz range -\(|T(\omega)| < -20db\)
  • -
-

With \(|T(\omega)|\) is the Frobenius norm of the transmissibility matrix and is used to obtain a scalar performance metric.

-

Challenge:

-
    -
  • small frequency separation between the two requirements
  • -
-

Robustness:

-
    -
  • minimization of the transmissibility amplification (Bode’s “pop”) outside the performance region
  • -
-

Model:

-
    -
  • single strut axis as the cubic Stewart platform can be decomposed into 6 single-axis systems
  • -
-

-
- Figure 3: Strut model
-

Figure 3: Strut model

-
-
- -

Zero Pair when using a Force Sensor:

-
    -
  • The frequency of the zero pair corresponds to the resonance frequency of the payload mass and the “parasitic” stiffness (sum of the cross-axial, suspension, wiring stiffnesses)
  • -
  • This zero pair is usually not predictable nor repeatable
  • -
  • In this Stewart platform, this zero pair uncertainty is due to the internal wiring of the struts
  • -
-

Control:

-
    -
  • Single-axis controllers => combine them into a full six-axis controller => evaluate the full controller in terms of stability and robustness
  • -
  • Sensitivity weighted LQG controller (SWLQG) => address robustness in flexible dynamic systems
  • -
  • Three type of controller: -
      -
    • Force feedback (cell-based)
    • -
    • Inertial feedback (geophone-based)
    • -
    • Combined force/velocity feedback (load cell/geophone based)
    • -
    -
  • -
-
-

The use of multivariable and robust control on the full 6x6 hexapod does not improve performance over single-axis designs.

-
-

-
- Table 1: - Typical characteristics of sensors used for isolation in hexapod systems -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Load cellGeophone
TypeRelativeInertial
Relationship with voice coilCollocated and DualNon-Collocated and non-Dual
Open loop transfer function(+) Alternating poles/zeros(-) Large phase drop
Limitation from low-frequency zero pair(-) Yes(+) No
Sensitive to payload/base dynamics(+) No(-) Yes
Best frequency rangeHigh (low-freq zero limitation)Low (high-freq toll-off limitation)
-

Ability of a sensor-actuator pair to improve performance: -General system with input \(u\), performance \(z\), output \(y\) disturbance \(u\).

-

Given a sensor \(u\) and actuator \(y\) and a controller \(u = -K(s) y\), the closed loop disturbance to performance transfer function can be written as:

-

\[ \left[ \frac{z}{w} \right]_\text{CL} = \frac{G(s)_{zw} + K(G(s)_{zw} G(s)_{yu} - G(s)_{zu} G(s)_{yw})}{1 + K G(s)_{yu}} \]

-

In order to obtain a significant performance improvement is to use a high gain controller, provided the term \(G(s)_{zw} + K(G(s)_{zw} G(s)_{yu} - G(s)_{zu} G(s)_{yw})\) is small.

-

We can compare the transfer function from \(w\) to \(z\) with and without a high gain controller. -And we find that for \(u\) and \(y\) to be an acceptable pair for high gain control: -\[ \left| \frac{G(j\omega)_{zw} G(j\omega)_{yu} - G(j\omega)_{zu} G(j\omega)_{yw}}{K G(j\omega)_{yu}} \right| \ll |G_{zw}(j\omega)| \]

-

Controllers:

-

Force feedback:

-
    -
  • Performance limited by the low frequency zero-pair
  • -
  • It is desirable to separate the zero-pair and first most are separated by at least a decade in frequency
  • -
  • This can be achieve by reducing the cross-axis stiffness
  • -
  • If the low frequency zero pair is inverted, robustness is lost
  • -
  • Thus, the force feedback controller should be designed to have combined performance and robustness at frequencies at least a decade above the zero pair
  • -
  • The presented controller as a high pass filter at to reduce the gain below the zero-pair, a lag at low frequency to improve phase margin, and a low pass filter for roll off
  • -
-

Inertial feedback:

-
    -
  • Non-Collocated => multiple phase drops that limit the bandwidth of the controller
  • -
  • Good performance, but the transmissibility “pops” due to low phase margin and thus this indicates robustness problems
  • -
-

Combined force/velocity feedback:

-
    -
  • Use the low frequency performance advantages of geophone sensor with the high robustness advantages of the load cell sensor
  • -
  • A Single-Input-Multiple-Outputs (SIMO) controller is found using LQG
  • -
  • The performance requirements are met
  • -
  • Good robustness
  • -
-

-
- Figure 4: Experimental open loop (solid) and closed loop six-axis transmissibility using the geophone only controller (dotted), and combined geophone/load cell controller (dashed)
-

Figure 4: Experimental open loop (solid) and closed loop six-axis transmissibility using the geophone only controller (dotted), and combined geophone/load cell controller (dashed)

-
-
- -

Bibliography

-

Hauge, G., & Campbell, M., Sensors and control of a space-based six-axis vibration isolation system, Journal of Sound and Vibration, 269(3-5), 913–931 (2004). http://dx.doi.org/10.1016/s0022-460x(03)00206-2

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/holler12_instr_x_ray_nano_imagin/index.html b/public/paper/holler12_instr_x_ray_nano_imagin/index.html deleted file mode 100644 index d227482..0000000 --- a/public/paper/holler12_instr_x_ray_nano_imagin/index.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - An instrument for 3d x-ray nano-imaging - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

An instrument for 3d x-ray nano-imaging

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Nano Active Stabilization System, Positioning Stations
-
Reference
-
(Holler {\it et al.}, 2012)
-
Author(s)
-
Holler, M., Raabe, J., Diaz, A., Guizar-Sicairos, M., Quitmann, C., Menzel, A., & Bunk, O.
-
Year
-
2012
-
-

Instrument similar to the NASS. -Obtain position stability of 10nm (standard deviation).

-

-
- Figure 1: Schematic of the tomography setup
-

Figure 1: Schematic of the tomography setup

-
-
- -
    -
  • -

    Limited resolution due to instrumentation: -The resolution of ptychographic tomography remains above 100nm due to instabilities and drifts of the scanning systems.

    -
  • -
  • -

    Need of a Metrology System:

    -
    -

    To achieve positioning accuracy and stability in the nanometer range, one cannot rely on the position encoders built into individual positioning stages. -A precise exteroceptive measurement of the relative position of the optical elements with respect to the sample is mandatory. -Thus, thermal drifts and parasitic motions can be measured and compensated for.

    -
    -
  • -
  • -

    Interferometer System Concept: -The sample is aligned with the X-ray with the XYZ piezo stage. -As a result, the metrology sphere will be usually off center with respect to the rotation axis of the spindle. -That implies that the laser will not propagate back to the interferometer at all rotation angles. -A position sensitive detector (PSD) is used, it provides a measurement of the position of the sphere in the plane perpendicular to the laser. -The interferometer is positionned on top of a translation stage. The PSD information is used to close the loop so that the interferometer follows the displacement of the metrology sphere.

    -
  • -
  • -

    Feedback Loop: Using the signals from the 2 interferometers, the loop is closed to compensate low frequency vibrations and thermal drifts.

    -
  • -
-

Bibliography

-

Holler, M., Raabe, J., Diaz, A., Guizar-Sicairos, M., Quitmann, C., Menzel, A., & Bunk, O., An instrument for 3d x-ray nano-imaging, Review of Scientific Instruments, 83(7), 073703 (2012). http://dx.doi.org/10.1063/1.4737624

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/holterman05_activ_dampin_based_decoup_colloc_contr/index.html b/public/paper/holterman05_activ_dampin_based_decoup_colloc_contr/index.html deleted file mode 100644 index a130d04..0000000 --- a/public/paper/holterman05_activ_dampin_based_decoup_colloc_contr/index.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - Active damping based on decoupled collocated control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Active damping based on decoupled collocated control

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Active Damping
-
Reference
-
(Holterman & deVries, 2005)
-
Author(s)
-
Holterman, J., & deVries, T.
-
Year
-
2005
-
-

Bibliography

-

Holterman, J., & deVries, T., Active damping based on decoupled collocated control, IEEE/ASME Transactions on Mechatronics, 10(2), 135–145 (2005). http://dx.doi.org/10.1109/tmech.2005.844702

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/index.html b/public/paper/index.html deleted file mode 100644 index b8d87c7..0000000 --- a/public/paper/index.html +++ /dev/null @@ -1,398 +0,0 @@ - - - - - - Archive - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
- - - A new isotropic and decoupled 6-dof parallel manipulator - - -
- - - A review of nanometer resolution position sensors: operation and performance - - -
- - - A six-axis single-stage active vibration isolator based on stewart platform - - -
- - - A soft 6-axis active vibration isolator - - -
- - - A survey of control issues in nanopositioning - - -
- - - Active damping based on decoupled collocated control - - -
- - - Active isolation and damping of vibrations via stewart platform - - -
- - - Active structural vibration control: a review - - -
- - - Advanced motion control for precision mechatronics: control, identification, and learning of complex systems - - -
- - - Advances in internal model control technique: a review and future prospects - - -
- - - An exploration of active hard mount vibration isolation for precision equipment - - -
- - - An instrument for 3d x-ray nano-imaging - - -
- - - An intelligent control system for multiple degree-of-freedom vibration isolation - - -
- - - Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution - - -
- - - Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation - - -
- - - Control of spacecraft and aircraft - - -
- - - Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments - - -
- - - Design for precision: current status and trends - - -
- - - Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation - - -
- - - Dynamic modeling and experimental analyses of stewart platform with flexible hinges - - -
- - - Estimating the resolution of nanopositioning systems from frequency domain data - - -
- - - Force feedback versus acceleration feedback in active vibration isolation - - -
- - - Guidelines for the selection of weighting functions for h-infinity control - - -
- - - Identification and decoupling control of flexure jointed hexapods - - -
- - - Implementation challenges for multivariable control: what you did not learn in school! - - -
- - - Interferometric characterization of rotation stages for x-ray nanotomography - - -
- - - Investigation on active vibration isolation of a stewart platform with piezoelectric actuators - - -
- - - Measurement technologies for precision positioning - - -
- - - Nanometre-cutting machine using a stewart-platform parallel mechanism - - -
- - - Nanopositioning system with force feedback for high-performance tracking and vibration control - - -
- - - Nanopositioning with multiple sensors: a case study in data storage - - -
- - - Position control in lithographic equipment - - -
- - - Review of active vibration isolation strategies - - -
- - - Sensor fusion for active vibration isolation in precision equipment - - -
- - - Sensor fusion methods for high performance active vibration isolation systems - - -
- - - Sensors and control of a space-based six-axis vibration isolation system - - -
- - - Simultaneous vibration isolation and pointing control of flexure jointed hexapods - - -
- - - Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods - - -
- - - Six dof active vibration control using stewart platform with non-cubic configuration - - -
- - - Studies on stewart platform manipulator: a review - - -
- - - The stewart platform manipulator: a review - - -
- - - Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs - - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/paper/index.xml b/public/paper/index.xml deleted file mode 100644 index 766b183..0000000 --- a/public/paper/index.xml +++ /dev/null @@ -1,439 +0,0 @@ - - - - Papers on My digital brain - /paper/ - Recent content in Papers on My digital brain - Hugo -- gohugo.io - en - - - - - - A new isotropic and decoupled 6-dof parallel manipulator - /paper/legnani12_new_isotr_decoup_paral_manip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/legnani12_new_isotr_decoup_paral_manip/ - Tags Stewart Platforms Reference (Legnani {\it et al.}, 2012) Author(s) Legnani, G., Fassi, I., Giberti, H., Cinquemani, S., &amp; Tosi, D. Year 2012 Concepts of isotropy and decoupling for parallel manipulators isotropy: the kinetostatic properties (same applicable force, same possible velocity, same stiffness) are identical in all directions (e.g. cubic configuration for Stewart platform) decoupling: each DoF of the end effector can be controlled by a single actuator (not the case for the Stewart platform) Example of generated isotropic manipulator (not decoupled). - - - - A review of nanometer resolution position sensors: operation and performance - /paper/fleming13_review_nanom_resol_posit_sensor/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/fleming13_review_nanom_resol_posit_sensor/ - Tags Position Sensors Reference (Andrew Fleming, 2013) Author(s) Fleming, A. J. Year 2013 Define concise performance metric and provide expressions for errors sources (non-linearity, drift, noise) Review current position sensor technologies and compare their performance Sensor Characteristics Calibration and nonlinearity Usually quoted as a percentage of the fill-scale range (FSR): -\begin{equation} \text{mapping error (%)} = \pm 100 \frac{\max{}|e_m(v)|}{\text{FSR}} \end{equation} -With \(e_m(v)\) is the mapping error. - - - - A six-axis single-stage active vibration isolator based on stewart platform - /paper/preumont07_six_axis_singl_stage_activ/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/preumont07_six_axis_singl_stage_activ/ - Tags Vibration Isolation, Stewart Platforms, Flexible Joints Reference (Preumont {\it et al.}, 2007) Author(s) Preumont, A., Horodinca, M., Romanescu, I., Marneffe, B. d., Avraam, M., Deraemaeker, A., Bossens, F., … Year 2007 Summary: - Cubic Stewart platform (Figure 3) Provides uniform control capability Uniform stiffness in all directions minimizes the cross-coupling among actuators and sensors of different legs Flexible joints (Figure 2) Piezoelectric force sensors Voice coil actuators Decentralized feedback control approach for vibration isolation Effect of parasitic stiffness of the flexible joints on the IFF performance (Figure 1) The Stewart platform has 6 suspension modes at different frequencies. - - - - A soft 6-axis active vibration isolator - /paper/spanos95_soft_activ_vibrat_isolat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/spanos95_soft_activ_vibrat_isolat/ - Tags Stewart Platforms, Vibration Isolation Reference (Spanos {\it et al.}, 1995) Author(s) Spanos, J., Rahman, Z., &amp; Blackwood, G. Year 1995 Stewart Platform (Figure 1): - Voice Coil Flexible joints (cross-blades) Force Sensors Cubic Configuration - Figure 1: Stewart Platform - Total mass of the paylaod: 30kg Center of gravity is 9cm above the geometry center of the mount (cube&rsquo;s center?). -Limitation of the Decentralized Force Feedback: - - - - A survey of control issues in nanopositioning - /paper/devasia07_survey_contr_issues_nanop/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/devasia07_survey_contr_issues_nanop/ - Tags : - Reference (Devasia {\it et al.}, 2007) Author(s) Devasia, S., Eleftheriou, E., &amp; Moheimani, S. R. Year 2007 Talks about Scanning Tunneling Microscope (STM) and Scanning Probe Microscope (SPM) Piezoelectric actuators: Creep, Hysteresis, Vibrations, Modeling errors Interesting analysis about Bandwidth-Precision-Range tradeoffs Control approaches for piezoelectric actuators: feedforward, Feedback, Iterative, Sensorless controls - Figure 1: Tradeoffs between bandwidth, precision and range - Bibliography Devasia, S. - - - - Active damping based on decoupled collocated control - /paper/holterman05_activ_dampin_based_decoup_colloc_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/holterman05_activ_dampin_based_decoup_colloc_contr/ - Tags Active Damping Reference (Holterman &amp; deVries, 2005) Author(s) Holterman, J., &amp; deVries, T. Year 2005 Bibliography Holterman, J., &amp; deVries, T., Active damping based on decoupled collocated control, IEEE/ASME Transactions on Mechatronics, 10(2), 135–145 (2005). http://dx.doi.org/10.1109/tmech.2005.844702 ↩ - - - - Active isolation and damping of vibrations via stewart platform - /paper/hanieh03_activ_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/hanieh03_activ_stewar/ - Tags Stewart Platforms, Vibration Isolation, Active Damping Reference @phdthesis{hanieh03_activ_stewar, author = {Hanieh, Ahmed Abu}, school = {Universit{'e} Libre de Bruxelles, Brussels, Belgium}, title = {Active isolation and damping of vibrations via Stewart platform}, year = 2003, tags = {parallel robot}, } Author(s) Hanieh, A. A. Year 2003 Bibliography Hanieh, A. A., Active isolation and damping of vibrations via stewart platform (Doctoral dissertation) (2003). Universit{'e} Libre de Bruxelles, Brussels, Belgium, . - - - - Active structural vibration control: a review - /paper/alkhatib03_activ_struc_vibrat_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/alkhatib03_activ_struc_vibrat_contr/ - Tags : - Reference (Rabih Alkhatib &amp; Golnaraghi, 2003) Author(s) Alkhatib, R., &amp; Golnaraghi, M. F. Year 2003 Process of designing an active vibration control system Analyze the structure to be controled Obtain an idealized mathematical model with FEM or experimental modal analysis Reduce the model order is necessary Analyze the resulting model: dynamics properties, types of disturbances, &hellip; Quantify sensors and actuators requirements. Decide on their types and location Analyze the impact of the sensors and actuators on the overall dynamic characteristics Specify performance criteria and stability tradeoffs Device of the type of control algorythm to be employed and design a controller to meet the specifications Simulate the resulting controlled system on a computer If the controller does not meet the requirements, adjust the specifications or modify the type of controller Choose hardware and software and integrate the components on a pilot plant Formulate experiments and perform system identification and model updating Implement controller and carry out system test to evaluate the performance Feedback control Active damping The objective is to reduce the resonance peaks of the closed loop transfer function. - - - - Advanced motion control for precision mechatronics: control, identification, and learning of complex systems - /paper/oomen18_advan_motion_contr_precis_mechat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/oomen18_advan_motion_contr_precis_mechat/ - Tags Motion Control Reference (Tom Oomen, 2018) Author(s) Oomen, T. Year 2018 - Figure 1: Envisaged developments in motion systems. In traditional motion systems, the control bandwidth takes place in the rigid-body region. In the next generation systemes, flexible dynamics are foreseen to occur within the control bandwidth. - Bibliography Oomen, T., Advanced motion control for precision mechatronics: control, identification, and learning of complex systems, IEEJ Journal of Industry Applications, 7(2), 127–140 (2018). - - - - Advances in internal model control technique: a review and future prospects - /paper/saxena12_advan_inter_model_contr_techn/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/saxena12_advan_inter_model_contr_techn/ - Tags Complementary Filters Reference (Sahaj Saxena &amp; YogeshV Hote, 2012) Author(s) Saxena, S., &amp; Hote, Y. Year 2012 Proposed Filter \(F(s)\) \begin{align*} F(s) &amp;= \frac{1}{(\lambda s + 1)^n} \\\ -F(s) &amp;= \frac{n \lambda + 1}{(\lambda s + 1)^n} \end{align*} -Internal Model Control Central concept in IMC: control can be acheive only if the control system involves, either implicitly or explicitly, some representation of the process to be controlled. - - - - An exploration of active hard mount vibration isolation for precision equipment - /paper/poel10_explor_activ_hard_mount_vibrat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/poel10_explor_activ_hard_mount_vibrat/ - Tags Vibration Isolation Reference @phdthesis{poel10_explor_activ_hard_mount_vibrat, author = {van der Poel, Gerrit Wijnand}, doi = {10.3990/1.9789036530163}, isbn = {978-90-365-3016-3}, school = {University of Twente}, title = {An Exploration of Active Hard Mount Vibration Isolation for Precision Equipment}, url = {https://doi.org/10.3990/1.9789036530163}, year = 2010, year = 2010, tags = {parallel robot}, } Author(s) van der Poel, G. W. Year 2010 Bibliography van der Poel, G. W., An exploration of active hard mount vibration isolation for precision equipment (Doctoral dissertation) (2010). - - - - An instrument for 3d x-ray nano-imaging - /paper/holler12_instr_x_ray_nano_imagin/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/holler12_instr_x_ray_nano_imagin/ - Tags Nano Active Stabilization System, Positioning Stations Reference (Holler {\it et al.}, 2012) Author(s) Holler, M., Raabe, J., Diaz, A., Guizar-Sicairos, M., Quitmann, C., Menzel, A., &amp; Bunk, O. Year 2012 Instrument similar to the NASS. Obtain position stability of 10nm (standard deviation). - - Figure 1: Schematic of the tomography setup - Limited resolution due to instrumentation: The resolution of ptychographic tomography remains above 100nm due to instabilities and drifts of the scanning systems. - - - - An intelligent control system for multiple degree-of-freedom vibration isolation - /paper/geng95_intel_contr_system_multip_degree/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/geng95_intel_contr_system_multip_degree/ - Tags Stewart Platforms, Vibration Isolation Reference (Jason Geng {\it et al.}, 1995) Author(s) Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., &amp; Garba, J. A. Year 1995 - Figure 1: Local force feedback and adaptive acceleration feedback for active isolation - Bibliography Geng, Z. J., Pan, G. G., Haynes, L. S., Wada, B. K., &amp; Garba, J. A., An intelligent control system for multiple degree-of-freedom vibration isolation, Journal of Intelligent Material Systems and Structures, 6(6), 787–800 (1995). - - - - Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution - /paper/wang12_autom_marker_full_field_hard/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/wang12_autom_marker_full_field_hard/ - Tags Nano Active Stabilization System Reference (Jun Wang {\it et al.}, 2012) Author(s) Wang, J., Chen, Y. K., Yuan, Q., Tkachuk, A., Erdonmez, C., Hornberger, B., &amp; Feser, M. Year 2012 Introduction of Markers: That limits the type of samples that is studied -There is a need for markerless nano-tomography =&gt; the key requirement is the precision and stability of the positioning stages. -Passive rotational run-out error system: It uses calibrated metrology disc and capacitive sensors - - - - Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation - /paper/ito16_compar_class_high_precis_actuat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/ito16_compar_class_high_precis_actuat/ - Tags Vibration Isolation, Actuators Reference (Shingo Ito &amp; Georg Schitter, 2016) Author(s) Ito, S., &amp; Schitter, G. Year 2016 Classification of high-precision actuators Table 1: Zero/Low and High stiffness actuators Categories Pros Cons Zero stiffness No vibration transmission Large and Heavy Low stiffness High vibration isolation Typically for low load High Stiffness High control bandwidth High vibration transmission Time Delay of Piezoelectric Electronics In this paper, the piezoelectric actuator/electronics adds a time delay which is much higher than the time delay added by the voice coil/electronics. - - - - Control of spacecraft and aircraft - /paper/bryson93_contr_spacec_aircr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/bryson93_contr_spacec_aircr/ - Tags HAC-HAC Reference (Bryson, 1993) Author(s) Bryson, A. E. Year 1993 9.2.3 Roll-Off Filters Synthesizing control logic using only one vibration mode means we are consciously neglecting the higher-order vibration modes. When doing this, it is a good idea to insert &ldquo;roll-off&rdquo; into the control logic, so that the loop-transfer gain decreases rapidly with frequency beyond the control bandwidth. This reduces the possibility of destabilizing the unmodelled higher frequency dynamics (&quot;spillover&quot;). - - - - Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments - /paper/tang18_decen_vibrat_contr_voice_coil/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/tang18_decen_vibrat_contr_voice_coil/ - Tags Stewart Platforms Reference (Jie Tang {\it et al.}, 2018) Author(s) Tang, J., Cao, D., &amp; Yu, T. Year 2018 Bibliography Tang, J., Cao, D., &amp; Yu, T., Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments, Proceedings of the Institution of Mechanical Engineers, Part C: Journal of Mechanical Engineering Science, 233(1), 132–145 (2018). http://dx.doi.org/10.1177/0954406218756941 ↩ - - - - Design for precision: current status and trends - /paper/schellekens98_desig_precis/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/schellekens98_desig_precis/ - Tags Precision Engineering Reference (Schellekens {\it et al.}, 1998) Author(s) Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., &amp; Pril, W. Year 1998 Bibliography Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., &amp; Pril, W., Design for precision: current status and trends, Cirp Annals, (2), 557–586 (1998). http://dx.doi.org/10.1016/s0007-8506(07)63243-0 ↩ - - - - Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation - /paper/yang19_dynam_model_decoup_contr_flexib/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/yang19_dynam_model_decoup_contr_flexib/ - Tags Stewart Platforms, Vibration Isolation, Flexible Joints, Cubic Architecture Reference (Yang {\it et al.}, 2019) Author(s) Yang, X., Wu, H., Chen, B., Kang, S., &amp; Cheng, S. Year 2019 Discusses: - flexible-rigid model of Stewart platform the impact of joint stiffness is compensated using a displacement sensor and a force sensor then the MIMO system is decoupled in modal space and 6 SISO controllers are applied for vibration isolation using force sensors The joint stiffness impose a limitation on the control performance using force sensors as it adds a zero at low frequency in the dynamics. - - - - Dynamic modeling and experimental analyses of stewart platform with flexible hinges - /paper/jiao18_dynam_model_exper_analy_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/jiao18_dynam_model_exper_analy_stewar/ - Tags Stewart Platforms, Flexible Joints Reference (Jian Jiao {\it et al.}, 2018) Author(s) Jiao, J., Wu, Y., Yu, K., &amp; Zhao, R. Year 2018 Bibliography Jiao, J., Wu, Y., Yu, K., &amp; Zhao, R., Dynamic modeling and experimental analyses of stewart platform with flexible hinges, Journal of Vibration and Control, 25(1), 151–171 (2018). http://dx.doi.org/10.1177/1077546318772474 ↩ - - - - Estimating the resolution of nanopositioning systems from frequency domain data - /paper/fleming12_estim/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/fleming12_estim/ - Tags : - Reference (Andrew Fleming, 2012) Author(s) Fleming, A. J. Year 2012 Bibliography Fleming, A. J., Estimating the resolution of nanopositioning systems from frequency domain data, In , 2012 IEEE International Conference on Robotics and Automation (pp. ) (2012). : . ↩ - - - - Force feedback versus acceleration feedback in active vibration isolation - /paper/preumont02_force_feedb_versus_accel_feedb/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/preumont02_force_feedb_versus_accel_feedb/ - Tags Vibration Isolation Reference (Preumont {\it et al.}, 2002) Author(s) Preumont, A., A. Francois, Bossens, F., &amp; Abu-Hanieh, A. Year 2002 Summary: - Compares the force feedback and acceleration feedback for active damping The use of a force sensor always give alternating poles and zeros in the open-loop transfer function between for force actuator and the force sensor which guarantees the stability of the closed loop Acceleration feedback produces alternating poles and zeros only when the flexible structure is stiff compared to the isolation system The force applied to a rigid body is proportional to its acceleration, thus sensing the total interface force gives a measured of the absolute acceleration of the solid body. - - - - Guidelines for the selection of weighting functions for h-infinity control - /paper/bibel92_guidel_h/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/bibel92_guidel_h/ - Tags H Infinity Control Reference (Bibel &amp; Malyevac, 1992) Author(s) Bibel, J. E., &amp; Malyevac, D. S. Year 1992 Properties of feedback control - Figure 1: Control System Diagram - From the figure 1, we have: -\begin{align*} y(s) &amp;= T(s) r(s) + S(s) d(s) - T(s) n(s)\\\ -e(s) &amp;= S(s) r(s) - S(s) d(s) - S(s) n(s)\\\ -u(s) &amp;= S(s)K(s) r(s) - S(s)K(s) d(s) - S(s)K(s) n(s) \end{align*} - - - - Identification and decoupling control of flexure jointed hexapods - /paper/chen00_ident_decoup_contr_flexur_joint_hexap/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/chen00_ident_decoup_contr_flexur_joint_hexap/ - Tags Stewart Platforms, Flexible Joints Reference (Yixin Chen &amp; McInroy, 2000) Author(s) Chen, Y., &amp; McInroy, J. Year 2000 Bibliography Chen, Y., &amp; McInroy, J., Identification and decoupling control of flexure jointed hexapods, In , Proceedings 2000 ICRA. Millennium Conference. IEEE International Conference on Robotics and Automation. Symposia Proceedings (Cat. No.00CH37065) (pp. ) (2000). : . ↩ - - - - Implementation challenges for multivariable control: what you did not learn in school! - /paper/garg07_implem_chall_multiv_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/garg07_implem_chall_multiv_contr/ - Tags Multivariable Control Reference (Sanjay Garg, 2007) Author(s) Garg, S. Year 2007 Discusses: - When to use multivariable control and when not to? Two major issues with implementing multivariable control: gain scheduling and integrator wind up protection Inline simple gain and phase margin measured for SISO, &ldquo;robustness&rdquo; determination of multivariable control requires complex analyses using singular value techniques and Monte Carlo simulations. - When to use multivariable control: - - - - Interferometric characterization of rotation stages for x-ray nanotomography - /paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/ - Tags Nano Active Stabilization System, Positioning Stations Reference (Tomas Stankevic {\it et al.}, 2017) Author(s) Stankevic, T., Engblom, C., Langlois, F., Alves, F., Lestrade, A., Jobert, N., Cauchon, G., … Year 2017 Similar Station than the NASS Similar Metrology with fiber based interferometers and cylindrical reference mirror - Figure 1: Positioning Station - Thermal expansion: Stabilized down to \(5mK/h\) using passive water flow through the baseplate below the sample stage and in the interferometry reference frame. - - - - Investigation on active vibration isolation of a stewart platform with piezoelectric actuators - /paper/wang16_inves_activ_vibrat_isolat_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/wang16_inves_activ_vibrat_isolat_stewar/ - Tags Stewart Platforms, Vibration Isolation, Flexible Joints Reference (Wang {\it et al.}, 2016) Author(s) Wang, C., Xie, X., Chen, Y., &amp; Zhang, Z. Year 2016 Model of the Stewart platform: - Struts are treated as flexible beams Payload and the base are treated as flexible plates The FRF synthesis method permits to derive FRFs of the Stewart platform The model is compared with a Finite Element model and is shown to give the same results. - - - - Measurement technologies for precision positioning - /paper/gao15_measur_techn_precis_posit/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/gao15_measur_techn_precis_posit/ - Tags Position Sensors Reference (Gao {\it et al.}, 2015) Author(s) Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., … Year 2015 Bibliography Gao, W., Kim, S., Bosse, H., Haitjema, H., Chen, Y., Lu, X., Knapp, W., …, Measurement technologies for precision positioning, CIRP Annals, 64(2), 773–796 (2015). http://dx.doi.org/10.1016/j.cirp.2015.05.009 ↩ - - - - Nanometre-cutting machine using a stewart-platform parallel mechanism - /paper/furutani04_nanom_cuttin_machin_using_stewar/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/furutani04_nanom_cuttin_machin_using_stewar/ - Tags Stewart Platforms, Flexible Joints Reference (Katsushi Furutani {\it et al.}, 2004) Author(s) Furutani, K., Suzuki, M., &amp; Kudoh, R. Year 2004 Lever mechanism to amplify the motion of piezoelectric stack actuators Use of flexure joints Eddy current displacement sensors for control (decentralized) Isotropic performance (cubic configuration even if not said so) Possible sources of error: - position error of the link ends in assembly =&gt; simulation of position error and it is not significant Inaccurate modelling of the links insufficient generative force unwanted deformation of the links To minimize the errors, a calibration is done between the required leg length and the wanted platform pose. - - - - Nanopositioning system with force feedback for high-performance tracking and vibration control - /paper/fleming10_nanop_system_with_force_feedb/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/fleming10_nanop_system_with_force_feedb/ - Tags Sensor Fusion, Force Sensors Reference (Fleming, 2010) Author(s) Fleming, A. Year 2010 Summary: - The noise generated by a piezoelectric force sensor is much less than a capacitive sensor Dynamical model of a piezoelectric stack actuator and piezoelectric force sensor Noise of a piezoelectric force sensor IFF with a piezoelectric stack actuator and piezoelectric force sensor A force sensor is used as a displacement sensor below the frequency of the first zero Sensor fusion architecture with a capacitive sensor and a force sensor and using complementary filters Virtual sensor fusion architecture (called low-frequency bypass) Analog implementation of the control strategies to avoid quantization noise, finite resolution and sampling delay Model of a multi-layer monolithic piezoelectric stack actuator - - - - Nanopositioning with multiple sensors: a case study in data storage - /paper/sebastian12_nanop_with_multip_sensor/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/sebastian12_nanop_with_multip_sensor/ - Tags Sensor Fusion Reference (Abu Sebastian &amp; Angeliki Pantazi, 2012) Author(s) Sebastian, A., &amp; Pantazi, A. Year 2012 Bibliography Sebastian, A., &amp; Pantazi, A., Nanopositioning with multiple sensors: a case study in data storage, IEEE Transactions on Control Systems Technology, 20(2), 382–394 (2012). http://dx.doi.org/10.1109/tcst.2011.2177982 ↩ - - - - Position control in lithographic equipment - /paper/butler11_posit_contr_lithog_equip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/butler11_posit_contr_lithog_equip/ - Tags Multivariable Control, Positioning Stations Reference (Hans Butler, 2011) Author(s) Butler, H. Year 2011 Bibliography Butler, H., Position control in lithographic equipment, IEEE Control Systems, 31(5), 28–47 (2011). http://dx.doi.org/10.1109/mcs.2011.941882 ↩ - - - - Review of active vibration isolation strategies - /paper/collette11_review_activ_vibrat_isolat_strat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/collette11_review_activ_vibrat_isolat_strat/ - Tags Vibration Isolation Reference (Christophe Collette {\it et al.}, 2011) Author(s) Collette, C., Janssens, S., &amp; Artoos, K. Year 2011 Background and Motivations Passive Isolation Tradeoffs \[ X(s) = \underbrace{\frac{cs + k}{ms^2 + cs + k}}_{T_{wx}(s)} W(s) + \underbrace{\frac{1}{ms^2 + cs + k}}_{T_{Fx}(s)} F(s) \] - \(T_{wx}(s)\) is called the transmissibility of the isolator. It characterize the way seismic vibrations \(w\) are transmitted to the equipment. \(T_{Fx}(s)\) is called the compliance. - - - - Sensor fusion for active vibration isolation in precision equipment - /paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/ - Tags Sensor Fusion, Vibration Isolation Reference (Tjepkema {\it et al.}, 2012) Author(s) Tjepkema, D., Dijk, J. v., &amp; Soemers, H. Year 2012 Relative motion Control Control law: \(f = -G(x-w)\) -\[ \frac{x}{w} = \frac{k+G}{ms^2 + k+G} \] \[ \frac{x}{F} = \frac{1}{ms^2 + k+G} \] -Force Control Control law: \(f = -G F_a = -G \left(f-k(x-w)\right)\) -\[ \frac{x}{w} = \frac{k}{(1+G)ms^2 + k} \] \[ \frac{x}{F} = \frac{1+G}{(1+G)ms^2 + k} \] - - - - Sensor fusion methods for high performance active vibration isolation systems - /paper/collette15_sensor_fusion_method_high_perfor/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/collette15_sensor_fusion_method_high_perfor/ - Tags Sensor Fusion, Vibration Isolation Reference (Collette &amp; Matichard, 2015) Author(s) Collette, C., &amp; Matichard, F. Year 2015 In order to have good stability margins, it is common practice to collocate sensors and actuators. This ensures alternating poles and zeros along the imaginary axis. Then, each phase lag introduced by the poles is compensed by phase leag introduced by the zeroes. This guarantees stability and such system is referred to as hyperstable. - - - - Sensors and control of a space-based six-axis vibration isolation system - /paper/hauge04_sensor_contr_space_based_six/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/hauge04_sensor_contr_space_based_six/ - Tags Stewart Platforms, Vibration Isolation, Cubic Architecture Reference (Hauge &amp; Campbell, 2004) Author(s) Hauge, G., &amp; Campbell, M. Year 2004 Discusses: - Choice of sensors and control architecture Predictability and limitations of the system dynamics Two-Sensor control architecture Vibration isolation using a Stewart platform Experimental comparison of Force sensor and Inertial Sensor and associated control architecture for vibration isolation - Figure 1: Hexapod for active vibration isolation - - - - Simultaneous vibration isolation and pointing control of flexure jointed hexapods - /paper/li01_simul_vibrat_isolat_point_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/li01_simul_vibrat_isolat_point_contr/ - Tags Stewart Platforms, Vibration Isolation Reference (Xiaochun Li {\it et al.}, 2001) Author(s) Li, X., Hamann, J. C., &amp; McInroy, J. E. Year 2001 if the hexapod is designed such that the payload mass/inertia matrix (\(M_x\)) and \(J^T J\) are diagonal, the dynamics from \(u\) to \(y\) are decoupled. Bibliography Li, X., Hamann, J. C., &amp; McInroy, J. E., Simultaneous vibration isolation and pointing control of flexure jointed hexapods, In , Smart Structures and Materials 2001: Smart Structures and Integrated Systems (pp. - - - - Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods - /paper/li01_simul_fault_vibrat_isolat_point/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/li01_simul_fault_vibrat_isolat_point/ - Tags Stewart Platforms, Vibration Isolation, Cubic Architecture, Flexible Joints, Multivariable Control Reference @phdthesis{li01_simul_fault_vibrat_isolat_point, author = {Li, Xiaochun}, school = {University of Wyoming}, title = {Simultaneous, Fault-tolerant Vibration Isolation and Pointing Control of Flexure Jointed Hexapods}, year = 2001, tags = {parallel robot}, } Author(s) Li, X. Year 2001 Introduction Stewart Platform: - Cubic (mutually orthogonal) Flexure Joints =&gt; eliminate friction and backlash but add complexity to the dynamics - - - - Six dof active vibration control using stewart platform with non-cubic configuration - /paper/zhang11_six_dof/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/zhang11_six_dof/ - Tags Stewart Platforms, Vibration Isolation Reference (Zhen Zhang {\it et al.}, 2011) Author(s) Zhang, Z., Liu, J., Mao, J., Guo, Y., &amp; Ma, Y. Year 2011 Non-cubic stewart platform Flexible joints Magnetostrictive actuators Strong coupled motions along different axes Non-cubic architecture =&gt; permits to have larger workspace which was required Structure parameters (radius of plates, length of struts) are determined by optimization of the condition number of the Jacobian matrix Accelerometers for active isolation Adaptive FIR filters for active isolation control - - - - Studies on stewart platform manipulator: a review - /paper/furqan17_studies_stewar_platf_manip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/furqan17_studies_stewar_platf_manip/ - Tags Stewart Platforms Reference (Mohd Furqan {\it et al.}, 2017) Author(s) Furqan, M., Suhaib, M., &amp; Ahmad, N. Year 2017 Lots of references. -Bibliography Furqan, M., Suhaib, M., &amp; Ahmad, N., Studies on stewart platform manipulator: a review, Journal of Mechanical Science and Technology, 31(9), 4459–4470 (2017). http://dx.doi.org/10.1007/s12206-017-0846-1 ↩ - - - - The stewart platform manipulator: a review - /paper/dasgupta00_stewar_platf_manip/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/dasgupta00_stewar_platf_manip/ - Tags Stewart Platforms Reference (Bhaskar Dasgupta &amp; Mruthyunjaya, 2000) Author(s) Dasgupta, B., &amp; Mruthyunjaya, T. Year 2000 -Table 1: Parallel VS serial manipulators Advantages Disadvantages Serial Manoeuverability Poor precision Large workspace Bends under high load Vibrate at high speed Parallel High stiffness Small workspace Good dynamic performances Precise positioning The generalized Stewart platforms consists of two rigid bodies (referred to as the base and the platoform) connected through six extensible legs, each with sherical joints at both ends. - - - - Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs - /paper/collette14_vibrat/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/collette14_vibrat/ - Tags Vibration Isolation, Sensor Fusion Reference (Collette &amp; Matichard, 2014) Author(s) Collette, C., &amp; Matichard, F. Year 2014 Introduction Sensor fusion is used to combine the benefits of different types of sensors: - Relative sensor for DC positioning capability at low frequency Inertial sensors for isolation at high frequency Force sensor / collocated sensor to improve the robustness Different types of sensors In this paper, three types of sensors are used. - - - - \ No newline at end of file diff --git a/public/paper/ito16_compar_class_high_precis_actuat/index.html b/public/paper/ito16_compar_class_high_precis_actuat/index.html deleted file mode 100644 index d5592a3..0000000 --- a/public/paper/ito16_compar_class_high_precis_actuat/index.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Vibration Isolation, Actuators
-
Reference
-
(Shingo Ito & Georg Schitter, 2016)
-
Author(s)
-
Ito, S., & Schitter, G.
-
Year
-
2016
-
-

Classification of high-precision actuators

-
- Table 1: - Zero/Low and High stiffness actuators -
- - - - - - - - - - - - - - - - - - - - - - - - - -
CategoriesProsCons
Zero stiffnessNo vibration transmissionLarge and Heavy
Low stiffnessHigh vibration isolationTypically for low load
High StiffnessHigh control bandwidthHigh vibration transmission
-

Time Delay of Piezoelectric Electronics

-

In this paper, the piezoelectric actuator/electronics adds a time delay which is much higher than the time delay added by the voice coil/electronics.

-

Definition of low-stiffness and high-stiffness actuator

-
    -
  • Low Stiffness actuator is defined as the ones where the transmissibility stays below 0dB at all frequency
  • -
  • High Stiffness actuator is defined as the ones where the transmissibility goes above 0dB at some frequency
  • -
-

-
- Figure 1: Definition of low-stiffness and high-stiffness actuator
-

Figure 1: Definition of low-stiffness and high-stiffness actuator

-
-
- -

Low-Stiffness / High-Stiffness characteristics

-
    -
  • The low stiffness actuators achieve smooth transition from active isolation to passive isolation.
  • -
  • The high stiffness actuators can have a gap between the passive and active isolation vibration where the vibrations are amplified in a certain frequency band.
  • -
-

Controller Design

-

-
- Figure 2: Obtained transmissibility
-

Figure 2: Obtained transmissibility

-
-
- -

Discussion

-

The stiffness requirement for low-stiffness actuators can be rephrased in the frequency domain as: “the cross-over frequency of the sensitivity function of the feedback system must be larger than \(\sqrt{2} \omega_r\) with \(\omega_r\) is the resonant frequency of the uncontrolled system”.

-

In practice, this is difficult to achieve with piezoelectric actuators as their first resonant frequency \(\omega_r\) is too close to other resonant frequencies to ensure close-loop stability. -In contrast, the frequency band between the first and the other resonances of Lorentz actuators can be broad by design making them more suitable to construct a low-stiffness actuators.

-

Bibliography

-

Ito, S., & Schitter, G., Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation, IEEE/ASME Transactions on Mechatronics, 21(2), 1169–1178 (2016). http://dx.doi.org/10.1109/tmech.2015.2478658

- - - -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/jiao18_dynam_model_exper_analy_stewar/index.html b/public/paper/jiao18_dynam_model_exper_analy_stewar/index.html deleted file mode 100644 index 8d10487..0000000 --- a/public/paper/jiao18_dynam_model_exper_analy_stewar/index.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - Dynamic modeling and experimental analyses of stewart platform with flexible hinges - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Dynamic modeling and experimental analyses of stewart platform with flexible hinges

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Flexible Joints
-
Reference
-
(Jian Jiao {\it et al.}, 2018)
-
Author(s)
-
Jiao, J., Wu, Y., Yu, K., & Zhao, R.
-
Year
-
2018
-
-

Bibliography

-

Jiao, J., Wu, Y., Yu, K., & Zhao, R., Dynamic modeling and experimental analyses of stewart platform with flexible hinges, Journal of Vibration and Control, 25(1), 151–171 (2018). http://dx.doi.org/10.1177/1077546318772474

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/legnani12_new_isotr_decoup_paral_manip/index.html b/public/paper/legnani12_new_isotr_decoup_paral_manip/index.html deleted file mode 100644 index 89ff116..0000000 --- a/public/paper/legnani12_new_isotr_decoup_paral_manip/index.html +++ /dev/null @@ -1,221 +0,0 @@ - - - - - - A new isotropic and decoupled 6-dof parallel manipulator - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

A new isotropic and decoupled 6-dof parallel manipulator

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms
-
Reference
-
(Legnani {\it et al.}, 2012)
-
Author(s)
-
Legnani, G., Fassi, I., Giberti, H., Cinquemani, S., & Tosi, D.
-
Year
-
2012
-
-
    -
  • Concepts of isotropy and decoupling for parallel manipulators
  • -
  • isotropy: the kinetostatic properties (same applicable force, same possible velocity, same stiffness) are identical in all directions (e.g. cubic configuration for Stewart platform)
  • -
  • decoupling: each DoF of the end effector can be controlled by a single actuator (not the case for the Stewart platform)
  • -
-

Example of generated isotropic manipulator (not decoupled).

-

-
- Figure 1: Location of the leg axes using an isotropy generator
-

Figure 1: Location of the leg axes using an isotropy generator

-
-
- -

-
- Figure 2: Isotropic configuration
-

Figure 2: Isotropic configuration

-
-
- -

Bibliography

-

Legnani, G., Fassi, I., Giberti, H., Cinquemani, S., & Tosi, D., A new isotropic and decoupled 6-dof parallel manipulator, Mechanism and Machine Theory, 58(nil), 64–81 (2012). http://dx.doi.org/10.1016/j.mechmachtheory.2012.07.008

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/li01_simul_fault_vibrat_isolat_point/index.html b/public/paper/li01_simul_fault_vibrat_isolat_point/index.html deleted file mode 100644 index 9a49a6e..0000000 --- a/public/paper/li01_simul_fault_vibrat_isolat_point/index.html +++ /dev/null @@ -1,462 +0,0 @@ - - - - - - Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation, Cubic Architecture, Flexible Joints, Multivariable Control
-
Reference
-
@phdthesis{li01_simul_fault_vibrat_isolat_point, -author = {Li, Xiaochun}, -school = {University of Wyoming}, -title = {Simultaneous, Fault-tolerant Vibration Isolation and -Pointing Control of Flexure Jointed Hexapods}, -year = 2001, -tags = {parallel robot}, -}
-
Author(s)
-
Li, X.
-
Year
-
2001
-
-

Introduction

-

Stewart Platform:

-
    -
  • Cubic (mutually orthogonal)
  • -
  • Flexure Joints => eliminate friction and backlash but add complexity to the dynamics
  • -
-

-
- Figure 1: Flexure jointed Stewart platform used for analysis and control
-

Figure 1: Flexure jointed Stewart platform used for analysis and control

-
-
- -

Goal:

-
    -
  • Precise pointing in two axes (sub micro-radians)
  • -
  • simultaneously, providing both passive and active vibration isolation in six axes
  • -
-

Jacobian Analysis: -\[ \delta \mathcal{L} = J \delta \mathcal{X} \] -The origin of \(\{P\}\) is taken as the center of mass of the payload.

-

Decoupling: -If we refine the (force) inputs and (displacement) outputs as shown in Figure 2 or in Figure 3, we obtain a decoupled plant provided that:

-
    -
  1. the payload mass/inertia matrix must be diagonal (the CoM is coincident with the origin of frame \(\{P\}\))
  2. -
  3. the geometry of the hexapod and the attachment of the payload to the hexapod must be carefully chosen
  4. -
-
-

For instance, if the hexapod has a mutually orthogonal geometry (cubic configuration), the payload’s center of mass must coincide with the center of the cube formed by the orthogonal struts.

-
-

-
- Figure 2: Decoupling the dynamics of the Stewart Platform using the Jacobians
-

Figure 2: Decoupling the dynamics of the Stewart Platform using the Jacobians

-
-
- -

-
- Figure 3: Decoupling the dynamics of the Stewart Platform using the Jacobians
-

Figure 3: Decoupling the dynamics of the Stewart Platform using the Jacobians

-
-
- -

Simultaneous Vibration Isolation and Pointing Control

-

Basic idea:

-
    -
  • acceleration feedback is used to provide high-frequency vibration isolation
  • -
  • cartesian pointing feedback can be used to provide low-frequency pointing
  • -
-

The compensation is divided in frequency because:

-
    -
  • pointing sensors often have low bandwidth
  • -
  • acceleration sensors often have a poor low frequency response
  • -
-

The control bandwidth is divided as follows:

-
    -
  • low-frequency disturbances as attenuated and tracking is accomplished by feedback from low bandwidth pointing sensors
  • -
  • mid-frequency disturbances are attenuated by feedback from band-pass sensors like accelerometer or load cells
  • -
  • high-frequency disturbances are attenuated by passive isolation techniques
  • -
-

Vibration Isolation

-

The system is decoupled into six independent SISO subsystems using the architecture shown in Figure 4.

-

-
- Figure 4: Figure caption
-

Figure 4: Figure caption

-
-
- -

One of the subsystem plant transfer function is shown in Figure 4

-

-
- Figure 5: Plant transfer function of one of the SISO subsystem for Vibration Control
-

Figure 5: Plant transfer function of one of the SISO subsystem for Vibration Control

-
-
- -

Each compensator is designed using simple loop-shaping techniques.

-

The unity control bandwidth of the isolation loop is designed to be from 5Hz to 50Hz.

-
-

Despite a reasonably good match between the modeled and the measured transfer functions, the model based decoupling algorithm does not produce the expected decoupling. -Only about 20 dB separation is achieve between the diagonal and off-diagonal responses.

-
-

Pointing Control

-

A block diagram of the pointing control system is shown in Figure 6.

-

-
- Figure 6: Figure caption
-

Figure 6: Figure caption

-
-
- -

The plant is decoupled into two independent SISO subsystems. -The compensators are design with inverse-dynamics methods.

-

The unity control bandwidth of the pointing loop is designed to be from 0Hz to 20Hz.

-

A feedforward control is added as shown in Figure 7.

-

-
- Figure 7: Feedforward control
-

Figure 7: Feedforward control

-
-
- -

Simultaneous Control

-

The simultaneous vibration isolation and pointing control is approached in two ways:

-
    -
  1. design and implement the vibration isolation control first, identify the pointing plant when the isolation loops are closed, then implement the pointing compensators
  2. -
  3. the reverse design order
  4. -
-

Figure 8 shows a parallel control structure where \(G_1(s)\) is the dynamics from input force to output strut length.

-

-
- Figure 8: A parallel scheme
-

Figure 8: A parallel scheme

-
-
- -

The transfer function matrix for the pointing loop after the vibration isolation is closed is still decoupled. The same happens when closing the pointing loop first and looking at the transfer function matrix of the vibration isolation.

-

The effect of the isolation loop on the pointing loop is large around the natural frequency of the plant as shown in Figure 9.

-

-
- Figure 9: \(\theta_x/\theta_{x_d}\) transfer function with the isolation loop closed (simulation)
-

Figure 9: \(\theta_x/\theta_{x_d}\) transfer function with the isolation loop closed (simulation)

-
-
- -

The effect of pointing control on the isolation plant has not much effect.

-
-

The interaction between loops may affect the transfer functions of the first closed loop, and thus affect its relative stability.

-
-

The dynamic interaction effect:

-
    -
  • only happens in the unity bandwidth of the loop transmission of the first closed loop.
  • -
  • affect the closed loop transmission of the loop first closed (see Figures 10 and 11)
  • -
-

As shown in Figure 10, the peak resonance of the pointing loop increase after the isolation loop is closed. -The resonances happen at both crossovers of the isolation loop (15Hz and 50Hz) and they may show of loss of robustness.

-

-
- Figure 10: Closed-loop transfer functions \(\theta_y/\theta_{y_d}\) of the pointing loop before and after the vibration isolation loop is closed
-

Figure 10: Closed-loop transfer functions \(\theta_y/\theta_{y_d}\) of the pointing loop before and after the vibration isolation loop is closed

-
-
- -

The same happens when first closing the vibration isolation loop and after the pointing loop (Figure 11). -The first peak resonance of the vibration isolation loop at 15Hz is increased when closing the pointing loop.

-

-
- Figure 11: Closed-loop transfer functions of the vibration isolation loop before and after the pointing control loop is closed
-

Figure 11: Closed-loop transfer functions of the vibration isolation loop before and after the pointing control loop is closed

-
-
- -
-

The isolation loop adds a second resonance peak at its high-frequency crossover in the pointing closed-loop transfer function, which may cause instability. -Thus, it is recommended to design and implement the isolation control system first, and then identify the pointing plant with the isolation loop closed.

-
-

Experimental results

-

Two hexapods are stacked (Figure 12):

-
    -
  • the bottom hexapod is used to generate disturbances matching candidate applications
  • -
  • the top hexapod provide simultaneous vibration isolation and pointing control
  • -
-

-
- Figure 12: Stacked Hexapods
-

Figure 12: Stacked Hexapods

-
-
- -

Using the vibration isolation control alone, no attenuation is achieved below 1Hz as shown in figure 13.

-

-
- Figure 13: Vibration isolation control: open-loop (solid) vs. closed-loop (dashed)
-

Figure 13: Vibration isolation control: open-loop (solid) vs. closed-loop (dashed)

-
-
- -

The simultaneous control is of dual use:

-
    -
  • it provide simultaneous pointing and isolation control
  • -
  • it can also be used to expand the bandwidth of the isolation control to low frequencies because the pointing loops suppress pointing errors due to both base vibrations and tracking
  • -
-

The results of simultaneous control is shown in Figure 14 where the bandwidth of the isolation control is expanded to very low frequency.

-

-
- Figure 14: Simultaneous control: open-loop (solid) vs. closed-loop (dashed)
-

Figure 14: Simultaneous control: open-loop (solid) vs. closed-loop (dashed)

-
-
- -

Future research areas

-

Proposed future research areas include:

-
    -
  • Include base dynamics in the control: -The base dynamics is here neglected since the movements of the base are very small. -The base dynamics could be measured by mounting accelerometers at the bottom of each strut or by using force sensors. -It then could be included in the feedforward path.
  • -
  • Robust control and MIMO design
  • -
  • New decoupling method: -The proposed decoupling algorithm do not produce the expected decoupling, despite a reasonably good match between the modeled and the measured transfer functions. -Incomplete decoupling increases the difficulty in designing the controller. -New decoupling methods are needed. -These methods must be static in order to be implemented practically on precision hexapods
  • -
  • Identification: -Many advanced control methods require a more accurate model or identified plant. -A closed-loop identification method is propose to solve some problems with the current identification methods used.
  • -
  • Other possible sensors: -Many sensors can be used to expand the utility of the Stewart platform: -
      -
    • 3-axis load cells to investigate the Coriolis and centripetal terms and new decoupling methods
    • -
    • LVDT to provide differential position of the hexapod payload with respect to the base
    • -
    • Geophones to provide payload and base velocity information
    • -
    -
  • -
-

Bibliography

-

Li, X., Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods (Doctoral dissertation) (2001). University of Wyoming, .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/li01_simul_vibrat_isolat_point_contr/index.html b/public/paper/li01_simul_vibrat_isolat_point_contr/index.html deleted file mode 100644 index 575cc8a..0000000 --- a/public/paper/li01_simul_vibrat_isolat_point_contr/index.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - Simultaneous vibration isolation and pointing control of flexure jointed hexapods - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Simultaneous vibration isolation and pointing control of flexure jointed hexapods

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation
-
Reference
-
(Xiaochun Li {\it et al.}, 2001)
-
Author(s)
-
Li, X., Hamann, J. C., & McInroy, J. E.
-
Year
-
2001
-
-
    -
  • if the hexapod is designed such that the payload mass/inertia matrix (\(M_x\)) and \(J^T J\) are diagonal, the dynamics from \(u\) to \(y\) are decoupled.
  • -
-

Bibliography

-

Li, X., Hamann, J. C., & McInroy, J. E., Simultaneous vibration isolation and pointing control of flexure jointed hexapods, In , Smart Structures and Materials 2001: Smart Structures and Integrated Systems (pp. ) (2001). : .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/oomen18_advan_motion_contr_precis_mechat/index.html b/public/paper/oomen18_advan_motion_contr_precis_mechat/index.html deleted file mode 100644 index fa710ce..0000000 --- a/public/paper/oomen18_advan_motion_contr_precis_mechat/index.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - Advanced motion control for precision mechatronics: control, identification, and learning of complex systems - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Advanced motion control for precision mechatronics: control, identification, and learning of complex systems

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Motion Control
-
Reference
-
(Tom Oomen, 2018)
-
Author(s)
-
Oomen, T.
-
Year
-
2018
-
-

-
- Figure 1: Envisaged developments in motion systems. In traditional motion systems, the control bandwidth takes place in the rigid-body region. In the next generation systemes, flexible dynamics are foreseen to occur within the control bandwidth.
-

Figure 1: Envisaged developments in motion systems. In traditional motion systems, the control bandwidth takes place in the rigid-body region. In the next generation systemes, flexible dynamics are foreseen to occur within the control bandwidth.

-
-
- -

Bibliography

-

Oomen, T., Advanced motion control for precision mechatronics: control, identification, and learning of complex systems, IEEJ Journal of Industry Applications, 7(2), 127–140 (2018). http://dx.doi.org/10.1541/ieejjia.7.127

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/poel10_explor_activ_hard_mount_vibrat/index.html b/public/paper/poel10_explor_activ_hard_mount_vibrat/index.html deleted file mode 100644 index 46081ee..0000000 --- a/public/paper/poel10_explor_activ_hard_mount_vibrat/index.html +++ /dev/null @@ -1,225 +0,0 @@ - - - - - - An exploration of active hard mount vibration isolation for precision equipment - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

An exploration of active hard mount vibration isolation for precision equipment

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Vibration Isolation
-
Reference
-
@phdthesis{poel10_explor_activ_hard_mount_vibrat, -author = {van der Poel, Gerrit Wijnand}, -doi = {10.3990/1.9789036530163}, -isbn = {978-90-365-3016-3}, -school = {University of Twente}, -title = {An Exploration of Active Hard Mount Vibration Isolation for -Precision Equipment}, -url = {https://doi.org/10.3990/1.9789036530163}, -year = 2010, -year = 2010, -tags = {parallel robot}, -}
-
Author(s)
-
van der Poel, G. W.
-
Year
-
2010
-
-

Bibliography

-

van der Poel, G. W., An exploration of active hard mount vibration isolation for precision equipment (Doctoral dissertation) (2010). University of Twente, .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/preumont02_force_feedb_versus_accel_feedb/index.html b/public/paper/preumont02_force_feedb_versus_accel_feedb/index.html deleted file mode 100644 index aac9e93..0000000 --- a/public/paper/preumont02_force_feedb_versus_accel_feedb/index.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - Force feedback versus acceleration feedback in active vibration isolation - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Force feedback versus acceleration feedback in active vibration isolation

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Vibration Isolation
-
Reference
-
(Preumont {\it et al.}, 2002)
-
Author(s)
-
Preumont, A., A. Francois, Bossens, F., & Abu-Hanieh, A.
-
Year
-
2002
-
-

Summary:

-
    -
  • Compares the force feedback and acceleration feedback for active damping
  • -
  • The use of a force sensor always give alternating poles and zeros in the open-loop transfer function between for force actuator and the force sensor which guarantees the stability of the closed loop
  • -
  • Acceleration feedback produces alternating poles and zeros only when the flexible structure is stiff compared to the isolation system
  • -
-

The force applied to a rigid body is proportional to its acceleration, thus sensing the total interface force gives a measured of the absolute acceleration of the solid body. -Thus force feedback and acceleration feedback are equivalent for solid bodies. -When there is a flexible payload, the two sensing options are not longer equivalent.

-
    -
  • For light payload (Figure 1), the acceleration feedback gives larger damping on the higher mode.
  • -
  • For heavy payload (Figure 2), the acceleration feedback do not give alternating poles and zeros and thus for high control gains, the system becomes unstable
  • -
-

-
- Figure 1: Root locus for light flexible payload, (a) Force feedback, (b) acceleration feedback
-

Figure 1: Root locus for light flexible payload, (a) Force feedback, (b) acceleration feedback

-
-
- -

-
- Figure 2: Root locus for heavy flexible payload, (a) Force feedback, (b) acceleration feedback
-

Figure 2: Root locus for heavy flexible payload, (a) Force feedback, (b) acceleration feedback

-
-
- -

Guaranteed stability of the force feedback:

-
-

If two arbitrary flexible, undamped structures are connected with a single-axis soft isolator with force feedback, the poles and zeros of the open-loop transfer function from the force actuator to the force sensor alternate on the imaginary axis.

-
-

The same is true for the transfer function from the force actuator to the relative displacement of the actuator.

-
-

According to physical interpretation of the zeros, they represent the resonances of the subsystem constrained by the sensor and the actuator.

-
-

Bibliography

-

Preumont, A., A. Fran\ccois, Bossens, F., & Abu-Hanieh, A., Force feedback versus acceleration feedback in active vibration isolation, Journal of Sound and Vibration, 257(4), 605–613 (2002). http://dx.doi.org/10.1006/jsvi.2002.5047

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/preumont07_six_axis_singl_stage_activ/index.html b/public/paper/preumont07_six_axis_singl_stage_activ/index.html deleted file mode 100644 index c3e353c..0000000 --- a/public/paper/preumont07_six_axis_singl_stage_activ/index.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - A six-axis single-stage active vibration isolator based on stewart platform - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

A six-axis single-stage active vibration isolator based on stewart platform

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Vibration Isolation, Stewart Platforms, Flexible Joints
-
Reference
-
(Preumont {\it et al.}, 2007)
-
Author(s)
-
Preumont, A., Horodinca, M., Romanescu, I., Marneffe, B. d., Avraam, M., Deraemaeker, A., Bossens, F., …
-
Year
-
2007
-
-

Summary:

-
    -
  • Cubic Stewart platform (Figure 3) -
      -
    • Provides uniform control capability
    • -
    • Uniform stiffness in all directions
    • -
    • minimizes the cross-coupling among actuators and sensors of different legs
    • -
    -
  • -
  • Flexible joints (Figure 2)
  • -
  • Piezoelectric force sensors
  • -
  • Voice coil actuators
  • -
  • Decentralized feedback control approach for vibration isolation
  • -
  • Effect of parasitic stiffness of the flexible joints on the IFF performance (Figure 1)
  • -
  • The Stewart platform has 6 suspension modes at different frequencies. -Thus the gain of the IFF controller cannot be optimal for all the modes. -It is better if all the modes of the platform are near to each other.
  • -
  • Discusses the design of the legs in order to maximize the natural frequency of the local modes.
  • -
  • To estimate the isolation performance of the Stewart platform, a scalar indicator is defined as the Frobenius norm of the transmissibility matrix
  • -
-

-
- Figure 1: Root locus with IFF with no parasitic stiffness and with parasitic stiffness
-

Figure 1: Root locus with IFF with no parasitic stiffness and with parasitic stiffness

-
-
- -

-
- Figure 2: Flexible joints used for the Stewart platform
-

Figure 2: Flexible joints used for the Stewart platform

-
-
- -

-
- Figure 3: Stewart platform
-

Figure 3: Stewart platform

-
-
- -

Bibliography

-

Preumont, A., Horodinca, M., Romanescu, I., Marneffe, B. d., Avraam, M., Deraemaeker, A., Bossens, F., …, A six-axis single-stage active vibration isolator based on stewart platform, Journal of Sound and Vibration, 300(3-5), 644–661 (2007). http://dx.doi.org/10.1016/j.jsv.2006.07.050

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/saxena12_advan_inter_model_contr_techn/index.html b/public/paper/saxena12_advan_inter_model_contr_techn/index.html deleted file mode 100644 index a46fd71..0000000 --- a/public/paper/saxena12_advan_inter_model_contr_techn/index.html +++ /dev/null @@ -1,265 +0,0 @@ - - - - - - Advances in internal model control technique: a review and future prospects - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Advances in internal model control technique: a review and future prospects

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Complementary Filters
-
Reference
-
(Sahaj Saxena & YogeshV Hote, 2012)
-
Author(s)
-
Saxena, S., & Hote, Y.
-
Year
-
2012
-
-

Proposed Filter \(F(s)\)

-

\begin{align*} -F(s) &= \frac{1}{(\lambda s + 1)^n} \\\
-F(s) &= \frac{n \lambda + 1}{(\lambda s + 1)^n} -\end{align*}

-

Internal Model Control

-

Central concept in IMC: control can be acheive only if the control system involves, either implicitly or explicitly, some representation of the process to be controlled.

-

Basic IMC structure

-

IMC can be considered as a special case of classical feedback structure with plant \(G(s)\) and controller \(C(s)\).

-

The plan model \(G_M(s)\) is added and substracted into the feedback path of feedback controller.

-

The structure can then be modified and we obtain a new controller \(Q(s)\).

-

IMC is related to the classical controller through:

-

\begin{align*} -Q(s) = \frac{C(s)}{1+G_M(s)C(s)} \\\
-C(s) = \frac{Q(s)}{1-G_M(s)Q(s)} -\end{align*}

-

Internal model control system is characterized by a control device consisting of the controller \(Q(s)\) and a predictive model \(G_M(s)\) of the process (internal model). -The internal model loop uses the difference between the outputs of the process \(G(s)\) to be controlled and the internal model. -This difference \(E(s)\) represents the effect of disturbance and mismatch of the model.

-

Features of IMC Structure

-

Three properties:

-
    -
  • Dual stability: assume that, if the plant model is perfect (\(G_M(s) = G(s)\)) and disturbance is absent, the system becomes open-loop and the closed-loop stability is characterized by the stability of \(G(s)\) and \(Q(s)\)
  • -
  • Perfect control: assume that, if the controller is equal to the model inverse (\(Q(s) = G_M^{-1}\)) and \(G(s) = G_M(s)\) with \(G(s)\) stable, then the system is perfectly controlled.
  • -
  • Zero Offset: assume that, if the steady state gain of the controller is equal to the inverse of model gain, then offset free control is obtained for constant step of ramp type inputs and disturbances. As expected, the equivalent classical controller leads to integral action.
  • -
-

Issues:

-
    -
  • the plant model is never perfect
  • -
  • inverting the model can cause instability
  • -
  • control signal may have large magnitude
  • -
-

Design procedure for IMC Compensator

-
    -
  1. factorize the plant model as \(G_M(s) = G_{M-}(s)G_{M+}(s)\) where \(G_{M-}(s)\) is invertible and minimum phase and \(G_{M+}(s)\) is non-invertible and contains all non-minimum phase elements (delays, RHP zeros). Then, the controller is the inverse of the invertible portion of the plant model: \(Q_1(s) = G_{M-}^{-1}(s)\).
  2. -
  3. Filter selection: to make the controller proper and robust against the plant-model mismatch, a low pass filter of the form \(F(s) = \frac{n \lambda}{(\lambda s + 1)^n}\) is augmented with the inverted model \(Q_1(s)\): \(Q(s) = Q_1(s) F(s)\). \(\lambda\) is a tuning parameter which has an inverse relationship with the speed of closed loop response, \(n\) is selected such that \(Q(s)\) becomes proper.
  4. -
-

Issues in IMC

-

Filter selection and tuning guidelines

-

Some advantages and future prospects

-

Conclusion

-

The interesting feature regarding IMC is that the design scheme is identical to the open-loop control design procedure and the implementation of IMC results in a feedback system, thereby copying the disturbances and parameter uncertainties, while open-loop control is not.

-

Bibliography

-

Saxena, S., & Hote, Y., Advances in internal model control technique: a review and future prospects, IETE Technical Review, 29(6), 461 (2012). http://dx.doi.org/10.4103/0256-4602.105001

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/schellekens98_desig_precis/index.html b/public/paper/schellekens98_desig_precis/index.html deleted file mode 100644 index b01d998..0000000 --- a/public/paper/schellekens98_desig_precis/index.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - Design for precision: current status and trends - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Design for precision: current status and trends

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Precision Engineering
-
Reference
-
(Schellekens {\it et al.}, 1998)
-
Author(s)
-
Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., & Pril, W.
-
Year
-
1998
-
-

Bibliography

-

Schellekens, P., Rosielle, N., Vermeulen, H., Vermeulen, M., Wetzels, S., & Pril, W., Design for precision: current status and trends, Cirp Annals, (2), 557–586 (1998). http://dx.doi.org/10.1016/s0007-8506(07)63243-0

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/sebastian12_nanop_with_multip_sensor/index.html b/public/paper/sebastian12_nanop_with_multip_sensor/index.html deleted file mode 100644 index 686d94e..0000000 --- a/public/paper/sebastian12_nanop_with_multip_sensor/index.html +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - Nanopositioning with multiple sensors: a case study in data storage - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Nanopositioning with multiple sensors: a case study in data storage

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Sensor Fusion
-
Reference
-
(Abu Sebastian & Angeliki Pantazi, 2012)
-
Author(s)
-
Sebastian, A., & Pantazi, A.
-
Year
-
2012
-
-

Bibliography

-

Sebastian, A., & Pantazi, A., Nanopositioning with multiple sensors: a case study in data storage, IEEE Transactions on Control Systems Technology, 20(2), 382–394 (2012). http://dx.doi.org/10.1109/tcst.2011.2177982

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/spanos95_soft_activ_vibrat_isolat/index.html b/public/paper/spanos95_soft_activ_vibrat_isolat/index.html deleted file mode 100644 index d268642..0000000 --- a/public/paper/spanos95_soft_activ_vibrat_isolat/index.html +++ /dev/null @@ -1,259 +0,0 @@ - - - - - - A soft 6-axis active vibration isolator - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

A soft 6-axis active vibration isolator

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation
-
Reference
-
(Spanos {\it et al.}, 1995)
-
Author(s)
-
Spanos, J., Rahman, Z., & Blackwood, G.
-
Year
-
1995
-
-

Stewart Platform (Figure 1):

-
    -
  • Voice Coil
  • -
  • Flexible joints (cross-blades)
  • -
  • Force Sensors
  • -
  • Cubic Configuration
  • -
-

-
- Figure 1: Stewart Platform
-

Figure 1: Stewart Platform

-
-
- -

Total mass of the paylaod: 30kg -Center of gravity is 9cm above the geometry center of the mount (cube’s center?).

-

Limitation of the Decentralized Force Feedback:

-
    -
  • high frequency pole due to internal resonances of the struts
  • -
  • low frequency zero due to the rotational stiffness of the flexible joints
  • -
-

After redesign of the struts:

-
    -
  • high frequency pole at 4.7kHz
  • -
  • low frequency zero at 2.6Hz but non-minimum phase (not explained). -Small viscous damping material in the cross blade flexures made the zero minimum phase again.
  • -
-

-
- Figure 2: Experimentally measured transfer function from voice coil drive voltage to collocated load cell output voltage
-

Figure 2: Experimentally measured transfer function from voice coil drive voltage to collocated load cell output voltage

-
-
- -

The controller used consisted of:

-
    -
  • second order low pass filter to gain stabilize the plant at high frequencies and provide steep roll-off
  • -
  • first order lead filter to provide adequate phase margin at the high frequency crossover
  • -
  • first order lag filter to provide adequate phase margin at the low frequency crossover
  • -
  • a first order high pass filter to attenuate the excess gain resulting from the low frequency zero
  • -
-

The results in terms of transmissibility are shown in Figure 3.

-

-
- Figure 3: Experimentally measured Frobenius norm of the 6-axis transmissibility
-

Figure 3: Experimentally measured Frobenius norm of the 6-axis transmissibility

-
-
- -

Bibliography

-

Spanos, J., Rahman, Z., & Blackwood, G., A soft 6-axis active vibration isolator, In , Proceedings of 1995 American Control Conference - ACC'95 (pp. ) (1995). : .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/index.html b/public/paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/index.html deleted file mode 100644 index 50728eb..0000000 --- a/public/paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/index.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - Interferometric characterization of rotation stages for x-ray nanotomography - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Interferometric characterization of rotation stages for x-ray nanotomography

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Nano Active Stabilization System, Positioning Stations
-
Reference
-
(Tomas Stankevic {\it et al.}, 2017)
-
Author(s)
-
Stankevic, T., Engblom, C., Langlois, F., Alves, F., Lestrade, A., Jobert, N., Cauchon, G., …
-
Year
-
2017
-
-
    -
  • Similar Station than the NASS
  • -
  • Similar Metrology with fiber based interferometers and cylindrical reference mirror
  • -
-

-
- Figure 1: Positioning Station
-

Figure 1: Positioning Station

-
-
- -
    -
  • Thermal expansion: Stabilized down to \(5mK/h\) using passive water flow through the baseplate below the sample stage and in the interferometry reference frame.
  • -
  • Controller: Two Independant PID loops
  • -
  • Repeatable errors => feedforward (Look Up Table)
  • -
  • Non-repeatable errors => feedback
  • -
  • Result: 40nm runout error
  • -
-

Bibliography

-

Stankevic, T., Engblom, C., Langlois, F., Alves, F., Lestrade, A., Jobert, N., Cauchon, G., …, Interferometric characterization of rotation stages for x-ray nanotomography, Review of Scientific Instruments, 88(5), 053703 (2017). http://dx.doi.org/10.1063/1.4983405

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/tang18_decen_vibrat_contr_voice_coil/index.html b/public/paper/tang18_decen_vibrat_contr_voice_coil/index.html deleted file mode 100644 index 0d36af6..0000000 --- a/public/paper/tang18_decen_vibrat_contr_voice_coil/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms
-
Reference
-
(Jie Tang {\it et al.}, 2018)
-
Author(s)
-
Tang, J., Cao, D., & Yu, T.
-
Year
-
2018
-
-

Bibliography

-

Tang, J., Cao, D., & Yu, T., Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments, Proceedings of the Institution of Mechanical Engineers, Part C: Journal of Mechanical Engineering Science, 233(1), 132–145 (2018). http://dx.doi.org/10.1177/0954406218756941

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/index.html b/public/paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/index.html deleted file mode 100644 index efa4cb8..0000000 --- a/public/paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/index.html +++ /dev/null @@ -1,228 +0,0 @@ - - - - - - Sensor fusion for active vibration isolation in precision equipment - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Sensor fusion for active vibration isolation in precision equipment

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Sensor Fusion, Vibration Isolation
-
Reference
-
(Tjepkema {\it et al.}, 2012)
-
Author(s)
-
Tjepkema, D., Dijk, J. v., & Soemers, H.
-
Year
-
2012
-
-

Relative motion Control

-

Control law: \(f = -G(x-w)\)

-

\[ \frac{x}{w} = \frac{k+G}{ms^2 + k+G} \] -\[ \frac{x}{F} = \frac{1}{ms^2 + k+G} \]

-

Force Control

-

Control law: \(f = -G F_a = -G \left(f-k(x-w)\right)\)

-

\[ \frac{x}{w} = \frac{k}{(1+G)ms^2 + k} \] -\[ \frac{x}{F} = \frac{1+G}{(1+G)ms^2 + k} \]

-

Inertial Control

-

Control law: \(f = -Gx\)

-

\[ \frac{x}{w} = \frac{k}{ms^2 + k+G} \] -\[ \frac{x}{F} = \frac{1}{ms^2 + k+G} \]

-

Design constraints and control bandwidth

-

Heavier sensor => lower noise but it is harder to maintain collocation with the actuator => that limits the bandwidth. -There is a compromise between sensor noise and the influence of the sensor size on the system’s design and on the control bandwidth.

-

Bibliography

-

Tjepkema, D., Dijk, J. v., & Soemers, H., Sensor fusion for active vibration isolation in precision equipment, Journal of Sound and Vibration, 331(4), 735–749 (2012). http://dx.doi.org/10.1016/j.jsv.2011.09.022

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/wang12_autom_marker_full_field_hard/index.html b/public/paper/wang12_autom_marker_full_field_hard/index.html deleted file mode 100644 index cea36a6..0000000 --- a/public/paper/wang12_autom_marker_full_field_hard/index.html +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Nano Active Stabilization System
-
Reference
-
(Jun Wang {\it et al.}, 2012)
-
Author(s)
-
Wang, J., Chen, Y. K., Yuan, Q., Tkachuk, A., Erdonmez, C., Hornberger, B., & Feser, M.
-
Year
-
2012
-
-

Introduction of Markers: -That limits the type of samples that is studied

-

There is a need for markerless nano-tomography -=> the key requirement is the precision and stability of the positioning stages.

-

Passive rotational run-out error system: -It uses calibrated metrology disc and capacitive sensors

-

Bibliography

-

Wang, J., Chen, Y. K., Yuan, Q., Tkachuk, A., Erdonmez, C., Hornberger, B., & Feser, M., Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution, Applied Physics Letters, 100(14), 143107 (2012). http://dx.doi.org/10.1063/1.3701579

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/wang16_inves_activ_vibrat_isolat_stewar/index.html b/public/paper/wang16_inves_activ_vibrat_isolat_stewar/index.html deleted file mode 100644 index 765b53a..0000000 --- a/public/paper/wang16_inves_activ_vibrat_isolat_stewar/index.html +++ /dev/null @@ -1,248 +0,0 @@ - - - - - - Investigation on active vibration isolation of a stewart platform with piezoelectric actuators - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Investigation on active vibration isolation of a stewart platform with piezoelectric actuators

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation, Flexible Joints
-
Reference
-
(Wang {\it et al.}, 2016)
-
Author(s)
-
Wang, C., Xie, X., Chen, Y., & Zhang, Z.
-
Year
-
2016
-
-

Model of the Stewart platform:

-
    -
  • Struts are treated as flexible beams
  • -
  • Payload and the base are treated as flexible plates
  • -
  • The FRF synthesis method permits to derive FRFs of the Stewart platform
  • -
-

The model is compared with a Finite Element model and is shown to give the same results. -The proposed model is thus effective.

-

-
- Figure 1: Stewart Platform
-

Figure 1: Stewart Platform

-
-
- -

Control: -Combines:

-
    -
  • the FxLMS-based adaptive inverse control => suppress transmission of periodic vibrations
  • -
  • direct feedback of integrated forces => dampen vibration of inherent modes and thus reduce random vibrations
  • -
-

Force Feedback (Figure 2).

-
    -
  • the force sensor is mounted between the base and the strut
  • -
-

-
- Figure 2: Feedback of integrated forces in the platform
-

Figure 2: Feedback of integrated forces in the platform

-
-
- -

Sorts of HAC-LAC control:

-
    -
  • LAC: Decentralized integral force feedback
  • -
  • HAC: Inertial control using accelerometers. Use of the Jacobian to decouple the motion and then Fx-LMS based adaptive control is used
  • -
-

Experimental validation:

-
    -
  • All 6 transfer function from actuator force to force sensors are almost the same (gain offset)
  • -
  • Effectiveness of control methods are shown
  • -
-

Bibliography

-

Wang, C., Xie, X., Chen, Y., & Zhang, Z., Investigation on active vibration isolation of a stewart platform with piezoelectric actuators, Journal of Sound and Vibration, 383(), 1–19 (2016). http://dx.doi.org/10.1016/j.jsv.2016.07.021

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/yang19_dynam_model_decoup_contr_flexib/index.html b/public/paper/yang19_dynam_model_decoup_contr_flexib/index.html deleted file mode 100644 index aff79d9..0000000 --- a/public/paper/yang19_dynam_model_decoup_contr_flexib/index.html +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation, Flexible Joints, Cubic Architecture
-
Reference
-
(Yang {\it et al.}, 2019)
-
Author(s)
-
Yang, X., Wu, H., Chen, B., Kang, S., & Cheng, S.
-
Year
-
2019
-
-

Discusses:

-
    -
  • flexible-rigid model of Stewart platform
  • -
  • the impact of joint stiffness is compensated using a displacement sensor and a force sensor
  • -
  • then the MIMO system is decoupled in modal space and 6 SISO controllers are applied for vibration isolation using force sensors
  • -
-

The joint stiffness impose a limitation on the control performance using force sensors as it adds a zero at low frequency in the dynamics. -Thus, this stiffness is taken into account in the dynamics and compensated for.

-

Stewart platform (Figure 1):

-
    -
  • piezoelectric actuators
  • -
  • flexible joints (Figure 2)
  • -
  • force sensors (used for vibration isolation)
  • -
  • displacement sensors (used to decouple the dynamics)
  • -
  • cubic (even though not said explicitly)
  • -
-

-
- Figure 1: Stewart Platform
-

Figure 1: Stewart Platform

-
-
- -

-
- Figure 2: Flexible Joints
-

Figure 2: Flexible Joints

-
-
- -

The stiffness of the flexible joints (Figure 2) are computed with an FEM model and shown in Table 1.

-

-
- Table 1: - Stiffness of flexible joints obtained by FEM -
- - - - - - - - - - - - - - - - - - - - - -
\(k_{\theta u},\ k_{\psi u}\)\(72 Nm/rad\)
\(k_{\theta s}\)\(51 Nm/rad\)
\(k_{\psi s}\)\(62 Nm/rad\)
\(k_{\gamma s}\)\(64 Nm/rad\)
-

Dynamics: -If the bending and torsional stiffness of the flexible joints are neglected: -\[ M \ddot{x} + C \dot{x} + K x = J^T f \]

-
    -
  • \(M\) is the mass matrix
  • -
  • \(C\) is the damping matrix
  • -
  • \(K\) is the stiffness matrix
  • -
  • \(x\) is the generalized coordinates, representing the displacement and orientation of the payload plate
  • -
  • \(f\) is the actuator forces
  • -
  • \(J\) is the Jacobian matrix
  • -
-

In this paper, the parasitic bending stiffness of the flexible joints are considered: -\[ M \ddot{x} + C \dot{x} + (K + K_e) x = J^T f \] -where \(K_e\) is the stiffness matrix induced by the parasitic stiffness of the flexible joints.

-

Analytical expression for \(K_e\) are derived in the paper.

-

Controller Design: -There is a strong coupling between the input forces and the state variables in the task space. -The traditional modal decoupled control strategy cannot work with the flexible Stewart platform because it is impossible to achieve simultaneous diagonalization of the mass, damped and stiffness matrices.

-

To make the six-dof system decoupled into six single-dof isolators, a controller based on the leg’s force and position feedback is designed.

-
-

The idea is to synthesize the control force that can compensate the parasitic bending and torsional torques of the flexible joints and simultaneously achieve diagonalization of the matrices \(M\), \(C\) and \(K\)

-
-

The force measured by the force sensors are: -\[ y = f - k J x - c J \dot{x} \] -The displacements measured by the position sensors are: -\[ z = [\Delta l_1\ \dots\ \Delta l_6]^T \]

-

Let’s apply the feedback control based on both the force sensor and the position sensor: -\[ f = -H(s) y + (1 + H(s)) K_{el} z \] -where \(K_{el} = J^{-T} K_e J^T\) is the stiffness matrix of the flexible joints expressed in joint space.

-

We thus obtain: -\[ f = \frac{H(s)}{1 + H(s)} (k J x + c J \dot{x}) + J^{-T} K_e x \]

-

If we substitute \(f\) in the dynamic equation, we obtain that the parasitic stiffness effect of the flexible joints has been compensated by the actuation forces and the system can now be decoupled in modal space \(x = \Phi u\). -\(\Phi\) is the modal matrix selected such that \(\Phi^T M \Phi = I_6\) and \(k \Phi^T J^T J \Phi = \text{diag}(\omega_1^2\ \dots\ \omega_6^2)\): -\[ s^2 + \frac{1}{1 + H(s)} \frac{c \omega_i^2}{k} s + \frac{1}{1 + H(s)} \omega_i^2 = 0, \quad i = 1,\ \dots,\ 6 \]

-

The six-dof system is now transformed into a six one-dof system where \(H(s)\) can be designed for control purpose.

-

In order to apply this control strategy:

-
    -
  • A force sensor and displacement sensor are need in each strut
  • -
  • The joint stiffness has to be known
  • -
  • The jacobian has to be computed
  • -
  • No information about modal matrix is needed
  • -
-

The block diagram of the control strategy is represented in Figure 3.

-

-
- Figure 3: Control Architecture used
-

Figure 3: Control Architecture used

-
-
- -

\(H(s)\) is designed as a proportional plus integral compensator: -\[ H(s) = k_p + k_i/s \]

-

Substituting \(H(s)\) in the equation of motion gives that:

-
    -
  • an increase of \(k_i\) increase the damping and thus suppress the resonance peaks
  • -
  • an increase of \(k_p\) lowers the resonance frequency and thus the bandwidth of vibration isolation is examped
  • -
-

Experimental Validation: -An external Shaker is used to excite the base and accelerometers are located on the base and mobile platforms to measure their motion. -The results are shown in Figure 4. -In theory, the vibration performance can be improved, however in practice, increasing the gain causes saturation of the piezoelectric actuators and then the instability occurs.

-

-
- Figure 4: Frequency response of the acceleration ratio between the paylaod and excitation (Transmissibility)
-

Figure 4: Frequency response of the acceleration ratio between the paylaod and excitation (Transmissibility)

-
-
- -
-

A model-based controller is then designed based on the leg’s force and position feedback. -The position feedback compensates the effect of parasitic bending and torsional stiffness of the flexible joints. -The force feedback makes the six-DOF MIMO system decoupled into six SISO subsystems in modal space, where the control gains can be designed and analyzed more effectively and conveniently. -The proportional and integral gains in the sub-controller are used to separately regulate the vibration isolation bandwidth and active damping simultaneously for the six vibration modes.

-
-

Bibliography

-

Yang, X., Wu, H., Chen, B., Kang, S., & Cheng, S., Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation, Journal of Sound and Vibration, 439(), 398–412 (2019). http://dx.doi.org/10.1016/j.jsv.2018.10.007

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/paper/zhang11_six_dof/index.html b/public/paper/zhang11_six_dof/index.html deleted file mode 100644 index 5fb3300..0000000 --- a/public/paper/zhang11_six_dof/index.html +++ /dev/null @@ -1,222 +0,0 @@ - - - - - - Six dof active vibration control using stewart platform with non-cubic configuration - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Six dof active vibration control using stewart platform with non-cubic configuration

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Stewart Platforms, Vibration Isolation
-
Reference
-
(Zhen Zhang {\it et al.}, 2011)
-
Author(s)
-
Zhang, Z., Liu, J., Mao, J., Guo, Y., & Ma, Y.
-
Year
-
2011
-
-
    -
  • Non-cubic stewart platform
  • -
  • Flexible joints
  • -
  • Magnetostrictive actuators
  • -
  • Strong coupled motions along different axes
  • -
  • Non-cubic architecture => permits to have larger workspace which was required
  • -
  • Structure parameters (radius of plates, length of struts) are determined by optimization of the condition number of the Jacobian matrix
  • -
  • Accelerometers for active isolation
  • -
  • Adaptive FIR filters for active isolation control
  • -
-

-
- Figure 1: Prototype of the non-cubic stewart platform
-

Figure 1: Prototype of the non-cubic stewart platform

-
-
- -

Bibliography

-

Zhang, Z., Liu, J., Mao, J., Guo, Y., & Ma, Y., Six dof active vibration control using stewart platform with non-cubic configuration, In , 2011 6th IEEE Conference on Industrial Electronics and Applications (pp. ) (2011). : .

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/robots.txt b/public/robots.txt deleted file mode 100644 index 1ac6a8d..0000000 --- a/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Sitemap: /sitemap.xml diff --git a/public/sass/main.min.47a894bd6354cc46903f62433747958dc936e1c95c28a76ac80319bca9708ed1.css b/public/sass/main.min.47a894bd6354cc46903f62433747958dc936e1c95c28a76ac80319bca9708ed1.css deleted file mode 100644 index 0df6659..0000000 --- a/public/sass/main.min.47a894bd6354cc46903f62433747958dc936e1c95c28a76ac80319bca9708ed1.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";@font-face{font-family:chancery;src:url(../fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(../fonts/chancery/apple-chancery-webfont.eot?#iefix)format("embedded-opentype"),url(../fonts/chancery/apple-chancery-webfont.woff2)format("woff2"),url(../fonts/chancery/apple-chancery-webfont.woff)format("woff"),url(../fonts/chancery/apple-chancery-webfont.ttf)format("truetype"),url(../fonts/chancery/apple-chancery-webfont.svg#apple-chancery)format("svg");font-weight:lighter;font-style:normal}.post .post-content a.reference-link{font-weight:700;font-style:italic;font-color:#34495e;color:#34495e}.post .post-content a.reference-link:hover{border-bottom-color:#c05b4d #f8f5ec}.post .post-content a.bibtex-entry:target{background-color:#ffa}/*!normalize.css v3.0.2 | MIT License | git.io/normalize*/html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:16px;box-sizing:border-box}body{padding:0;margin:0;font-family:source sans pro,helvetica neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;color:#34495e;background:#fefefe;scroll-behavior:smooth;border-top:3px solid #c05b4d}@media screen and (max-width:800px){body{border-top:0}}::selection{background:#c05b4d;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:#34495e;text-decoration:none}h1{font-size:26px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:24px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h3{font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:16px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h5{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h6{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.container{margin:0 auto;width:800px}@media screen and (max-width:800px){.container{width:100%;box-shadow:-1px -5px 5px #cacaca}}.content-wrapper{padding:0 20px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-family:iconfont;src:url(../fonts/iconfont/iconfont.eot);src:url(../fonts/iconfont/iconfont.eot#iefix)format("embedded-opentype"),url(../fonts/iconfont/iconfont.woff)format("woff"),url(../fonts/iconfont/iconfont.ttf)format("truetype"),url(../fonts/iconfont/iconfont.svg#iconfont)format("svg")}.iconfont{font-family:iconfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-text-stroke-width:.2px;cursor:pointer;letter-spacing:0;font-feature-settings:"liga";font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-bilibili:before{content:"\e900";font-size:.9em;position:relative;top:-4px}.icon-instagram:before{font-size:.95em;content:"\e611";position:relative;top:1px}.icon-douban:before{content:"\e610";position:relative;top:2px}.icon-tumblr:before{content:"\e69f";font-size:.85em;position:relative;top:-2px}.icon-linkedin:before{content:"\e60d";position:relative;top:-2px}.icon-twitter:before{content:"\e600"}.icon-weibo:before{content:"\e602";position:relative;top:2px}.icon-stack-overflow:before{content:"\e902";font-size:.85em;position:relative;top:-4px}.icon-email:before{content:"\e605";position:relative;top:-2px}.icon-facebook:before{content:"\e601";font-size:.95em;position:relative;top:-2px}.icon-gitlab:before{content:"\e901";font-size:.9em;position:relative;top:-4px}.icon-github:before{content:"\e606";position:relative;top:-1px}.icon-rss:before{content:"\e604"}.icon-google:before{content:"\e609";position:relative;top:2px}.icon-zhihu:before{content:"\e607";font-size:.9em}.icon-pocket:before{content:"\e856";position:relative;top:2px}.icon-heart:before{content:"\e608"}.icon-right:before{content:"\e60a"}.icon-left:before{content:"\e60b"}.icon-up:before{content:"\e60c"}.icon-close:before{content:"\e60f"}.icon-link:before{content:"\e909"}.header{padding:20px}.header:before,.header:after{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left}.header .logo-wrapper .logo{font-size:48px;font-family:chancery,cursive,LiSu,sans-serif}@media screen and (max-width:800px){.header .logo-wrapper{display:none}}.header .site-navbar{float:right}.header .site-navbar .menu{display:inline-block;position:relative;padding-left:0;padding-right:25px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.header .site-navbar .menu .menu-item.active:before,.header .site-navbar .menu .menu-item:active:before,.header .site-navbar .menu .menu-item:focus:before,.header .site-navbar .menu .menu-item:hover:before{right:0;left:0}.header .site-navbar .menu .menu-item-link{font-size:18px}@media screen and (max-width:800px){.header .site-navbar{display:none}}@media screen and (max-width:800px){.header{padding:50px 0 0;text-align:center}}.posts{margin-bottom:20px;border-bottom:1px solid #e6e6e6}.post{padding:1.5em 0}.post+.post{border-top:1px solid #e6e6e6}.post .post-header{margin-bottom:20px}.post .post-header .post-title{margin:0;font-size:27px;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a::before{content:'·'}.post .post-header .post-meta .post-category a:hover{color:#c05b4d}.post .post-header .post-meta .more-meta::before{content:'·'}.post .post-toc{position:absolute;width:200px;margin-left:785px;padding:10px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;border-radius:5px;background:rgba(248,245,236,.6);box-shadow:1px 1px 2px rgba(0,0,0,.125);word-wrap:break-word;box-sizing:border-box}.post .post-toc .post-toc-title{margin:0 10px;font-size:20px;font-weight:400;text-transform:uppercase}.post .post-toc .post-toc-content{font-size:15px}.post .post-toc .post-toc-content.always-active ul{display:block}.post .post-toc .post-toc-content>nav>ul{margin:10px 0}.post .post-toc .post-toc-content ul{padding-left:20px;list-style:square}.post .post-toc .post-toc-content ul ul{padding-left:15px;display:none}.post .post-toc .post-toc-content ul .has-active>ul{display:block}.post .post-toc .post-toc-content .toc-link.active{color:#c05b4d}@media screen and (max-width:1185px){.post .post-toc{display:none}}.post .post-content{word-wrap:break-word}.post .post-content h1{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h1 .anchor:hover{border-bottom:initial}.post .post-content h1 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h1 .anchor .icon-link:before{vertical-align:middle}.post .post-content h1:hover .icon-link{visibility:visible}.post .post-content h2{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h2 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h2 .anchor:hover{border-bottom:initial}.post .post-content h2 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h2 .anchor .icon-link:before{vertical-align:middle}.post .post-content h2:hover .icon-link{visibility:visible}.post .post-content h3{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h3 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h3 .anchor:hover{border-bottom:initial}.post .post-content h3 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h3 .anchor .icon-link:before{vertical-align:middle}.post .post-content h3:hover .icon-link{visibility:visible}.post .post-content h4{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h4 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h4 .anchor:hover{border-bottom:initial}.post .post-content h4 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h4 .anchor .icon-link:before{vertical-align:middle}.post .post-content h4:hover .icon-link{visibility:visible}.post .post-content h5{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h5 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h5 .anchor:hover{border-bottom:initial}.post .post-content h5 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h5 .anchor .icon-link:before{vertical-align:middle}.post .post-content h5:hover .icon-link{visibility:visible}.post .post-content h6{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h6 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h6 .anchor:hover{border-bottom:initial}.post .post-content h6 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h6 .anchor .icon-link:before{vertical-align:middle}.post .post-content h6:hover .icon-link{visibility:visible}.post .post-content a{color:#c05b4d;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #c05b4d}.post .post-content blockquote{margin:2em 0;padding:10px 20px;position:relative;color:rgba(52,73,94,.8);background-color:rgba(192,91,77,.05);border-left:3px solid rgba(192,91,77,.3);box-shadow:1px 1px 2px rgba(0,0,0,.125)}.post .post-content blockquote p{margin:0}.post .post-content img{display:inline-block;max-width:100%}.post .post-content .table-wrapper{overflow-x:auto}.post .post-content .table-wrapper>table{max-width:100%;margin:10px 0;border-spacing:0;box-shadow:2px 2px 3px rgba(0,0,0,.125)}.post .post-content .table-wrapper>table thead{background:#f8f5ec}.post .post-content .table-wrapper>table th,.post .post-content .table-wrapper>table td{padding:5px 15px;border:1px double #f4efe1}.post .post-content .table-wrapper>table tr:hover{background-color:#f8f5ec}.post .post-content code,.post .post-content pre{padding:7px;font-size:.9em;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#f8f5ec}.post .post-content code{padding:3px 5px;border-radius:4px;color:#c7254e}.post .post-content figure.highlight{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative}.post .post-content figure.highlight table{position:relative}.post .post-content figure.highlight table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#f4efe1;content:'Code'}.post .post-content figure.highlight.language-bash>table::after{content:"Bash"}.post .post-content figure.highlight.language-c>table::after{content:"C"}.post .post-content figure.highlight.language-cs>table::after{content:"C#"}.post .post-content figure.highlight.language-cpp>table::after{content:"C++"}.post .post-content figure.highlight.language-css>table::after{content:"CSS"}.post .post-content figure.highlight.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content figure.highlight.language-html>table::after{content:"HTML"}.post .post-content figure.highlight.language-xml>table::after{content:"XML"}.post .post-content figure.highlight.language-http>table::after{content:"HTTP"}.post .post-content figure.highlight.language-json>table::after{content:"JSON"}.post .post-content figure.highlight.language-java>table::after{content:"Java"}.post .post-content figure.highlight.language-js>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-javascript>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-makefile>table::after{content:"Makefile"}.post .post-content figure.highlight.language-markdown>table::after{content:"Markdown"}.post .post-content figure.highlight.language-objectivec>table::after{content:"Objective-C"}.post .post-content figure.highlight.language-php>table::after{content:"PHP"}.post .post-content figure.highlight.language-perl>table::after{content:"Perl"}.post .post-content figure.highlight.language-python>table::after{content:"Python"}.post .post-content figure.highlight.language-ruby>table::after{content:"Ruby"}.post .post-content figure.highlight.language-sql>table::after{content:"SQL"}.post .post-content figure.highlight.language-shell>table::after{content:"Shell"}.post .post-content figure.highlight.language-erlang>table::after{content:"Erlang"}.post .post-content figure.highlight.language-go>table::after{content:"Go"}.post .post-content figure.highlight.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content figure.highlight.language-groovy>table::after{content:"Groovy"}.post .post-content figure.highlight.language-haskell>table::after{content:"Haskell"}.post .post-content figure.highlight.language-kotlin>table::after{content:"Kotlin"}.post .post-content figure.highlight.language-clojure>table::after{content:"Clojure"}.post .post-content figure.highlight.language-less>table::after{content:"Less"}.post .post-content figure.highlight.language-lisp>table::after{content:"Lisp"}.post .post-content figure.highlight.language-lua>table::after{content:"Lua"}.post .post-content figure.highlight.language-matlab>table::after{content:"Matlab"}.post .post-content figure.highlight.language-rust>table::after{content:"Rust"}.post .post-content figure.highlight.language-scss>table::after{content:"Scss"}.post .post-content figure.highlight.language-scala>table::after{content:"Scala"}.post .post-content figure.highlight.language-swift>table::after{content:"Swift"}.post .post-content figure.highlight.language-typescript>table::after{content:"TypeScript"}.post .post-content figure.highlight.language-yml>table::after{content:"YAML"}.post .post-content figure.highlight.language-yaml>table::after{content:"YAML"}.post .post-content figure.highlight.language-toml>table::after{content:"TOML"}.post .post-content figure.highlight.language-diff>table::after{content:"Diff"}.post .post-content figure.highlight .code pre{margin:0;padding:30px 10px 10px}.post .post-content figure.highlight .gutter{width:10px;color:#cacaca}.post .post-content figure.highlight .gutter pre{margin:0;padding:30px 7px 10px}.post .post-content figure.highlight .line{height:1em}.post .post-content figure.highlight table,.post .post-content figure.highlight tr,.post .post-content figure.highlight td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content figure.highlight .code .hljs-comment,.post .post-content figure.highlight .code .hljs-quote{color:#93a1a1}.post .post-content figure.highlight .code .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-tag,.post .post-content figure.highlight .code .hljs-addition{color:#859900}.post .post-content figure.highlight .code .hljs-number,.post .post-content figure.highlight .code .hljs-string,.post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,.post .post-content figure.highlight .code .hljs-literal,.post .post-content figure.highlight .code .hljs-doctag,.post .post-content figure.highlight .code .hljs-regexp{color:#2aa198}.post .post-content figure.highlight .code .hljs-title,.post .post-content figure.highlight .code .hljs-section,.post .post-content figure.highlight .code .hljs-name,.post .post-content figure.highlight .code .hljs-selector-id,.post .post-content figure.highlight .code .hljs-selector-class{color:#268bd2}.post .post-content figure.highlight .code .hljs-attribute,.post .post-content figure.highlight .code .hljs-attr,.post .post-content figure.highlight .code .hljs-variable,.post .post-content figure.highlight .code .hljs-template-variable,.post .post-content figure.highlight .code .hljs-class .hljs-title,.post .post-content figure.highlight .code .hljs-type{color:#b58900}.post .post-content figure.highlight .code .hljs-symbol,.post .post-content figure.highlight .code .hljs-bullet,.post .post-content figure.highlight .code .hljs-subst,.post .post-content figure.highlight .code .hljs-meta,.post .post-content figure.highlight .code .hljs-meta .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-attr,.post .post-content figure.highlight .code .hljs-selector-pseudo,.post .post-content figure.highlight .code .hljs-link{color:#cb4b16}.post .post-content figure.highlight .code .hljs-built_in,.post .post-content figure.highlight .code .hljs-deletion{color:#dc322f}.post .post-content figure.highlight .code .hljs-formula{background:#eee8d5}.post .post-content figure.highlight .code .hljs-emphasis{font-style:italic}.post .post-content figure.highlight .code .hljs-strong{font-weight:700}.post .post-content .highlight>.chroma{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#f8f5ec}.post .post-content .highlight>.chroma code{padding:0}.post .post-content .highlight>.chroma table{position:relative}.post .post-content .highlight>.chroma table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#f4efe1;content:'Code'}.post .post-content .highlight>.chroma.language-bash>table::after{content:"Bash"}.post .post-content .highlight>.chroma.language-c>table::after{content:"C"}.post .post-content .highlight>.chroma.language-cs>table::after{content:"C#"}.post .post-content .highlight>.chroma.language-cpp>table::after{content:"C++"}.post .post-content .highlight>.chroma.language-css>table::after{content:"CSS"}.post .post-content .highlight>.chroma.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content .highlight>.chroma.language-html>table::after{content:"HTML"}.post .post-content .highlight>.chroma.language-xml>table::after{content:"XML"}.post .post-content .highlight>.chroma.language-http>table::after{content:"HTTP"}.post .post-content .highlight>.chroma.language-json>table::after{content:"JSON"}.post .post-content .highlight>.chroma.language-java>table::after{content:"Java"}.post .post-content .highlight>.chroma.language-js>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-javascript>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-makefile>table::after{content:"Makefile"}.post .post-content .highlight>.chroma.language-markdown>table::after{content:"Markdown"}.post .post-content .highlight>.chroma.language-objectivec>table::after{content:"Objective-C"}.post .post-content .highlight>.chroma.language-php>table::after{content:"PHP"}.post .post-content .highlight>.chroma.language-perl>table::after{content:"Perl"}.post .post-content .highlight>.chroma.language-python>table::after{content:"Python"}.post .post-content .highlight>.chroma.language-ruby>table::after{content:"Ruby"}.post .post-content .highlight>.chroma.language-sql>table::after{content:"SQL"}.post .post-content .highlight>.chroma.language-shell>table::after{content:"Shell"}.post .post-content .highlight>.chroma.language-erlang>table::after{content:"Erlang"}.post .post-content .highlight>.chroma.language-go>table::after{content:"Go"}.post .post-content .highlight>.chroma.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content .highlight>.chroma.language-groovy>table::after{content:"Groovy"}.post .post-content .highlight>.chroma.language-haskell>table::after{content:"Haskell"}.post .post-content .highlight>.chroma.language-kotlin>table::after{content:"Kotlin"}.post .post-content .highlight>.chroma.language-clojure>table::after{content:"Clojure"}.post .post-content .highlight>.chroma.language-less>table::after{content:"Less"}.post .post-content .highlight>.chroma.language-lisp>table::after{content:"Lisp"}.post .post-content .highlight>.chroma.language-lua>table::after{content:"Lua"}.post .post-content .highlight>.chroma.language-matlab>table::after{content:"Matlab"}.post .post-content .highlight>.chroma.language-rust>table::after{content:"Rust"}.post .post-content .highlight>.chroma.language-scss>table::after{content:"Scss"}.post .post-content .highlight>.chroma.language-scala>table::after{content:"Scala"}.post .post-content .highlight>.chroma.language-swift>table::after{content:"Swift"}.post .post-content .highlight>.chroma.language-typescript>table::after{content:"TypeScript"}.post .post-content .highlight>.chroma.language-yml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-yaml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-toml>table::after{content:"TOML"}.post .post-content .highlight>.chroma.language-diff>table::after{content:"Diff"}.post .post-content .highlight>.chroma .lntd{line-height:1em}.post .post-content .highlight>.chroma .lntd:first-child{width:10px}.post .post-content .highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.post .post-content .highlight>.chroma .lntd:last-child{vertical-align:top}.post .post-content .highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.post .post-content .highlight>.chroma table,.post .post-content .highlight>.chroma tr,.post .post-content .highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma .lnt{color:#cacaca}.post .post-content .highlight>.chroma .hl{display:block;width:100%;background-color:#ffc}.post .post-content .highlight>.chroma .k{color:#859900}.post .post-content .highlight>.chroma .kc{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .kd{color:#859900}.post .post-content .highlight>.chroma .kn{color:#dc322f;font-weight:700}.post .post-content .highlight>.chroma .kp{color:#859900}.post .post-content .highlight>.chroma .kr{color:#859900}.post .post-content .highlight>.chroma .kt{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .n{color:#268bd2}.post .post-content .highlight>.chroma .na{color:#268bd2}.post .post-content .highlight>.chroma .nb{color:#cb4b16}.post .post-content .highlight>.chroma .bp{color:#268bd2}.post .post-content .highlight>.chroma .nc{color:#cb4b16}.post .post-content .highlight>.chroma .no{color:#268bd2}.post .post-content .highlight>.chroma .nd{color:#268bd2}.post .post-content .highlight>.chroma .ni{color:#268bd2}.post .post-content .highlight>.chroma .ne{color:#268bd2}.post .post-content .highlight>.chroma .nf{color:#268bd2}.post .post-content .highlight>.chroma .fm{color:#268bd2}.post .post-content .highlight>.chroma .nl{color:#268bd2}.post .post-content .highlight>.chroma .nn{color:#268bd2}.post .post-content .highlight>.chroma .nx{color:#268bd2}.post .post-content .highlight>.chroma .py{color:#268bd2}.post .post-content .highlight>.chroma .nt{color:#268bd2;font-weight:700}.post .post-content .highlight>.chroma .nv{color:#268bd2}.post .post-content .highlight>.chroma .vc{color:#268bd2}.post .post-content .highlight>.chroma .vg{color:#268bd2}.post .post-content .highlight>.chroma .vi{color:#268bd2}.post .post-content .highlight>.chroma .vm{color:#268bd2}.post .post-content .highlight>.chroma .l{color:#2aa198}.post .post-content .highlight>.chroma .ld{color:#2aa198}.post .post-content .highlight>.chroma .s{color:#2aa198}.post .post-content .highlight>.chroma .sa{color:#2aa198}.post .post-content .highlight>.chroma .sb{color:#2aa198}.post .post-content .highlight>.chroma .sc{color:#2aa198}.post .post-content .highlight>.chroma .dl{color:#2aa198}.post .post-content .highlight>.chroma .sd{color:#2aa198}.post .post-content .highlight>.chroma .s2{color:#2aa198}.post .post-content .highlight>.chroma .se{color:#2aa198}.post .post-content .highlight>.chroma .sh{color:#2aa198}.post .post-content .highlight>.chroma .si{color:#2aa198}.post .post-content .highlight>.chroma .sx{color:#2aa198}.post .post-content .highlight>.chroma .sr{color:#2aa198}.post .post-content .highlight>.chroma .s1{color:#2aa198}.post .post-content .highlight>.chroma .ss{color:#2aa198}.post .post-content .highlight>.chroma .m{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mb{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mf{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mh{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mi{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .il{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mo{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .ow{color:#859900}.post .post-content .highlight>.chroma .c{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .ch{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cm{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .c1{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cp{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cpf{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .g{color:#d33682}.post .post-content .highlight>.chroma .gd{color:#b58900}.post .post-content .highlight>.chroma .ge{color:#d33682}.post .post-content .highlight>.chroma .gr{color:#d33682}.post .post-content .highlight>.chroma .gh{color:#d33682}.post .post-content .highlight>.chroma .gi{color:#859900}.post .post-content .highlight>.chroma .go{color:#d33682}.post .post-content .highlight>.chroma .gp{color:#d33682}.post .post-content .highlight>.chroma .gs{color:#d33682}.post .post-content .highlight>.chroma .gu{color:#d33682}.post .post-content .highlight>.chroma .gt{color:#d33682}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more .read-more-link{color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #c05b4d}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;box-shadow:inset 0 -1px 0 #b5b5b5;font-size:.8em;line-height:1.25;font-family:sfmono-regular,liberation mono,roboto mono,Menlo,Monaco,Consolas,courier new,Courier,monospace;color:#4a4a4a}.post .post-content dl dt::after{content:':'}.post .post-content figure.center{text-align:center}.post .post-content figure.right{text-align:right}.post .post-content figure.left{text-align:left}.post .post-content figure figcaption h4{color:#b5b5b5;font-size:.9rem}.post .post-content hr{margin:1rem 0;position:relative;border-top:2px dashed #c05b4d;border-bottom:none}.post .post-content .footnote-ref>a{font-weight:700;margin-left:3px}.post .post-content .footnote-ref>a:before{content:"["}.post .post-content .footnote-ref>a:after{content:"]"}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .post-content .align-center{text-align:center}.post .post-content .align-right{text-align:right}.post .post-content .align-left{text-align:left}.post .post-content .MJXc-display{overflow-x:auto;overflow-y:hidden;padding-right:1px}.post .post-copyright{margin-top:20px;padding-top:10px;border-top:1px dashed #e6e6e6}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#c05b4d;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #c05b4d}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-footer{margin-top:20px;border-top:1px solid #e6e6e6;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{padding:15px 0}.post .post-footer .post-tags a{margin-right:5px;color:#c05b4d;word-break:break-all}.post .post-footer .post-tags a::before{content:'#'}.post .post-footer .post-nav{margin:1em 0}.post .post-footer .post-nav:before,.post .post-footer .post-nav:after{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .prev,.post .post-footer .post-nav .next{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#c05b4d;transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#c05b4d;transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:800px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.pagination{margin:2em 0}.pagination:before,.pagination:after{content:" ";display:table}.pagination:after{clear:both}.pagination .prev,.pagination .next{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#c05b4d;transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#c05b4d;transform:translateX(4px)}.footer{margin-top:2em}.footer .social-links{text-align:center}.footer .social-links .iconfont{font-size:30px}.footer .social-links .iconfont+.iconfont{margin-left:10px}.footer .social-links .iconfont:hover{color:#c05b4d}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#c05b4d}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px}.archive{margin:2em 0;max-width:550px}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.tag,.archive .archive-title.category{margin:15px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:15px 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:3px 20px;border-left:1px solid #cacaca}.archive .archive-post .archive-post-time{margin-right:10px;color:#8a8a8a}.archive .archive-post .archive-post-title .archive-post-link{color:#c05b4d}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{border-left:3px solid #c05b4d;transition:.2s ease-out;transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#a14639}@media screen and (max-width:800px){.archive{margin-left:auto;margin-right:auto}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}}.terms{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.terms .terms-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.terms .terms-tags{margin:10px 0}.terms .terms-tags .terms-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.terms .terms-tags .terms-link .terms-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.terms .terms-tags .terms-link:active,.terms .terms-tags .terms-link:focus,.terms .terms-tags .terms-link:hover{color:#c05b4d;transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-panel{position:relative;z-index:1;background-color:#fefefe;min-height:100vh}.slideout-open,.slideout-open body,.slideout-open .slideout-panel{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;box-shadow:0 2px 2px #cacaca;text-align:center;transition:transform 300ms ease;z-index:99}.mobile-navbar.fixed-open{transform:translate3d(180px,0px,0px)}.mobile-navbar .mobile-header-logo{display:inline-block;margin-right:50px}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:chancery,cursive,LiSu,sans-serif}.mobile-navbar .mobile-navbar-icon{color:#c05b4d;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;transition:background .5s}@keyframes clickfirst{0%{transform:translateY(6px)rotate(0deg)}100%{transform:translateY(0)rotate(45deg)}}@keyframes clickmid{0%{opacity:1}100%{opacity:0}}@keyframes clicklast{0%{transform:translateY(-6px)rotate(0deg)}100%{transform:translateY(0)rotate(-45deg)}}@keyframes outfirst{0%{transform:translateY(0)rotate(-45deg)}100%{transform:translateY(-6px)rotate(0deg)}}@keyframes outmid{0%{opacity:0}100%{opacity:1}}@keyframes outlast{0%{transform:translateY(0)rotate(45deg)}100%{transform:translateY(6px)rotate(0deg)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px)/2);top:calc((100% - 1px)/2);width:20px;height:1px;background-color:#c05b4d}.mobile-navbar .mobile-navbar-icon span:nth-child(1){transform:translateY(6px)rotate(0deg)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){transform:translateY(-6px)rotate(0deg)}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:outlast}.mobile-menu{background-color:rgba(248,245,236,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f8f5ec}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f8f5ec}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#c05b4d}@media screen and (max-width:800px){.mobile-navbar{display:block}}.back-to-top{display:none;position:fixed;right:20px;bottom:20px;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s;z-index:10}.back-to-top:hover{transform:translateY(-5px)}@media screen and (max-width:800px){.back-to-top{display:none!important}}#search-results mark{background-color:#c05b4d}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#c05b4d} \ No newline at end of file diff --git a/public/sass/main.min.b66aec177f21b809a7d8b8a0de4454558b3f3cfcb28a151e820757f148c14a35.css b/public/sass/main.min.b66aec177f21b809a7d8b8a0de4454558b3f3cfcb28a151e820757f148c14a35.css deleted file mode 100644 index 656bc6f..0000000 --- a/public/sass/main.min.b66aec177f21b809a7d8b8a0de4454558b3f3cfcb28a151e820757f148c14a35.css +++ /dev/null @@ -1 +0,0 @@ -@charset "UTF-8";@font-face{font-family:chancery;src:url(../fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(../fonts/chancery/apple-chancery-webfont.eot?#iefix)format("embedded-opentype"),url(../fonts/chancery/apple-chancery-webfont.woff2)format("woff2"),url(../fonts/chancery/apple-chancery-webfont.woff)format("woff"),url(../fonts/chancery/apple-chancery-webfont.ttf)format("truetype"),url(../fonts/chancery/apple-chancery-webfont.svg#apple-chancery)format("svg");font-weight:lighter;font-style:normal}.post .post-content a.reference-link{font-weight:700;font-style:italic;font-color:#34495e;color:#34495e}.post .post-content a.reference-link:hover{border-bottom-color:#c05b4d #f8f5ec}.post .post-content a.bibtex-entry:target{background-color:#ffa}/*!normalize.css v3.0.2 | MIT License | git.io/normalize*/html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:16px;box-sizing:border-box}body{padding:0;margin:0;font-family:source sans pro,helvetica neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;color:#34495e;background:#fefefe;scroll-behavior:smooth;border-top:3px solid #c05b4d}@media screen and (max-width:800px){body{border-top:0}}::selection{background:#c05b4d;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:#34495e;text-decoration:none}h1{font-size:26px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:24px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h3{font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:16px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h5{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}h6{font-size:14px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.container{margin:0 auto;width:800px}@media screen and (max-width:800px){.container{width:100%;box-shadow:-1px -5px 5px #cacaca}}.content-wrapper{padding:0 20px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}@font-face{font-family:iconfont;src:url(../fonts/iconfont/iconfont.eot);src:url(../fonts/iconfont/iconfont.eot#iefix)format("embedded-opentype"),url(../fonts/iconfont/iconfont.woff)format("woff"),url(../fonts/iconfont/iconfont.ttf)format("truetype"),url(../fonts/iconfont/iconfont.svg#iconfont)format("svg")}.iconfont{font-family:iconfont!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-text-stroke-width:.2px;cursor:pointer;letter-spacing:0;font-feature-settings:"liga";font-variant-ligatures:discretionary-ligatures;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-bilibili:before{content:"\e900";font-size:.9em;position:relative;top:-4px}.icon-instagram:before{font-size:.95em;content:"\e611";position:relative;top:1px}.icon-douban:before{content:"\e610";position:relative;top:2px}.icon-tumblr:before{content:"\e69f";font-size:.85em;position:relative;top:-2px}.icon-linkedin:before{content:"\e60d";position:relative;top:-2px}.icon-twitter:before{content:"\e600"}.icon-weibo:before{content:"\e602";position:relative;top:2px}.icon-stack-overflow:before{content:"\e902";font-size:.85em;position:relative;top:-4px}.icon-email:before{content:"\e605";position:relative;top:-2px}.icon-facebook:before{content:"\e601";font-size:.95em;position:relative;top:-2px}.icon-gitlab:before{content:"\e901";font-size:.9em;position:relative;top:-4px}.icon-github:before{content:"\e606";position:relative;top:-1px}.icon-rss:before{content:"\e604"}.icon-google:before{content:"\e609";position:relative;top:2px}.icon-zhihu:before{content:"\e607";font-size:.9em}.icon-pocket:before{content:"\e856";position:relative;top:2px}.icon-heart:before{content:"\e608"}.icon-right:before{content:"\e60a"}.icon-left:before{content:"\e60b"}.icon-up:before{content:"\e60c"}.icon-close:before{content:"\e60f"}.icon-link:before{content:"\e909"}.header{padding:20px}.header:before,.header:after{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left}.header .logo-wrapper .logo{font-size:48px;font-family:chancery,cursive,LiSu,sans-serif}@media screen and (max-width:800px){.header .logo-wrapper{display:none}}.header .site-navbar{float:right}.header .site-navbar .menu{display:inline-block;position:relative;padding-left:0;padding-right:25px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.header .site-navbar .menu .menu-item.active:before,.header .site-navbar .menu .menu-item:active:before,.header .site-navbar .menu .menu-item:focus:before,.header .site-navbar .menu .menu-item:hover:before{right:0;left:0}.header .site-navbar .menu .menu-item-link{font-size:18px}@media screen and (max-width:800px){.header .site-navbar{display:none}}@media screen and (max-width:800px){.header{padding:50px 0 0;text-align:center}}.posts{margin-bottom:20px;border-bottom:1px solid #e6e6e6}.post{padding:1.5em 0}.post+.post{border-top:1px solid #e6e6e6}.post .post-header{margin-bottom:20px}.post .post-header .post-title{margin:0;font-size:27px;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:'';position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a::before{content:'·'}.post .post-header .post-meta .post-category a:hover{color:#c05b4d}.post .post-header .post-meta .more-meta::before{content:'·'}.post .post-toc{position:absolute;width:200px;margin-left:785px;padding:10px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;border-radius:5px;background:rgba(248,245,236,.6);box-shadow:1px 1px 2px rgba(0,0,0,.125);word-wrap:break-word;box-sizing:border-box}.post .post-toc .post-toc-title{margin:0 10px;font-size:20px;font-weight:400;text-transform:uppercase}.post .post-toc .post-toc-content{font-size:15px}.post .post-toc .post-toc-content.always-active ul{display:block}.post .post-toc .post-toc-content>nav>ul{margin:10px 0}.post .post-toc .post-toc-content ul{padding-left:20px;list-style:square}.post .post-toc .post-toc-content ul ul{padding-left:15px;display:none}.post .post-toc .post-toc-content ul .has-active>ul{display:block}.post .post-toc .post-toc-content .toc-link.active{color:#c05b4d}@media screen and (max-width:1185px){.post .post-toc{display:none}}.post .post-content{word-wrap:break-word}.post .post-content h1{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h1 .anchor:hover{border-bottom:initial}.post .post-content h1 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h1 .anchor .icon-link:before{vertical-align:middle}.post .post-content h1:hover .icon-link{visibility:visible}.post .post-content h2{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h2 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h2 .anchor:hover{border-bottom:initial}.post .post-content h2 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h2 .anchor .icon-link:before{vertical-align:middle}.post .post-content h2:hover .icon-link{visibility:visible}.post .post-content h3{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h3 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h3 .anchor:hover{border-bottom:initial}.post .post-content h3 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h3 .anchor .icon-link:before{vertical-align:middle}.post .post-content h3:hover .icon-link{visibility:visible}.post .post-content h4{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h4 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h4 .anchor:hover{border-bottom:initial}.post .post-content h4 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h4 .anchor .icon-link:before{vertical-align:middle}.post .post-content h4:hover .icon-link{visibility:visible}.post .post-content h5{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h5 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h5 .anchor:hover{border-bottom:initial}.post .post-content h5 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h5 .anchor .icon-link:before{vertical-align:middle}.post .post-content h5:hover .icon-link{visibility:visible}.post .post-content h6{font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h6 .anchor{float:left;line-height:1;margin-left:-20px;padding-right:4px}.post .post-content h6 .anchor:hover{border-bottom:initial}.post .post-content h6 .anchor .icon-link{visibility:hidden;font-size:16px}.post .post-content h6 .anchor .icon-link:before{vertical-align:middle}.post .post-content h6:hover .icon-link{visibility:visible}.post .post-content a{color:#c05b4d;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #c05b4d}.post .post-content blockquote{margin:2em 0;padding:10px 20px;position:relative;color:rgba(52,73,94,.8);background-color:rgba(192,91,77,.05);border-left:3px solid rgba(192,91,77,.3);box-shadow:1px 1px 2px rgba(0,0,0,.125)}.post .post-content blockquote p{margin:0}.post .post-content img{display:inline-block;max-width:100%}.post .post-content .table-wrapper{overflow-x:auto}.post .post-content .table-wrapper>table{max-width:100%;margin:10px 0;border-spacing:0;box-shadow:2px 2px 3px rgba(0,0,0,.125)}.post .post-content .table-wrapper>table thead{background:#f8f5ec}.post .post-content .table-wrapper>table th,.post .post-content .table-wrapper>table td{padding:5px 15px;border:1px double #f4efe1}.post .post-content .table-wrapper>table tr:hover{background-color:#f8f5ec}.post .post-content code,.post .post-content pre{padding:7px;font-size:.9em;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#f8f5ec}.post .post-content code{padding:3px 5px;border-radius:4px;color:#c7254e}.post .post-content figure.highlight{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative}.post .post-content figure.highlight table{position:relative}.post .post-content figure.highlight table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#f4efe1;content:'Code'}.post .post-content figure.highlight.language-bash>table::after{content:"Bash"}.post .post-content figure.highlight.language-c>table::after{content:"C"}.post .post-content figure.highlight.language-cs>table::after{content:"C#"}.post .post-content figure.highlight.language-cpp>table::after{content:"C++"}.post .post-content figure.highlight.language-css>table::after{content:"CSS"}.post .post-content figure.highlight.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content figure.highlight.language-html>table::after{content:"HTML"}.post .post-content figure.highlight.language-xml>table::after{content:"XML"}.post .post-content figure.highlight.language-http>table::after{content:"HTTP"}.post .post-content figure.highlight.language-json>table::after{content:"JSON"}.post .post-content figure.highlight.language-java>table::after{content:"Java"}.post .post-content figure.highlight.language-js>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-javascript>table::after{content:"JavaScript"}.post .post-content figure.highlight.language-makefile>table::after{content:"Makefile"}.post .post-content figure.highlight.language-markdown>table::after{content:"Markdown"}.post .post-content figure.highlight.language-objectivec>table::after{content:"Objective-C"}.post .post-content figure.highlight.language-php>table::after{content:"PHP"}.post .post-content figure.highlight.language-perl>table::after{content:"Perl"}.post .post-content figure.highlight.language-python>table::after{content:"Python"}.post .post-content figure.highlight.language-ruby>table::after{content:"Ruby"}.post .post-content figure.highlight.language-sql>table::after{content:"SQL"}.post .post-content figure.highlight.language-shell>table::after{content:"Shell"}.post .post-content figure.highlight.language-erlang>table::after{content:"Erlang"}.post .post-content figure.highlight.language-go>table::after{content:"Go"}.post .post-content figure.highlight.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content figure.highlight.language-groovy>table::after{content:"Groovy"}.post .post-content figure.highlight.language-haskell>table::after{content:"Haskell"}.post .post-content figure.highlight.language-kotlin>table::after{content:"Kotlin"}.post .post-content figure.highlight.language-clojure>table::after{content:"Clojure"}.post .post-content figure.highlight.language-less>table::after{content:"Less"}.post .post-content figure.highlight.language-lisp>table::after{content:"Lisp"}.post .post-content figure.highlight.language-lua>table::after{content:"Lua"}.post .post-content figure.highlight.language-matlab>table::after{content:"Matlab"}.post .post-content figure.highlight.language-rust>table::after{content:"Rust"}.post .post-content figure.highlight.language-scss>table::after{content:"Scss"}.post .post-content figure.highlight.language-scala>table::after{content:"Scala"}.post .post-content figure.highlight.language-swift>table::after{content:"Swift"}.post .post-content figure.highlight.language-typescript>table::after{content:"TypeScript"}.post .post-content figure.highlight.language-yml>table::after{content:"YAML"}.post .post-content figure.highlight.language-yaml>table::after{content:"YAML"}.post .post-content figure.highlight.language-toml>table::after{content:"TOML"}.post .post-content figure.highlight.language-diff>table::after{content:"Diff"}.post .post-content figure.highlight .code pre{margin:0;padding:30px 10px 10px}.post .post-content figure.highlight .gutter{width:10px;color:#cacaca}.post .post-content figure.highlight .gutter pre{margin:0;padding:30px 7px 10px}.post .post-content figure.highlight .line{height:1em}.post .post-content figure.highlight table,.post .post-content figure.highlight tr,.post .post-content figure.highlight td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content figure.highlight .code .hljs-comment,.post .post-content figure.highlight .code .hljs-quote{color:#93a1a1}.post .post-content figure.highlight .code .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-tag,.post .post-content figure.highlight .code .hljs-addition{color:#859900}.post .post-content figure.highlight .code .hljs-number,.post .post-content figure.highlight .code .hljs-string,.post .post-content figure.highlight .code .hljs-meta .hljs-meta-string,.post .post-content figure.highlight .code .hljs-literal,.post .post-content figure.highlight .code .hljs-doctag,.post .post-content figure.highlight .code .hljs-regexp{color:#2aa198}.post .post-content figure.highlight .code .hljs-title,.post .post-content figure.highlight .code .hljs-section,.post .post-content figure.highlight .code .hljs-name,.post .post-content figure.highlight .code .hljs-selector-id,.post .post-content figure.highlight .code .hljs-selector-class{color:#268bd2}.post .post-content figure.highlight .code .hljs-attribute,.post .post-content figure.highlight .code .hljs-attr,.post .post-content figure.highlight .code .hljs-variable,.post .post-content figure.highlight .code .hljs-template-variable,.post .post-content figure.highlight .code .hljs-class .hljs-title,.post .post-content figure.highlight .code .hljs-type{color:#b58900}.post .post-content figure.highlight .code .hljs-symbol,.post .post-content figure.highlight .code .hljs-bullet,.post .post-content figure.highlight .code .hljs-subst,.post .post-content figure.highlight .code .hljs-meta,.post .post-content figure.highlight .code .hljs-meta .hljs-keyword,.post .post-content figure.highlight .code .hljs-selector-attr,.post .post-content figure.highlight .code .hljs-selector-pseudo,.post .post-content figure.highlight .code .hljs-link{color:#cb4b16}.post .post-content figure.highlight .code .hljs-built_in,.post .post-content figure.highlight .code .hljs-deletion{color:#dc322f}.post .post-content figure.highlight .code .hljs-formula{background:#eee8d5}.post .post-content figure.highlight .code .hljs-emphasis{font-style:italic}.post .post-content figure.highlight .code .hljs-strong{font-weight:700}.post .post-content .highlight>.chroma{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#f8f5ec}.post .post-content .highlight>.chroma code{padding:0}.post .post-content .highlight>.chroma table{position:relative}.post .post-content .highlight>.chroma table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:.9em;font-weight:700;color:#b1b1b1;background:#f4efe1;content:'Code'}.post .post-content .highlight>.chroma.language-bash>table::after{content:"Bash"}.post .post-content .highlight>.chroma.language-c>table::after{content:"C"}.post .post-content .highlight>.chroma.language-cs>table::after{content:"C#"}.post .post-content .highlight>.chroma.language-cpp>table::after{content:"C++"}.post .post-content .highlight>.chroma.language-css>table::after{content:"CSS"}.post .post-content .highlight>.chroma.language-coffeescript>table::after{content:"CoffeeScript"}.post .post-content .highlight>.chroma.language-html>table::after{content:"HTML"}.post .post-content .highlight>.chroma.language-xml>table::after{content:"XML"}.post .post-content .highlight>.chroma.language-http>table::after{content:"HTTP"}.post .post-content .highlight>.chroma.language-json>table::after{content:"JSON"}.post .post-content .highlight>.chroma.language-java>table::after{content:"Java"}.post .post-content .highlight>.chroma.language-js>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-javascript>table::after{content:"JavaScript"}.post .post-content .highlight>.chroma.language-makefile>table::after{content:"Makefile"}.post .post-content .highlight>.chroma.language-markdown>table::after{content:"Markdown"}.post .post-content .highlight>.chroma.language-objectivec>table::after{content:"Objective-C"}.post .post-content .highlight>.chroma.language-php>table::after{content:"PHP"}.post .post-content .highlight>.chroma.language-perl>table::after{content:"Perl"}.post .post-content .highlight>.chroma.language-python>table::after{content:"Python"}.post .post-content .highlight>.chroma.language-ruby>table::after{content:"Ruby"}.post .post-content .highlight>.chroma.language-sql>table::after{content:"SQL"}.post .post-content .highlight>.chroma.language-shell>table::after{content:"Shell"}.post .post-content .highlight>.chroma.language-erlang>table::after{content:"Erlang"}.post .post-content .highlight>.chroma.language-go>table::after{content:"Go"}.post .post-content .highlight>.chroma.language-go-html-template>table::after{content:"Go HTML Template"}.post .post-content .highlight>.chroma.language-groovy>table::after{content:"Groovy"}.post .post-content .highlight>.chroma.language-haskell>table::after{content:"Haskell"}.post .post-content .highlight>.chroma.language-kotlin>table::after{content:"Kotlin"}.post .post-content .highlight>.chroma.language-clojure>table::after{content:"Clojure"}.post .post-content .highlight>.chroma.language-less>table::after{content:"Less"}.post .post-content .highlight>.chroma.language-lisp>table::after{content:"Lisp"}.post .post-content .highlight>.chroma.language-lua>table::after{content:"Lua"}.post .post-content .highlight>.chroma.language-matlab>table::after{content:"Matlab"}.post .post-content .highlight>.chroma.language-rust>table::after{content:"Rust"}.post .post-content .highlight>.chroma.language-scss>table::after{content:"Scss"}.post .post-content .highlight>.chroma.language-scala>table::after{content:"Scala"}.post .post-content .highlight>.chroma.language-swift>table::after{content:"Swift"}.post .post-content .highlight>.chroma.language-typescript>table::after{content:"TypeScript"}.post .post-content .highlight>.chroma.language-yml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-yaml>table::after{content:"YAML"}.post .post-content .highlight>.chroma.language-toml>table::after{content:"TOML"}.post .post-content .highlight>.chroma.language-diff>table::after{content:"Diff"}.post .post-content .highlight>.chroma .lntd{line-height:1em}.post .post-content .highlight>.chroma .lntd:first-child{width:10px}.post .post-content .highlight>.chroma .lntd:first-child pre{margin:0;padding:30px 7px 10px}.post .post-content .highlight>.chroma .lntd:last-child{vertical-align:top}.post .post-content .highlight>.chroma .lntd:last-child pre{margin:0;padding:30px 10px 10px}.post .post-content .highlight>.chroma table,.post .post-content .highlight>.chroma tr,.post .post-content .highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma .lnt{color:#cacaca}.post .post-content .highlight>.chroma .hl{display:block;width:100%;background-color:#ffc}.post .post-content .highlight>.chroma .k{color:#859900}.post .post-content .highlight>.chroma .kc{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .kd{color:#859900}.post .post-content .highlight>.chroma .kn{color:#dc322f;font-weight:700}.post .post-content .highlight>.chroma .kp{color:#859900}.post .post-content .highlight>.chroma .kr{color:#859900}.post .post-content .highlight>.chroma .kt{color:#859900;font-weight:700}.post .post-content .highlight>.chroma .n{color:#268bd2}.post .post-content .highlight>.chroma .na{color:#268bd2}.post .post-content .highlight>.chroma .nb{color:#cb4b16}.post .post-content .highlight>.chroma .bp{color:#268bd2}.post .post-content .highlight>.chroma .nc{color:#cb4b16}.post .post-content .highlight>.chroma .no{color:#268bd2}.post .post-content .highlight>.chroma .nd{color:#268bd2}.post .post-content .highlight>.chroma .ni{color:#268bd2}.post .post-content .highlight>.chroma .ne{color:#268bd2}.post .post-content .highlight>.chroma .nf{color:#268bd2}.post .post-content .highlight>.chroma .fm{color:#268bd2}.post .post-content .highlight>.chroma .nl{color:#268bd2}.post .post-content .highlight>.chroma .nn{color:#268bd2}.post .post-content .highlight>.chroma .nx{color:#268bd2}.post .post-content .highlight>.chroma .py{color:#268bd2}.post .post-content .highlight>.chroma .nt{color:#268bd2;font-weight:700}.post .post-content .highlight>.chroma .nv{color:#268bd2}.post .post-content .highlight>.chroma .vc{color:#268bd2}.post .post-content .highlight>.chroma .vg{color:#268bd2}.post .post-content .highlight>.chroma .vi{color:#268bd2}.post .post-content .highlight>.chroma .vm{color:#268bd2}.post .post-content .highlight>.chroma .l{color:#2aa198}.post .post-content .highlight>.chroma .ld{color:#2aa198}.post .post-content .highlight>.chroma .s{color:#2aa198}.post .post-content .highlight>.chroma .sa{color:#2aa198}.post .post-content .highlight>.chroma .sb{color:#2aa198}.post .post-content .highlight>.chroma .sc{color:#2aa198}.post .post-content .highlight>.chroma .dl{color:#2aa198}.post .post-content .highlight>.chroma .sd{color:#2aa198}.post .post-content .highlight>.chroma .s2{color:#2aa198}.post .post-content .highlight>.chroma .se{color:#2aa198}.post .post-content .highlight>.chroma .sh{color:#2aa198}.post .post-content .highlight>.chroma .si{color:#2aa198}.post .post-content .highlight>.chroma .sx{color:#2aa198}.post .post-content .highlight>.chroma .sr{color:#2aa198}.post .post-content .highlight>.chroma .s1{color:#2aa198}.post .post-content .highlight>.chroma .ss{color:#2aa198}.post .post-content .highlight>.chroma .m{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mb{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mf{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mh{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mi{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .il{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .mo{color:#2aa198;font-weight:700}.post .post-content .highlight>.chroma .ow{color:#859900}.post .post-content .highlight>.chroma .c{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .ch{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cm{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .c1{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cp{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .cpf{color:#93a1a1;font-style:italic}.post .post-content .highlight>.chroma .g{color:#d33682}.post .post-content .highlight>.chroma .gd{color:#b58900}.post .post-content .highlight>.chroma .ge{color:#d33682}.post .post-content .highlight>.chroma .gr{color:#d33682}.post .post-content .highlight>.chroma .gh{color:#d33682}.post .post-content .highlight>.chroma .gi{color:#859900}.post .post-content .highlight>.chroma .go{color:#d33682}.post .post-content .highlight>.chroma .gp{color:#d33682}.post .post-content .highlight>.chroma .gs{color:#d33682}.post .post-content .highlight>.chroma .gu{color:#d33682}.post .post-content .highlight>.chroma .gt{color:#d33682}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more .read-more-link{color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #c05b4d}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;box-shadow:inset 0 -1px 0 #b5b5b5;font-size:.8em;line-height:1.25;font-family:sfmono-regular,liberation mono,roboto mono,Menlo,Monaco,Consolas,courier new,Courier,monospace;color:#4a4a4a}.post .post-content dl dt::after{content:':'}.post .post-content figure.center{text-align:center}.post .post-content figure.right{text-align:right}.post .post-content figure.left{text-align:left}.post .post-content figure figcaption h4{color:#b5b5b5;font-size:.9rem}.post .post-content hr{margin:1rem 0;position:relative;border-top:2px dashed #c05b4d;border-bottom:none}.post .post-content .footnote-ref>a{font-weight:700;margin-left:3px}.post .post-content .footnote-ref>a:before{content:"["}.post .post-content .footnote-ref>a:after{content:"]"}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .post-content .align-center{text-align:center}.post .post-content .align-right{text-align:right}.post .post-content .align-left{text-align:left}.post .post-content .MJXc-display{overflow-x:auto;overflow-y:hidden;padding-right:1px}.post .post-copyright{margin-top:20px;padding-top:10px;border-top:1px dashed #e6e6e6}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#c05b4d;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #c05b4d}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-footer{margin-top:20px;border-top:1px solid #e6e6e6;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{padding:15px 0}.post .post-footer .post-tags a{margin-right:5px;color:#c05b4d;word-break:break-all}.post .post-footer .post-tags a::before{content:'#'}.post .post-footer .post-nav{margin:1em 0}.post .post-footer .post-nav:before,.post .post-footer .post-nav:after{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .prev,.post .post-footer .post-nav .next{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#c05b4d;transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#c05b4d;transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:800px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.pagination{margin:2em 0}.pagination:before,.pagination:after{content:" ";display:table}.pagination:after{clear:both}.pagination .prev,.pagination .next{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#c05b4d;transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#c05b4d;transform:translateX(4px)}.footer{margin-top:2em}.footer .social-links{text-align:center}.footer .social-links .iconfont{font-size:30px}.footer .social-links .iconfont+.iconfont{margin-left:10px}.footer .social-links .iconfont:hover{color:#c05b4d}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#c05b4d}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px}.archive{margin:2em 0;max-width:550px}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.tag,.archive .archive-title.category{margin:15px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:15px 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:3px 20px;border-left:1px solid #cacaca}.archive .archive-post .archive-post-time{margin-right:10px;color:#8a8a8a}.archive .archive-post .archive-post-title .archive-post-link{color:#c05b4d}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{border-left:3px solid #c05b4d;transition:.2s ease-out;transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#a14639}@media screen and (max-width:800px){.archive{margin-left:auto;margin-right:auto}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}}.terms{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.terms .terms-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.terms .terms-tags{margin:10px 0}.terms .terms-tags .terms-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.terms .terms-tags .terms-link .terms-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.terms .terms-tags .terms-link:active,.terms .terms-tags .terms-link:focus,.terms .terms-tags .terms-link:hover{color:#c05b4d;transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-panel{position:relative;z-index:1;background-color:#fefefe;min-height:100vh}.slideout-open,.slideout-open body,.slideout-open .slideout-panel{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;box-shadow:0 2px 2px #cacaca;text-align:center;transition:transform 300ms ease;z-index:99}.mobile-navbar.fixed-open{transform:translate3d(180px,0px,0px)}.mobile-navbar .mobile-header-logo{display:inline-block;margin-right:50px}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:chancery,cursive,LiSu,sans-serif}.mobile-navbar .mobile-navbar-icon{color:#c05b4d;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;transition:background .5s}@keyframes clickfirst{0%{transform:translateY(6px)rotate(0deg)}100%{transform:translateY(0)rotate(45deg)}}@keyframes clickmid{0%{opacity:1}100%{opacity:0}}@keyframes clicklast{0%{transform:translateY(-6px)rotate(0deg)}100%{transform:translateY(0)rotate(-45deg)}}@keyframes outfirst{0%{transform:translateY(0)rotate(-45deg)}100%{transform:translateY(-6px)rotate(0deg)}}@keyframes outmid{0%{opacity:0}100%{opacity:1}}@keyframes outlast{0%{transform:translateY(0)rotate(45deg)}100%{transform:translateY(6px)rotate(0deg)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px)/2);top:calc((100% - 1px)/2);width:20px;height:1px;background-color:#c05b4d}.mobile-navbar .mobile-navbar-icon span:nth-child(1){transform:translateY(6px)rotate(0deg)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){transform:translateY(-6px)rotate(0deg)}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(1){animation-duration:.5s;animation-fill-mode:both;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:outlast}.mobile-menu{background-color:rgba(248,245,236,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f8f5ec}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f8f5ec}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#c05b4d}@media screen and (max-width:800px){.mobile-navbar{display:block}}.back-to-top{display:none;position:fixed;right:20px;bottom:20px;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s;z-index:10}.back-to-top:hover{transform:translateY(-5px)}@media screen and (max-width:800px){.back-to-top{display:none!important}}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#c05b4d} \ No newline at end of file diff --git a/public/search/index.html b/public/search/index.html deleted file mode 100644 index 7588498..0000000 --- a/public/search/index.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - Search Results - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
-
-

Matching pages

-
-
-
- - - -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/sitemap.xml b/public/sitemap.xml deleted file mode 100644 index a94aa10..0000000 --- a/public/sitemap.xml +++ /dev/null @@ -1,550 +0,0 @@ - - - - - /paper/legnani12_new_isotr_decoup_paral_manip/ - weekly - 0.5 - - - - /paper/fleming13_review_nanom_resol_posit_sensor/ - weekly - 0.5 - - - - /paper/preumont07_six_axis_singl_stage_activ/ - weekly - 0.5 - - - - /paper/spanos95_soft_activ_vibrat_isolat/ - weekly - 0.5 - - - - /paper/devasia07_survey_contr_issues_nanop/ - weekly - 0.5 - - - - /zettels/active_damping/ - weekly - 0.5 - - - - /paper/holterman05_activ_dampin_based_decoup_colloc_contr/ - weekly - 0.5 - - - - /paper/hanieh03_activ_stewar/ - weekly - 0.5 - - - - /paper/alkhatib03_activ_struc_vibrat_contr/ - weekly - 0.5 - - - - /zettels/actuators/ - weekly - 0.5 - - - - /paper/oomen18_advan_motion_contr_precis_mechat/ - weekly - 0.5 - - - - /paper/saxena12_advan_inter_model_contr_techn/ - weekly - 0.5 - - - - /paper/poel10_explor_activ_hard_mount_vibrat/ - weekly - 0.5 - - - - /paper/holler12_instr_x_ray_nano_imagin/ - weekly - 0.5 - - - - /paper/geng95_intel_contr_system_multip_degree/ - weekly - 0.5 - - - - /paper/wang12_autom_marker_full_field_hard/ - weekly - 0.5 - - - - /book/leach18_basic_precis_engin_edition/ - weekly - 0.5 - - - - /book/ - weekly - 0.5 - - - - /categories/cat1/ - weekly - 0.5 - - - - /categories/cat2/ - weekly - 0.5 - - - - /categories/ - weekly - 0.5 - - - - /paper/ito16_compar_class_high_precis_actuat/ - weekly - 0.5 - - - - /zettels/complementary_filters/ - weekly - 0.5 - - - - /websites/control_bootcamp/ - weekly - 0.5 - - - - /paper/bryson93_contr_spacec_aircr/ - weekly - 0.5 - - - - /zettels/cubic_architecture/ - weekly - 0.5 - - - - /websites/data_driven_dynamical_systems_with_machine_learning/ - weekly - 0.5 - - - - /paper/tang18_decen_vibrat_contr_voice_coil/ - weekly - 0.5 - - - - /paper/schellekens98_desig_precis/ - weekly - 0.5 - - - - /book/fleming14_desig_model_contr_nanop_system/ - weekly - 0.5 - - - - /paper/yang19_dynam_model_decoup_contr_flexib/ - weekly - 0.5 - - - - /paper/jiao18_dynam_model_exper_analy_stewar/ - weekly - 0.5 - - - - /zettels/electronics/ - weekly - 0.5 - - - - /paper/fleming12_estim/ - weekly - 0.5 - - - - /zettels/flexible_joints/ - weekly - 0.5 - - - - /paper/preumont02_force_feedb_versus_accel_feedb/ - weekly - 0.5 - - - - /zettels/force_sensors/ - weekly - 0.5 - - - - /book/leach14_fundam_princ_engin_nanom/ - weekly - 0.5 - - - - /paper/bibel92_guidel_h/ - weekly - 0.5 - - - - /zettels/h_infinity_control/ - weekly - 0.5 - - - - /zettels/hac_hac/ - weekly - 0.5 - - - - /paper/chen00_ident_decoup_contr_flexur_joint_hexap/ - weekly - 0.5 - - - - /paper/garg07_implem_chall_multiv_contr/ - weekly - 0.5 - - - - /zettels/inertial_sensors/ - weekly - 0.5 - - - - /paper/stankevic17_inter_charac_rotat_stages_x_ray_nanot/ - weekly - 0.5 - - - - /paper/wang16_inves_activ_vibrat_isolat_stewar/ - weekly - 0.5 - - - - /paper/gao15_measur_techn_precis_posit/ - weekly - 0.5 - - - - /zettels/metrology/ - weekly - 0.5 - - - - /book/ewins00_modal/ - weekly - 0.5 - - - - /book/du10_model_contr_vibrat_mechan_system/ - weekly - 0.5 - - - - /zettels/motion_control/ - weekly - 0.5 - - - - /book/du19_multi_actuat_system_contr/ - weekly - 0.5 - - - - /zettels/multivariable_control/ - weekly - 0.5 - - - - /book/albertos04_multiv_contr_system/ - weekly - 0.5 - - - - /book/skogestad07_multiv_feedb_contr/ - weekly - 0.5 - - - - / - weekly - 0.5 - - - - /zettels/nano_active_stabilization_system/ - weekly - 0.5 - - - - /paper/furutani04_nanom_cuttin_machin_using_stewar/ - weekly - 0.5 - - - - /paper/fleming10_nanop_system_with_force_feedb/ - weekly - 0.5 - - - - /paper/sebastian12_nanop_with_multip_sensor/ - weekly - 0.5 - - - - /paper/ - weekly - 0.5 - - - - /book/taghirad13_paral/ - weekly - 0.5 - - - - /paper/butler11_posit_contr_lithog_equip/ - weekly - 0.5 - - - - /zettels/position_sensors/ - weekly - 0.5 - - - - /zettels/positioning_stations/ - weekly - 0.5 - - - - /zettels/precision_engineering/ - weekly - 0.5 - - - - /zettels/reference_books/ - weekly - 0.5 - - - - /paper/collette11_review_activ_vibrat_isolat_strat/ - weekly - 0.5 - - - - /search/ - weekly - 0.1 - - - - /zettels/sensor_fusion/ - weekly - 0.5 - - - - /paper/tjepkema12_sensor_fusion_activ_vibrat_isolat_precis_equip/ - weekly - 0.5 - - - - /paper/collette15_sensor_fusion_method_high_perfor/ - weekly - 0.5 - - - - /paper/hauge04_sensor_contr_space_based_six/ - weekly - 0.5 - - - - /paper/li01_simul_vibrat_isolat_point_contr/ - weekly - 0.5 - - - - /paper/li01_simul_fault_vibrat_isolat_point/ - weekly - 0.5 - - - - /paper/zhang11_six_dof/ - weekly - 0.5 - - - - /zettels/stewart_platforms/ - weekly - 0.5 - - - - /paper/furqan17_studies_stewar_platf_manip/ - weekly - 0.5 - - - - /zettels/system_identification/ - weekly - 0.5 - - - - /tags/tag1/ - weekly - 0.5 - - - - /tags/tag2/ - weekly - 0.5 - - - - /tags/ - weekly - 0.5 - - - - /zettels/test/ - weekly - 0.5 - - - - /book/horowitz15_art_of_elect_third_edition/ - weekly - 0.5 - - - - /book/schmidt14_desig_high_perfor_mechat_revis_edition/ - weekly - 0.5 - - - - /paper/dasgupta00_stewar_platf_manip/ - weekly - 0.5 - - - - /book/preumont18_vibrat_contr_activ_struc_fourt_edition/ - weekly - 0.5 - - - - /paper/collette14_vibrat/ - weekly - 0.5 - - - - /zettels/vibration_isolation/ - weekly - 0.5 - - - - /websites/ - weekly - 0.5 - - - - /zettels/ - weekly - 0.5 - - - \ No newline at end of file diff --git a/public/sitemap.xsl b/public/sitemap.xsl deleted file mode 100644 index 11a52bb..0000000 --- a/public/sitemap.xsl +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - XML Sitemap - - - - -
-

XML Sitemap

-

- This is a sitemap generated by Hugo to allow search engines to discover this blog's content. -

-

- The xsl style copy from Ghost. -

- - - - - - - - - - - - - - - - - - - - - -
URL ( total)PrioCh. Freq.Last Modified
- - - - - - - - - - - - -
-
- - - -
-
\ No newline at end of file diff --git a/public/tags/index.html b/public/tags/index.html deleted file mode 100644 index b8ba077..0000000 --- a/public/tags/index.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - Tags - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
- 2 Tags In Total -
- -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/tags/index.xml b/public/tags/index.xml deleted file mode 100644 index 3cf8efe..0000000 --- a/public/tags/index.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - Tags on My digital brain - /tags/ - Recent content in Tags on My digital brain - Hugo -- gohugo.io - en - - - - - - tag1 - /tags/tag1/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /tags/tag1/ - - - - - tag2 - /tags/tag2/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /tags/tag2/ - - - - - \ No newline at end of file diff --git a/public/tags/tag1/index.html b/public/tags/tag1/index.html deleted file mode 100644 index 51ecf11..0000000 --- a/public/tags/tag1/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - tag1 · My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

tag1

-
- -
- - 0001-01-01 - - - - Active structural vibration control: a review - - -
-
- - -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/tags/tag1/index.xml b/public/tags/tag1/index.xml deleted file mode 100644 index 18d40b4..0000000 --- a/public/tags/tag1/index.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - tag1 on My digital brain - /tags/tag1/ - Recent content in tag1 on My digital brain - Hugo -- gohugo.io - en - - - - - - Active structural vibration control: a review - /paper/alkhatib03_activ_struc_vibrat_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/alkhatib03_activ_struc_vibrat_contr/ - Tags : - Reference (Rabih Alkhatib &amp; Golnaraghi, 2003) Author(s) Alkhatib, R., &amp; Golnaraghi, M. F. Year 2003 Process of designing an active vibration control system Analyze the structure to be controled Obtain an idealized mathematical model with FEM or experimental modal analysis Reduce the model order is necessary Analyze the resulting model: dynamics properties, types of disturbances, &hellip; Quantify sensors and actuators requirements. Decide on their types and location Analyze the impact of the sensors and actuators on the overall dynamic characteristics Specify performance criteria and stability tradeoffs Device of the type of control algorythm to be employed and design a controller to meet the specifications Simulate the resulting controlled system on a computer If the controller does not meet the requirements, adjust the specifications or modify the type of controller Choose hardware and software and integrate the components on a pilot plant Formulate experiments and perform system identification and model updating Implement controller and carry out system test to evaluate the performance Feedback control Active damping The objective is to reduce the resonance peaks of the closed loop transfer function. - - - - \ No newline at end of file diff --git a/public/tags/tag1/page/1/index.html b/public/tags/tag1/page/1/index.html deleted file mode 100644 index 3619d05..0000000 --- a/public/tags/tag1/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -/tags/tag1/ \ No newline at end of file diff --git a/public/tags/tag2/index.html b/public/tags/tag2/index.html deleted file mode 100644 index ff6b2bd..0000000 --- a/public/tags/tag2/index.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - tag2 · My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

tag2

-
- -
- - 0001-01-01 - - - - Active structural vibration control: a review - - -
-
- - -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/tags/tag2/index.xml b/public/tags/tag2/index.xml deleted file mode 100644 index ee82dcf..0000000 --- a/public/tags/tag2/index.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - tag2 on My digital brain - /tags/tag2/ - Recent content in tag2 on My digital brain - Hugo -- gohugo.io - en - - - - - - Active structural vibration control: a review - /paper/alkhatib03_activ_struc_vibrat_contr/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /paper/alkhatib03_activ_struc_vibrat_contr/ - Tags : - Reference (Rabih Alkhatib &amp; Golnaraghi, 2003) Author(s) Alkhatib, R., &amp; Golnaraghi, M. F. Year 2003 Process of designing an active vibration control system Analyze the structure to be controled Obtain an idealized mathematical model with FEM or experimental modal analysis Reduce the model order is necessary Analyze the resulting model: dynamics properties, types of disturbances, &hellip; Quantify sensors and actuators requirements. Decide on their types and location Analyze the impact of the sensors and actuators on the overall dynamic characteristics Specify performance criteria and stability tradeoffs Device of the type of control algorythm to be employed and design a controller to meet the specifications Simulate the resulting controlled system on a computer If the controller does not meet the requirements, adjust the specifications or modify the type of controller Choose hardware and software and integrate the components on a pilot plant Formulate experiments and perform system identification and model updating Implement controller and carry out system test to evaluate the performance Feedback control Active damping The objective is to reduce the resonance peaks of the closed loop transfer function. - - - - \ No newline at end of file diff --git a/public/tags/tag2/page/1/index.html b/public/tags/tag2/page/1/index.html deleted file mode 100644 index db2eea6..0000000 --- a/public/tags/tag2/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -/tags/tag2/ \ No newline at end of file diff --git a/public/websites/control_bootcamp/index.html b/public/websites/control_bootcamp/index.html deleted file mode 100644 index 33b278d..0000000 --- a/public/websites/control_bootcamp/index.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - Control Bootcamp - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

Tags -:

-

https://www.youtube.com/playlist?list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m

-

Overview

-

Linear Systems

-

Stability and Eigenvalues

-

Linearizing Around a Fixed Point

-

Controllability

-

Controllability, Reachability, and Eigenvalue Placement

-

Controllability and the Discrete-Time Impulse Response

-

Degrees of Controllability and Gramians

-

Controllability and the PBH Test

-

Cayley-Hamilton Theorem

-

Reachability and Controllability with Cayley-Hamilton

-

Inverted Pendulum on a Cart

-

Eigenvalue Placement for the Inverted Pendulum on a Cart

-

Linear Quadratic Regulator (LQR) Control for the Inverted Pendulum on a Cart

-

Motivation for Full-State Estimation

-

Observability

-

Full-State Estimation

-

Kalman Filter

-

Observability Example in Matlab

-

Observability Example in Matlab (Part 2)

-

Kalman Filter Example in Matlab

-

Linear Quadratic Gaussian (LQG)

-

LQG Example in Matlab

-

Introduction to Robust Control

-

Three Equivalent Representations of Linear Systems

-

Example Frequency Response (Bode Plot) for Spring-Mass-Damper

-

Laplace Transforms and the Transfer Function

-

Benefits of Feedback on Cruise Control Example

-

Benefits of Feedback on Cruise Control Example (Part 2)

-

Cruise Control Example with Proportional-Integral (PI) control

-

Sensitivity and Complementary Sensitivity

-

Sensitivity and Complementary Sensitivity (Part 2)

-

Loop shaping

-

Loop Shaping Example for Cruise Control

-

Sensitivity and Robustness

-

Limitations on Robustness

-

Cautionary Tale About Inverting the Plant Dynamics

-

Control systems with non-minimum phase dynamics

-

<./biblio/references.bib>

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/websites/data_driven_dynamical_systems_with_machine_learning/index.html b/public/websites/data_driven_dynamical_systems_with_machine_learning/index.html deleted file mode 100644 index ad6a473..0000000 --- a/public/websites/data_driven_dynamical_systems_with_machine_learning/index.html +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - Data-Driven Dynamical Systems with Machine Learning - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
-
-

Tags -:

-

Data-Driven Control

-

Overview

-

Challenges

-

With modern control (LQR, LQG, H-Infinity), we work with linear system (or linearized systems) and we develop a control law that minimize some cost function.

-

Challenging systems where modern control is not efficient:

-
    -
  • Non-linear systems
  • -
  • System with unknown dynamics
  • -
  • High dimensional systems
  • -
  • Limited measurements or control inputs
  • -
-

For these kinds of systems, data-driven control seems to be a good alternative.

-

What is control?

-

It’s an optimization constrained by dynamics of the system.

-

The optimization is easy when the system is linear and the cost function is quadratic. -When the system is non-linear or when the cost function is non quadratic, the optimization becomes complicated (non closed form). Then the optimization should be rerun on the fly, which is what is done with MPC (model predictive control).

-

What is Machine-Learning?

-

Machine-learning is powerful non-linear optimization based on data.

-

Outline of this lecture

-
Data Driven Models
-

For the problem of unknown dynamics, we can use data driven models. -The goal is to collect data to generate of model of the system.

-
Machine Learning Control
-

When we use the control inputs, the system changes and the system model might be not valid anymore. -The idea is to use data driven machine learning directly to learn a good controller.

-
Sensor and actuator placement
-

Use powerful optimization techniques from machine learning to learn what are good sensors and actuators.

-

Linear System Identification

-

The Goal of Balanced Model Reduction

-

Change of Variables in Control Systems

-

Change of Variables in Control Systems (Correction)

-

Balancing Example

-

Balancing Transformation

-

Balanced Truncation

-

Balanced Truncation Example

-

Error Bounds for Balanced Truncation

-

Balanced Proper Orthogonal Decomposition

-

BPOD and Output Projection

-

Balanced Truncation and BPOD Example

-

Eigensystem Realization Algorithm

-

ERA and the Discrete-Time Impulse Response

-

Eigensystem Realization Algorithm Procedure

-

Balanced Models with ERA

-

Observer Kalman Filter Identification

-

ERA_OKID Example in Matlab

-

System Identification

-

Full-State Models with Control

-

Regression Models

-

Dynamic Mode Decomposition with Control

-

DMD Control Example

-

Koopman with Control

-

Sparse Nonlinear Models with Control

-

Model Predictive Control

-

Sparse Identification of Nonlinear Dynamics for Model Predictive Control

-

Machine Learning Control

-

Overview

-

Genetic Algorithms

-

Tuning a PID Controller with Genetic Algorithms

-

Tuning a PID Controller with Genetic Algorithms (Part 2)

-

Genetic Programming

-

Genetic Programming Control

-

Extremum Seeking Control

-

Introduction

-

Matlab

- -

Challenging Example

-

Applications

-

<./biblio/references.bib>

- -
-
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/websites/index.html b/public/websites/index.html deleted file mode 100644 index e4ba819..0000000 --- a/public/websites/index.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - Archive - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-

0001

-
- -
- - 01-01 - - - - Data-Driven Dynamical Systems with Machine Learning - - -
- -
- - 01-01 - - - - Control Bootcamp - - -
- - -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - diff --git a/public/websites/index.xml b/public/websites/index.xml deleted file mode 100644 index 6fc03c6..0000000 --- a/public/websites/index.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - Websites on My digital brain - /websites/ - Recent content in Websites on My digital brain - Hugo -- gohugo.io - en - - - - - - Control Bootcamp - /websites/control_bootcamp/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /websites/control_bootcamp/ - Tags : -https://www.youtube.com/playlist?list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m -Overview Linear Systems Stability and Eigenvalues Linearizing Around a Fixed Point Controllability Controllability, Reachability, and Eigenvalue Placement Controllability and the Discrete-Time Impulse Response Degrees of Controllability and Gramians Controllability and the PBH Test Cayley-Hamilton Theorem Reachability and Controllability with Cayley-Hamilton Inverted Pendulum on a Cart Eigenvalue Placement for the Inverted Pendulum on a Cart Linear Quadratic Regulator (LQR) Control for the Inverted Pendulum on a Cart Motivation for Full-State Estimation Observability Full-State Estimation Kalman Filter Observability Example in Matlab Observability Example in Matlab (Part 2) Kalman Filter Example in Matlab Linear Quadratic Gaussian (LQG) LQG Example in Matlab Introduction to Robust Control Three Equivalent Representations of Linear Systems Example Frequency Response (Bode Plot) for Spring-Mass-Damper Laplace Transforms and the Transfer Function Benefits of Feedback on Cruise Control Example Benefits of Feedback on Cruise Control Example (Part 2) Cruise Control Example with Proportional-Integral (PI) control Sensitivity and Complementary Sensitivity Sensitivity and Complementary Sensitivity (Part 2) Loop shaping Loop Shaping Example for Cruise Control Sensitivity and Robustness Limitations on Robustness Cautionary Tale About Inverting the Plant Dynamics Control systems with non-minimum phase dynamics &lt;. - - - - Data-Driven Dynamical Systems with Machine Learning - /websites/data_driven_dynamical_systems_with_machine_learning/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /websites/data_driven_dynamical_systems_with_machine_learning/ - Tags : -Data-Driven Control Overview Challenges With modern control (LQR, LQG, H-Infinity), we work with linear system (or linearized systems) and we develop a control law that minimize some cost function. -Challenging systems where modern control is not efficient: - Non-linear systems System with unknown dynamics High dimensional systems Limited measurements or control inputs For these kinds of systems, data-driven control seems to be a good alternative. -What is control? - - - - \ No newline at end of file diff --git a/public/websites/page/1/index.html b/public/websites/page/1/index.html deleted file mode 100644 index 7734251..0000000 --- a/public/websites/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -/websites/ \ No newline at end of file diff --git a/public/zettels/active_damping/index.html b/public/zettels/active_damping/index.html deleted file mode 100644 index 58591ca..0000000 --- a/public/zettels/active_damping/index.html +++ /dev/null @@ -1,201 +0,0 @@ - - - - - - Active Damping - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/actuators/index.html b/public/zettels/actuators/index.html deleted file mode 100644 index dd20b6a..0000000 --- a/public/zettels/actuators/index.html +++ /dev/null @@ -1,324 +0,0 @@ - - - - - - Actuators - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Actuators

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-

How to choose the correct actuator for my application?

-

For vibration isolation:

- -

Piezoelectric

- - - - - - - - - - - - - - - - - - - - - - - - - -
SuppliersLinks
Cedratlink
PIlink
Piezo Systemlink
Noliaclink
-

A model of a multi-layer monolithic piezoelectric stack actuator is described in (Fleming, 2010) (Notes).

-

Voice Coil

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SuppliersLinks
Geepluslink
Macconlink
TDS PPlink
H2techlink
PBA Systemslink
Celera Motionlink
Beikimcolink
Electromatelink
Magnetic Innovationslink
-

Shaker

- - - - - - - - - - - - - - - - - - - - - -
SuppliersLinks
BKSVlink
Vibration Researchlink
Sentek Dynamicslink
-

https://www.bksv.com/en/products/shakers-and-exciters/LDS-shaker-systems/permanent-magnet-shakers/V201

-

Brush-less DC Motor

- -

https://www.electricaltechnology.org/2016/05/bldc-brushless-dc-motor-construction-working-principle.html

-

Bibliography

-

Ito, S., & Schitter, G., Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation, IEEE/ASME Transactions on Mechatronics, 21(2), 1169–1178 (2016). http://dx.doi.org/10.1109/tmech.2015.2478658

-

Fleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422

-

Yedamale, P., Brushless dc (bldc) motor fundamentals, Microchip Technology Inc, 20(), 3–15 (2003).

- - - -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/complementary_filters/index.html b/public/zettels/complementary_filters/index.html deleted file mode 100644 index cacce78..0000000 --- a/public/zettels/complementary_filters/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - Complementary Filters - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/cubic_architecture/index.html b/public/zettels/cubic_architecture/index.html deleted file mode 100644 index d462e24..0000000 --- a/public/zettels/cubic_architecture/index.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - Cubic Architecture - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
- -
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/electronics/index.html b/public/zettels/electronics/index.html deleted file mode 100644 index 952c00c..0000000 --- a/public/zettels/electronics/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - Electronics - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/flexible_joints/index.html b/public/zettels/flexible_joints/index.html deleted file mode 100644 index 147454f..0000000 --- a/public/zettels/flexible_joints/index.html +++ /dev/null @@ -1,210 +0,0 @@ - - - - - - Flexible Joints - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/force_sensors/index.html b/public/zettels/force_sensors/index.html deleted file mode 100644 index 6103c2b..0000000 --- a/public/zettels/force_sensors/index.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - Force Sensors - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Force Sensors

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-

Suppliers

- - - - - - - - - - - - - -
PCBlink
-

Dynamics and Noise of a piezoelectric force sensor

-

An analysis the dynamics and noise of a piezoelectric force sensor is done in (Fleming, 2010) (Notes).

-

Bibliography

-

Fleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/h_infinity_control/index.html b/public/zettels/h_infinity_control/index.html deleted file mode 100644 index dba3c1a..0000000 --- a/public/zettels/h_infinity_control/index.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - H Infinity Control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

H Infinity Control

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-

Nice Citations

-

From Rosenbrock, H. H. (1974). Computer-Aided Control System Design, Academic Press, New York:

-
-

Solutions are constrained by so many requirements that it is virtually impossible to list them all. -The designer finds himself threading a maze of such requirements, attempting to reconcile conflicting demands of cost, performance, easy maintenance, and so on. -A good design usually has strong aesthetic appeal to those who are competent in the subject.

-
-

<./biblio/references.bib>

- - - -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/hac_hac/index.html b/public/zettels/hac_hac/index.html deleted file mode 100644 index 71d2e03..0000000 --- a/public/zettels/hac_hac/index.html +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - HAC-HAC - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

HAC-HAC

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-

High-Authority Control/Low-Authority Control

-

From (Andre Preumont, 2018):

-
-

The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure 1. The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure. This approach has the following advantages:

-
    -
  • The active damping extends outside the bandwidth of the HAC and reduces the settling time of the modes which are outsite the bandwidth
  • -
  • The active damping makes it easier to gain-stabilize the modes outside the bandwidth of the output loop (improved gain margin)
  • -
  • The larger damping of the modes within the controller bandwidth makes them more robust to the parmetric uncertainty (improved phase margin)
  • -
-
-

-
- Figure 1: HAC-LAC Control Architecture
-

Figure 1: HAC-LAC Control Architecture

-
-
- -

Bibliography

-

Preumont, A., Vibration control of active structures - fourth edition (2018), : Springer International Publishing.

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/index.html b/public/zettels/index.html deleted file mode 100644 index e662dca..0000000 --- a/public/zettels/index.html +++ /dev/null @@ -1,284 +0,0 @@ - - - - - - Archive - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/index.xml b/public/zettels/index.xml deleted file mode 100644 index 2e8dea4..0000000 --- a/public/zettels/index.xml +++ /dev/null @@ -1,284 +0,0 @@ - - - - Zettels on My digital brain - /zettels/ - Recent content in Zettels on My digital brain - Hugo -- gohugo.io - en - - - - - - Active Damping - /zettels/active_damping/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/active_damping/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Active isolation and damping of vibrations via stewart platform Active damping based on decoupled collocated control - - - - Actuators - /zettels/actuators/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/actuators/ - Tags : -How to choose the correct actuator for my application? For vibration isolation: - In (Shingo Ito &amp; Georg Schitter, 2016), the effect of the actuator stiffness on the attainable vibration isolation is studied (Notes) Piezoelectric Suppliers Links Cedrat link PI link Piezo System link Noliac link A model of a multi-layer monolithic piezoelectric stack actuator is described in (Fleming, 2010) (Notes). - - - - Complementary Filters - /zettels/complementary_filters/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/complementary_filters/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Advances in internal model control technique: a review and future prospects - - - - Cubic Architecture - /zettels/cubic_architecture/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/cubic_architecture/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Sensors and control of a space-based six-axis vibration isolation system Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods - - - - Electronics - /zettels/electronics/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/electronics/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks The art of electronics - third edition - - - - Flexible Joints - /zettels/flexible_joints/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/flexible_joints/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks A six-axis single-stage active vibration isolator based on stewart platform Nanometre-cutting machine using a stewart-platform parallel mechanism Dynamic modeling and experimental analyses of stewart platform with flexible hinges Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Identification and decoupling control of flexure jointed hexapods - - - - Force Sensors - /zettels/force_sensors/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/force_sensors/ - Tags : -Suppliers PCB link Dynamics and Noise of a piezoelectric force sensor An analysis the dynamics and noise of a piezoelectric force sensor is done in (Fleming, 2010) (Notes). -Bibliography Fleming, A., Nanopositioning system with force feedback for high-performance tracking and vibration control, IEEE/ASME Transactions on Mechatronics, 15(3), 433–447 (2010). http://dx.doi.org/10.1109/tmech.2009.2028422 ↩ - - - - H Infinity Control - /zettels/h_infinity_control/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/h_infinity_control/ - Tags : -Nice Citations From Rosenbrock, H. H. (1974). Computer-Aided Control System Design, Academic Press, New York: - Solutions are constrained by so many requirements that it is virtually impossible to list them all. The designer finds himself threading a maze of such requirements, attempting to reconcile conflicting demands of cost, performance, easy maintenance, and so on. A good design usually has strong aesthetic appeal to those who are competent in the subject. - - - - HAC-HAC - /zettels/hac_hac/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/hac_hac/ - Tags : -High-Authority Control/Low-Authority Control -From (Andre Preumont, 2018): - The HAC/LAC approach consist of combining the two approached in a dual-loop control as shown in Figure 1. The inner loop uses a set of collocated actuator/sensor pairs for decentralized active damping with guaranteed stability ; the outer loop consists of a non-collocated HAC based on a model of the actively damped structure. This approach has the following advantages: - The active damping extends outside the bandwidth of the HAC and reduces the settling time of the modes which are outsite the bandwidth The active damping makes it easier to gain-stabilize the modes outside the bandwidth of the output loop (improved gain margin) The larger damping of the modes within the controller bandwidth makes them more robust to the parmetric uncertainty (improved phase margin) - - - - Inertial Sensors - /zettels/inertial_sensors/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/inertial_sensors/ - Tags Position Sensors Reviews (Collette {\it et al.}, 2012) Accelerometers Micromega Dynamics link MMF link PCB link Wireless Accelerometers - https://micromega-dynamics.com/products/recovib/miniature-vibration-recorder/ - Figure 1: Characteristics of commercially available accelerometers (Collette {it et al.}, 2011) - Geophones Sercel link Wilcoxon link - - - - Metrology - /zettels/metrology/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/metrology/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Fundamental principles of engineering nanometrology - - - - Motion Control - /zettels/motion_control/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/motion_control/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Advanced motion control for precision mechatronics: control, identification, and learning of complex systems - - - - Multivariable Control - /zettels/multivariable_control/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/multivariable_control/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Position control in lithographic equipment Implementation challenges for multivariable control: what you did not learn in school! Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Multivariable control systems: an engineering approach Multivariable feedback control: analysis and design - - - - Nano Active Stabilization System - /zettels/nano_active_stabilization_system/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/nano_active_stabilization_system/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Interferometric characterization of rotation stages for x-ray nanotomography Automated markerless full field hard x-ray microscopic tomography at sub-50 nm 3-dimension spatial resolution An instrument for 3d x-ray nano-imaging - - - - Position Sensors - /zettels/position_sensors/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/position_sensors/ - Tags Inertial Sensors Reviews of position sensors (Collette {\it et al.}, 2012) Fleming, A. J., A review of nanometer resolution position sensors: operation and performance (Andrew Fleming, 2013) (Notes) Relative Position Sensors -Table 1: Characteristics of relative measurement sensors collette11_review Technology Frequency Resolution Range T Range LVDT DC-200 Hz 10 nm rms 1-10 mm -50,100 °C Eddy current 5 kHz 0. - - - - Positioning Stations - /zettels/positioning_stations/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/positioning_stations/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Interferometric characterization of rotation stages for x-ray nanotomography Position control in lithographic equipment An instrument for 3d x-ray nano-imaging - - - - Precision Engineering - /zettels/precision_engineering/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/precision_engineering/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Design for precision: current status and trends Basics of precision engineering - 1st edition - - - - Reference Books - /zettels/reference_books/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/reference_books/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Modal testing: theory, practice and application The art of electronics - third edition Vibration Control of Active Structures - Fourth Edition Parallel robots : mechanics and control The design of high performance mechatronics - 2nd revised edition Multivariable feedback control: analysis and design - - - - Sensor Fusion - /zettels/sensor_fusion/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/sensor_fusion/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Sensor fusion for active vibration isolation in precision equipment Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs Sensor fusion methods for high performance active vibration isolation systems Nanopositioning system with force feedback for high-performance tracking and vibration control Nanopositioning with multiple sensors: a case study in data storage - - - - Stewart Platforms - /zettels/stewart_platforms/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/stewart_platforms/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Six dof active vibration control using stewart platform with non-cubic configuration Decentralized vibration control of a voice coil motor-based stewart parallel mechanism: simulation and experiments Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Parallel robots : mechanics and control Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Identification and decoupling control of flexure jointed hexapods The stewart platform manipulator: a review Modeling and control of vibration in mechanical systems Studies on stewart platform manipulator: a review Nanometre-cutting machine using a stewart-platform parallel mechanism An intelligent control system for multiple degree-of-freedom vibration isolation Active isolation and damping of vibrations via stewart platform Sensors and control of a space-based six-axis vibration isolation system Dynamic modeling and experimental analyses of stewart platform with flexible hinges Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods A new isotropic and decoupled 6-dof parallel manipulator Simultaneous vibration isolation and pointing control of flexure jointed hexapods A six-axis single-stage active vibration isolator based on stewart platform Vibration Control of Active Structures - Fourth Edition A soft 6-axis active vibration isolator - - - - System Identification - /zettels/system_identification/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/system_identification/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Modal testing: theory, practice and application - - - - Test File - /zettels/test/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/test/ - This is a quote! - 1 2 a = 2; figure; This is an important part of the text. - See Eq. eq:test1 and eq:test2. -\begin{equation} a = 1 \end{equation} -\begin{equation} a = 2 \label{eq:test2} \end{equation} -Also look at 1 \eqref{eq:test2}. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. -Some text. - - - - Vibration Isolation - /zettels/vibration_isolation/ - Mon, 01 Jan 0001 00:00:00 +0000 - - /zettels/vibration_isolation/ - Tags : -&lt;./biblio/references.bib&gt; -Backlinks Six dof active vibration control using stewart platform with non-cubic configuration Dynamic modeling and decoupled control of a flexible stewart platform for vibration isolation Investigation on active vibration isolation of a stewart platform with piezoelectric actuators Review of active vibration isolation strategies Vibration control of flexible structures using fusion of inertial sensors and hyper-stable actuator-sensor pairs Sensor fusion methods for high performance active vibration isolation systems Modeling and control of vibration in mechanical systems An intelligent control system for multiple degree-of-freedom vibration isolation Active isolation and damping of vibrations via stewart platform Sensors and control of a space-based six-axis vibration isolation system Comparison and classification of high-precision actuators based on stiffness influencing vibration isolation Simultaneous, fault-tolerant vibration isolation and pointing control of flexure jointed hexapods Simultaneous vibration isolation and pointing control of flexure jointed hexapods An exploration of active hard mount vibration isolation for precision equipment Force feedback versus acceleration feedback in active vibration isolation A six-axis single-stage active vibration isolator based on stewart platform Vibration Control of Active Structures - Fourth Edition A soft 6-axis active vibration isolator Sensor fusion for active vibration isolation in precision equipment - - - - \ No newline at end of file diff --git a/public/zettels/inertial_sensors/index.html b/public/zettels/inertial_sensors/index.html deleted file mode 100644 index d820f9f..0000000 --- a/public/zettels/inertial_sensors/index.html +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - Inertial Sensors - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Inertial Sensors

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Position Sensors
-
-

Reviews

- -

Accelerometers

- - - - - - - - - - - - - - - - - - - - - -
Micromega Dynamicslink
MMFlink
PCBlink
-

Wireless Accelerometers

- -

-
- Figure 1: Characteristics of commercially available accelerometers (Collette {it et al.}, 2011)
-

Figure 1: Characteristics of commercially available accelerometers (Collette {it et al.}, 2011)

-
-
- -

Geophones

- - - - - - - - - - - - - - - - - -
Sercellink
Wilcoxonlink
-

-
- Figure 2: Characteristics of commercially available geophones (Collette {it et al.}, 2011)
-

Figure 2: Characteristics of commercially available geophones (Collette {it et al.}, 2011)

-
-
- -

Bibliography

-

Collette, C., Janssens, S., Fernandez-Carmona, P., Artoos, K., Guinchard, M., Hauviller, C., & Preumont, A., Review: inertial sensors for low-frequency seismic vibration measurement, Bulletin of the Seismological Society of America, 102(4), 1289–1300 (2012). http://dx.doi.org/10.1785/0120110223

-

Collette, C., Artoos, K., Guinchard, M., Janssens, S., Carmona Fernandez, P., & Hauviller, C., Review of sensors for low frequency seismic vibration measurement (2011).

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/metrology/index.html b/public/zettels/metrology/index.html deleted file mode 100644 index 3fcc468..0000000 --- a/public/zettels/metrology/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - Metrology - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/motion_control/index.html b/public/zettels/motion_control/index.html deleted file mode 100644 index b6e57bd..0000000 --- a/public/zettels/motion_control/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - Motion Control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/multivariable_control/index.html b/public/zettels/multivariable_control/index.html deleted file mode 100644 index c94c617..0000000 --- a/public/zettels/multivariable_control/index.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - Multivariable Control - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/nano_active_stabilization_system/index.html b/public/zettels/nano_active_stabilization_system/index.html deleted file mode 100644 index d9dc710..0000000 --- a/public/zettels/nano_active_stabilization_system/index.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - Nano Active Stabilization System - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
- -
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/position_sensors/index.html b/public/zettels/position_sensors/index.html deleted file mode 100644 index 9324ea4..0000000 --- a/public/zettels/position_sensors/index.html +++ /dev/null @@ -1,551 +0,0 @@ - - - - - - Position Sensors - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Position Sensors

-
- -
-

Contents

-
- -
-
-
-
-
Tags
-
Inertial Sensors
-
-

Reviews of position sensors

- -

Relative Position Sensors

-

-
- Table 1: - Characteristics of relative measurement sensors collette11_review -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TechnologyFrequencyResolutionRangeT Range
LVDTDC-200 Hz10 nm rms1-10 mm-50,100 °C
Eddy current5 kHz0.1-100 nm rms0.5-55 mm-50,100 °C
CapacitiveDC-100 kHz0.05-50 nm rms50 nm - 1 cm-40,100 °C
Interferometer300 kHz0.1 nm rms10 cm-250,100 °C
EncoderDC-1 MHz1 nm rms7-27 mm0,40 °C
Bragg FibersDC-150 Hz0.3 nm rms3.5 cm-30,80 °C
-

-
- Table 2: - Summary of position sensor characteristics. The dynamic range (DNR) and resolution are approximations based on a full-scale range of \(100 \mu m\) and a first order bandwidth of \(1 kHz\) fleming13_review_nanom_resol_posit_sensor -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sensor TypeRangeDNRResolutionMax. BWAccuracy
Metal foil\(10-500 \mu m\)230 ppm23 nm1-10 kHz1% FSR
Piezoresistive\(1-500 \mu m\)5 ppm0.5 nm>100 kHz1% FSR
Capacitive\(10 \mu m\) to \(10 mm\)24 ppm2.4 nm100 kHz0.1% FSR
Electrothermal\(10 \mu m\) to \(1 mm\)100 ppm10 nm10 kHz1% FSR
Eddy current\(100 \mu m\) to \(80 mm\)10 ppm1 nm40 kHz0.1% FSR
LVDT\(0.5-500 mm\)10 ppm5 nm1 kHz0.25% FSR
InterferometerMeters0.5 nm>100kHz1 ppm FSR
EncoderMeters6 nm>100kHz5 ppm FSR
-

Strain Gauge

-

Capacitive Sensor

-

Description:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Micro Senselink
Micro-Epsilonlink
PIlink
Unipulselink
Lion-Precisionlink
-

Inductive Sensor (Eddy Current)

- - - - - - - - - - - - - - - - - -
Micro-Epsilonlink
Lion Precisionlink
-

Inductive Sensor (LVDT)

- - - - - - - - - - - - - - - - - -
Micro-Epsilonlink
Keyencelink
-

Interferometers

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Attocubelink
Zygolink
Smaractlink
Qutoolslink
Renishawlink
Sioslink
Keysightlink
-
- Table 3: - Characteristics of Environmental Units -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Temperature (\(\pm\ ^oC\))Pressure (\(\pm\ hPa\))Humidity \(\pm\% RH\)Wavelength Accuracy (\(\pm\ \text{ppm}\))
Attocube0.1120.5
Renishaw0.2161
Picoscale0.2221
-

(Yoon-Soo Jang & Seung-Woo Kim, 2017)

-

-
- Figure 1: Expected precision of interferometer as a function of measured distance
-

Figure 1: Expected precision of interferometer as a function of measured distance

-
-
- -

Fiber Optic Displacement Sensor

- - - - - - - - - - - - - -
Unipulselink
-

Bibliography

-

Collette, C., Janssens, S., Mokrani, B., Fueyo-Roza, L., Artoos, K., Esposito, M., Fernandez-Carmona, P., …, Comparison of new absolute displacement sensors, In , International Conference on Noise and Vibration Engineering (ISMA) (pp. ) (2012). : .

-

Fleming, A. J., A review of nanometer resolution position sensors: operation and performance, Sensors and Actuators A: Physical, 190(nil), 106–126 (2013). http://dx.doi.org/10.1016/j.sna.2012.10.016

-

Collette, C., Artoos, K., Guinchard, M., Janssens, S., Carmona Fernandez, P., & Hauviller, C., Review of sensors for low frequency seismic vibration measurement (2011).

-

Jang, Y., & Kim, S., Compensation of the refractive index of air in laser interferometer for distance measurement: a review, International Journal of Precision Engineering and Manufacturing, 18(12), 1881–1890 (2017). http://dx.doi.org/10.1007/s12541-017-0217-y

- - - -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/positioning_stations/index.html b/public/zettels/positioning_stations/index.html deleted file mode 100644 index ef8b2ad..0000000 --- a/public/zettels/positioning_stations/index.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - Positioning Stations - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
- -
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/precision_engineering/index.html b/public/zettels/precision_engineering/index.html deleted file mode 100644 index 236424d..0000000 --- a/public/zettels/precision_engineering/index.html +++ /dev/null @@ -1,205 +0,0 @@ - - - - - - Precision Engineering - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/reference_books/index.html b/public/zettels/reference_books/index.html deleted file mode 100644 index f4491b9..0000000 --- a/public/zettels/reference_books/index.html +++ /dev/null @@ -1,209 +0,0 @@ - - - - - - Reference Books - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
- -
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/sensor_fusion/index.html b/public/zettels/sensor_fusion/index.html deleted file mode 100644 index 4f67a3d..0000000 --- a/public/zettels/sensor_fusion/index.html +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - Sensor Fusion - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/stewart_platforms/index.html b/public/zettels/stewart_platforms/index.html deleted file mode 100644 index 2d9a634..0000000 --- a/public/zettels/stewart_platforms/index.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - Stewart Platforms - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Stewart Platforms

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-

<./biblio/references.bib>

- - - -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/system_identification/index.html b/public/zettels/system_identification/index.html deleted file mode 100644 index 2559d25..0000000 --- a/public/zettels/system_identification/index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - System Identification - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
- -
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/test/index.html b/public/zettels/test/index.html deleted file mode 100644 index 0bae28b..0000000 --- a/public/zettels/test/index.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - Test File - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Test File

-
- -
-

Contents

-
- -
-
-
-
-

This is a quote!

-
-
- -
-
1
-2
-
-
a = 2;
-figure;
-
-
-
-
-

This is an important part of the text.

-
-

See Eq. eq:test1 and eq:test2.

-

\begin{equation} -a = 1 -\end{equation}

-

\begin{equation} -a = 2 \label{eq:test2} -\end{equation}

-

Also look at 1 \eqref{eq:test2}.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

-

Some text.

- -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - - diff --git a/public/zettels/vibration_isolation/index.html b/public/zettels/vibration_isolation/index.html deleted file mode 100644 index 5b0f4ef..0000000 --- a/public/zettels/vibration_isolation/index.html +++ /dev/null @@ -1,218 +0,0 @@ - - - - - - Vibration Isolation - My digital brain - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - -
-
- -
- - -
-
-
-
- -
-

Vibration Isolation

-
- -
-

Contents

-
- -
-
-
-

Tags -:

-

<./biblio/references.bib>

- - - -
- - -
-
-
-
- -
- - - - -
- -
- -
-
- - - - - - - - - - - - - - - - - - - - -