Documentation Site Map Main Page Reference List Motion Capture Visual3D Overview Visual3D Installation License Activation Getting Started Visual3D Documentation Overview Pipeline Commands Reference Expressions Overview CalTester Mode Overview List of Tutorials Visual3D Examples Overview Troubleshooting Sift Sift Overview Installation Getting Started Sift Documentation Overview Knowledge Discovery for Biomechanical Data Tutorial Overview Troubleshooting Inspect3D Inspect3D Overview Inspect3D Installation Overview Inspect3D Getting Started Overview Inspect3D Documentation Overview Knowledge Discovery in Inspect3D Inspect3D Tutorials Overview Troubleshooting DSX Suite DSX Overview DSX Definitions DSX Suite Installation DSX Tutorials DSX Release Notes xManager Overview PlanDSX Overview Surface3D Overview Orient3D Overview CalibrateDSX Overview Locate3D Overview X4D Overview
This is an old revision of the document!
| computing the onset of an emg signal can be quite tricky. in this example, we describe a pipeline for a straightforward estimation of emg onset based on the the [[visual3d:documentation:pipeline:signal_commands:teager_kaiser_energy|teager-kaiser energy]] operator and [[visual3d:documentation:pipeline:event_commands:event_threshold|event_threshold]]. this is not a definitive definition, but simply a starting point for the user. teager_kaiser.jpg \\ <code> !apply a high pass and low pass filter assuming that the surface emg signal contains information !from 20 to 500 hz highpass_filter /signal_types=analog /signal_names=emg_c ! /signal_folder=original ! /result_suffix= /result_folder=processed ! /filter_class=butterworth /frequency_cutoff=20 /num_reflected=0 /total_buffer_size=100 ! /num_bidirectional_passes=1 ; !apply the teager-kaiser operator teager_kaiser_energy /signal_types=analog /signal_names=emg_c /signal_folder=processed ! /signal_components= ! /result_folder=processed ! /event_sequence= ! /exclude_events= ; !create events that define the resting baseline of the muscle event_explicit /event_name=rest1 /frame=1 ! /time= ; event_explicit /event_name=rest2 /frame=150 ! /time= ; !compute the median and standard deviation of the tko envelope during rest metric_median /result_metric_name=_med /apply_as_suffix_to_signal_name=true /result_metric_folder=emg /signal_types=analog /signal_names=emg_c /signal_folder=processed ! /signal_components=all_components /event_sequence=rest1+rest2 /exclude_events= /generate_mean_and_stddev=false ! /append_to_existing_values=false ; metric_stddev /result_metric_name=_sd /apply_as_suffix_to_signal_name=true /result_metric_folder=emg /signal_types=analog /signal_names=emg_c /signal_folder=processed ! /signal_components=all_components /event_sequence=rest1+rest2 /exclude_events= /generate_mean_and_stddev=false ! /append_to_existing_values=false ; !identify the event emg_c_on based on a threshold crossing !of the median + 3 * standard deviation event_threshold /signal_types=analog /signal_names=emg_c /signal_folder=procesed /event_name=emg_c_on /select_x=true ! /select_y=false ! /select_z=false ! /select_residual=false /threshold=metric::emg::emg2_med+3*metric::emg::emg2_sd ! /frame_window=8 ! /frame_offset=0 /ascending=true ! /descending=false ! /ensure_range_frames_before_threshold_crossing=false /ensure_range_frames_after_threshold_crossing=true ! /start_at_event= ! /end_at_event= /event_instance=1 ; </code>