No version for distro humble showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro jazzy showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro kilted showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro rolling showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro github showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro galactic showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro iron showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro melodic showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange

No version for distro noetic showing lyrical. Known supported distros are highlighted in the buttons above.
Package symbol

wuji_hand2_driver package from wuji_ros2 repo

wuji_bringup wuji_glove_driver wuji_hand2_driver wuji_msgs wuji_sdk_vendor wuji_tools

ROS Distro
lyrical

Package Summary

Version 2026.10.26
License MIT
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/wuji-technology/wuji-ros2.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

ROS 2 driver for Wuji Hand 2.

Additional Links

Maintainers

  • Wuji Technology

Authors

No additional authors.

wuji_hand2_driver

wuji_hand2_driver connects one Wuji Hand 2 to ROS2. It publishes state and sensor streams, accepts joint commands, and exposes device controls.

Run the Node

Select a device by serial number:

ros2 run wuji_hand2_driver wuji_hand2_node \
  --ros-args -p serial_number:=<serial-number>

You can also select a device with endpoint or hand_side. If no selector is set, the node connects only when discovery finds one unique Wuji Hand 2. It exits when discovery finds multiple candidates.

All topic and service names are relative. Use a ROS namespace to run more than one driver.

Parameters

The node reads parameters only during startup.

Parameter Type Default Description
endpoint string "" Wuji SDK address used for direct connection
serial_number string "" Selects a device by serial number
hand_side string "" Selects a left or right device. Empty doesn’t filter by side
connect_timeout double 10.0 Overall selection and connection timeout in seconds. Set to 0.0 to wait without a deadline
auto_enable bool false Enables all joints after startup
publish_joint_diagnostics bool true Starts the joint diagnostic stream
publish_imu bool true Starts the IMU stream
publish_fingertip_tactile bool false Starts the fingertip streams for fingers whose tactile module is online. Set it to true on a hand with fingertip tactile modules

When both serial_number and hand_side are set, the serial number selects the device and the side validates it. When endpoint is set with another selector, the node connects to the endpoint and validates the supplied identity.

Topics

Topic Type Direction QoS Rate
joint_states sensor_msgs/msg/JointState Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
joint_commands sensor_msgs/msg/JointState Subscribed Keep last 1, best effort, volatile The Wuji SDK accepts up to 1 kHz
joint_diagnostics wuji_msgs/msg/JointDiagnosticsArray Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
imu sensor_msgs/msg/Imu Published Keep last 5, best effort, volatile About 100 Hz in the Wuji SDK contract
fingertip_tactile/thumb wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/index wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/middle wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/ring wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate
fingertip_tactile/pinky wuji_msgs/msg/FingertipTactile Published Keep last 5, best effort, volatile Device-dependent, and the Wuji SDK doesn’t specify a rate

The fingertip point_forces use N. total_force also uses N, and temperature uses degrees Celsius. IMU angular velocity uses rad/s, and linear acceleration uses m/s². The driver publishes the SDK frame ID and converts the SDK Unix timestamp in microseconds to the ROS timestamp.

Wuji Hand 2 currently doesn’t provide an orientation estimate. The driver sets orientation_covariance[0] to -1 to mark orientation unavailable. JointState.position uses rad, velocity uses rad/s, and effort uses A as the current SDK contract. The effort field is a current-like torque proxy, not measured N·m. Published joint_states entries follow the valid entries in each SDK frame. The driver keeps name, position, velocity, and effort aligned, but it doesn’t promise dense-index ordering for state messages.

The joint_diagnostics topic directly publishes per-joint hardware data from the Wuji SDK, including status, error, electrical, temperature, and communication fields. It isn’t a ROS standard health interface. The driver doesn’t publish /diagnostics.

Joint Diagnostics Fields

Field Unit Semantics
nid None SDK node identifier. The wrapper copies it without conversion
name None Formal URDF joint name mapped from nid and the selected hand side
status_word None Raw SDK uint32 status word. The wrapper doesn’t decode or alter it
current A Phase current reported by the SDK. The wrapper passes it through without ROS-side conversion
bus_voltage V Bus voltage reported by the SDK. The wrapper passes it through without ROS-side conversion
mcu_temperature °C Joint controller temperature reported by the SDK. The wrapper passes it through without ROS-side conversion
error_code None Raw SDK uint16 error value. The wrapper passes it through without ROS-side decoding or reinterpretation
comm_response_rate_pct % Per-joint RS485 bus response rate over the last second, range 0–100 percent. The wrapper passes it through without ROS-side conversion
comm_timeout_total Count Cumulative per-joint RS485 bus timeout count from the SDK communication snapshot. The wrapper passes it through without ROS-side conversion

JointDiagnosticsArray.header contains the converted SDK timestamp and frame ID. The array contains only valid, online joint entries from the SDK frame.

Joint Commands

Named commands are the recommended input form. Set name to formal left-side or right-side URDF joint names. Set position to the same length. Named commands can target a subset of joints and can use any order.

Leave name empty only for a full 20-joint command. In this form, position must have exactly 20 entries in the dense order below. This ordering is a driver contract because ROS doesn’t define an anonymous JointState order.

For either form, velocity and effort can be empty. The driver fills an empty field with zero. A nonempty field must match the command joint count. Unknown names, duplicate names, opposite-side names, invalid lengths, NaN, infinity, and values outside the SDK float range reject the complete command. The driver doesn’t send a partial update.

Dense Index nid Name Body
0 1 thumb_cmc_flex
1 2 thumb_cmc_abd
2 3 thumb_mcp
3 4 thumb_ip
4 6 index_finger_mcp_flex
5 7 index_finger_mcp_abd
6 8 index_finger_pip
7 9 index_finger_dip
8 11 middle_finger_mcp_flex
9 12 middle_finger_mcp_abd
10 13 middle_finger_pip
11 14 middle_finger_dip
12 16 ring_finger_mcp_flex
13 17 ring_finger_mcp_abd
14 18 ring_finger_pip
15 19 ring_finger_dip
16 21 pinky_mcp_flex
17 22 pinky_mcp_abd

File truncated at 100 lines see the full file

CHANGELOG
No CHANGELOG found.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged wuji_hand2_driver at Robotics Stack Exchange