# wn_hand_sdk **Repository Path**: vanextec/wn_hand_sdk ## Basic Information - **Project Name**: wn_hand_sdk - **Description**: 万拿灵巧手 SDK(Software Development Kit)是为万拿灵巧手设备开发的软件工具包,提供完整的编程接口和控制功能。SDK 面向教育、工业、机器人等领域的开发者,支持 C++ 开发语言,提供常用的示例代码帮助开发者实现对灵巧手设备的快速入门。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: develop_v2.1 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-04-09 - **Last Updated**: 2026-09-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 万拿灵巧手SDK使用手册 ## 🍔概述 万拿灵巧手 SDK(Software Development Kit)是为万拿灵巧手设备开发的软件工具包,提供完整的编程接口和控制功能。SDK 面向教育. 工业. 机器人等领域的开发者,支持 C++ 和 Python 开发语言,提供常用的示例代码帮助开发者实现对灵巧手设备的快速入门。 ## 🧂SDK能力说明 * 灵巧手状态信息获取 * 灵巧手动作控制 * 根据配置文件执行动作演示 * 操作日志. 通讯日志全量记录 * 将modbus_rtu封装为统一总线,上层应用无需关注底层通讯实现 ## 🍿系统需求 **操作系统:** Ubuntu22.04 **系统架构:** 支持X64架构 **RS485接口:** 波特率115200 8-n-1 ## 🍟硬件连接 1. 通过RS485接口连接灵巧手和你的控制器(工控机. 开发板. PC) 2. 启动灵巧手的电源 ## 🍕SDK代码的获取和使用 1. 代码获取 通过git获取sdk源码 ```shell $ git clone ssh://git@192.168.1.251:2222/embedded-team/mcu/wn_hand_sdk.git $ cd wn_hand_sdk/ $ git checkout develop_v2.1 ``` 2. 安装依赖 ```shell $ sudo apt update $ sudo apt install libspdlog-dev libboost-all-dev libfmt-dev libyaml-cpp-dev libmodbus-dev $ sudo apt install libasio-dev pybind11-dev python3-pip $ pip install pybind11 ``` 3. 代码编译 ```shell $ cd wn_hand_sdk/ $ mkdir build && cd build $ cmake .. $ make $ make install ``` 编译成功后,build/outputs目录下会生成samples和sdk。 ## 🧈运行示例代码 用法: ./wn_hand_api_demo 示例: ./wn_hand_api_demo ```YAML $ cd build/outputs/samples/wn_hand_api_demo $ sudo ./wn_hand_api_demo ========== WnHandApi Test Demo ========== --- Get SDK Version --- SDK Version: V2.1 --- Bus Service Init --- [2026-07-29 11:17:31.883] [api_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:17:31.883] [api_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo/wn_hand_logs/api [2026-07-29 11:17:31.883] [api_log] [info] Max file size: 10MB, Max files: 10 [2026-07-29 11:17:31.883] [api_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:17:31.883] [api_log] [info] Logger parameters: [2026-07-29 11:17:31.883] [api_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo/wn_hand_logs/api [2026-07-29 11:17:31.883] [api_log] [info] File prefix: api_log [2026-07-29 11:17:31.883] [api_log] [info] Max file size: 10485760 bytes [2026-07-29 11:17:31.883] [api_log] [info] Max backup files: 10 [2026-07-29 11:17:31.883] [api_log] [info] Log level: debug [2026-07-29 11:17:31.883] [api_log] [info] console_Log level: debug [2026-07-29 11:17:31.883] [api_log] [info] IO线程已启动 [2026-07-29 11:17:31.883] [api_log] [info] bus_type read from config: modbus_rtu [2026-07-29 11:17:31.884] [api_log] [info] setting driver to ModbusRtuBus [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:17:31.884] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x61517e43d760 [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:17:31.885] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:17:31.902] [modbus_rtu_log] [info] [ModbusRtuBus] start OK [2026-07-29 11:17:31.902] [api_log] [info] connected ok [2026-07-29 11:17:31.902] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:17:31.902] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:17:32.019] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:17:32.019] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:17:32.019] [api_log] [info] hardware_version: 4294967295 [2026-07-29 11:17:32.019] [api_log] [debug] get_hand_software_version [2026-07-29 11:17:32.019] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:17:32.131] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:17:32.131] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:17:32.131] [api_log] [info] software_version: 4294967295 [2026-07-29 11:17:32.131] [api_log] [debug] get_hand_joint_num [2026-07-29 11:17:32.131] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:17:32.260] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:17:32.260] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:17:32.260] [api_log] [info] joint_num: 65535 [2026-07-29 11:17:32.260] [api_log] [info] hardware_version 4294967295 [2026-07-29 11:17:32.260] [api_log] [info] software_version 4294967295 [2026-07-29 11:17:32.260] [api_log] [info] joint_num 65535 bus_service_init: [PASS] --- Connection Status --- is_connected: [PASS] --- Get Hand Information --- [2026-07-29 11:17:32.260] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:17:32.260] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:17:32.372] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:17:32.372] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:17:32.372] [api_log] [info] hardware_version: 4294967295 Hardware Version: 4294967295 [2026-07-29 11:17:32.372] [api_log] [debug] get_hand_software_version [2026-07-29 11:17:32.372] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:17:32.485] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:17:32.485] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:17:32.485] [api_log] [info] software_version: 4294967295 Software Version: 4294967295 [2026-07-29 11:17:32.485] [api_log] [debug] get_hand_joint_num [2026-07-29 11:17:32.485] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:17:32.613] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:17:32.613] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:17:32.613] [api_log] [info] joint_num: 65535 Joint Number: 65535 [FATAL] Invalid joint number: 65535 Using default joint number: 1 --- Test: set_hand_start --- [2026-07-29 11:17:32.613] [api_log] [debug] set_hand_start [2026-07-29 11:17:32.613] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x6 to addr 0x0 [01][06][00][00][00][06][09][C8] Waiting for a confirmation... <01><06><00><00><00><06><09> [2026-07-29 11:17:32.726] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x7 to addr 0x0 [01][06][00][00][00][07][C8][08] Waiting for a confirmation... <01><06><00><00><00><07><08> [2026-07-29 11:17:32.841] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0xF to addr 0x0 [01][06][00][00][00][0F][C9][CE] Waiting for a confirmation... <01><06><00><00><00><0F> [2026-07-29 11:17:32.955] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start OK [2026-07-29 11:17:32.955] [api_log] [info] set_hand_start OK set_hand_start: [PASS] --- Test: set_hand_target_position + get_hand_current_position --- [2026-07-29 11:17:32.955] [api_log] [debug] set_hand_target_position 0.000000 [2026-07-29 11:17:32.956] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:17:32.956] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=1 [01][10][00][01][00][01][02][00][00][A7][81] Waiting for a confirmation... <01><10><00><01><00><01><50><09> [2026-07-29 11:17:33.070] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:17:33.070] [api_log] [info] set_hand_target_position OK set_hand_target_position (target: 0): [PASS] [2026-07-29 11:17:34.071] [api_log] [debug] get_hand_current_position [2026-07-29 11:17:34.071] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_current_position: slave=0x1, addr=0x51, count=20 [01][03][00][51][00][14][14][14] Waiting for a confirmation... <01><03><28><00><01><00><6A><00><00><00><00><00><00><00><00><3F><17> [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[0]: 1 -> 0.01 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[1]: 106 -> 1.06 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[2]: -13 -> -0.13 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[3]: -5 -> -0.05 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[4]: -31 -> -0.31 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[5]: -68 -> -0.68 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[6]: -38 -> -0.38 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[7]: -38 -> -0.38 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[8]: -21 -> -0.21 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[9]: -50 -> -0.5 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[10]: -50 -> -0.5 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[11]: -19 -> -0.19 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[12]: -23 -> -0.23 [2026-07-29 11:17:34.203] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[13]: -13 -> -0.13 [2026-07-29 11:17:34.204] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[14]: -64 -> -0.64 [2026-07-29 11:17:34.204] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[15]: -29 -> -0.29 [2026-07-29 11:17:34.204] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[16]: 0 -> 0 [2026-07-29 11:17:34.204] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[17]: 0 -> 0 [2026-07-29 11:17:34.204] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[18]: 0 -> 0 [2026-07-29 11:17:34.204] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[19]: 0 -> 0 [2026-07-29 11:17:34.204] [api_log] [info] get_hand_current_position OK, count=20 get_hand_current_position: [PASS], pos[0]=0.01, Diff: 0.01, Match: [PASS] --- Test: set_hand_target_position (single joint) + get_hand_current_position --- [2026-07-29 11:17:34.204] [api_log] [debug] set_hand_target_position id:1 angle:0 [2026-07-29 11:17:34.204] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: id=0x1, addr=0x1, angle=0, scaled=0 [01][06][00][01][00][00][D8][0A] Waiting for a confirmation... <01><06><00><01><00><00><0A> [2026-07-29 11:17:34.334] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:17:34.334] [api_log] [info] set_hand_target_position OK set_hand_target_position(id=0x01, target: 0): [PASS] [2026-07-29 11:17:35.335] [api_log] [debug] get_hand_current_position [2026-07-29 11:17:35.335] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_current_position: slave=0x1, addr=0x51, count=20 [01][03][00][51][00][14][14][14] Waiting for a confirmation... <01><03><28><00><00><00><6A><00><00><00><00><00><00><00><00> [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[0]: 0 -> 0 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[1]: 106 -> 1.06 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[2]: -13 -> -0.13 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[3]: -5 -> -0.05 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[4]: -28 -> -0.28 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[5]: -75 -> -0.75 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[6]: -38 -> -0.38 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[7]: -38 -> -0.38 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[8]: -21 -> -0.21 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[9]: -50 -> -0.5 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[10]: -46 -> -0.46 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[11]: -23 -> -0.23 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[12]: -23 -> -0.23 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[13]: -13 -> -0.13 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[14]: -64 -> -0.64 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[15]: -29 -> -0.29 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[16]: 0 -> 0 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[17]: 0 -> 0 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[18]: 0 -> 0 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[19]: 0 -> 0 [2026-07-29 11:17:35.466] [api_log] [info] get_hand_current_position OK, count=20 get_hand_current_position: [PASS], pos[0]=0.00, Diff: 0.00, Match: [PASS] --- Test: set_hand_work_mode --- [2026-07-29 11:17:35.466] [api_log] [debug] set_hand_work_mode 2 [2026-07-29 11:17:35.466] [modbus_rtu_log] [debug] [ModbusRtuBus] mode[0]: 2 [2026-07-29 11:17:35.466] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_work_mode: slave=0x1, addr=0x15, count=1 [01][10][00][15][00][01][02][00][02][25][54] Waiting for a confirmation... <01><10><00><15><00><01><10><0D> [2026-07-29 11:17:35.598] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_work_mode OK [2026-07-29 11:17:35.598] [api_log] [info] set_hand_work_mode OK set_hand_work_mode: [PASS] --- Test: set_hand_work_mode (single joint) --- [2026-07-29 11:17:35.598] [api_log] [debug] set_hand_work_mode id:1 mode:0 [2026-07-29 11:17:35.598] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_work_mode: id=0x1, addr=0x15, mode=0 [01][06][00][15][00][00][98][0E] Waiting for a confirmation... <01><06><00><15><00><00><98><0E> [2026-07-29 11:17:35.712] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_work_mode OK [2026-07-29 11:17:35.712] [api_log] [info] set_hand_work_mode OK set_hand_work_mode(id=0x01): [PASS] --- Test: set_hand_speed + get_hand_speed --- [2026-07-29 11:17:35.712] [api_log] [debug] set_hand_speed 50.000000 [2026-07-29 11:17:35.712] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[0]: 50 -> 5000 [2026-07-29 11:17:35.713] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_speed: slave=0x1, addr=0x29, count=1 [01][10][00][29][00][01][02][13][88][AC][FF] Waiting for a confirmation... <01><10><00><29><00><01><01> [2026-07-29 11:17:35.843] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_speed OK [2026-07-29 11:17:35.843] [api_log] [info] set_hand_speed OK set_hand_speed (target: 50): [PASS] [2026-07-29 11:17:35.843] [api_log] [debug] get_hand_speed [2026-07-29 11:17:35.843] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_speed: slave=0x1, addr=0x29, count=20 [01][03][00][29][00][14][94][0D] Waiting for a confirmation... <01><03><28><13><88><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><9F> [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[0]: 5000 -> 50 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[1]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[2]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[3]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[4]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[5]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[6]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[7]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[8]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[9]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[10]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[11]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[12]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[13]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[14]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[15]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[16]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[17]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[18]: 0 -> 0 [2026-07-29 11:17:35.974] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[19]: 0 -> 0 [2026-07-29 11:17:35.974] [api_log] [info] get_hand_speed OK, count=20 get_hand_speed: [PASS], speed[0]=50.00, Diff: 0.00, Match: [PASS] --- Test: set_hand_speed (single joint) + get_hand_speed --- [2026-07-29 11:17:35.974] [api_log] [debug] set_hand_speed id:1 speed:30 [2026-07-29 11:17:35.974] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_speed: id=0x1, addr=0x29, speed=30, scaled=3000 [01][06][00][29][0B][B8][5F][40] Waiting for a confirmation... <01><06><00><29><0B><5F><40> [2026-07-29 11:17:36.089] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_speed OK [2026-07-29 11:17:36.089] [api_log] [info] set_hand_speed OK set_hand_speed(id=0x01, target: 30): [PASS] [2026-07-29 11:17:36.090] [api_log] [debug] get_hand_speed [2026-07-29 11:17:36.090] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_speed: slave=0x1, addr=0x29, count=20 [01][03][00][29][00][14][94][0D] Waiting for a confirmation... <01><03><28><0B><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00> [2026-07-29 11:17:36.220] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[0]: 3000 -> 30 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[1]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[2]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[3]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[4]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[5]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[6]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[7]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[8]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[9]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[10]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[11]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[12]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[13]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[14]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[15]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[16]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[17]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[18]: 0 -> 0 [2026-07-29 11:17:36.221] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[19]: 0 -> 0 [2026-07-29 11:17:36.221] [api_log] [info] get_hand_speed OK, count=20 get_hand_speed: [PASS], speed[0]=30.00, Diff: 0.00, Match: [PASS] --- Get Status Information --- [2026-07-29 11:17:36.221] [api_log] [debug] get_hand_current [2026-07-29 11:17:36.221] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_current: slave=0x1, addr=0x100, count=20 [01][03][01][00][00][14][44][39] Waiting for a confirmation... <01><03><28><00><00><00><01><00><07><00><01><00><03><00><07><00><07><00><05><00><06><00><00><00><04><00><02><00><04><00><06><00><02><00><02><00><00><00><00><00><00><00><00><3E><59> [2026-07-29 11:17:36.352] [modbus_rtu_log] [debug] [ModbusRtuBus] current[0]: 0 -> 0 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[1]: 1 -> 0.01 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[2]: 7 -> 0.07 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[3]: 1 -> 0.01 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[4]: 3 -> 0.03 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[5]: 7 -> 0.07 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[6]: 7 -> 0.07 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[7]: 5 -> 0.05 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[8]: 6 -> 0.06 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[9]: 0 -> 0 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[10]: 4 -> 0.04 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[11]: 2 -> 0.02 [2026-07-29 11:17:36.353] [modbus_rtu_log] [debug] [ModbusRtuBus] current[12]: 4 -> 0.04 [2026-07-29 11:17:36.354] [modbus_rtu_log] [debug] [ModbusRtuBus] current[13]: 6 -> 0.06 [2026-07-29 11:17:36.354] [modbus_rtu_log] [debug] [ModbusRtuBus] current[14]: 2 -> 0.02 [2026-07-29 11:17:36.354] [modbus_rtu_log] [debug] [ModbusRtuBus] current[15]: 2 -> 0.02 [2026-07-29 11:17:36.354] [modbus_rtu_log] [debug] [ModbusRtuBus] current[16]: 0 -> 0 [2026-07-29 11:17:36.354] [modbus_rtu_log] [debug] [ModbusRtuBus] current[17]: 0 -> 0 [2026-07-29 11:17:36.354] [modbus_rtu_log] [debug] [ModbusRtuBus] current[18]: 0 -> 0 [2026-07-29 11:17:36.354] [modbus_rtu_log] [debug] [ModbusRtuBus] current[19]: 0 -> 0 [2026-07-29 11:17:36.354] [api_log] [info] get_hand_current OK, count=20 get_hand_current: [PASS], count=20 [2026-07-29 11:17:36.354] [api_log] [debug] get_normal_force [2026-07-29 11:17:36.354] [modbus_rtu_log] [info] [ModbusRtuBus] get_normal_force: slave=0x1, addr=0x65, count=10 [01][03][00][65][00][0A][D5][D2] Waiting for a confirmation... <01><03><14><00><00><00><03><00><00><09><00><00><00><00><00><00><05><00><01><00><0B><1D><21> [2026-07-29 11:17:36.483] [modbus_rtu_log] [debug] [ModbusRtuBus] force[0]: raw=0x30000, X=0, Y=0, Z=3 [2026-07-29 11:17:36.483] [modbus_rtu_log] [debug] [ModbusRtuBus] force[1]: raw=0x9ff00, X=0, Y=255, Z=9 [2026-07-29 11:17:36.483] [modbus_rtu_log] [debug] [ModbusRtuBus] force[2]: raw=0x0, X=0, Y=0, Z=0 [2026-07-29 11:17:36.483] [modbus_rtu_log] [debug] [ModbusRtuBus] force[3]: raw=0x5fe00, X=0, Y=254, Z=5 [2026-07-29 11:17:36.483] [modbus_rtu_log] [debug] [ModbusRtuBus] force[4]: raw=0xb0001, X=1, Y=0, Z=11 [2026-07-29 11:17:36.484] [api_log] [info] get_normal_force OK, count=15 get_normal_force: [PASS], count=15 [2026-07-29 11:17:36.484] [api_log] [debug] get_hand_temperature [2026-07-29 11:17:36.484] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_temperature: slave=0x1, addr=0x13c, count=20 [01][03][01][3C][00][14][84][35] Waiting for a confirmation... <01><03><28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><67><9A> [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[0]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[1]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[2]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[3]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[4]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[5]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[6]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[7]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[8]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[9]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[10]: 0 -> 0 [2026-07-29 11:17:36.614] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[11]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[12]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[13]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[14]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[15]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[16]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[17]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[18]: 0 -> 0 [2026-07-29 11:17:36.615] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[19]: 0 -> 0 [2026-07-29 11:17:36.615] [api_log] [info] get_hand_temperature OK, count=20 get_hand_temperature: [PASS], count=20 [2026-07-29 11:17:36.615] [api_log] [debug] get_hand_fault_code [2026-07-29 11:17:36.615] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_fault_code: slave=0x1, addr=0x128, count=20 [01][03][01][28][00][14][C4][31] Waiting for a confirmation... <01><03><28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><67><9A> [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[0]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[1]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[2]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[3]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[4]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[5]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[6]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[7]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[8]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[9]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[10]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[11]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[12]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[13]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[14]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[15]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[16]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[17]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[18]: 0x0 [2026-07-29 11:17:36.729] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[19]: 0x0 [2026-07-29 11:17:36.730] [api_log] [info] get_hand_fault_code OK, count=20 get_hand_fault_code: [PASS], count=20 --- Test: clear_hand_fault + get_hand_fault_code --- [2026-07-29 11:17:36.730] [api_log] [debug] clear_hand_fault [2026-07-29 11:17:36.730] [modbus_rtu_log] [info] [ModbusRtuBus] clear_hand_fault: addr=0x0, value=0x80 [01][06][00][00][00][80][88][6A] Waiting for a confirmation... <01><06><00><00><00><80><88><6A> [2026-07-29 11:17:36.844] [modbus_rtu_log] [info] [ModbusRtuBus] clear_hand_fault OK clear_hand_fault: [PASS] [2026-07-29 11:17:36.844] [api_log] [debug] get_hand_fault_code [2026-07-29 11:17:36.844] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_fault_code: slave=0x1, addr=0x128, count=20 [01][03][01][28][00][14][C4][31] Waiting for a confirmation... <01><03><28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><67><9A> [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[0]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[1]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[2]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[3]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[4]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[5]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[6]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[7]: 0x0 [2026-07-29 11:17:36.975] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[8]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[9]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[10]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[11]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[12]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[13]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[14]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[15]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[16]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[17]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[18]: 0x0 [2026-07-29 11:17:36.976] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[19]: 0x0 [2026-07-29 11:17:36.976] [api_log] [info] get_hand_fault_code OK, count=20 get_hand_fault_code after clear: [PASS], Fault Cleared: [PASS] --- Test: set_hand_stop --- [2026-07-29 11:17:36.976] [api_log] [debug] set_hand_stop [2026-07-29 11:17:36.977] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_stop: writing 0x0 to addr 0x0 [01][06][00][00][00][00][89][CA] Waiting for a confirmation... <01><06><00><00><00><00><89> [2026-07-29 11:17:37.090] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_stop OK set_hand_stop: [PASS] --- Bus Service Restart --- [2026-07-29 11:17:37.097] [modbus_rtu_log] [info] [ModbusRtuBus] stop OK [2026-07-29 11:17:37.097] [modbus_rtu_log] [info] [ModbusRtuBus] deinit OK [2026-07-29 11:17:37.098] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:17:37.098] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:17:37.098] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:17:37.098] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:17:37.098] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:17:37.099] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x61517e434d70 [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:17:37.100] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:17:37.101] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:17:37.101] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:17:37.110] [modbus_rtu_log] [info] [ModbusRtuBus] start OK bus_service_restart: [PASS] is_connected after restart: [PASS] --- Bus Service Stop --- [2026-07-29 11:17:37.115] [modbus_rtu_log] [info] [ModbusRtuBus] stop OK [2026-07-29 11:17:37.116] [modbus_rtu_log] [info] [ModbusRtuBus] deinit OK bus_service_stop: [PASS] ========== Test Completed ========== ``` 用法: ./wn_hand_16_joint_demo 示例: ./wn_hand_16_joint_demo ```YAML $ cd build/outputs/samples/wn_hand_16_joint_demo $ sudo ./wn_hand_16_joint_demo [sudo] password for ethan: ========== WnHand 16 Joint Action Demo ========== --- Bus Service Init --- [2026-07-29 11:14:06.866] [api_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:14:06.866] [api_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/api [2026-07-29 11:14:06.866] [api_log] [info] Max file size: 10MB, Max files: 10 [2026-07-29 11:14:06.866] [api_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:14:06.866] [api_log] [info] Logger parameters: [2026-07-29 11:14:06.866] [api_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/api [2026-07-29 11:14:06.866] [api_log] [info] File prefix: api_log [2026-07-29 11:14:06.866] [api_log] [info] Max file size: 10485760 bytes [2026-07-29 11:14:06.866] [api_log] [info] Max backup files: 10 [2026-07-29 11:14:06.866] [api_log] [info] Log level: debug [2026-07-29 11:14:06.866] [api_log] [info] console_Log level: debug [2026-07-29 11:14:06.866] [api_log] [info] IO线程已启动 [2026-07-29 11:14:06.866] [api_log] [info] bus_type read from config: modbus_rtu [2026-07-29 11:14:06.866] [api_log] [info] setting driver to ModbusRtuBus [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x5b45e3328dd0 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:14:06.879] [modbus_rtu_log] [info] [ModbusRtuBus] start OK [2026-07-29 11:14:06.879] [api_log] [info] connected ok [2026-07-29 11:14:06.879] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:14:06.879] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:14:07.000] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:14:07.000] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:14:07.000] [api_log] [info] hardware_version: 4294967295 [2026-07-29 11:14:07.000] [api_log] [debug] get_hand_software_version [2026-07-29 11:14:07.000] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:14:07.112] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:14:07.112] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:14:07.112] [api_log] [info] software_version: 4294967295 [2026-07-29 11:14:07.112] [api_log] [debug] get_hand_joint_num [2026-07-29 11:14:07.112] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:14:07.226] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:14:07.227] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:14:07.227] [api_log] [info] joint_num: 65535 [2026-07-29 11:14:07.227] [api_log] [info] hardware_version 4294967295 [2026-07-29 11:14:07.227] [api_log] [info] software_version 4294967295 [2026-07-29 11:14:07.227] [api_log] [info] joint_num 65535 bus_service_init: [PASS] --- Hand Start --- [2026-07-29 11:14:07.227] [api_log] [debug] set_hand_start [2026-07-29 11:14:07.227] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x6 to addr 0x0 [01][06][00][00][00][06][09][C8] Waiting for a confirmation... <01><06><00><00><00><06><09> [2026-07-29 11:14:07.341] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x7 to addr 0x0 [01][06][00][00][00][07][C8][08] Waiting for a confirmation... <01><06><00><00><00><07><08> [2026-07-29 11:14:07.455] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0xF to addr 0x0 [01][06][00][00][00][0F][C9][CE] Waiting for a confirmation... <01><06><00><00><00><0F> [2026-07-29 11:14:07.586] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start OK [2026-07-29 11:14:07.586] [api_log] [info] set_hand_start OK set_hand_start: [PASS] --- Execute Action Sequence --- [INFO] Starting action sequence... (Press Ctrl+C to stop) [Cycle 1/1] [Action 3] 手握紧 [2026-07-29 11:14:07.586] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:07.715] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:07.715] [api_log] [info] set_hand_target_position OK [Action 2] 半张开 [2026-07-29 11:14:08.216] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][07][54] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:08.335] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:08.335] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:14:08.836] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:08.953] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:08.953] [api_log] [info] set_hand_target_position OK [Action 3] 手握紧 [2026-07-29 11:14:09.454] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:14:09.455] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:09.573] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:09.573] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:14:10.074] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:10.193] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:10.193] [api_log] [info] set_hand_target_position OK ``` 用法: ./wn_hand_16_joint_demo_py 示例: ./wn_hand_16_joint_demo_py ```shell $ cd build/outputs/samples/wn_hand_16_joint_demo_py $ sudo python3 wn_hand_16_joint_demo.py ========== WnHand 16 Joint Action Demo ========== --- Bus Service Init --- [2026-07-29 11:16:07.451] [api_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:16:07.451] [api_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo_py/wn_hand_logs/api [2026-07-29 11:16:07.451] [api_log] [info] Max file size: 10MB, Max files: 10 [2026-07-29 11:16:07.451] [api_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:16:07.451] [api_log] [info] Logger parameters: [2026-07-29 11:16:07.451] [api_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo_py/wn_hand_logs/api [2026-07-29 11:16:07.451] [api_log] [info] File prefix: api_log [2026-07-29 11:16:07.451] [api_log] [info] Max file size: 10485760 bytes [2026-07-29 11:16:07.451] [api_log] [info] Max backup files: 10 [2026-07-29 11:16:07.451] [api_log] [info] Log level: debug [2026-07-29 11:16:07.451] [api_log] [info] console_Log level: debug [2026-07-29 11:16:07.451] [api_log] [info] IO线程已启动 [2026-07-29 11:16:07.451] [api_log] [info] bus_type read from config: modbus_rtu [2026-07-29 11:16:07.451] [api_log] [info] setting driver to ModbusRtuBus [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo_py/wn_hand_logs/modbus_rtu [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo_py/wn_hand_logs/modbus_rtu [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x60f1b1624940 [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:16:07.452] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:16:07.460] [modbus_rtu_log] [info] [ModbusRtuBus] start OK [2026-07-29 11:16:07.460] [api_log] [info] connected ok [2026-07-29 11:16:07.460] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:16:07.460] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:16:07.586] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:16:07.586] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:16:07.586] [api_log] [info] hardware_version: 4294967295 [2026-07-29 11:16:07.586] [api_log] [debug] get_hand_software_version [2026-07-29 11:16:07.586] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:16:07.697] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:16:07.697] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:16:07.697] [api_log] [info] software_version: 4294967295 [2026-07-29 11:16:07.697] [api_log] [debug] get_hand_joint_num [2026-07-29 11:16:07.697] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:16:07.810] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:16:07.810] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:16:07.810] [api_log] [info] joint_num: 65535 [2026-07-29 11:16:07.810] [api_log] [info] hardware_version 4294967295 [2026-07-29 11:16:07.810] [api_log] [info] software_version 4294967295 [2026-07-29 11:16:07.810] [api_log] [info] joint_num 65535 bus_service_init: [PASS] --- Hand Start --- [2026-07-29 11:16:07.811] [api_log] [debug] set_hand_start [2026-07-29 11:16:07.811] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x6 to addr 0x0 [01][06][00][00][00][06][09][C8] Waiting for a confirmation... <01><06><00><00><00><06><09> [2026-07-29 11:16:07.938] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x7 to addr 0x0 [01][06][00][00][00][07][C8][08] Waiting for a confirmation... <01><06><00><00><00><07><08> [2026-07-29 11:16:08.051] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0xF to addr 0x0 [01][06][00][00][00][0F][C9][CE] Waiting for a confirmation... <01><06><00><00><00><0F> [2026-07-29 11:16:08.179] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start OK [2026-07-29 11:16:08.179] [api_log] [info] set_hand_start OK set_hand_start: [PASS] --- Execute Action Sequence --- [INFO] Starting action sequence... (Press Ctrl+C to stop) [Cycle 1/1] [Action 3] 手握紧 [2026-07-29 11:16:08.183] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:16:08.183] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:16:08.307] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:16:08.307] [api_log] [info] set_hand_target_position OK [Action 2] 半张开 [2026-07-29 11:16:08.808] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 45 -> 4500 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 45 -> 4500 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 45 -> 4500 [2026-07-29 11:16:08.808] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 45 -> 4500 [2026-07-29 11:16:08.809] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][07][54] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:16:08.934] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:16:08.935] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:16:09.435] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:16:09.436] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:16:09.561] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:16:09.561] [api_log] [info] set_hand_target_position OK [Action 3] 手握紧 [2026-07-29 11:16:10.062] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:16:10.062] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:16:10.188] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:16:10.188] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:16:10.689] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:16:10.689] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:16:10.814] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:16:10.815] [api_log] [info] set_hand_target_position OK ``` 用法: ./wn_hand_api_demo_py 示例: ./wn_hand_api_demo_py ```shell $ cd build/outputs/samples/wn_hand_api_demo_py $ sudo python3 wn_hand_api_demo.py ========== WnHandApi Test Demo ========== --- Get SDK Version --- SDK Version: V2.1 --- Bus Service Init --- [2026-07-29 11:19:51.034] [api_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:19:51.034] [api_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo_py/wn_hand_logs/api [2026-07-29 11:19:51.034] [api_log] [info] Max file size: 10MB, Max files: 10 [2026-07-29 11:19:51.034] [api_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:19:51.034] [api_log] [info] Logger parameters: [2026-07-29 11:19:51.034] [api_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo_py/wn_hand_logs/api [2026-07-29 11:19:51.034] [api_log] [info] File prefix: api_log [2026-07-29 11:19:51.034] [api_log] [info] Max file size: 10485760 bytes [2026-07-29 11:19:51.034] [api_log] [info] Max backup files: 10 [2026-07-29 11:19:51.034] [api_log] [info] Log level: debug [2026-07-29 11:19:51.034] [api_log] [info] console_Log level: debug [2026-07-29 11:19:51.034] [api_log] [info] IO线程已启动 [2026-07-29 11:19:51.034] [api_log] [info] bus_type read from config: modbus_rtu [2026-07-29 11:19:51.034] [api_log] [info] setting driver to ModbusRtuBus [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo_py/wn_hand_logs/modbus_rtu [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo_py/wn_hand_logs/modbus_rtu [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x6351760f6820 [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:19:51.035] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:19:51.047] [modbus_rtu_log] [info] [ModbusRtuBus] start OK [2026-07-29 11:19:51.047] [api_log] [info] connected ok [2026-07-29 11:19:51.047] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:19:51.047] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:19:51.170] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:19:51.170] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:19:51.170] [api_log] [info] hardware_version: 4294967295 [2026-07-29 11:19:51.170] [api_log] [debug] get_hand_software_version [2026-07-29 11:19:51.170] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:19:51.283] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:19:51.283] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:19:51.283] [api_log] [info] software_version: 4294967295 [2026-07-29 11:19:51.283] [api_log] [debug] get_hand_joint_num [2026-07-29 11:19:51.283] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:19:51.396] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:19:51.396] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:19:51.396] [api_log] [info] joint_num: 65535 [2026-07-29 11:19:51.396] [api_log] [info] hardware_version 4294967295 [2026-07-29 11:19:51.396] [api_log] [info] software_version 4294967295 [2026-07-29 11:19:51.397] [api_log] [info] joint_num 65535 bus_service_init: [PASS] --- Connection Status --- is_connected: [PASS] --- Get Hand Information --- [2026-07-29 11:19:51.397] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:19:51.397] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:19:51.509] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:19:51.509] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:19:51.509] [api_log] [info] hardware_version: 4294967295 Hardware Version: 4294967295 [2026-07-29 11:19:51.509] [api_log] [debug] get_hand_software_version [2026-07-29 11:19:51.509] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:19:51.639] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:19:51.639] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:19:51.639] [api_log] [info] software_version: 4294967295 Software Version: 4294967295 [2026-07-29 11:19:51.639] [api_log] [debug] get_hand_joint_num [2026-07-29 11:19:51.639] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:19:51.751] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:19:51.752] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:19:51.752] [api_log] [info] joint_num: 65535 Joint Number: 65535 [FATAL] Invalid joint number: 65535 Using default joint number: 1 --- Test: set_hand_start --- [2026-07-29 11:19:51.752] [api_log] [debug] set_hand_start [2026-07-29 11:19:51.752] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x6 to addr 0x0 [01][06][00][00][00][06][09][C8] Waiting for a confirmation... <01><06><00><00><00><06><09> [2026-07-29 11:19:51.881] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x7 to addr 0x0 [01][06][00][00][00][07][C8][08] Waiting for a confirmation... <01><06><00><00><00><07><08> [2026-07-29 11:19:51.994] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0xF to addr 0x0 [01][06][00][00][00][0F][C9][CE] Waiting for a confirmation... <01><06><00><00><00><0F> [2026-07-29 11:19:52.107] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start OK [2026-07-29 11:19:52.107] [api_log] [info] set_hand_start OK set_hand_start: [PASS] --- Test: set_hand_target_position + get_hand_current_position --- [2026-07-29 11:19:52.107] [api_log] [debug] set_hand_target_position 0.000000 [2026-07-29 11:19:52.107] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:19:52.107] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=1 [01][10][00][01][00][01][02][00][00][A7][81] Waiting for a confirmation... <01><10><00><01><00><01><50><09> [2026-07-29 11:19:52.220] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:19:52.220] [api_log] [info] set_hand_target_position OK set_hand_target_position (target: 0): [PASS] [2026-07-29 11:19:53.220] [api_log] [debug] get_hand_current_position [2026-07-29 11:19:53.221] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_current_position: slave=0x1, addr=0x51, count=20 [01][03][00][51][00][14][14][14] Waiting for a confirmation... <01><03><28><00><00><00><6A>
<00><00><00><00><00><00><00><00><96> [2026-07-29 11:19:53.354] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[0]: 0 -> 0 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[1]: 106 -> 1.06 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[2]: -13 -> -0.13 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[3]: -5 -> -0.05 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[4]: -28 -> -0.28 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[5]: -71 -> -0.71 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[6]: -35 -> -0.35 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[7]: -38 -> -0.38 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[8]: -21 -> -0.21 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[9]: -57 -> -0.57 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[10]: -46 -> -0.46 [2026-07-29 11:19:53.355] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[11]: -19 -> -0.19 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[12]: -23 -> -0.23 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[13]: -13 -> -0.13 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[14]: -64 -> -0.64 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[15]: -29 -> -0.29 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[16]: 0 -> 0 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[17]: 0 -> 0 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[18]: 0 -> 0 [2026-07-29 11:19:53.356] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[19]: 0 -> 0 [2026-07-29 11:19:53.356] [api_log] [info] get_hand_current_position OK, count=20 get_hand_current_position: [PASS], pos[0]=0.00, Diff: 0.00, Match: [PASS] --- Test: set_hand_target_position (single joint) + get_hand_current_position --- [2026-07-29 11:19:53.356] [api_log] [debug] set_hand_target_position id:1 angle:0 [2026-07-29 11:19:53.357] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: id=0x1, addr=0x1, angle=0, scaled=0 [01][06][00][01][00][00][D8][0A] Waiting for a confirmation... <01><06><00><01><00><00><0A> [2026-07-29 11:19:53.474] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:19:53.474] [api_log] [info] set_hand_target_position OK set_hand_target_position(id=0x01, target: 0): [PASS] [2026-07-29 11:19:54.475] [api_log] [debug] get_hand_current_position [2026-07-29 11:19:54.475] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_current_position: slave=0x1, addr=0x51, count=20 [01][03][00][51][00][14][14][14] Waiting for a confirmation... <01><03><28><00><00><00><6A><00><00><00><00><00><00><00><00> [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[0]: 0 -> 0 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[1]: 106 -> 1.06 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[2]: -13 -> -0.13 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[3]: -5 -> -0.05 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[4]: -28 -> -0.28 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[5]: -71 -> -0.71 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[6]: -38 -> -0.38 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[7]: -38 -> -0.38 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[8]: -25 -> -0.25 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[9]: -53 -> -0.53 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[10]: -46 -> -0.46 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[11]: -23 -> -0.23 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[12]: -23 -> -0.23 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[13]: -13 -> -0.13 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[14]: -64 -> -0.64 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[15]: -29 -> -0.29 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[16]: 0 -> 0 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[17]: 0 -> 0 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[18]: 0 -> 0 [2026-07-29 11:19:54.600] [modbus_rtu_log] [debug] [ModbusRtuBus] pos[19]: 0 -> 0 [2026-07-29 11:19:54.601] [api_log] [info] get_hand_current_position OK, count=20 get_hand_current_position: [PASS], pos[0]=0.00, Diff: 0.00, Match: [PASS] --- Test: set_hand_work_mode --- [2026-07-29 11:19:54.601] [api_log] [debug] set_hand_work_mode 2 [2026-07-29 11:19:54.601] [modbus_rtu_log] [debug] [ModbusRtuBus] mode[0]: 2 [2026-07-29 11:19:54.601] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_work_mode: slave=0x1, addr=0x15, count=1 [01][10][00][15][00][01][02][00][02][25][54] Waiting for a confirmation... <01><10><00><15><00><01><10><0D> [2026-07-29 11:19:54.724] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_work_mode OK [2026-07-29 11:19:54.724] [api_log] [info] set_hand_work_mode OK set_hand_work_mode: [PASS] --- Test: set_hand_work_mode (single joint) --- [2026-07-29 11:19:54.724] [api_log] [debug] set_hand_work_mode id:1 mode:0 [2026-07-29 11:19:54.724] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_work_mode: id=0x1, addr=0x15, mode=0 [01][06][00][15][00][00][98][0E] Waiting for a confirmation... <01><06><00><15><00><00><98><0E> [2026-07-29 11:19:54.847] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_work_mode OK [2026-07-29 11:19:54.848] [api_log] [info] set_hand_work_mode OK set_hand_work_mode(id=0x01): [PASS] --- Test: set_hand_speed + get_hand_speed --- [2026-07-29 11:19:54.848] [api_log] [debug] set_hand_speed 50.000000 [2026-07-29 11:19:54.848] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[0]: 50 -> 5000 [2026-07-29 11:19:54.848] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_speed: slave=0x1, addr=0x29, count=1 [01][10][00][29][00][01][02][13][88][AC][FF] Waiting for a confirmation... <01><10><00><29><00><01><01> [2026-07-29 11:19:54.971] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_speed OK [2026-07-29 11:19:54.971] [api_log] [info] set_hand_speed OK set_hand_speed (target: 50): [PASS] [2026-07-29 11:19:54.971] [api_log] [debug] get_hand_speed [2026-07-29 11:19:54.972] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_speed: slave=0x1, addr=0x29, count=20 [01][03][00][29][00][14][94][0D] Waiting for a confirmation... <01><03><28><13><88><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><9F> [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[0]: 5000 -> 50 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[1]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[2]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[3]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[4]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[5]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[6]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[7]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[8]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[9]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[10]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[11]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[12]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[13]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[14]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[15]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[16]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[17]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[18]: 0 -> 0 [2026-07-29 11:19:55.096] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[19]: 0 -> 0 [2026-07-29 11:19:55.096] [api_log] [info] get_hand_speed OK, count=20 get_hand_speed: [PASS], speed[0]=50.00, Diff: 0.00, Match: [PASS] --- Test: set_hand_speed (single joint) + get_hand_speed --- [2026-07-29 11:19:55.096] [api_log] [debug] set_hand_speed id:1 speed:30 [2026-07-29 11:19:55.096] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_speed: id=0x1, addr=0x29, speed=30, scaled=3000 [01][06][00][29][0B][B8][5F][40] Waiting for a confirmation... <01><06><00><29><0B><5F><40> [2026-07-29 11:19:55.220] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_speed OK [2026-07-29 11:19:55.220] [api_log] [info] set_hand_speed OK set_hand_speed(id=0x01, target: 30): [PASS] [2026-07-29 11:19:55.221] [api_log] [debug] get_hand_speed [2026-07-29 11:19:55.221] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_speed: slave=0x1, addr=0x29, count=20 [01][03][00][29][00][14][94][0D] Waiting for a confirmation... <01><03><28><0B><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00> [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[0]: 3000 -> 30 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[1]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[2]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[3]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[4]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[5]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[6]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[7]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[8]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[9]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[10]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[11]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[12]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[13]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[14]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[15]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[16]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[17]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[18]: 0 -> 0 [2026-07-29 11:19:55.345] [modbus_rtu_log] [debug] [ModbusRtuBus] speed[19]: 0 -> 0 [2026-07-29 11:19:55.345] [api_log] [info] get_hand_speed OK, count=20 get_hand_speed: [PASS], speed[0]=30.00, Diff: 0.00, Match: [PASS] --- Get Status Information --- [2026-07-29 11:19:55.345] [api_log] [debug] get_hand_current [2026-07-29 11:19:55.345] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_current: slave=0x1, addr=0x100, count=20 [01][03][01][00][00][14][44][39] Waiting for a confirmation... <01><03><28><00><00><00><01><00><07><00><01><00><03><00><07><00><07><00><05><00><06><00><00><00><04><00><02><00><04><00><06><00><02><00><02><00><00><00><00><00><00><00><00><3E><59> [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[0]: 0 -> 0 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[1]: 1 -> 0.01 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[2]: 7 -> 0.07 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[3]: 1 -> 0.01 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[4]: 3 -> 0.03 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[5]: 7 -> 0.07 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[6]: 7 -> 0.07 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[7]: 5 -> 0.05 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[8]: 6 -> 0.06 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[9]: 0 -> 0 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[10]: 4 -> 0.04 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[11]: 2 -> 0.02 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[12]: 4 -> 0.04 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[13]: 6 -> 0.06 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[14]: 2 -> 0.02 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[15]: 2 -> 0.02 [2026-07-29 11:19:55.469] [modbus_rtu_log] [debug] [ModbusRtuBus] current[16]: 0 -> 0 [2026-07-29 11:19:55.470] [modbus_rtu_log] [debug] [ModbusRtuBus] current[17]: 0 -> 0 [2026-07-29 11:19:55.470] [modbus_rtu_log] [debug] [ModbusRtuBus] current[18]: 0 -> 0 [2026-07-29 11:19:55.470] [modbus_rtu_log] [debug] [ModbusRtuBus] current[19]: 0 -> 0 [2026-07-29 11:19:55.470] [api_log] [info] get_hand_current OK, count=20 get_hand_current: [PASS], count=20 [2026-07-29 11:19:55.470] [api_log] [debug] get_normal_force [2026-07-29 11:19:55.470] [modbus_rtu_log] [info] [ModbusRtuBus] get_normal_force: slave=0x1, addr=0x65, count=10 [01][03][00][65][00][0A][D5][D2] Waiting for a confirmation... <01><03><14><00><00><00><03><00><00><09><00><00><00><00><00><00><04><00><01><00><0B><20> [2026-07-29 11:19:55.594] [modbus_rtu_log] [debug] [ModbusRtuBus] force[0]: raw=0x30000, X=0, Y=0, Z=3 [2026-07-29 11:19:55.594] [modbus_rtu_log] [debug] [ModbusRtuBus] force[1]: raw=0x9ff00, X=0, Y=255, Z=9 [2026-07-29 11:19:55.594] [modbus_rtu_log] [debug] [ModbusRtuBus] force[2]: raw=0x0, X=0, Y=0, Z=0 [2026-07-29 11:19:55.594] [modbus_rtu_log] [debug] [ModbusRtuBus] force[3]: raw=0x4fe00, X=0, Y=254, Z=4 [2026-07-29 11:19:55.594] [modbus_rtu_log] [debug] [ModbusRtuBus] force[4]: raw=0xb0001, X=1, Y=0, Z=11 [2026-07-29 11:19:55.594] [api_log] [info] get_normal_force OK, count=15 get_normal_force: [PASS], count=15 [2026-07-29 11:19:55.594] [api_log] [debug] get_hand_temperature [2026-07-29 11:19:55.594] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_temperature: slave=0x1, addr=0x13c, count=20 [01][03][01][3C][00][14][84][35] Waiting for a confirmation... <01><03><28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><67><9A> [2026-07-29 11:19:55.718] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[0]: 0 -> 0 [2026-07-29 11:19:55.718] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[1]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[2]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[3]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[4]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[5]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[6]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[7]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[8]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[9]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[10]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[11]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[12]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[13]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[14]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[15]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[16]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[17]: 0 -> 0 [2026-07-29 11:19:55.719] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[18]: 0 -> 0 [2026-07-29 11:19:55.720] [modbus_rtu_log] [debug] [ModbusRtuBus] temperature[19]: 0 -> 0 [2026-07-29 11:19:55.720] [api_log] [info] get_hand_temperature OK, count=20 get_hand_temperature: [PASS], count=20 [2026-07-29 11:19:55.720] [api_log] [debug] get_hand_fault_code [2026-07-29 11:19:55.720] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_fault_code: slave=0x1, addr=0x128, count=20 [01][03][01][28][00][14][C4][31] Waiting for a confirmation... <01><03><28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><67><9A> [2026-07-29 11:19:55.842] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[0]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[1]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[2]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[3]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[4]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[5]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[6]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[7]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[8]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[9]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[10]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[11]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[12]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[13]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[14]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[15]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[16]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[17]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[18]: 0x0 [2026-07-29 11:19:55.843] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[19]: 0x0 [2026-07-29 11:19:55.843] [api_log] [info] get_hand_fault_code OK, count=20 get_hand_fault_code: [PASS], count=20 --- Test: clear_hand_fault + get_hand_fault_code --- [2026-07-29 11:19:55.843] [api_log] [debug] clear_hand_fault [2026-07-29 11:19:55.843] [modbus_rtu_log] [info] [ModbusRtuBus] clear_hand_fault: addr=0x0, value=0x80 [01][06][00][00][00][80][88][6A] Waiting for a confirmation... <01><06><00><00><00><80><88><6A> [2026-07-29 11:19:55.967] [modbus_rtu_log] [info] [ModbusRtuBus] clear_hand_fault OK clear_hand_fault: [PASS] [2026-07-29 11:19:55.967] [api_log] [debug] get_hand_fault_code [2026-07-29 11:19:55.967] [modbus_rtu_log] [info] [ModbusRtuBus] get_hand_fault_code: slave=0x1, addr=0x128, count=20 [01][03][01][28][00][14][C4][31] Waiting for a confirmation... <01><03><28><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><00><67><9A> [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[0]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[1]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[2]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[3]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[4]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[5]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[6]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[7]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[8]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[9]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[10]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[11]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[12]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[13]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[14]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[15]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[16]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[17]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[18]: 0x0 [2026-07-29 11:19:56.093] [modbus_rtu_log] [debug] [ModbusRtuBus] fault_code[19]: 0x0 [2026-07-29 11:19:56.093] [api_log] [info] get_hand_fault_code OK, count=20 get_hand_fault_code after clear: [PASS], Fault Cleared: [PASS] --- Test: set_hand_stop --- [2026-07-29 11:19:56.093] [api_log] [debug] set_hand_stop [2026-07-29 11:19:56.093] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_stop: writing 0x0 to addr 0x0 [01][06][00][00][00][00][89][CA] Waiting for a confirmation... <01><06><00><00><00><00><89> [2026-07-29 11:19:56.217] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_stop OK set_hand_stop: [PASS] --- Bus Service Restart --- [2026-07-29 11:19:56.225] [modbus_rtu_log] [info] [ModbusRtuBus] stop OK [2026-07-29 11:19:56.226] [modbus_rtu_log] [info] [ModbusRtuBus] deinit OK [2026-07-29 11:19:56.226] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:19:56.226] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo_py/wn_hand_logs/modbus_rtu [2026-07-29 11:19:56.226] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_api_demo_py/wn_hand_logs/modbus_rtu [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:19:56.227] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x6351760fb310 [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:19:56.228] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:19:56.236] [modbus_rtu_log] [info] [ModbusRtuBus] start OK bus_service_restart: [PASS] is_connected after restart: [PASS] --- Bus Service Stop --- [2026-07-29 11:19:56.242] [modbus_rtu_log] [info] [ModbusRtuBus] stop OK [2026-07-29 11:19:56.242] [modbus_rtu_log] [info] [ModbusRtuBus] deinit OK bus_service_stop: [PASS] ========== Test Completed ========== ``` ## 🥓集成SDK到你自己的工程 ### C++版本 1. 新建一个工程目录,假设目录名称为wn_hand_demo ```shell $ mkdir wn_hand_demo $ cd wn_hand_demo ``` 2. 添加源码文件到工程目录下 ```shell $ cp /samples/wn_hand_16_joint_demo/wn_hand_16_joint_demo.cpp ./main.cpp ``` 3. 安装动态库文件 ```shell $ cp /RELEASE/wn_hand_sdk_for_linux_v2.1.tar.gz ./ $ tar -xzvpf wn_hand_sdk_for_linux_v2.1.tar.gz --strip-components=1 ``` 4. 开始编译 ```shell $ g++ main.cpp -o app -lwn_hand_api -lyaml-cpp -L./ -Wl,-rpath=./ ``` 5. 运行程序 ```shell $ sudo ./app ========== WnHand 16 Joint Action Demo ========== --- Bus Service Init --- [2026-07-29 11:14:06.866] [api_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:14:06.866] [api_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/api [2026-07-29 11:14:06.866] [api_log] [info] Max file size: 10MB, Max files: 10 [2026-07-29 11:14:06.866] [api_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:14:06.866] [api_log] [info] Logger parameters: [2026-07-29 11:14:06.866] [api_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/api [2026-07-29 11:14:06.866] [api_log] [info] File prefix: api_log [2026-07-29 11:14:06.866] [api_log] [info] Max file size: 10485760 bytes [2026-07-29 11:14:06.866] [api_log] [info] Max backup files: 10 [2026-07-29 11:14:06.866] [api_log] [info] Log level: debug [2026-07-29 11:14:06.866] [api_log] [info] console_Log level: debug [2026-07-29 11:14:06.866] [api_log] [info] IO线程已启动 [2026-07-29 11:14:06.866] [api_log] [info] bus_type read from config: modbus_rtu [2026-07-29 11:14:06.866] [api_log] [info] setting driver to ModbusRtuBus [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x5b45e3328dd0 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:14:06.879] [modbus_rtu_log] [info] [ModbusRtuBus] start OK [2026-07-29 11:14:06.879] [api_log] [info] connected ok [2026-07-29 11:14:06.879] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:14:06.879] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:14:07.000] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:14:07.000] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:14:07.000] [api_log] [info] hardware_version: 4294967295 [2026-07-29 11:14:07.000] [api_log] [debug] get_hand_software_version [2026-07-29 11:14:07.000] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:14:07.112] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:14:07.112] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:14:07.112] [api_log] [info] software_version: 4294967295 [2026-07-29 11:14:07.112] [api_log] [debug] get_hand_joint_num [2026-07-29 11:14:07.112] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:14:07.226] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:14:07.227] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:14:07.227] [api_log] [info] joint_num: 65535 [2026-07-29 11:14:07.227] [api_log] [info] hardware_version 4294967295 [2026-07-29 11:14:07.227] [api_log] [info] software_version 4294967295 [2026-07-29 11:14:07.227] [api_log] [info] joint_num 65535 bus_service_init: [PASS] --- Hand Start --- [2026-07-29 11:14:07.227] [api_log] [debug] set_hand_start [2026-07-29 11:14:07.227] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x6 to addr 0x0 [01][06][00][00][00][06][09][C8] Waiting for a confirmation... <01><06><00><00><00><06><09> [2026-07-29 11:14:07.341] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x7 to addr 0x0 [01][06][00][00][00][07][C8][08] Waiting for a confirmation... <01><06><00><00><00><07><08> [2026-07-29 11:14:07.455] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0xF to addr 0x0 [01][06][00][00][00][0F][C9][CE] Waiting for a confirmation... <01><06><00><00><00><0F> [2026-07-29 11:14:07.586] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start OK [2026-07-29 11:14:07.586] [api_log] [info] set_hand_start OK set_hand_start: [PASS] --- Execute Action Sequence --- [INFO] Starting action sequence... (Press Ctrl+C to stop) [Cycle 1/1] [Action 3] 手握紧 [2026-07-29 11:14:07.586] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:07.715] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:07.715] [api_log] [info] set_hand_target_position OK [Action 2] 半张开 [2026-07-29 11:14:08.216] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][07][54] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:08.335] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:08.335] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:14:08.836] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:08.953] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:08.953] [api_log] [info] set_hand_target_position OK [Action 3] 手握紧 [2026-07-29 11:14:09.454] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:14:09.455] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:09.573] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:09.573] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:14:10.074] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:10.193] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:10.193] [api_log] [info] set_hand_target_position OK ``` ### python版本 1. 新建一个工程目录,假设目录名称为wn_hand_demo_py ```shell $ mkdir wn_hand_demo_py $ cd wn_hand_demo_py ``` 2. 添加源码文件到工程目录下 ```shell $ cp /samples/wn_hand_16_joint_demo_py/wn_hand_16_joint_demo.py ./ ``` 3. 安装动态库文件 ```shell $ cp /RELEASE/wn_hand_sdk_for_linux_v2.1.tar.gz ./ $ tar -xzvpf wn_hand_sdk_for_linux_v2.1.tar.gz --strip-components=1 ``` 4. 运行程序 ```shell $ sudo python3 wn_hand_16_joint_demo.py ========== WnHand 16 Joint Action Demo ========== --- Bus Service Init --- [2026-07-29 11:14:06.866] [api_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:14:06.866] [api_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/api [2026-07-29 11:14:06.866] [api_log] [info] Max file size: 10MB, Max files: 10 [2026-07-29 11:14:06.866] [api_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:14:06.866] [api_log] [info] Logger parameters: [2026-07-29 11:14:06.866] [api_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/api [2026-07-29 11:14:06.866] [api_log] [info] File prefix: api_log [2026-07-29 11:14:06.866] [api_log] [info] Max file size: 10485760 bytes [2026-07-29 11:14:06.866] [api_log] [info] Max backup files: 10 [2026-07-29 11:14:06.866] [api_log] [info] Log level: debug [2026-07-29 11:14:06.866] [api_log] [info] console_Log level: debug [2026-07-29 11:14:06.866] [api_log] [info] IO线程已启动 [2026-07-29 11:14:06.866] [api_log] [info] bus_type read from config: modbus_rtu [2026-07-29 11:14:06.866] [api_log] [info] setting driver to ModbusRtuBus [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Timed rotating logger initialized successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Log directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max file size: 10MB, Max files: 50 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Custom spdlog_utility logger initialized successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Logger parameters: [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Directory: /home/ethan/workspace/update/vanex_hand_sdk/build/outputs/samples/wn_hand_16_joint_demo/wn_hand_logs/modbus_rtu [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] File prefix: modbus_rtu_log [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max file size: 10485760 bytes [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Max backup files: 50 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] Log level: debug [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] console_Log level: debug [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] init() called [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 1] Checking config file existence... [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] config path: ./config/hand_system.yaml [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ File exists [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] file size: 700 bytes [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] permissions: 100644 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 2] Loading YAML config file... [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] config file loaded successfully [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] 'modbus_rtu' node found in config [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ device read from config: '/dev/ttyUSB0' [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ baud_rate parsed successfully: 115200 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] ✓ slave_id parsed successfully: 1 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 3] Final configuration summary [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] device: /dev/ttyUSB0 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] baud_rate: 115200 [2026-07-29 11:14:06.867] [modbus_rtu_log] [info] [ModbusRtuBus] slave_id: 1 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] parity: N [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] data_bits: 8 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] stop_bits: 1 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] =========================================== [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] [STEP 4] Initializing Modbus RTU context... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] calling modbus_new_rtu(/dev/ttyUSB0, 115200, 'N', 8, 1)... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] modbus_new_rtu succeeded, handle: 0x5b45e3328dd0 [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting slave address to 1... [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] slave address set successfully [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting response timeout: 500ms [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting byte timeout: 100ms [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] setting error recovery mode: LINK | PROTOCOL [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] enabling debug mode [2026-07-29 11:14:06.868] [modbus_rtu_log] [info] [ModbusRtuBus] init() completed successfully Opening /dev/ttyUSB0 at 115200 bauds (N, 8, 1) [2026-07-29 11:14:06.879] [modbus_rtu_log] [info] [ModbusRtuBus] start OK [2026-07-29 11:14:06.879] [api_log] [info] connected ok [2026-07-29 11:14:06.879] [api_log] [debug] get_hand_hardware_version [2026-07-29 11:14:06.879] [modbus_rtu_log] [info] [ModbusRtuBus] reading hardware version from address 0xd0 (2 registers) [01][03][00][D0][00][02][C5][F2] Waiting for a confirmation... <01><03><04> [2026-07-29 11:14:07.000] [modbus_rtu_log] [debug] [ModbusRtuBus] hardware version (raw): 0xffffffff [2026-07-29 11:14:07.000] [modbus_rtu_log] [info] [ModbusRtuBus] hardware version: 4294967295 [2026-07-29 11:14:07.000] [api_log] [info] hardware_version: 4294967295 [2026-07-29 11:14:07.000] [api_log] [debug] get_hand_software_version [2026-07-29 11:14:07.000] [modbus_rtu_log] [info] [ModbusRtuBus] reading software version from address 0xd2 (2 registers) [01][03][00][D2][00][02][64][32] Waiting for a confirmation... <01><03><04> [2026-07-29 11:14:07.112] [modbus_rtu_log] [debug] [ModbusRtuBus] software version (raw): 0xffffffff [2026-07-29 11:14:07.112] [modbus_rtu_log] [info] [ModbusRtuBus] software version: 4294967295 [2026-07-29 11:14:07.112] [api_log] [info] software_version: 4294967295 [2026-07-29 11:14:07.112] [api_log] [debug] get_hand_joint_num [2026-07-29 11:14:07.112] [modbus_rtu_log] [info] [ModbusRtuBus] reading joint number from address 0xd4 (1 register) [01][03][00][D4][00][01][C4][32] Waiting for a confirmation... <01><03><02> [2026-07-29 11:14:07.226] [modbus_rtu_log] [debug] [ModbusRtuBus] joint_num (raw): 0xffff [2026-07-29 11:14:07.227] [modbus_rtu_log] [info] [ModbusRtuBus] joint_num: 65535 [2026-07-29 11:14:07.227] [api_log] [info] joint_num: 65535 [2026-07-29 11:14:07.227] [api_log] [info] hardware_version 4294967295 [2026-07-29 11:14:07.227] [api_log] [info] software_version 4294967295 [2026-07-29 11:14:07.227] [api_log] [info] joint_num 65535 bus_service_init: [PASS] --- Hand Start --- [2026-07-29 11:14:07.227] [api_log] [debug] set_hand_start [2026-07-29 11:14:07.227] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x6 to addr 0x0 [01][06][00][00][00][06][09][C8] Waiting for a confirmation... <01><06><00><00><00><06><09> [2026-07-29 11:14:07.341] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0x7 to addr 0x0 [01][06][00][00][00][07][C8][08] Waiting for a confirmation... <01><06><00><00><00><07><08> [2026-07-29 11:14:07.455] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start: writing 0xF to addr 0x0 [01][06][00][00][00][0F][C9][CE] Waiting for a confirmation... <01><06><00><00><00><0F> [2026-07-29 11:14:07.586] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_start OK [2026-07-29 11:14:07.586] [api_log] [info] set_hand_start OK set_hand_start: [PASS] --- Execute Action Sequence --- [INFO] Starting action sequence... (Press Ctrl+C to stop) [Cycle 1/1] [Action 3] 手握紧 [2026-07-29 11:14:07.586] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:14:07.587] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:07.715] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:07.715] [api_log] [info] set_hand_target_position OK [Action 2] 半张开 [2026-07-29 11:14:08.216] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 45.000000 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 45 -> 4500 [2026-07-29 11:14:08.216] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][11][94][07][54] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:08.335] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:08.335] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:14:08.836] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:14:08.836] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:08.953] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:08.953] [api_log] [info] set_hand_target_position OK [Action 3] 手握紧 [2026-07-29 11:14:09.454] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 90.000000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 90 -> 9000 [2026-07-29 11:14:09.454] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 90 -> 9000 [2026-07-29 11:14:09.455] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][23][28][F4][BF] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:09.573] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:09.573] [api_log] [info] set_hand_target_position OK [Action 1] 手张开 [2026-07-29 11:14:10.074] [api_log] [debug] set_hand_target_position 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[0]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[1]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[2]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[3]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[4]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[5]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[6]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[7]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[8]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[9]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[10]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[11]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[12]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[13]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[14]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [debug] [ModbusRtuBus] joint[15]: 0 -> 0 [2026-07-29 11:14:10.074] [modbus_rtu_log] [info] [ModbusRtuBus] set_hand_target_position: slave=0x1, addr=0x1, count=16 [01][10][00][01][00][10][20][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][00][42][61] Waiting for a confirmation... <01><10><00><01><00><10><90><05> [2026-07-29 11:14:10.193] [modbus_rtu_log] [debug] [ModbusRtuBus] set_hand_target_position OK [2026-07-29 11:14:10.193] [api_log] [info] set_hand_target_position OK ``` ## 🥘配置文件说明 1. SDK系统配置文件 系统配置文件为 hand_system.yaml,需放置在可执行程序目录下的 config/hand_system.yaml ```YAML bus_type: "modbus_rtu" modbus_rtu: device: "/dev/ttyUSB0" baud_rate: 115200 slave_id: 1 api_Log: log_dir: "wn_hand_logs/api" log_prefix: "api_log" max_file_size: 10485760 # 等价于10*1024*1024,可直接写数值简化 max_files: 10 log_level: "debug" # trace/debug/info/warn/err/critical console_log_level: "debug" # trace/debug/info/warn/err/critical modbus_rtu_log: log_dir: "wn_hand_logs/modbus_rtu" log_prefix: "modbus_rtu_log" max_file_size: 10485760 # 等价于10*1024*1024,可直接写数值简化 max_files: 50 log_level: "debug" # trace/debug/info/warn/err/critical console_log_level: "debug" # trace/debug/info/warn/err/critical ``` #通讯配置参数 | 参数名 | 层级 | 类型 | 默认值 | 说明 | | :---: | --- | --- | --- | --- | | bus_type | 顶层 | string | modbus_rtu | 总线类型,当前支持 modbus_rtu | | device | modbus_rtu | string | /dev/ttyUSB0 | 串口设备路径 | | baud_rate | modbus_rtu | int | 115200 | 波特率 | | slave_id | modbus_rtu | int | 1 | Modbus从机地址 | #日志配置参数 | 参数名 | 层级 | 类型 | 默认值 | 说明 | | :---: | --- | --- | --- | --- | | log_dir | api_Log / modbus_rtu_log | string | wn_hand_logs/api / wn_hand_logs/modbus_rtu | 日志存储目录,支持相对路径和绝对路径 | | log_prefix | api_Log / modbus_rtu_log | string | api_log / modbus_rtu_log | 日志文件前缀,最终文件名格式为 {log_prefix}_{timestamp}.log | | max_file_size | api_Log / modbus_rtu_log | int | 10485760 | 单个日志文件最大大小,单位字节,默认 10MB | | max_files | api_Log / modbus_rtu_log | int | 10 / 50 | 最大保留日志文件数量,超过后自动删除最旧的日志 | | log_level | api_Log / modbus_rtu_log | string | debug | 文件日志级别:trace/debug/info/warn/err/critical | | console_log_level | api_Log / modbus_rtu_log | string | debug | 控制台日志级别:trace/debug/info/warn/err/critical | 2. 动作演示文件 动作演示文件为 action_five.yaml,默认放置在可执行程序目录下的 config/action_five.yaml ```YAML # 执行动作序列 project: "16自由度演示" #配置文件名称 owner: "john" #创建人 joint_num: 16 #自由度 cycle: 1 #整个动作序列执行次数 task_sequence: [3, 2, 1, 3, 1] #动作序列 依次执行 action id预定义的动作 date: 2026-03-12 #日期 #预定义动作 action: - id: 1 title: "手张开" #动作名称 active: true #动作开关 true:此动作使能 false:此动作禁用 duration: 500 #动作延时 单位是ms angle: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] #每个关节角度 - id: 2 title: "半张开" #动作名称 active: true #动作开关 true:此动作使能 false:此动作禁用 duration: 500 #动作延时 单位是ms angle: [0, 0, 0, 90, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45] #每个关节角度 - id: 3 title: "手握紧" #动作名称 active: true #动作开关 true:此动作使能 false:此动作禁用 duration: 500 #动作延时 单位是ms angle: [0, 0, 0, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90] #每个关节角度 ``` #动作配置参数 | 参数名 | 层级 | 类型 | 默认值 | 说明 | | :---: | --- | --- | --- | --- | | project | 顶层 | string | - | 配置文件名称 | | owner | 顶层 | string | - | 创建人 | | joint_num | 顶层 | int | - | 自由度数量 | | cycle | 顶层 | int | 1 | 整个动作序列执行次数 | | task_sequence | 顶层 | array | - | 动作序列,依次执行 action id 预定义的动作 | | date | 顶层 | string | - | 配置日期 | | id | action | int | - | 动作ID,唯一标识 | | title | action | string | - | 动作名称 | | active | action | bool | true | 动作开关,true:使能,false:禁用 | | duration | action | int | 500 | 动作延时,单位毫秒 | | angle | action | array | - | 每个关节角度,元素数量等于自由度数量,范围0~90 | ## 🌭API清单 1. **bus_service_init** #函数原型 ```Plain Text bool bus_service_init(); ``` #功能说明 > 使用sdk首个要调用函数,进行sdk的一些初始化工作,会自动连接目标设备,并查询设备信息,此函数返回成功才可以进行后面其他API调用。 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | 2. **bus_service_stop** #函数原型 ```Plain Text bool bus_service_stop(); ``` #功能说明 > 停止总线服务。 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:已停止
false:未停止 | 3. **bus_service_restart** #函数原型 ```Plain Text bool bus_service_restart(); ``` #功能说明 > 重启总线服务。 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | 4. **is_connected** #函数原型 ```Plain Text bool is_connected(); ``` #功能说明 > 获取当前连接状态 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:已连接
false:未连接 | 5. **set_hand_target_position** #函数原型 ```Plain Text bool set_hand_target_position(const uint8_t id, const std::vector &joint_angles); bool set_hand_target_position(const std::vector &joint_angles); ``` #功能说明 > 设置各个关节电机的位置 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 入参 | id | 目标电机id,范围1\~21
不传id表示一次控制多个电机 | | | joint_angles | 目标位置角度,范围0\~90
joint_angles\[0\]表示电机1的角度
...
joint_angles\[15\]表示电机16的角度
joint_angles元素数量等于自由度数量 | | 返回值 | bool | true:成功
false:失败 | 6. **set_hand_work_mode** #函数原型 ```Plain Text bool set_hand_work_mode(const uint8_t id, const std::vector &mode); bool set_hand_work_mode(const std::vector &mode); ``` #功能说明 > 设置各个关节电机的工作模式(停止或者位置模式) #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 入参 | id | 目标电机id,范围1\~21
不传id表示一次控制多个电机 | | | mode | 工作模式,
0:停止在当前位置
2:位置模式

