Skip to content

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 18 May 13:40
· 12 commits to main since this release
637a2a7

v1.7.0 (2026-05-18)

New Features

  • Tactile sensing glove support (Linux only): top-level wujihandpy.TactileGlove plus typed companions TactileFrame, TactileError, TactileHandedness, and POD types for device info, diagnostics, firmware build, and time sync. Pressure frames are numpy.float32 24×32 arrays in [0, 1] with NaN for invalid cells. Hand and TactileGlove can coexist in one process—see example/joint_with_tactile.py.
  • Added example 6.disconnect.py demonstrating USB disconnect handling.
  • Added example joint/glove_donning.py that smoothly drives the hand to a measured glove donning/doffing pose (thumb adducted across the palm, fingers nearly extended) at 100 Hz with low-pass filtering. Auto-selects the left- or right-hand pose via read_handedness().

Improvements

  • Changed Hand default usb_pid from -1 to 0x2000, to avoid silently matching the tactile sensing glove (shared VID 0x0483). Pre-production firmware with other PIDs must pass usb_pid= explicitly.
  • Changed Hand USB transport failures to raise ConnectionError (was RuntimeError), matching TactileGlove. The same wujihandcpp::device::ConnectionError (Python ConnectionError) is now also raised when the device disconnects mid-runtime — covering blocking SDO calls, in-flight async reads, and raw SDO operations. Pending async callbacks are explicitly woken so callers don't hang. See example/joint/6.disconnect.py for the recommended catch pattern.
  • Changed TactileGlove() without serial_number to raise ConnectionError listing found serials when multiple tactile sensing gloves are on the bus, instead of silently picking the first.
  • Updated CMake integration for C++ consumers to use find_package(wujihandcpp CONFIG REQUIRED) + wujihandcpp::wujihandcpp.
  • Reorganized examples into example/joint/, example/tactile/basic.py, and example/joint_with_tactile.py.

Bug Fixes

  • Fixed Linux release build (Dockerfile.package-builder / cibuildwheel) failing to link wujihandcpp_tests with undefined reference to wujihandcpp::tactile::FrameDemuxer::*. Root cause was FrameDemuxer's symbols being stripped from libwujihandcpp.so by -fvisibility=hidden (it's a src/-private class with no visibility("default") annotation). The test target now compiles src/device/frame_demuxer.cpp directly into the executable on Linux + shared-library builds, leaving the library's public ABI unchanged.

Caution

  • Removed: Removed the @control acquire/release protocol from the Zenoh Bridge (Python + C++); SET / PUT writes no longer require a handshake.

Full Changelog: v1.6.0...v1.7.0