Skip to content

feat: sync dev with GUI overhaul, SDK 2.1.8, docs refresh - #2

Merged
liangshaoteng merged 19 commits into
mainfrom
dev
Jul 10, 2026
Merged

feat: sync dev with GUI overhaul, SDK 2.1.8, docs refresh#2
liangshaoteng merged 19 commits into
mainfrom
dev

Conversation

@liangshaoteng

Copy link
Copy Markdown
Collaborator

Summary

  • Overhaul hand_control_gui: toolbar, sliders, layout/perf, copy-positions link, per-model defaults
  • Bump launch defaults to linkerhand-cpp-sdk v2.1.8; refresh model presets
  • Add Modbus transport support; deduplicate commands and auto-detect hand model
  • Fix publisher thread data race and guard exceptions
  • Docs: overhaul README (SDK/CAN setup, tests, GUI screenshot); move logo under assets/

Test plan

  • colcon build --packages-select linker_hand_cpp_ros2
  • ros2 launch linker_hand_cpp_ros2 run.xml 双手启动无报错
  • ros2 run linker_hand_cpp_ros2 hand_control_gui.py GUI 正常

- Toolbar: place 型号 before 侧别, drop the manual 话题 input (topic is
  derived from side).
- Model switch: skip feedback panel rebuild when touch shape is
  unchanged; only redraw the heatmap. Build slider pages lazily so
  non-active metric tabs cost nothing until first click.
- Control panel: bind mouse wheel while the cursor is over the
  sliders canvas so the joint list scrolls.
- Logo loader: look for the image under assets/ in both the installed
  share directory and the source-tree fallback (paired with the
  companion commit that relocates logo.png).
Relocate logo.png from the package root into assets/ to keep the
root reserved for metadata files. CMakeLists installs the whole
assets/ directory to share/, and the GUI loader (previous commit)
already resolves the new path.
…sitions link

- Sliders: replace ttk.Scale with a Canvas-based custom widget — thin line
  track and circular thumb, click/drag to jump; keep Spinbox coupling.
- Layout: shrink top toolbar to 42px, drop the logo, vertically center
  controls; add a bottom bar that hosts the logo centered (with brand text
  fallback). Hide the standalone status row while keeping status_var and
  summary_var for internal state.
- Control card: append a subtle right-aligned "复制位置值" link footer
  that copies current position values (\"255, 255, ...\") to the clipboard.
- Combobox: clear text selection and drop focus after choosing to avoid
  the stuck blue-highlighted state; short-circuit apply_model when the
  requested model equals the current one to prevent redundant rebuilds.
- VERSION 2.1.7 → 2.1.8 in both run.xml and run_left.xml.
- run.xml: enable LEFT by default (G20), disable RIGHT (L6); set
  HAND_SPEED/HAND_EFFORT defaults to 255; drop LEFT_CANBUS/RIGHT_CANBUS
  args and their CAN_CHANNEL passthrough so the node falls back to its
  own default (can0).
- run_left.xml: switch single-hand launch to CAN/G20 to match the
  double-hand default; align HAND_SPEED/HAND_EFFORT to 255.
- Quick start: add SDK install step, SocketCAN bring-up commands, single
  package build tip, parameter override example, colcon test section.
- Sync the launch XML snippet with the current defaults (LEFT=G20 enabled,
  RIGHT=L6 disabled, HAND_SPEED/HAND_EFFORT=255).
- GUI section: rewrite to match the new interface (top model/side + live
  toggle, tabbed 位置/速度/力矩 sliders with line + circle style, right
  Spinbox, "复制位置" link, bottom logo). Insert screenshot from assets/.
- Update changelog pointer to git log instead of the missing CHANGELOG.md.
@liangshaoteng
liangshaoteng merged commit 011fcbe into main Jul 10, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant