Skip to content
Get SDK Access

Smartsuit Pro II

When the SDK streams a suit, the data goes out over RGMP. The suit’s Stream Definition Frame declares every stream it sends, and the names in that definition are the ones used in the sections below:

  • Device definition covers device_type and the keys in device_info.
  • Stream groups lists the groups and their expected_rate_hz.
  • Sensor frames are the values of target_frame and reference_frame.
  • Streams lists the streams sent for each sensor.
  • Status flags are the names in the bit_mapping of each STATUS_FLAGS stream.

See the RGMP specification for definitions of measure_type, target_frame, reference_frame, and bit_mapping.

device_type is "Smartsuit Pro II".

device_info contains:

KeyTypeDescription
friendly_namestringA display name. Use it for display only, and read device_type instead of parsing it.
feature_bitmaskintegerFeature bits reported by the suit’s hub. See the table below.
BitMeaning
1A left Smartglove is connected.
2A right Smartglove is connected.
3The suit is glove-ready.
4Internal Rokoko information about the sensor hardware.

To find out which sensors the suit sends, read the stream definitions rather than feature_bitmask.

The suit sends no static_data.

The suit sends one group, default, with an expected_rate_hz of 100.

Smartsuit Pro II sensor coordinate axes

Smartsuit Pro II sensor coordinate axes.

Note: the positive Y-axis points towards the cable that connects to the suit. See the image below for clarification.

Sensor cable routing on the Smartsuit Pro II

Cable direction indicating the positive Y-axis direction.

The table below lists the reference frames used in the Smartsuit Pro II data streams. In RGMP, these are the values of target_frame and reference_frame. Each sensor has a single frame; the suit has no separate IMU frames.

Frame NameDescription
head_sensorThe frame located at the head sensor.
left_hip_sensorThe frame located at the left hip sensor.
left_upper_leg_sensorThe frame located at the left upper leg sensor.
left_lower_leg_sensorThe frame located at the left lower leg sensor.
left_foot_sensorThe frame located at the left foot sensor.
left_lower_back_sensorThe frame located at the left lower back sensor.
left_shoulder_sensorThe frame located at the left shoulder sensor.
left_upper_arm_sensorThe frame located at the left upper arm sensor.
left_lower_arm_sensorThe frame located at the left lower arm sensor.
left_hand_sensorThe frame located at the left hand sensor. Standalone suits only.
right_hip_sensorThe frame located at the right hip sensor.
right_upper_leg_sensorThe frame located at the right upper leg sensor.
right_lower_leg_sensorThe frame located at the right lower leg sensor.
right_foot_sensorThe frame located at the right foot sensor.
right_lower_back_sensorThe frame located at the right lower back sensor.
right_shoulder_sensorThe frame located at the right shoulder sensor.
right_upper_arm_sensorThe frame located at the right upper arm sensor.
right_lower_arm_sensorThe frame located at the right lower arm sensor.
right_hand_sensorThe frame located at the right hand sensor. Standalone suits only.

A standalone suit sends all 19 sensors. A glove-ready suit has a Smartglove in place of each hand sensor, so it sends the other 17. Each glove is a separate RGMP device, and its device_info.suit_device_id is the suit’s device_id. See the Smartgloves page for the glove’s streams.

Each sensor sends the streams below in the default group. <sensor>_sensor stands for each frame in the table above. A blank reference_frame means the field is omitted, so the data is given in the sensor frame itself.

measure_typetarget_framereference_frameDescription
ORIENTATION<sensor>_sensorLTP_NEDOrientation of the sensor.
ANGULAR_VELOCITY<sensor>_sensorGyroscope measurement.
PROPER_ACCELERATION<sensor>_sensorAccelerometer measurement.
MAGNETIC_FIELD<sensor>_sensorMagnetometer measurement.
STATUS_FLAGS<sensor>_sensorStatus flags.

A sensor that didn’t report in a frame is still written, because a group frame can’t be partial. Its values are zeros and its valid_data flag is clear.

The Smartsuit Pro II data streams include status flags that indicate the tracking status of each sensor. In RGMP, they are sent as STATUS_FLAGS streams, and the flag names below are the names in each stream’s bit_mapping. Read the bit position from bit_mapping rather than hard-coding it. The meaning of each flag is elaborated in the table below.

BitFlag NameDescription
0valid_dataWhether the sensor reported in this frame. When this is false, the sensor’s values are zeros.
2is_magnetometer_saturatedWhether at least one axis of the magnetometer is saturated.
3not_is_accelerometer_usedWhether the accelerometer is not being used in the sensor fusion. This will be true when the sensor is accelerating.
4is_accelerometer_saturatedWhether at least one axis of the accelerometer is saturated.
6is_gyroscope_saturatedWhether at least one axis of the gyroscope is saturated.
7not_is_magnetometer_usedWhether the magnetometer is not being used in the sensor fusion. This will be true when the sensor is experiencing strong magnetic interference.

The calibration for the Smartsuit Pro II sensors initializes the orientation relative to gravity and the local magnetic field. This requires the sensor to be at a standstill. Calibration is not part of RGMP: it is triggered through RCSP.

IMPORTANT

For best results, ensure that the sensor is not close to any large metal objects or sources of magnetic interference during calibration, as these can distort the magnetic field and lead to inaccurate orientation estimates.

To trigger this calibration, call the CalibrateStaticPose command in RCSP.