mode\[0\]表示电机1的工作模式
...
mode\[15\]表示电机16的工作模式
mode元素数量等于自由度数量 | | 返回值 | bool | true:成功
false:失败 | 7. **set_hand_speed** #函数原型 ```Plain Text bool set_hand_speed(const uint8_t id, const std::vector &speed); bool set_hand_speed(const std::vector &speed); ``` #功能说明 > 设置各个关节电机的速度 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 入参 | id | 目标电机id,范围1\~21
不传id表示一次控制多个电机 | | | speed | 速度值,speed\[0\]表示电机1的速度
speed\[15\]表示电机16的速度
speed元素数量等于自由度数量 | | 返回值 | bool | true:成功
false:失败 | 8. **set_hand_start** #函数原型 ```Plain Text bool set_hand_start(); ``` #功能说明 > 打开关节电机电源 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | 9. **set_hand_stop** #函数原型 ```Plain Text bool set_hand_stop(); ``` #功能说明 > 关闭关节电机电源 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | 10. **clear_hand_fault** #函数原型 ```Plain Text bool clear_hand_fault(); ``` #功能说明 > 清除模组错误 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | 11. **get_hand_hardware_version** #函数原型 ```Plain Text std::pair get_hand_hardware_version(); ``` #功能说明 > 读取主板硬件版本 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | string | 硬件版本字符串 | 12. **get_hand_software_version** #函数原型 ```Plain Text std::pair get_hand_software_version(); ``` #功能说明 > 读取主板软件版本 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | string | 软件版本字符串 | 13. **get_hand_joint_num** #函数原型 ```Plain Text std::pair get_hand_joint_num(); ``` #功能说明 > 读取关节数量 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | int | 关节数量 | 14. **get_hand_current_position** #函数原型 ```Plain Text std::pair> get_hand_current_position(); ``` #功能说明 > 读取各个关节电机当前位置 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | vector\ | vector\[0\]表示第1个电机的位置
...
vector\[15\]表示第16个电机的位置 | 15. **get_hand_speed** #函数原型 ```Plain Text std::pair> get_hand_speed(); ``` #功能说明 > 读取各个关节电机实时速度 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | vector\ | vector\[0\]表示第1个电机的速度
...
vector\[15\]表示第16个电机的速度 | 16. **get_hand_current** #函数原型 ```Plain Text std::pair> get_hand_current(); ``` #功能说明 > 读取各个关节电机实时电流 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | vector\ | vector\[0\]表示第1个电机的电流
...
vector\[15\]表示第16个电机的电流 | 17. **get_hand_temperature** #函数原型 ```Plain Text std::pair> get_hand_temperature(); ``` #功能说明 > 读取各个关节电机温度 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | vector\ | vector\[0\]表示第1个电机的温度
...
vector\[15\]表示第16个电机的温度 | 18. **get_hand_fault_code** #函数原型 ```Plain Text std::pair> get_hand_fault_code(); ``` #功能说明 > 读取各个关节电机故障码 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | bool | true:成功
false:失败 | | | vector\ | vector\[0\]表示第1个电机的故障码
...
vector\[15\]表示第16个电机的故障码 | 19. **get_sdk_version** #函数原型 ```Plain Text std::string get_sdk_version(); ``` #功能说明 > 获取SDK版本号 #参数说明 | 类别 | 参数 | 说明 | | :---: | --- | --- | | 返回值 | string | SDK版本字符串 | 20. **get_normal_force** #函数原型 ```Plain Text std::pair> get_normal_force(); ``` #功能说明 > 读取各个指尖的触觉结果,单位是:0.01N > 例子:合力值 Fz 读取数据为 10 时,Fz 测量的力的大小为 10*0.01N=0.1N > > > x:指尖x方向的合力,数值为正时朝向x正方向,数值为负数时朝向x负方向 > > > y:指尖y方向的合力,数值为正时朝向y正方向,数值为负数时朝向y负方向 > > > z:指尖z方向的合力,数值为正,表示垂直向指尖方向(指向指腹)压力大小 > > > > > > ![image](data:image/png;base64,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)