Skip to content

What’s new in MANUS Core 3.2.0

We are excited to announce the release of MANUS Core 3.2.0! This update introduces new external tracking system integrations, a brand-new Python SDK, expanded platform support, and numerous calibration and stability improvements. Here’s what’s new:

New Features

  • Improved Metaglove Pro calibration Changes to the calibration and solver provide more accurate hand and thumb data. The guided calibration for the Metaglove Pro and Metaglove Pro Haptic now has 8 steps: the four existing poses, followed by four pinch steps that hold the thumb against each fingertip in turn. See Calibration.

  • OSC tracking system It's now possible to send third-party tracking data to MANUS Core and SDK Integrated over OSC. See OSC.

  • Xsens MVN tracking system Added support for Movella Xsens MVN as an external tracking system. See MVN.

  • Per-joint tracked points Trackers can now also be relative to the wrist joint instead of just the MANUS Universal Mount, to support tracking systems that provide joint-level tracking. See Tracker Offsets.

  • SDK package restructure The SDK package has now been restructured by platform, a seperate SDK package is now available for Windows, Linux containing the C++ SDK, Python SDK, ROS2 package and a x64 MANUS Core Dashboard that runs on Linux in both integrated and remote mode. This can be used for glove management and calibration.

  • New Python SDK A Python wrapper for the MANUS SDK, shipping pre-compiled binaries for Windows x64, Linux x64, and Linux ARM64 (Python 3.9–3.14), with full data streaming, haptic feedback, and glove calibration save/load. See Python SDK.

  • Linux ARM64 support The MANUS SDK on Linux now runs natively on ARM64 (aarch64) devices such as Raspberry Pi 4 and Jetson Orin Nano. See Linux SDK.

  • Simplified Linux dependencies gRPC and protobuf are now statically linked into the MANUS SDK library on Linux, so they no longer need to be installed separately. This also unifies the previous libManusSDK.so and libManusSDK_Integrated.so into a single libManusSDK.so that supports both integrated and remote modes. See Linux SDK.

  • MANUS ROS2 package updates Added ARM64 (aarch64) support including the Docker image, and configurable topic names so glove topic names and the vibration command suffix can be set via ROS parameters (defaults are unchanged). See ROS2.

  • Online license retrieval The newest license for a license key can now be fetched directly from the MANUS license service with the Retrieve License button in the Devices tab, instead of loading a .lic file by hand. See Licensing. This will require an internet connection and a specific license key that is registered with the MANUS license service.

  • New SDK Client example The C++ SDK Client example has been rebuilt as an interactive terminal application with a restructured layout. It builds with CMake on both Windows and Linux. See SDK Client.

  • Runtime saving of settings Configuration changes are now saved whilst MANUS Core is running.

  • Configurable SDK logging The SDK log file location can now be configured which will then write the logs to that location.

  • Query automatic user assignment A new CoreSdk_GetAutoUserAssignment function makes it possible to query from the SDK whether automatic user assignment is enabled.

  • Updated ergonomics thumb joints The thumb joints shown in the ergonomics view of the MANUS Core Dashboard are now CMC, MCP and IP, matching the current thumb model. See Ergonomics.


Bug Fixes

  • Fixed NaN/invalid hand data that could occur near 180-degree joint rotations, and improved pinching algorithm for retargeted skeletons.
  • Fixed a crash when tracker names exceeded the previous 32-character limit (raised to 256), along with a related potential buffer overflow.
  • Fixed crashes and race conditions in the retargeting/coordinator system.
  • Fixed a crash in the OpenVR (SteamVR) tracking system when a tracked device reports a name of 32 characters or more, such as the Meta Quest Touch controllers over (Air)Link.
  • Fixed MANUS Core crashing on every subsequent startup after a tracking system crashed while starting up. Such systems are now automatically set to inactive with a warning instead.
  • Fixed MANUS tracking data being intermittently misaligned in VR applications when using a SteamVR setup without base stations, for example a Meta Quest over (Air)Link. Tracker poses are now correctly re-anchored to the standing universe, including after recentering the headset.
  • Meta Quest and Rift Touch controllers are now recognized as left and right hand trackers by the OpenVR (SteamVR) tracking system instead of unknown trackers.
  • Fixed the ART tracking system running its update loop while the system was set to inactive.
  • Fixed a crash when calling SetTrackerOffset on Core Integrated, bad skeleton data when loading an MSKL file on Core Integrated, and incorrect host name reporting on Core Integrated.
  • Fixed the SDK unexpectedly generating a log.txt file when run in SDK remote mode.
  • Added validation so invalid coordinate system arguments are rejected instead of silently accepted.
  • Fixed an issue where MANUS Metagloves Haptic gloves could fail to pair.
  • Improved the default hand pose for the Metaglove Pro (Haptic).
  • Fixed a behavioural mismatch in the Metaglove Pro thumb casing compensation between MANUS Core and the SDK.
  • Improved the robustness of saving and loading glove calibrations, in particular when user auto-assignment is switched on or off.
  • Fixed incorrect ergonomics thumb joint naming and thumb spread conversion.
  • Fixed a possible deadlock when shutting down MANUS Core.
  • Fixed the finger-spread fill indicator, playback save/clear button states and the tracker timeout configuration in MANUS Core Dashboard.
  • Fixed coordinate system initialization in the MANUS ROS2 package, and reduced repetitive log output by rate-throttling messages.

Breaking Changes

Removed SDK functions

The deprecated haptics dongle functions CoreSdk_GetHapticsDongleIds() and CoreSdk_GetNumberOfHapticsDongles() have been removed from the SDK, along with the dongle-based way of triggering haptics. Haptics are triggered per glove or per skeleton instead, using CoreSdk_VibrateFingersForGlove() and CoreSdk_VibrateFingersForSkeleton().

Ergonomics thumb joint renaming

The naming scheme of the Thumb joints in the Ergonomics was changed in various places to better reflect the joints they are meant to represent. This includes data fields in the CSV output files, the ErgonomicsDataType enum in the SDK and the Thumb Ergonomic topics in ROS2.

  • In CSV files the following fields have been renamed:

    • The Thumb_PIP_Flex field is now the Thumb_MCP_Flex field
    • The Thumb_DIP_Flex field is now the Thumb_IP_Flex field

    For more information see Ergonomics.

  • In the SDK the ErgonomicsDataType enumerator was changed:

    • ErgonomicsDataType_LeftFingerThumbMCPSpread is now ErgonomicsDataType_LeftFingerThumbCMCSpread
    • ErgonomicsDataType_LeftFingerThumbMCPStretch is now ErgonomicsDataType_LeftFingerThumbCMCStretch
    • ErgonomicsDataType_LeftFingerThumbPIPStretch is now ErgonomicsDataType_LeftFingerThumbMCPStretch
    • ErgonomicsDataType_LeftFingerThumbDIPStretch is now ErgonomicsDataType_LeftFingerThumbIPStretch

    For a full reference, see ErgonomicsDataType.

  • In ROS2 the following Manus Ergonomics messages were renamed:

    • The ThumbMCPSpread type is now the ThumbSpread type (bringing it in line with the other spread types)
    • The ThumbPIPStretch type is now the ThumbCMCStretch type
    • The ThumbDIPStretch type is now the ThumbIPStretch type

    For more information see ROS2.

The same is true for the Right Thumb.

Especially take note of the MCP as this label was previously used for the wrong joint and has therefore moved to the correct joint.