Changelog
- Restored packaged Studio access to online services, so firmware information, update checks, and the extension marketplace work again
- Fixed the install script exiting before it installed the agent skills
Breaking changes:
- This firmware targets Beta 2 hardware. Beta 1 hardware will not receive this update — the firmware list only offers packages that match your device hardware
Fixed:
- Fixed other known issues and improved overall stability
disconnect()now fully releases the hand: after disconnecting, the hand is immediately available to any other application or machine, exactly as if your application had exited. Previously the hand could remain held by the application until it exited- Fixed a bug where applications that repeatedly connect and disconnect could see each new connection take longer than the last. Connections now stay consistently fast, no matter how long the application has been running
- Devices in the firmware upgrade view are now grouped by their actual product type, so Wuji Hand devices no longer appear under the "Wuji Glove" group. Unrecognized devices are listed under a new "Other Devices" group
- Fixed the ROS
package://mesh paths for the Wuji Hand 2 (Beta 1) URDF: thewuji_descriptionpackage now installs the model assets into its share directory, and mesh paths are model-scoped, so the model loads correctly under ROS
New capabilities:
- The Wuji SDK real-time controller now exposes
get_actual_effort()(per-joint effort in amps, read from the same non-blocking upstream cache asget_actual_position()) in the Python SDK, and the C SDK exposes the matchingwuji_hand_realtime_controller_get_actual_effort. This API belongs to wuji-sdk, not wujihandcpp - Added Wuji Hand (first-generation dexterous hand) support to the C SDK. Connect by USB serial number (
wuji_hand_connect_sn), then read joint positions, per-joint diagnostics (bus voltage / temperature / error code), firmware soft limits, handedness, and whether a tactile glove is attached. Control withenable/disable/clear_all_faults, set and read the effort limit, stream commands through a joint-command publisher (a list of 20JointCommandstructs —position/velocity/effortper joint, the same shape as Wuji Hand 2, so command code is portable between the two), and run a low-pass-filtered real-time position controller. Subscription streams for joint state and tactile pressure are also available. Supported on Linux x86_64 / aarch64 (gnu) only. On Android these functions are present but returnWUJI_STATUS_ERR_UNSUPPORTED. Worked examples are underexamples/c/wuji_hand/
Breaking changes (Python):
- The joint-command publisher now takes an array of structs.
JointCommandPublisher.send(...)changed from three parallel listssend(positions, velocities, efforts)to a single list of per-joint commandssend(joints), where each entry is aJointCommand(position, velocity, effort)— pass exactly 20. The oldpublish(...)alias was removed. This matches Wuji Hand 2 exactly - The joint-command publisher is now opened via
hand.joint_command().publish(). The resource accessor was renamed from.publisher()to.publish(), and the shortcut methodhand.joint_command_publisher()was removed. The returnedJointCommandPublisher(send(...)/close()) is unchanged - Tactile-glove classes now carry a
TactileGloveprefix so they cannot be confused with the Wuji Glove's generic tactile streams:TactileStatus→TactileGloveStatus,TactileDiagnostics→TactileGloveDiagnostics,TactileDeviceInfo→TactileGloveDeviceInfo, and the sub-module handleWujiTactile→WujiTactileGlove. Accessors and wire formats are unchanged — update type references andisinstancechecks to the new class names - The joint-state stream is now
hand.joint_states()(washand.joint_state()), and the frame class isHandJointStates(wasHandJointState), matching Wuji Hand 2 and the ROS/joint_statesconvention
- Devices in the firmware upgrade view are now grouped by their actual product type, so Wuji Hand devices no longer appear under the "Wuji Glove" group. Unrecognized devices are listed under a new "Other Devices" group
Fixed:
- Fixed the ROS
package://mesh paths for the soft-pad hand URDF: thewuji_descriptionpackage now installs the model assets into its share directory, and mesh paths are model-scoped, so the model loads correctly under ROS
- Aligned the tactile point cloud to 526 active taxels. The firmware still scans the raw 24×32 sensor array and drops the dead column, publishing 24×31 (744-value) tactile frames, and the point-cloud active mask excludes eight more hardware-masked taxels on top of that. Update the Wuji SDK to a matching version so point-cloud decoding uses the same 526-taxel mapping
Breaking changes:
- Calibration results (the URDF hand model) now belong to the SDK user and hand side instead of an individual glove, so swapping to another glove of the same side no longer requires recalibration. Calibration recorded by older SDK versions is not loaded anymore — recalibrate under your user profile
- The
hand_profilecalibration option is deprecated and ignored (passing it emits aDeprecationWarning). The calibration result was simplified tohandednessplus a singlecalibrated_urdfpath, and thecalibration.hand_profileandcalibration.hand_model_paths.*parameters were removed: setting them now fails, and values left by older versions are ignored - The tactile contact model is now located automatically from the current SDK user and device serial number, the same convention as the calibrated hand model, and stored under the SDK's own tactile directory. The
algorithms.tactile_binary.model_dirparameter was removed: setting it now fails. Integrations that set this parameter should stop setting it, as the model is resolved automatically once you select the SDK user - Calibration bundles use a new format with user-level hand models and per-glove tactile data. Importing bundles from older SDK versions keeps the tactile data but skips the hand calibration inside (recalibrate), and bundles exported by this version require an up-to-date SDK to import
New capabilities (C SDK):
- Added SDK user management and Wuji Glove IK calibration APIs matching the Python SDK: C applications can create and switch SDK users, run calibration with structured feedback, cancel asynchronous calibration sessions, and receive the per-user calibrated URDF path. The calibration example provides the same in-place terminal dashboard and throttled API log mode as the Python example
- Added user data import/export and preview, mirroring the Python API:
wuji_user_data_export/wuji_user_data_importmove a user's data as a portable.zipbundle, andwuji_user_data_previewvalidates and lists a bundle's contents without writing to disk. All three return aWujiStatus— callwuji_last_error()for the message on failure.WUJI_STATUS_ERR_NOT_FOUNDmeans the bundle file doesn't exist, andWUJI_STATUS_ERR_INVALID_DATAmeans the bundle is present but fails validation (corrupt zip, bad manifest, checksum mismatch, or unsafe path) - Added device type at scan time:
WujiDiscovered.device_idis now aWujiDeviceTypeenum (WUJI_DEVICE_TYPE_WUJI_GLOVE/_WUJI_HAND_2/_WUJI_HAND/_UNKNOWN) andWujiDiscovered.modelcarries the readable type string, so you can tell what a device is before connecting
Breaking changes (C SDK):
WujiConnectOptionschanged layout to match PythonConnectOptionsfor bridge and background time-sync settings. Rebuild C applications against the updatedwuji_sdk.h, and callwuji_connect_options_default()before overriding fields when passing non-NULL options, or passopts_or_null = NULLto keep default connection behavior- Removed the unused API
wuji_glove_subscribe_tactile_zones_cache()
Fixed:
- The Default profile uses Wuji's built-in URDF, and calibration recorded earlier does not apply. To calibrate, create and switch to your own user profile first
Breaking changes:
- The calibration file format changed. Calibration files created before this release are incompatible with the new format and are not migrated, so calibrate the left and right hands again after upgrading
New capabilities:
- User data import and export: export your calibration hand models, tactile models, and captured runs to a portable
.zipfrom the user avatar menu, and import one back. Import previews the archive, shows its owner, and warns that it overwrites matching data before you confirm. Data is restored to the archive's owner profile, which is created if it doesn't exist, and you can switch to that profile afterward. Desktop app only
Changed:
- Calibration results are now saved per Wuji Studio user and hand, and Wuji Gloves for the same hand share that user's result
- Hand Profile is renamed to Hand Model Source, and the legacy Wuji Hand 2 and Wuji Hand profiles are deprecated. Existing layouts now show SDK Managed, which uses the matching calibrated model, or the SDK default model when not calibrated, and Custom URDF remains available
Fixed:
- Fixed cases where a compatible Wuji Glove could appear unsupported or show the wrong calibration status. When the status cannot be checked, Studio now offers a retry
- Studio now blocks incompatible legacy tactile recordings during playback and shows a clear warning, avoiding incorrect tactile rendering
- Playing back tactile recordings in the older format (before v2026.6.18) shows an incompatibility warning as a message notification in the bottom-right corner
- Fixed tactile matrix panels still rendering the old 24×32 preset layout after an in-place upgrade. The layout now migrates on startup, and custom column counts are preserved
- Added Wuji Glove mounting attachments:
Wuji-glove-attachment.STEP(the Wuji Glove mounting interface) andPico-tracker-attachment.STEP(a Pico tracker adapter), both STEP AP214 assemblies for mechanical integration
New capabilities:
- Export, preview, and import your Wuji user data as a portable
.zipbundle.SdkManager.export_user_data(user_id, out_path)writes everything a user owns — calibration hand models plus the tactile model and its latest complete calibration run — into one file.preview_user_data(zip_path)validates a bundle and reports its contents without importing it.import_user_data(zip_path)restores a bundle to the user who created it (creating that user if it doesn't exist) and overwrites that user's existing data, without changing the current user scan()now reports each device's type:DiscoveredDevice.device_typeis aDeviceTypeenum (WujiGlove/WujiHand2/WujiHand), so you can tell what a device is before connecting.Unknownmeans the type was not available at scan time- C SDK: scan results now carry the device type.
WujiDiscovered.device_idis aWujiDeviceTypeenum (WUJI_DEVICE_TYPE_WUJI_GLOVE/_WUJI_HAND_2/_WUJI_HAND/_UNKNOWN) andmodelcarries the readable type string, so you can tell what a device is before connecting - C SDK: added SDK user management and Wuji Glove IK calibration APIs matching the Python SDK. C applications can create and switch SDK users, run calibration with structured feedback, cancel asynchronous calibration sessions, and receive the per-user calibrated URDF path. The calibration example provides the same in-place terminal dashboard and throttled API log mode as the Python example
- C SDK: added user data import/export and preview, mirroring the Python API.
wuji_user_data_export/wuji_user_data_importmove a user's data as a portable.zipbundle, andwuji_user_data_previewvalidates and lists a bundle's contents without writing to disk. All three return aWujiStatus— callwuji_last_error()for the message on failure.WUJI_STATUS_ERR_NOT_FOUNDmeans the bundle file doesn't exist, andWUJI_STATUS_ERR_INVALID_DATAmeans the bundle is present but fails validation (corrupt zip, bad manifest, checksum mismatch, or unsafe path)
Breaking changes (C SDK):
WujiConnectOptionschanged layout to match PythonConnectOptionsfor bridge and background time-sync settings. Rebuild C applications against the updatedwuji_sdk.h. Usewuji_connect_options_default()before overriding fields when passing non-NULL options towuji_connect, or passopts_or_null = NULLto keep default connection behavior- Removed the unused
wuji_glove_subscribe_tactile_zones_cache()
Fixed:
- Fixed an issue where connecting multiple devices in the same process (for example a Wuji Glove and a Wuji Hand 2) could fail depending on the connection order
New capabilities:
- The Wuji SDK real-time controller now exposes
get_actual_effort()(per-joint effort in amps, read from the same non-blocking upstream cache asget_actual_position()) in the Python SDK, and the C SDK exposes the matchingwuji_hand_realtime_controller_get_actual_effort. This API belongs to wuji-sdk, not wujihandcpp - Added Wuji Hand (first-generation dexterous hand) support to the C SDK. Connect by USB serial number (
wuji_hand_connect_sn), then read joint positions, per-joint diagnostics (bus voltage / temperature / error code), firmware soft limits, handedness, and whether a tactile glove is attached. Control withenable/disable/clear_all_faults, set and read the effort limit, stream commands through a joint-command publisher (a list of 20JointCommandstructs —position/velocity/effortper joint, the same shape as Wuji Hand 2, so command code is portable between the two), and run a low-pass-filtered real-time position controller. Subscription streams for joint state and tactile pressure are also available. Supported on Linux x86_64 / aarch64 (gnu) only. On Android these functions are present but returnWUJI_STATUS_ERR_UNSUPPORTED. Worked examples are underexamples/c/wuji_hand/
Breaking changes (Python):
- The joint-command publisher now takes an array of structs.
JointCommandPublisher.send(...)changed from three parallel listssend(positions, velocities, efforts)to a single list of per-joint commandssend(joints), where each entry is aJointCommand(position, velocity, effort)— pass exactly 20. The oldpublish(...)alias was removed. This matches Wuji Hand 2 exactly - The joint-command publisher is now opened via
hand.joint_command().publish(). The resource accessor was renamed from.publisher()to.publish(), and the shortcut methodhand.joint_command_publisher()was removed. The returnedJointCommandPublisher(send(...)/close()) is unchanged - Tactile-glove classes now carry a
TactileGloveprefix so they cannot be confused with the Wuji Glove's generic tactile streams:TactileStatus→TactileGloveStatus,TactileDiagnostics→TactileGloveDiagnostics,TactileDeviceInfo→TactileGloveDeviceInfo, and the sub-module handleWujiTactile→WujiTactileGlove. Accessors and wire formats are unchanged — update type references andisinstancechecks to the new class names - The joint-state stream is now
hand.joint_states()(washand.joint_state()), and the frame class isHandJointStates(wasHandJointState), matching Wuji Hand 2 and the ROS/joint_statesconvention
disconnect()now fully releases the hand — after disconnecting, the hand is immediately available to any other application or machine, exactly as if your application had exited. Previously the hand could remain held by the application until it exited- Fixed a bug where applications that repeatedly connect and disconnect could see each new connection take longer than the last. Connections now stay consistently fast, no matter how long the application has been running
Breaking changes:
- Hand calibration now belongs to the SDK user and hand side instead of an individual glove. Swapping to another glove of the same side no longer requires recalibration. Calibration recorded by older SDK versions is not loaded anymore — recalibrate under your user profile
- The
hand_profilecalibration option is deprecated and ignored (passing it emits aDeprecationWarning). The calibration result was simplified tohandednessplus a singlecalibrated_urdfpath. Thecalibration.hand_profileandcalibration.hand_model_paths.*parameters were removed: setting them now fails, and values left by older versions are ignored - The tactile contact model is now located automatically from the current SDK user and device serial number, the same convention as the calibrated hand model, and stored under the SDK's own tactile directory. The
algorithms.tactile_binary.model_dirparameter was removed: setting it now fails, and values left by older versions are ignored. Integrations that set this parameter should stop setting it, as the model is resolved automatically once you select the SDK user - Calibration bundles use a new format with user-level hand models and per-glove tactile data. Importing bundles from older SDK versions keeps the tactile data but skips the old hand calibration (it is no longer loaded — recalibrate under your user profile). Bundles exported by this version require an up-to-date SDK to import
Fixed:
- The Default profile uses Wuji's built-in URDF, and calibration recorded earlier does not apply. To calibrate, create and switch to your own user profile first
- Optimized wheel packaging — download and installed size are significantly smaller. No functional change
- Breaking change — Calibration: calibration files created before this release are incompatible with the new format and are not migrated, so calibrate the left and right hands again after upgrading
- Calibration results are now saved per Wuji Studio user and hand, and Wuji Gloves for the same hand share that user's result
- Hand Profile is renamed to Hand Model Source, and the legacy Wuji Hand 2 and Wuji Hand profiles are deprecated. Existing layouts now show SDK Managed, which uses the matching calibrated model, or the SDK default model when not calibrated, and Custom URDF remains available
- User data import and export: export your calibration hand models, tactile models, and captured runs to a portable
.zipfrom the user avatar menu, and import one back. Import previews the archive, shows its owner, and warns that it overwrites matching data before you confirm. Data is restored to the archive's owner profile, which is created if it doesn't exist, and you can switch to that profile afterward. Desktop app only - Playing back tactile recordings in the older format (before v2026.6.18) shows an incompatibility warning as a message notification in the bottom-right corner
- Devices in the firmware upgrade view are now grouped by their actual product type, so Wuji Hand devices no longer appear under the "Wuji Glove" group. Unrecognized devices are listed under a new "Other Devices" group
- Fixed cases where a compatible Wuji Glove could appear unsupported or show the wrong calibration status. When the status cannot be checked, Studio now offers a retry
- Studio now blocks incompatible legacy tactile recordings during playback and shows a clear warning, avoiding incorrect tactile rendering
- Fixed tactile matrix panels still rendering the old 24×32 preset layout after an in-place upgrade. The layout now migrates on startup, and custom column counts are preserved
First release of Wuji CLI:
the official command-line tool for Wuji devices — connect devices, upgrade firmware in batches, and automate with scripts, all without a GUI, plus one-command diagnostics with wuji doctor.
- Device management: scan and list devices over USB / UDP with
wuji devices, and probe device connectivity withwuji ping, covering all discovered devices by default or targeting one by SN, IP, or handedness - Parameter read/write:
wuji getandwuji setread and write device parameters with typed JSON output - Resource discovery: list a device's readable/writable parameters and subscribable topics with
wuji resources - Data subscription: subscribe to a topic's real-time data with
wuji sub <topic>, and control the frame count with--count - Health diagnostics:
wuji doctorchecks device health, including EMF disconnection detection and tactile dead-pixel / bad-column detection. Wuji Glove only for now, with more diagnostics and device types to come - Firmware upgrade: upgrade device firmware from the official catalog with
wuji upgrade. Check which devices have updates with--check, upgrade one or all devices, install a specific version with--to, flash a local package with--file, and browse available versions with--list. Downloads are sha256-verified and cached, flashing asks for confirmation (skip with--yes), and a per-device report is printed - Self-update:
wuji updatedownloads, verifies, and installs the latest release in place (--checkto check only) - Shell completions: generate completion scripts for bash, zsh, fish, powershell, and elvish with
wuji completions - Output formatting: most commands support
--json/--jsonloutput modes and device selection by--sn,--address, or--handedness - Colored output: consistent semantic colors for statuses, warnings, and values, with
NO_COLORsupport and a plain-text fallback on non-TTY output
- Added Wuji Glove mounting attachments:
Wuji-glove-attachment.STEP(the Wuji Glove mounting interface) andPico-tracker-attachment.STEP(a Pico tracker adapter), both STEP AP214 assemblies for mechanical integration - Fixed the ROS
package://mesh paths for the Wuji Hand 2 (Beta 1) and soft-pad hand URDFs: thewuji_descriptionpackage now installs both model asset sets into its share directory, and mesh paths are model-scoped, so the models load correctly under ROS
- Fixed device connection failures in some network environments
- Fixed other known issues
- Fixed reconnecting within the same process: after
disconnect(), callingconnect()again for the same hand failed and previously required exiting the process to recover. The handle is no longer usable afterdisconnect(). Create a new connection to reconnect
- Fixed the live teleoperation example (
examples/python/retargeting/1.teleop_real.py) that failed to run:manager.connect()defaults toenable_bridge=True(Zenoh Bridge enabled), so the glove → retarget → hand loop did not work when the example used the default connection options. The example now connects withConnectOptions(enable_bridge=False), bypassing the Bridge for a direct connection
Breaking change:
- Real-time feedback as subscription streams
- Real-time commands use publish
- Configuration resources are cleaner
Fixed:
- Fixed the device reporting its firmware version as
0.1.0instead of the actual running version
- Fixed intermittent hand-pose jumps: IMU FIFO packets are validated before fusion, so invalid samples no longer corrupt the pose estimate
- Fixed IMU initialization not respecting the factory configuration. Palm-IMU devices no longer probe disabled slots or report partial initialization
- Added Wuji Hand 2 support, mirroring the Python resource-style API:
joint_states/joint_diagnosticssubscription streams,mit_params/effort_limitconfiguration, control actions (enable / disable / clear_fault / emergency_stop / user origin), and a joint-command publisher. Whole-hand reads cover 20 joints with a per-joint online bitmap so offline joints are distinguishable, and string getters use a two-call size query (pass aNULLbuffer to get the required length, then call again to fill it) - New
wuji_glove_get_emf_poses_rate_divider/wuji_glove_set_emf_poses_rate_dividerlower the Wuji Glove EMF output rate (divider N ≥ 1, output rate = input rate / N, for example N=4 → 30 Hz). Every derived stream (hand_joint_angles / tip_poses / hand_skeleton / tactile_point_cloud) drops to the same rate, reducing IK CPU load. Applied at runtime and preserved across reconnects - New
wuji_glove_sync_timetriggers a single time-sync round-trip with a Wuji Glove, fillingWujiTimeSyncResultwith the clock offset, round-trip time, and measurement timestamp in microseconds, matching Pythonglove.sync_time() - New
wuji_glove_get_hand_model_path/wuji_glove_set_hand_model_path(and Pythonglove.hand_model_path().get()/set(path)) select a custom hand URDF for Wuji Glove online IK. Python subscription examples now expose--hand-model-path
Breaking changes:
- Interface redesigned into a unified resource-style API. Every feature is accessed via
.get()/.set()/.subscribe()/.publish(), with the same methods for whole-hand and per-joint use - Control actions
enable()/disable()/clear_fault()/set_origin()/clear_origin()accept a length-20 mask for subset operations.emergency_stop()always acts on the whole hand - Feedback as subscription streams:
hand.joint_states()andhand.joint_diagnostics(), with feedback frames carrying aFrameHeader(seq / timestamp_us / frame_idl_wrist/r_wrist), containing only online joints - Real-time control moved to a publish model:
hand.joint_command().publish().send(joints)takes 20JointCommandentries (each with position / velocity / effort). The previoussend(positions, velocities, efforts)three-list form is retired - Configuration resources
mit_params(kp/kd) andeffort_limit(A) reject NaN / inf / negative writes - Control mode is no longer set from Python. The device runs MIT control by default
New capability:describe_error(code) translates a status / error code into a human-readable description.
Breaking changes:
- Updated
tactile_point_cloudto the 526-taxel active point-cloud contract — use a matching firmware version to keep point-cloud frames consistently at 526 points - The default SDK user now always uses the built-in default hand URDF for IK-derived streams (
hand_skeleton,hand_joint_angles,tip_poses) and ignores stored calibration URDF paths. Callingcalibrateas the default user fails fast with error code0x4108. Create or switch to a named SDK user before calibration so generated URDFs are scoped to that user
Default model refresh:
Finger-segment lengths and joint origins are updated to the latest calibration.
Default hand-tracking output (hand_skeleton, hand_joint_angles, tip_poses) is more accurate when no user calibration profile is loaded.
Joint and link layout unchanged.
Ships with wuji-sdk, mapping hand keypoints to Wuji Hand / Wuji Hand 2 joint angles.
Install with pip install wuji-sdk[retarget] (Linux x86_64 / aarch64 only).
The standalone Wuji Retargeting repo is no longer updated.
- Maps 21 MediaPipe-format hand keypoints to Wuji Hand joint angles.
wuji_sdk.retargeting.RetargetSession.for_hand(HandModel.WujiHand2, side=Handedness.Right)builds a session in one line.session.step(keypoints)returns a 20-value joint command ready to send to the device with no extra reordering - Includes a Wuji Glove → retargeting → Wuji Hand / Wuji Hand 2 live teleoperation example at
examples/python/retargeting/1.teleop_real.py
- Fixed firmware upgrade getting stuck at 95% during the upgrade reconnect
- For teleoperation, the default user and default URDF are the recommended setup — the default user keeps the calibration entry, and starting calibration shows a hint to prefer the default first and switch to a calibrated user profile only if it doesn't perform well
- Updated the default Hand Skeleton URDF to the latest version, improving the default Hand Skeleton when no user calibration is loaded
- Standardized hardware naming across the docs and example configs to Wuji Hand 2, Wuji Hand, and Wuji Glove, fixing inconsistent model references. The Wuji Glove example configs are now
adaptive_analytical_wuji_glove_wuji_hand_2_{left,right}.yaml
- Added Wuji Hand 2 (Beta 1) model assets, with the directory moved from
hand2/body/tohand2_beta/body/. Each hand has 20 anatomically named revolute joints, shipped in URDF, MuJoCo MJCF, Isaac Sim USD, STL, and STEP formats - Switched Wuji Hand 2 USD configurations to relative paths so they load on any machine
- Fixed self-collision in the hand USD models for Isaac Sim
- Removed the previous
hand2/body/Wuji Hand 2 directory. Assets now live underhand2_beta/body/
- Tactile data layout updates to 744 values in 24×31 (was 768, 24×32), shrinking
tactile,tactile_residual,tactile_binaryframes and the per-zone layout, with invalid taxels still reported as-1.0
- Tactile matrix and per-zone matrix panels now display the new 24×31 (744) layout
- MCAP playback now rejects legacy 24×32 (768) or corrupted tactile recordings with a warning instead of rendering them at the wrong dimensions
- Tactile output now uses the new 24×31 matrix format, requires matching Wuji Studio and SDK versions, older 768-point firmware is incompatible
- Tactile data layout updates to 744 values in 24×31 (was 768, 24×32), shrinking
tactile,tactile_residual,tactile_binaryframes and the per-zone layout, with invalid taxels still reported as-1.0
- Tactile matrix and per-zone matrix panels now display the new 24×31 (744) layout
- MCAP playback now rejects legacy 24×32 (768) or corrupted tactile recordings with a warning instead of rendering them at the wrong dimensions
- Improved overall stability and reliability
- Added a local user isolation API (
SdkManager.create_useretc.) so operators sharing the same device don't overwrite each other, with automatic parameter reload on user switch — no reconnect required.
- Added Wuji Hand 2 (network-connected) teleoperation support,
teleop_real.pyselects the hand with--hand-model {wuji_hand,wuji_hand_2}, plus auto IP discovery and--kp/--kd/--current-limitfor tuning. - Added config-driven hand model selection — point
optimizer.urdf_path/mjcf_pathat any hand URDF / MJCF, withoptimizer.link_namingmapping link roles (palm, fingertip, etc.) to the URDF's actual link names. Includes Wuji Hand 2 left/right configs.
- First release of the Wuji Hand 2 URDF model and STL meshes, with 20 joints under anatomical naming (
thumb/index_fingeretc.). - Added the Wuji Hand 2 MuJoCo MJCF simulation model with per-joint actuator force ranges.
- Added Wuji Hand 2 Isaac Sim USD assets with position-drive joint gains and textures.
- Added Wuji Hand 2 STEP assemblies (Beta1 left and right) and a robotic-arm flange adapter mount STEP source file.
- Added the
wuji_sdk.WujiHandclass — Wuji Hand 1 is now usable directly throughwuji-sdk(alongside the existingwujihandpy), with USB auto-discovery and connection, motor enable/disable, per-joint effort limits, real-time 20-joint position subscription and command publishing withLowPasssmoothing, and an optional plug-in tactile glove stream. - The
WujiHandAPI surface mirrors Wuji Hand 2 (scan/connect/joint_state/joint_command), so code patterns largely interoperate between the two generations.
- Added
glove.tactile_residual()publishing 768 continuous contact-residual values at the same rate astactile(positive = pressed, ~0 = no contact,-1.0= invalid), mirroringTactileFrameshape so existing tactile-grid visualizers work unchanged. Apply your own thresholding instead of the built-intactile_binaryoutput. - Added a prebuilt C SDK (
libwuji_sdk_c.so+wuji_sdk.h) covering device connection, cross-device coordinate transforms (tf/tf_static), and stream subscriptions (tactile, tactile zones, EMF poses, hand joint angles, hand skeleton, tactile point cloud), forx86_64-linux-gnu/aarch64-linux-gnu/aarch64-android. - Hand pose solving now runs in parallel, reducing compute time behind
hand_joint_anglesand derived hand-tracking data, output values and schemas unchanged. - Added Python calibration API
glove.calibrate()/calibrate_blocking()with timeout, constraint-skip, andon_feedbackcallback. See [Calibration](/docs/en/wuji-glove/latest/calibration) for details. - Real-time IK supports hand-profile selection via
calibration.hand_profile("wujihand"/"wujihand2"), calibration without this parameter generates both URDFs for runtime switching without recalibration. - Added local user isolation API (
SdkManager.create_useretc.) so operators sharing the same device don't overwrite each other, with automatic parameter reload on user switch — no reconnect required. - Added
glove.emf_poses_rate_divider()to lower EMF pose output rate (default 1, set N to publish at input_rate/N, e.g. N=4 → 120Hz down to ~30Hz). All EMF-derived streams (emf_poses/hand_joint_angles/tip_poses/hand_skeleton/tactile_point_cloud) drop to the same rate to reduce IK compute, while IMU (imu_*,tf) and raw tactile streams (tactile/tactile_zones/tactile_residual/tactile_binary) keep original rate. Runtime-effective.
- Added the Device Tools Modify Device Port command to change a device's data port (the device reboots to apply).
- Added the
wujistudio.recordingextension API so authorized extensions can start, inspect, and stop Studio-managed recordings (with optional source/topic selection). - 3D panel Hand Skeleton supports hand profile switching (
wujihand/wujihand2/ Custom URDF), with Custom URDF letting SDK-side IK use a local URDF file. - Calibration now creates a debug recording of the current device at start for later troubleshooting.
- Modify Device IP restricts the new address to private subnets, others are rejected.
wujistudio.devices.subscribeTopicnow requires therobotics.topics.readpermission, extensions must declare it underpermissionsinwujistudio.extension.json.- Updated the bundled device SDK integration for user-scoped calibration and SDK-managed hand profile selection.
- Fixed 3D panel point-cloud colors appearing scrambled and washed-out or semi-transparent. Point-cloud colors now render correctly and match the selected color map.
- Fixed device logs not resuming after the device passively reconnects (for example, after a firmware-upgrade restart).
- First release of the Wuji Glove URDF model with 21 joints including a wrist electromagnetic transmitter and fingertip receiver coils for hand motion tracking.
- Added STL meshes for the transmitter and receiver coils, plus the transmitter top-cover STEP and assembled PDF.
- Removed the standalone attachment STEP, all Wuji Glove model assets now live under
glove/body/.
- Added a prebuilt C SDK (
libwuji_sdk_c.so+wuji_sdk.h), currently scoped to Wuji Glove only, covering device connection, cross-device coordinate transforms (tf/tf_static), and stream subscriptions (tactile, tactile zones, EMF poses, hand joint angles, hand skeleton, tactile point cloud), forx86_64-linux-gnu/aarch64-linux-gnu/aarch64-android. - Added local SDK user profiles via
SdkManager.create_user(display_name)andswitch_user()— each profile keeps its own calibration data per device, and switching profiles reloads calibration on connected devices immediately.
- Added
glove.tactile_residual()publishing 768 continuous contact-residual values at the same rate astactile(positive = pressed, ~0 = no contact,-1.0= invalid), mirroringTactileFrameshape so existing tactile-grid visualizers work unchanged. Apply your own thresholding instead of the built-intactile_binaryoutput. - Hand pose solving now runs in parallel, reducing compute time behind
hand_joint_anglesand derived hand-tracking data, output values and schemas unchanged. - Added Python-side IK calibration via
glove.calibrate()with per-pose progress callbacks (on_feedback), selecthand_profilefor Wuji Hand or Wuji Hand 2, or leave it unset to generate URDFs for both profiles from a single capture, switchable later for live hand tracking. - Added
glove.emf_poses_rate_divider()to lower EMF pose output rate (default 1, set N to publish at input_rate/N, e.g. N=4 → 120Hz down to ~30Hz). All EMF-derived streams (emf_poses/hand_joint_angles/tip_poses/hand_skeleton/tactile_point_cloud) drop to the same rate to reduce IK compute, while IMU (imu_*,tf) and raw tactile streams (tactile/tactile_zones/tactile_residual/tactile_binary) keep original rate. Runtime-effective, persists across reconnects.
- Added the
wuji_sdk.WujiHandclass — Wuji Hand is now usable directly throughwuji-sdk(alongside the existingwujihandpy), with USB auto-discovery and connection, motor enable/disable, per-joint effort limits, real-time 20-joint position subscription and command publishing withLowPasssmoothing, and an optional plug-in tactile glove stream. - The
WujiHandAPI surface mirrors Wuji Hand 2 (scan/connect/joint_state/joint_command), so code patterns largely interoperate between the two generations.
- Added the Device Tools Modify Device Port command to change a device's data port (the device reboots to apply).
- Added the
wujistudio.recordingextension API so authorized extensions can start, inspect, and stop Studio-managed recordings (with optional source/topic selection). - 3D panel Hand Skeleton supports hand profile switching (
wujihand/wujihand2/ Custom URDF), with Custom URDF letting SDK-side IK use a local URDF file. - Calibration now creates a debug recording of the current device at start for later troubleshooting.
- Modify Device IP restricts the new address to private subnets, others are rejected.
wujistudio.devices.subscribeTopicnow requires therobotics.topics.readpermission, extensions must declare it underpermissionsinwujistudio.extension.json.- Updated the bundled device SDK integration for user-scoped calibration and SDK-managed hand profile selection.
- Fixed 3D panel point-cloud colors appearing scrambled and washed-out or semi-transparent. Point-cloud colors now render correctly and match the selected color map.
- Fixed device logs not resuming after the device passively reconnects (for example, after a firmware-upgrade restart).
- Added
wujihand_dual.launch.pyone-command dual-hand bringup that auto-discovers connected hands and publishes each hand's topics under/hand_left//hand_right. - Added
home.launch.pysmooth homing that interpolates joints to zero over a configurable duration, withhand_namesto home multiple hands at once. - Added the
wujihand_listtool to print the serial numbers of connected Wuji Hand devices. wujihand.launch.pynow accepts ahand_sideparameter to connect by handedness (left/right) when noserial_numberis given.- Added the
name_by_handednessdriver parameter to root a hand's topics and services at/hand_<handedness>/.
- Added
Hand(side='left' | 'right')to connect by handedness without a serial number, raisingConnectionErrorwith actionable hints on failure. - Fixed
import wujihandpyraisingAnnotatedtyping import failure on Python 3.8.
- Added Docker usage notes — no official Dockerfile shipped, mount
~/.wujiinto the container when using Wuji Glove or real hardware (simulation and replay don't need it). - Fixed finger constraints (hyperextension, joint coupling, etc.) being misapplied on custom hand URDFs, with a clear error at load time if expected links are missing. Default-hand behavior unchanged.
- Fixed
pip install .silently producing anUNKNOWNpackage with no dependencies on systems with older setuptools (Ubuntu 22.04 needspip install -U pipfirst).
- Added the Wuji Hand soft-pad variant (a hand body model with a soft pad on the thumb), shipping left/right URDF (with
package://ROS2 variants) / MJCF / USD / STL and actuator parameters. - Added simplified-collision variants of the soft-pad hand for faster contact simulation, visual geometry unchanged.
- Added the Wuji Hand RL open-source base, a mounting base for reinforcement-learning setups, shipping a 3D-printable model, CAD assembly, and BOM.
- Corrected the left palm inertia of the Wuji Hand so the center of mass and inertia tensor properly mirror the right palm across the XZ plane.
- First release of the Wuji Hand 2 Beta 1 documentation, covering product information, user notices, usage constraints, and SDK reference
- 20-DoF biomimetic five-finger body with MIT force-position hybrid control and user-tunable parameters
- Joint-level Python SDK (built on the shared Wuji SDK) covering device connection, joint control, state subscription, and diagnostics, plus connect by left or right hand directly (
connect(handedness=...)) without looking up a serial number first - Includes a wrist mounting flange and drawings, a Wuji Glove–based teleoperation demo, and a URDF simulation model (skeleton only)
- Wuji Glove: Added the binary contact tactile stream
glove.tactile_binary(), published at the same rate astactile()with 768 contact states (1.0in contact,0.0no contact,-1.0invalid taxel). It mirrors theTactileFrameshape, so existing tactile-grid visualizers work without changes. - Added handedness-based connection
SdkManager.connect(handedness=Handedness.Left | Handedness.Right, ...)to connect to the left or right side of a bimanual device directly.
- Added tactile contact calibration that trains a dedicated contact-detection model per user and glove, so the tactile heatmap tells contact from no-contact accurately, with adjustable contact sensitivity.
- Added local MCAP replay so you can open and play back recorded
.mcapfiles directly in Studio. - Matrix panel Flip Horizontal / Flip Vertical now mirror cell data only. Row and column header indices stay in natural order (0..n-1) for easier hardware-to-software coordinate alignment.
- Built-in and extension panels now appear consistently in the visualization view, with the same mounting and interaction behavior.
- Improved recording and replay workflows, including episode handling and playback controls.
- Extended extension capabilities so extensions can access more data, contribute custom views, and declare required permissions.
- Fixed native video preview and replay stability issues.
- First public release, shipping the
WujiHand_Reorientin-hand cube reorientation task, a pretrained checkpoint, and the sim2real deployment bridge - Training covers the full SO(3) goal space, with a lower-VRAM variant
WujiHand_Reorient_Light - The deploy bridge tracks an ArUco cube with a camera, anchors the world frame to a wrist AprilTag, and runs the exported ONNX policy in closed loop on the physical Wuji Hand
hand_joint_anglesandtip_posesnow derive from the URDF kinematic chain. Output schemas are unchanged, but numerical values may differ from previous versions.- Removed
glove.tactile_raw()— subscribe toglove.tactile()(calibrated tactile frames) instead. - Removed
glove.factory_reset(). - Added
device.export_flash_logs(out_dir)to dump historical device logs to JSONL files. - Added per-channel recording health via
QualityMetrics.channels: frame rate, drop rate, jitter,is_online, andlast_downtime_msfor each recorded topic.
- Added Extensions view: browse installed extensions and install or uninstall local extensions in one place.
- Preinstalled first-party extensions for calibration, teleoperation, and device tools, ready to use out of the box.
- Fixed layout presets, saved layouts, and user preferences being blank after a fresh install on Linux.
- Fixed URDF local file loading failing on Windows in the 3D panel.
- Fixed URDF meshes not tracking
/joint_statesin real time.
- Added
device.export_flash_logs(out_dir)to dump historical device logs to JSONL files - Added per-channel recording health via
QualityMetrics.channels— frame rate, drop rate, jitter,is_online, andlast_downtime_msfor each recorded topic - Wuji Glove:
hand_joint_anglesandtip_posesnow derive from the URDF kinematic chain. Output schemas are unchanged, but numerical values may differ from previous versions - Wuji Glove: Removed
glove.tactile_raw()— subscribe toglove.tactile()(calibrated tactile frames) instead - Wuji Glove: Removed
glove.factory_reset() - Fixed devices not reliably publishing offline status when
disconnect_all()is called from non-async contexts
- Added Extensions view: browse installed extensions and install or uninstall local extensions in one place
- Preinstalled first-party extensions: calibration, teleoperation, and device tools, ready to use out of the box
- Fixed layout presets, saved layouts, and user preferences being blank after a fresh install on Linux
- Fixed URDF local file loading failing on Windows in the 3D panel
- Fixed URDF meshes not tracking
/joint_statesin real time (mesh stayed in bind pose)
- USB transport failures and mid-runtime disconnects now raise
ConnectionError(wasRuntimeError). Realtime control loops should issue a periodic SDO probe to detect disconnect. - Added USB disconnect handling and donning/doffing pose examples, with automatic left/right hand detection.
- C++ integration is now via
find_package(wujihandcpp CONFIG REQUIRED). - Zenoh Bridge: dropped the control-ownership handshake. SET/PUT writes no longer require it.
- Added a Custom Input Device Integration Guide for plugging in third-party hand inputs.
- Added Wuji Glove as a real-time hand input.
- Added a neutral-pose wrist/thumb offset calibration tool.
- Optimizer enhancements: thumb PIP skipping, anti-hyperextension, DIP/PIP coupling, and more.
- Dependencies: added
wuji-sdk>=0.10.0.
- Repository renamed from
wuji-hand-descriptiontowuji-description, with model assets reorganized underhand/andglove/. - Added left and right URDF models (with ROS2
package://variants), MJCF, and STL visual/collision meshes. - Added Isaac Sim USD assets with PBR materials, physics properties, and collision filter pairs.
- Added the
wuji_descriptionROS2 package withdisplay.launch.pyand RViz presets for left/right hand visualization. - Added simplified structural STEP files of the hand frame.
- Added direct and impact-resistant docking adapters (STL / URDF / MJCF / USD), including the Unitree G1 mounting adapter.
- Added the Wuji Glove mounting interface STEP.
- Fixed periodic tactile data dropouts, improving sampling stability.
- Auto-checks for Studio and device firmware updates, surfacing new versions in a toast and the notification center, with one-click navigation to the download page or upgrade view.
- Auto-checks for Studio and device firmware updates, surfacing new versions in a toast and the notification center, with one-click navigation to the download page or upgrade view
- Added Zenoh-based remote control bridge (Python + C++): cross-host read/write,
actual_position/actual_effortstreams,@capabilityself-describing schema, 1 kHztarget_positionwrites - Added
@controlownership protocol: multi-client mutex, auto-release on crash - Out-of-date firmware now triggers a terminal banner with the latest version and upgrade guide link
- Initialization failures now identify the specific disconnected joint (e.g.
finger(2).joint(1))
- Added
VectorOptimizer, a key-vector retargeting optimizer with example configs for AVP and video - Added ZED camera support as a real-time hand input
- Added interactive parameter tuning visualizer with three-layer skeleton comparison, HUD, and fingertip highlighting. Supports hot-reload and playback
- Added STEP files, drawings, and installation instructions for the direct and impact-resistant adapters
- Added simplified structural STEP files for both hands (with temporary fingertips)
- Fixed thumb mesh on both hands. URDF, MJCF, and USD updated
- Improved log availability and reliability during startup and operation.
- Improved upgrade stability and reduced false upgrade failure reports.
- Wuji SDK and Wuji Studio support sharing the same device
- Improved log availability and reliability during startup and runtime
- Improved upgrade stability and reduced false upgrade failure reports
- Wuji SDK and Wuji Studio can now share the same device
- Fixed a crash when enabling Statistics in the 3D panel on macOS and Linux
- Fixed the firmware upgrade step indicator remaining clickable after completion
- Fixed view switching not being locked during firmware upgrade
- Added cross-device merged subscription to receive aggregated data from all connected devices at once
- Added data recording with multi-channel capture, pause/resume, episode switching, and real-time quality monitoring
- Fixed an occasional crash in callback mode
- Fixed an issue where subscribing to multiple data streams simultaneously could result in missing data
- Fixed an issue where some Wuji Glove IMU data streams could not be subscribed
- Added data recording with one-click start/stop, real-time quality monitoring, and episode management
- Added layout presets with save, switch, rename, import/export, built-in defaults, and keyboard shortcuts
- Device rename now updates all data stream paths
- Multi-device connections now automatically merge transform data for a unified 3D view
- Improved device log panel performance for smooth experience at high log volumes
- Fixed duplicate log entries after device disconnect and reconnect
- Fixed topic updates intermittently dropped in Raw Messages panel
- Added hand skeleton and fingertip pose visualization with per-finger confidence coloring, joint axis display, and opacity settings.
- Added 3D panel tactile point cloud pressure coloring with standard colormaps (plasma, viridis, etc.) and transfer functions.
- Added device log panel to bottom bar with source and level filtering.
- Added LAYOUT panel to the visualization interface for one-click default panel restoration.
- Raw Messages panel - Topic list now uses a tree structure, supporting hierarchical browsing of Topics and Schema fields. - Added IMU data display support.
- Firmware upgrade page shows cumulative update log and displays a warning on downgrade.
- Added color vision accessibility settings, supporting three common color vision types.
- 3D view default configuration adapted to TF tree changes.
- Renamed the
EmfPoseerrorfield toconfidence. - Added IMU orientation data and the
ImuDataAPI (palm, thumb, index, middle, ring, pinky). - Added
tf/tf_staticcoordinate transform APIs withwaistas the base frame, supporting user-defined wrist offset. - Added hand tracking data:
tip_poses()(fingertip poses),hand_joint_angles()(21 DoF joint angles), andhand_skeleton()(21 hand keypoints). - Added tactile point cloud data:
tactile_point_cloud()for 3D tactile visualization. - Added the device logging module.
- Changed the device parameter management API:
load_profile()/has_profile()replaced byget()/set()/save_params().
- Added
get()/set()APIs for reading and writing device configuration parameters - Added
save_params()to persist parameter changes to device flash - Added SDK/Device logging support, use
set_log_level()to control log level - Added 6-sensor IMU data:
imu_palm(),imu_thumb(),imu_index(),imu_middle(),imu_ring(),imu_pinky() - Added coordinate transform APIs:
tf_static().subscribe()andtf().subscribe() - Added hand tracking data:
tip_poses()(fingertip poses),hand_joint_angles()(21 DoF joint angles),hand_skeleton()(21 hand keypoints) - Added tactile point cloud data:
tactile_point_cloud()for 3D tactile visualization - Positioning quality metric
EmfPose.confidence— indicates EMF pose estimation reliability (0.0 to 1.0)
- Added hand skeleton and fingertip pose visualization with confidence coloring
- Added tactile point cloud pressure coloring in 3D panel
- Topic list now uses tree structure with hierarchical browsing
- Added Layout panel to the Sidebar for one-click layout reset
- Added device log panel to the Bottom bar with source and level filtering
- Firmware upgrade page shows cumulative changelog with downgrade warning
- Added color vision accessibility settings and Safety (Okabe-Ito) colormap
- Raw Messages panel now supports IMU data display
- Smart glove with tactile sensing and motion capture.
- Tactile sensing: Full-hand tactile data with per-zone output (palm, thumb, index, middle, ring, pinky).
- Motion capture: Fingertip tracking module for 5-finger motion capture.
- LED indicator: Multi-state, multi-mode feedback for device status.
- New desktop application for multi-device connection, device management, and data visualization.
- Visualization panels: 3D view, Plot, Raw Message, and Tactile Matrix for intuitive data presentation.
- Device management: Device discovery, connection history, rename, calibrate, export calibration data, and device info.
- Firmware upgrade: Online download and local firmware upload with progress tracking and error diagnostics.
- Automatic left/right hand detection during device naming.
- 3D glove landmark visualization with positioning error mapped to point color.
- Light and dark theme switching.
- Semantic API for Wuji Glove with callback subscription and async support.
- Wuji SDK launch: Python development kit for Wuji devices
- Callback subscription support with
subscribe_with_callback() - Async/await support with
recv_async() - IDE auto-completion support
- Data stream subscriptions: tactile matrix, tactile zones, EMF poses
- Wuji Studio launch: Desktop application for device management, data visualization, and firmware upgrade
- Visualization panels: 3D View, Plot, Tactile Matrix, and Raw Messages
- Multi-device connection with device discovery and connection history
- Device command palette: reconnect, disconnect, rename, calibrate, and more
- Firmware upgrade with online download, local upload, and progress tracking
- 3D glove landmark visualization
- Light and dark theme support
- Isaac Sim Support: First release of Isaac Sim simulation demo, enabling Wuji Hand loading and control in Isaac Sim
- Slip Detection Optimization: Adjusted detection threshold and debounce time to resolve false positives under high current, slip downgraded to warning without triggering shutdown
- ROS2 Compatibility Improvements: Joint names now include handedness prefix to match URDF, fixed TF tree publishing issues
- URDF Mesh Path Fix: Corrected mesh reference paths in URDF files
- SDK Multi-threading Support: Added
disable_thread_safe_check()API for multi-threaded operations
<Callout type="warning" title="Warning"> When slip occurs, the finger may not fully reach the expected position </Callout> <Callout type="info" title="Note">
- This firmware update changes slip detection behavior: slip no longer triggers shutdown, only reports a warning
- This change only affects firmware behavior and does not impact compatibility
- Users can clear the slip warning and continue operating the device. If a finger joint slips, disable that finger and continue using the remaining fingers
</Callout>
- HMI Slip Display Fix: Fixed control slider jumping issue when hardware slip occurs
- Effort Feature: Added real-time effort reading and feedback, renamed IQ Limit to Effort Limit, unit changed to Ampere (A)
- URDF Unified Management: Integrated into wuji-hand-description package, simplified robot naming and launch scripts
- Bug Fixes: Fixed known issues, improved stability
- Upgrader Optimization: Architecture upgrade with enhanced UI and workflow indicators
- Fixed known firmware issues, improved version stability and user experience
- Software Name Changes: - Qt HMI, WujiHand Qt HMI, WujiHand Qt renamed to Wuji Hand HMI - OTA HMI, WujiHand OTA renamed to Wuji Hand Upgrader
- Optimized Wuji Hand HMI demo routine: replaced preset action sequences with real motion trajectories recorded during teleoperation, with multi-speed playback control
- Software Name Changes: - Qt HMI, WujiHand Qt HMI, WujiHand Qt renamed to Wuji Hand HMI - OTA HMI, WujiHand OTA renamed to Wuji Hand Upgrader
- Real-time Control Optimization: Optimized feedback data latency in real-time control mode, improved feedback data sampling synchronization, reducing position sampling time offset between joints
- ROS2 Support: Added Wuji Hand ROS2 driver package (v0.1.0), supporting 1000Hz state publishing, multi-hand coordination, automatic left/right hand detection, and RViz2/Foxglove visualization
- Enhanced Exception Diagnostics: SDK implements automatic exception detection based on error codes, providing fault remediation suggestions to improve system reliability
- Documentation & Compatibility: SDK refactored code examples, added bilingual README (English and Chinese), fixed C++11 compatibility issues
- Serial Number Management: Added device serial number (SN) reading functionality for easier device identification and tracking (only supported on devices shipped after this release)
- Communication Quality Optimization: Fixed issues causing stuttering and packet loss, improved communication stability
- Real-time Control Enhancement: Real-time control feedback frequency increased to 1kHz, added real-time position control mode with low-latency position command updates, effectively reducing tracking error
- Firmware-side Real-time Filtering: Built-in adjustable low-pass filter for smoothing control commands
- Torque Slope Limiting: Added torque slope limiting to prevent over-current protection issues
- System Firmware Version Info: Added support for querying complete system firmware version information
- Upgrade Experience Optimization: Redesigned upgrader user interface, optimized device connection workflow and flashing prompts
- Full Closed-loop Control Mode: Default control mode upgraded to full closed-loop control, providing higher precision position control capabilities
- Upgrade Process Optimization: Improved firmware upgrade interaction flow for enhanced user experience
- Real-time Control Interface: SDK now includes real-time control interface, significantly optimizing control performance
- Communication Framework Optimization: Enhanced dexterous hand communication framework for improved stability
- User Interface Improvements: Optimized host computer software interaction experience for more intuitive operation
<Callout type="warning" title="Important Notice">
- Upgrading from previous versions to this version requires contacting after-sales service for recalibration
- For calibration service, please contact: support@wuji.tech
</Callout>
- UI Improvements: Refined desktop app interactions for a more intuitive experience