The Calc data in MocapApi mainly contains six types of data, this article details the definition,
format, and coordinate system information of this data.
Calc Data can be exported into a .CSV or broadcasted from Axis Studio. This feature is not available by default and requires a license, Axis Studio Calc Broadcasting, to utilize. Please contact our support team firstname.lastname@example.org for access. User must have an Axis Studio Software dongle in order to use this feature.
Overview of Calc data items
The Calc data item is divided into 4 segments, and the segments are connected by:
- The first paragraph is the name of the body part, such as Hips, SpineBottom, …, LeftHandPinkyTip, etc. 59 kinds, please refer to the “First paragraph (body part) description” below for details.
- The second segment is feature information, including three types of sensor, joint joint, and bone bone.
- The third section is physical quantity information, including attitude quaternion Quat, angular velocity Gyro, acceleration Acce, velocity Velo, and position Posi. Also includes the packet loss marker Lost.
- The fourth paragraph is the specific component value, including x, y, z components, of which the quaternion has one more w component.
In the Calc data, a total of 6 different data are combined from the second and third paragraphs above for output, including:
- Sensor attitude quaternion Sensor-Quat
- Sensor Angular Velocity Sensor-Gyro
- Sensor acceleration Sensor-Acce
- Joint Velocity Joint-Velo
- Joint position Joint-Posi
- Bone Pose Quaternion Bone-Quat.
Body Part Description
- In the data output by MocapApi, the human body is divided into 59 parts, of which the hip node is the root node, and each subsequent node is connected to a parent node, the specific order is shown in the following table. This connection is used for the Joint-Velo and Joint-Posi data in the Calc data. The definition of each node
- Joint is the connection between this node and its parent node. For example, the parent node of “right forearm” is “right forearm”, and its connection is the elbow joint of the right arm, so the Position and Velocity of “right forearm” both refer to the Position and Velocity of the elbow joint of the right arm.
|Section Name||Logotype||serial number||Parent Node|
|Lower Part of the Spine||Spine||7||0|
|Middle Spine section||Spine 1||8||7|
|Upper Spine section||Spine 2||9||8|
|Lower Neck section||Neck||10||9|
|Upper Neck section||Neck 1||11||10|
|Right thumb finger||RightHandThumb1||17||16|
|Right thumb in the middle finger||RighthandThumb2||18||17|
|Right Thumb tip||RighthandThumb2||19||18|
|Right index metacarpal||RightInHandIndex||20||16|
|Right index finger root||RightHandIndex1||21||20|
|Middle finger of the right index finger||RightHandIndex2||22||21|
|Right index fingertip||RightHandIndex3||23||22|
|Right middle metacarpal||RightInHandMiddle||24||16|
|Right middle finger to the root||RightHandMiddle1||25||24|
|Right middle finger middle||RightHandMiddle2||26||25|
|Right middle fingertip||RightHandMiddle3||27||26|
|Right ring metacarpal||RightInHandRing||28||16|
|Right ring finger refers to the root||RightHandRing1||29||28|
|Right ring finger in the middle||RightHandRing2||30||29|
|Right ring fingertip||RightHandRing3||31||30|
|Right little finger metacarpal||RightInHandPinky||32||16|
|Right pinky finger root||RightHandPinky1||33||32|
|Right pinky finger in the middle||RightHandPinky2||34||33|
Right pinky fingertip
|Left upper arm||LeftArm||37||36|
|Left thumb finger root||LeftHandThumb1||40||39|
|Left thumb in the middle finger||LeftHandThumb2||41||40|
|Left thumb tip||LeftHandThumb3||42||41|
|Left index metacarpal bone||LeftInHandIndex||43||39|
|Left index finger root||LeftHandIndex1||23||43|
|Middle finger of the left index finger||LeftHandIndex2||23||44|
|Tip of the left index finger||LeftHandIndex3||23||45|
|Left middle metacarpal||LeftInHandMiddle||23||39|
|The left middle finger refers to the root||LeftHandMiddle1||23||47|
|The left middle finger is fingered in the middle||LeftHandMiddle2||23||48|
|Left middle fingertip||LeftHandMiddle3||23||49|
|Left ring metacarpal||LeftInHandRing||23||39|
|The left ring finger refers to the root||LeftHandRing1||23||51|
|Left ring finger in the middle||LeftHandRing2||23||52|
|Left ring fingertip||LeftHandRing3||23||53|
|Left little finger metacarpal bone||LeftInHandPinky||23||39|
|Left little finger finger root||LeftHandPinky1||23||55|
|Left little finger in the middle||LeftHandPinky2||23||56|
|Left little fingertip||LeftHandPinky3||58||57|
- Sensor Sensor: In inertial motion capture, some body parts are not bound with corresponding sensors, and
the “sensor data” of these body parts are back-calculated from body skeleton data. At this stage, MocapApi
only supports Perception Neuron Studio sensors.
- Joint Joint: explained in the previous section “First paragraph (body part) description”
- Bone Bone: that represents the body part
Global coordinate system
All physical quantities in the Calc file output by MocapApi take the upper left front coordinate system of the human body calibration pose as the global coordinate system. If there is no human body calibration (such as Axis Lab software), use the North Sky East coordinate system as the global coordinate system
Sensor body coordinate system
Perception Neuron Studio sensor, its sensor after the next computer AHRS calculation, the host computer received the output data of the ontological coordinate system as shown in the following figure.
The Perception Neuron 3 sensor, after the sensor is calculated by the lower computer AHRS, the ontological coordinate system of the output data received by the host computer is shown in the following figure.
The coordinate system of the human body
The definition of the human node coordinate system follows the definition of the BVH format, and the coordinate system of each node output data is the upper left coordinate system in the case of TPose, as shown in the following figure
The Calc output data contains the Node’s Pose data (Joint-Posi), whose zero point is defined as the intersection of the red and blue lines on the ground in axis Studio software, and it is also the projection of the location of the Hips node on the ground after Avatar has completed the human posture calibration. As shown in the following
Rotation Zero Point:
The Calc output data contains the rotation data (Bone-Quat) of each bone of the body, the zero point of
which is defined as the angle of each node when the human body faces the Z axis in the case of TPose For the specific definition of T-Pose, please refer to the BVH format header file description of the Perception Neuron Studio skeleton
- Quaternion Quart: Expresses the amount of rotation of the sensor and bone in a standard quaternion format. The rotation is consistent, but there are two kinds of data outputs because of the different coordinate systems.
- Angular velocity Gyro: The unit is the radian system, that is, rad/s
- Acceleration Acce: TSUs m/s²
- Velocity Velo: TSUs m/s
- Location Posi: INTERNATIONAL STANDARD unit m
Calc Data is illustrated with specific examples.
- The data item name (table header) is generally divided into 4 segments, and the segments are connected with - as explained above.
- Frame sequence number, marked from 0.
- The packet loss is marked Loss, the value 1 represents the packet loss, and the data value is obtained by the algorithm. The value 0 is normal, and the data value is the sensor measurement.
- An example is shown in the following table.
|Data item header description||illustrate|
|Hips-Sensor-Lost||HIPS partial sensor packet loss marker|
|Hips-Sensor-Quat-x||HIPS part sensor attitude quaternion x component|
|Hips-Sensor-Quat-y||HIPS partial sensor attitude quaternion y component|
|Hips-Sensor-Quat-z||HIPS partial sensor attitude quaternion z-component|
|Hips-Sensor-Quat-w||HIPS partial sensor attitude quaternion w component|
|Hips-Sensor-Gyro-x||HIPS partial sensor angular velocity x component|
|Hips-Sensor-Gyro-y||Hips partial sensor angular velocity y component|
|Hips-Sensor-Gyro-z||Hips partial sensor angular velocity z-component|
|Hips-Sensor-Acce-x||HIPS partial sensor acceleration x component|
|Hips-Sensor-Acce-y||HIPS partial sensor acceleration y component|
|Hips-Sensor-Acce-z||Hips partial sensor acceleration z-component|
|Hips-Joint-Velo-x||Joint velocity x component of the HIPS section with parent node|
|Hips-Joint-Velo-y||Joint velocity y component of the HIPS fraction with the parent node|
|Hips-Joint-Velo-z||Joint velocity z component of the HIPS section with the parent node|
|Hips-Joint-Posi-x||Joint position x component of the hips section with parent node|
|Hips-Joint-Posi-y||The joint position y component of the HIPS fraction with the parent node|
|Hips-Joint-Posi-z||The joint position z component of the HIPS section with the parent node|
|Hips-Bone-Quat-x||Hips partial skeletal pose quaternion x component|
|Hips-Bone-Quat-y||Hips partial skeletal pose quaternion y component|
|Hips-Bone-Quat-z||Hips partial skeletal pose quaternionion, z-component|
|Hips-Bone-Quat-w||Hips partial skeletal pose quaternion w component|
|SpineBottom -Sensor-Lost||SpineBottom Part of the sensor drop marker|
|SpineBottom -Sensor-Quat-x||SpineBottom part sensor attitude quaternion x component|
|SpineBottom -Sensor-Quat-y||SpineBottom part of the sensor attitude quaternion y component|
|SpineBottom -Sensor-Quat-z||SpineBottom part of the sensor attitude quaternion z-component|
|SpineBottom -Sensor-Quat-w||SpineBottom part of the sensor attitude quaternion w component|
|LeftHandPinky1-Bone-Quat-x||LeftHandPinky1 part skeletal pose quaternion x component|
|LeftHandPinky1-Bone-Quat-y||LeftHandPinky1 partial skeletal pose quaternion y component|
|LeftHandPinky1-Bone-Quat-z||LeftHandPinky1 part skeletal pose quaternion z-component|
|LeftHandPinky1-Bone-Quat-w||LeftHandPinky1 part of the quaternion w component of skeletal pose|
Output file format
Axis Studio export for this file type can be found under the export window. Once selected, users can only choose the Range of frames to export.
- The file extension is csv, and data items are separated by commas.
- The total number of frames for row 1 of the file.
- Line 2 of the file is a description of the data item header. Use the header instructions from the table above. The header order is: the first column is Frame-No, and then output in the order of the serial number of 59 body parts, each body part has 21 data, and output in the order according to the above header description. So the total number of columns in the data is: each body part has 21 quantities [(Lost marker) X1+ (Sensor Quaternion) X4+ (Sensor Gyro) X3+ (Sensor Acce) X3+ (Joint Velocity) X3+ (Joint Position) X3+ (Bone Quaternion) X4], a total of 59 body parts, including the frame number, so each 1 line is a total of 59* 21+1=1240 items of data, that is, 1240 columns of data.
- The file starts from line 3 for the data part, and the data is 1 line every 1 frame. The data is separated by commas, a total of 1240 columns.
- An example is as follows. The data file named "Data" has a total frame count of 998 frames.
Frame-No,Hips-Sensor-Lost,Hips-Sensor-Quat-x,Hips-Sensor-Quat-y, ..., LeftHandPinky3-Bone-Quat-w
0, 0, 0.0, 0.0, 0.0, 1.0, -0.0036, -0.4065, 0.6567, -0.0036, -0.4065, 0.6567, ... , 0.0,0.0,0.0,1.0
1, 0, 0.0, 0.0, 0.0, 1.0, -0.0038, -0.4069, 0.6567, -0.0033, -0.4087, 0.6560, ... , 0.0,0.0,0.0,1.0
2, 1, 0.0, 0.0, 0.0, 1.0, -0.0138, -0.4169, 0.6267, -0.0133, -0.4387, 0.6561, ... , 0.0,0.0,0.0,1.0
997, 0, 0.0, 0.0, 0.0, 1.0, -0.0036, -0.4065, 0.6567, -0.0036, -0.4065, 0.6567, ... , 0.0,0.0,0.0,1.0