User Tools

Site Tools


visual3d:documentation:third-party:xsens:xsens

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
visual3d:documentation:third-party:xsens:xsens [2024/10/24 14:04] wikisysopvisual3d:documentation:third-party:xsens:xsens [2025/06/18 20:42] (current) – Cleaned up page and reordered so that the modern, flexible impementation comes first. wikisysop
Line 1: Line 1:
 ====== XSens ====== ====== XSens ======
  
-For more information about Xsens, visit the [[https://www.xsens.com/|Xsens Website]].\\+[[https://www.xsens.com/|Xsens]] uses IMU's to track motion, and processes the information in MVN, resulting in an MVNX file or a C3D file. Visual3D can directly read either the C3D or the MVNX file; note that raw data from Xsens or any IMU is not useful for biomechanics without post-processing to generate pose information.
  
 +Typically, Visual3D reads data in the C3D file format which contains target locations from a motion capture system.  Although Xsens can export C3D files, there is more information in an MVNX file that Visual3D can use to create a model automatically.  Visual3D compatible Xsens .mvnx files should contain the following variables for each segment:
 +  - orientation
 +  - position
 +  - velocity
 +  - acceleration
 +  - angular velocity
 +  - angular acceleration
  
-===== Introduction =====+See the section [[visual3d:documentation:third-party:xsens:xsens#exporting_from_mvn_studio|Exporting from MVN Studio]] below.
  
-[[https://www.xsens.com/|Xsens]] uses IMU's to track motion, and processes the information in MVN, resulting in an MVNX file or a C3D file.  +===== Important Version-related Information =====
-Visual3D can directly read either the C3D or the MVNX file.  +
-Please note that raw data from Xsens or any IMU's is not useful for biomechanics without post-processing to generate POSE information.+
  
-The legacy implementation of the mvnx model was released in Visual3D v5.02.24.  +The legacy implementation of the MVNX model was released in Visual3D v5.02.24. If you are using Visual3D versions prior to this, you will need to follow the instructions [[Visual3D:Documentation:Third-Party:XSens:XSens_v5|here]].
-If using Visual3D versions prior to this to process your dataplease follow the instructions [[Visual3D:Documentation:Third-Party:XSens:XSens_v5|here]]. +
-A more flexible implementation of the mvnx model was released in Visual3D 2024.05.2+
  
-=== Background ===+A more flexible implementation of the MVNX model was released in Visual3D 2024.05.2.
  
-Typically, Visual3D reads data in the C3D file format which contains target locations from a motion capture system.  +===== Opening MVNX Files =====
-Although Xsens can export C3D files, there is more information in an MVNX file that Visual3D can use to create a model automatically.  +
-Visual3D compatible Xsens .mvnx files should contain the following variables for each segment : \\ +
-orientation, position, velocity, acceleration, angularVelocity, angularAcceleration. (See "Exporting from MVN Studio" below)+
  
-**Model Pose (position and orientation):**+MVNX files can be opened by going to File -> Open in Visual3D. They can also be opened using the File_Open pipeline command. 
  
-There are two implementations of a Visual3D model for mvnx data. As users will likely want to use the same implementation each time an mvnx file is loaded, +Visual computes the model's pose using a [[visual3d:documentation:modeling:modeling_overview|Link Model]] that matches the Xsens link model. As of Visual3D version 2024.05.2, the user can choose one of two implementations of a model based on the MVNX file. As users will likely want to use the same implementation each time an MVNX file is loaded, the selection of models can be made in the Program Options, which will save the selection to the registry.
-the selection of models can be made in the Program Options, which will save the selection to the registry+
  
 {{FileOpenOptions.png}} {{FileOpenOptions.png}}
  
-Legacy Mvnx Implementation +=====Flexible Implementation=====
-Visual computes the model Pose using a "Link Model" that matches the Xsens link model. +
  
-As of Visual3D version 2024.05.2, the user can choose one of two implementations of model based on the mvnx file. +The Flexible Implementation uses default anthropometric valueswhich can later be modified by the user. This is so that users who are only interested in kinematics are not prompted for unnecessary information every time a file is loaded.
  
-To simplify the process for opening (i.e. so that the user isn't prompted each time an mvnx file is opened) +In this implementation, the information in the MVNX file is used to create [[visual3d:documentation:c3d_signal_types:rotation_data_type|4x4 ROTATION signals]] similar to the output from markerless tracking systems like Theia3D, and Kinatraxand consistent with the ROTATION signals created from bvh files (Fujitsu implementation of bvh). Using model based information in the mvnx file, a model is created automatically from the ROTATION signals. Kinetic_Kinematic variables are then created consistently with the other ROTATION-based models.
-the user can specify which model should be used in the Program Options.+
  
 +Unlike the legacy implementation the segment pose is explicitly defined.
  
-The model's root, which is the pelvis, has both an orientation and a position (all 6 degrees of freedom). Visual3D then work through model's chain (assuming a ball and socket at all joints) using the .mvnx segment orienation variables to compute the joint angles. This give us the position and orientation (POSE) of the entire model.+==== Prop Sensors ====
  
-**Segment Kinematics:**+If a prop sensor exists in the mvnx file, a ROTATION matrix is created from the prop pose. The user can create/modify a segment definition using this pose
  
-In the data tree, under KINETIC_KINEMATIC you can see there are "Pose" based variables one could use to reconstruct an the model (ProxEndPos, DistEndPos and CGPos) . Note these Pose based variables are computed directly from .mvnx orientation data (and pelvis position) as described above.+==== Download Files ====
  
-In the KINETIC_KINEMATIC there are also "velocity and acceleration" variables (AngAcc, AngVel, CGAcc, CGVel, DistEndVel and ProxEndVel.) These are obtained from the .mnx file variables velocity, accelaration, angularVelocity and angularAcceleration(The velocity and acceleration are at the segment origin.) Note these variables and not are not obtained via derivatives of the pose variables. (Relative motion equations are used to compute the "velocity and acceleration" variables from the Xsens input.)+These [[https://www.has-motion.com/download/examples/Xsens/MVNX_Files.zip|sample MVNX files]] were downloaded from the [[https://www.xsens.com/|Xsens Website]] and then exported from MVN Studio as MVNX files.
  
-Finally for the other kinematic variables that can be obtained via Compute_Model_Based_Data, position and orientation based variables come from the "Pose" variables in the KINETIC_KINEMATIC tree and velocity and acceleration data come from "velocity and acceleration" variables in the KINETIC_KINEMATIC tree.  +=====Legacy Implementation=====
  
-**Segment Kinetics:**+When the file is opened, the user will be prompted for all the necessary model metrics to create the model.
  
-Once Visual3D creates the KINETIC_KINEMATIC variables: ProxEndPosDistEndPos, CGPos, AngAcc, AngVel, CGAcc (and the ground reaction force if neededwe have all we need to compute the inverse dynamics.+The model's root, which is the pelvishas both an orientation and a position (all 6 degrees of freedom). Visual3D then work through model's chain (assuming a ball and socket at all joints) using the .mvnx segment orienation variables to compute the joint angles. This give us the position and orientation (POSE) of the entire model.
  
-**Note:**+==== Segment Kinematics ====
  
-If you take the first derivative of the ProxEndPos KINETIC_KINEMATIC variable it will not exactly equal the ProxEndVel KINETIC_KINEMATIC variable which come from the .mvnx Translational Velocity of the Origin. The idea is to use the Xsens data for velocity, acceleration and kinetic calculations even if it is slightly inconsistent with the derivative of the Pose data. (This data is assumed to be more accurate measure of velocity and acceleration then taking the derivatives of which amplifies noise.)+In the data tree, under KINETIC_KINEMATIC you can see there are "Pose" based variables one could use to reconstruct an the model (ProxEndPos, DistEndPos and CGPos) . Note these pose-based variables are computed directly from .mvnx orientation data (and pelvis position) as described above.
  
-=== Download Files ===+In the KINETIC_KINEMATIC there are also "velocity and acceleration" variables (AngAcc, AngVel, CGAcc, CGVel, DistEndVel and ProxEndVel.) These are obtained from the .mnx file variables : velocity, accelaration, angularVelocity and angularAcceleration. (The velocity and acceleration are at the segment origin.) Note these variables and not are not obtained via derivatives of the pose variables. (Relative motion equations are used to compute the "velocity and acceleration" variables from the Xsens input.)
  
-  * [[https://www.has-motion.com/download/examples/Xsens/MVNX_Files.zip|Sample MVNX files]] +Finally for the other kinematic variables that can be obtained via Compute_Model_Based_Data, position and orientation based variables come from the "Pose" variables in the KINETIC_KINEMATIC tree and velocity and acceleration data come from "velocity and acceleration" variables in the KINETIC_KINEMATIC tree.  
-    * These sample MVN files were downloaded from the [[https://www.xsens.com/|Xsens Website]] and then exported from MVN Studio as MVNX files+
  
-\\+==== Segment Kinetics ====
  
 +Once Visual3D creates the KINETIC_KINEMATIC variables: ProxEndPos, DistEndPos, CGPos, AngAcc, AngVel, CGAcc (and the ground reaction force if needed) we have all we need to compute the inverse dynamics.
  
-===== Exporting Xsens Data =====+**Note:** If you take the first derivative of the ProxEndPos KINETIC_KINEMATIC variable it will not exactly equal the ProxEndVel KINETIC_KINEMATIC variable which come from the .mvnx Translational Velocity of the Origin. The idea is to use the Xsens data for velocity, acceleration and kinetic calculations even if it is slightly inconsistent with the derivative of the pose data. (This data is assumed to be more accurate measure of velocity and acceleration then taking the derivatives of which amplifies noise.)
  
-|Visual3D reads the MVNX files. To create the MVNX files, you must first collect or load motion data into MVN studio and then export the data MVNX format.\\ \\ It is very important that the MVNX export settings are defined correctly. This is explained in the "Exporting from MVN Studio section" (Step 2).  |  {{:XsensLogo.png}}|+==== Prop Sensors ====
  
-==== Exporting from MVN Studio ====+Visual3D v2020.## supports reading MVNX files with one prop sensor. The sensor will be loaded automatically as a segment (ex. PR1). When using an Xsens prop in Visual3D, all information is loaded automatically and no further steps are required. A sample MVNX file with a prop can be downloaded **[[https://www.has-motion.com/download/examples/Xsens/Xsens_Prop_Example.zip|here]].**\\
  
-\\ +[[Visual3D:Documentation:Third-Party:XSens:XSens_Prop|This tutorial explains how to adjust the location of the prop segment and assign a graphics object to the prop using a script]].\\
-When exporting the mvnx file from MVNX studio, it is important to export the Position, Orientation, Velocity, Angular Velocity, Acceleration, and Angular Acceleration should be exported. Below are instructions to complete this in MVN Studio.\\+
  
 +===== Exporting Xsens Data from MVN Studio =====
  
-**Exporting from MVN Studio** (click to expand) +Visual3D reads MVNX filesTo create the MVNX filesyou must first collect or load motion data into MVN Studio and then export the data MVNX formatIt is very important that the MVNX export settings are defined correctlythis is explained later.
- +
-|**1Open MVN Studio**  |  | +
- +
-|**2. Modify the export settings**\\ \\ - Make sure the following are selected:\\ \\   - Position\\   - Orientation\\   - Velocity\\   - Angular Velocity\\   - Acceleration\\   - Angular Acceleration\\ \\ If any of these signals (translational velocity, translational acceleration, angular velocity, angular acceleration) are missing from the MVNX filethe derivatives of the position data will be used to calculate these signals.\\ \\ **NOTE:** Once you have set this, these changes will be saved even after MVN Studio is closed. So you only need to do this step once.  |  {{:MVNStudio_ExportSettings.png}}| +
- +
-|**3. Load the data**  |  {{:MVNStudio_FileOpen.png}}| +
- +
- +
-\\ +
- +
- +
-===== Opening MVNX Files ===== +
- +
-As of Visual3Dv6, MVNX files can be opened by going to File -> Open in Visual3D. +
- +
-They can also be opened using the File_Open pipeline command. When the file is opened, the user will be prompted for all the necessary model metrics to create the model. +
- +
-===== Processing Xsens Data ===== +
- +
-==== Trunk Graphic ==== +
- +
-The default Xsens model points to the [[https://www.has-motion.com/download/examples/Xsens/Trunk_No_Neck.zip|thoraciccerviclet12toacromium_noneck.obj]] graphic. +
- +
-This means if the graphic does not appear in your model, you can download the graphic [[https://www.has-motion.com/download/examples/Xsens/Trunk_No_Neck.zip|here]], unzip the files (obj and mtl), and place them in your default graphics folder. Once the graphic file is placed in the models folder, you may need to close and re-open Visual3D. Instructions to find your models folder can be found [[Visual3D:Tutorials:Modeling:Fun_With_Graphics#Finding_your_Graphics_Folder|here]]. +
- +
-==== Prop Sensors ==== +
- +
-\\ +
-Visual3Dv2020.## supports reading MVNX files with one prop sensor. The sensor will be loaded automatically as a segment (ex. PR1). If more props are required to process your dataplease contact C-Motion. When using an Xsens prop in Visual3D, all information is loaded automatically and no further steps are required. A sample MVNX file with a prop can be downloaded **[[https://www.has-motion.com/download/examples/Xsens/Xsens_Prop_Example.zip|here]].**\\ +
-\\ +
-[[Visual3D:Documentation:Third-Party:XSens:XSens_Prop|This tutorial explains how to adjust the location of the prop segment and assign a graphics object to the prop using a script]].\\ +
  
 +==== Exporting from MVN Studio ====
  
 +When exporting the MVNX file from MVN studio, it is necessary to export the Position, Orientation, Velocity, Angular Velocity, Acceleration, and Angular Acceleration signals. To complete this in MVN Studio:
 +  - Open MVN Studio
 +  - Modify the export settings. These changes will be saved even after MVN Studio is closed, so you only need to do this step once. Make sure the following are selected:
 +    - Position
 +    - Orientation
 +    - Velocity
 +    - Angular Velocity
 +    - Acceleration
 +    - Angular Acceleration
 +    - **Note**: If any of these signals (translational velocity, translational acceleration, angular velocity, angular acceleration) are missing from the MVNX file, the derivatives of the position data will be used to calculate these signals. {{:MVNStudio_ExportSettings.png}}
 +  - Load the data
 + 
 +{{:MVNStudio_FileOpen.png}}|
  
visual3d/documentation/third-party/xsens/xsens.1729778641.txt.gz · Last modified: 2024/10/24 14:04 by wikisysop