Skip to content

配置、标定与维护 ​

config、calibration 和 maintenance 都可能改变设备状态。读取操作与写入操作应分开,写入前记录当前配置并确认目标设备身份。

配置 ​

先调用 hand.config.snapshot() 获取当前值,再使用逐项 setter 修改。波特率、设备 ID 或广播设置可能影响当前连接;写入后按 API 契约关闭并重新发现设备。

关节位置、速度和保护电流限制必须来自目标型号的工程配置,不要把一台设备的值直接复制到另一型号。

修改从站 ID(SDK 2.1.2) ​

hand.config.set_slave_id() 修改范围为 1–247。先将目标手物理隔离到独立总线,停止运动和 Servo;不得与标定或重启同时执行。SDK 要求该传输上只有一个已连接的 Hand,但无法检测未连接的物理设备。设置为当前 ID 不执行写入。

在公开示例仓库根目录运行,按实际连接替换串口:

bash
python python/revo3/device_operations.py --port /dev/ttyUSB0 --new-slave-id 2
./c/build/demo/device_operations /dev/ttyUSB0 --new-slave-id 2

默认只读,添加 --run 才写入。实际地址变更收到应答或结果不确定时,原 Hand 和传输会话失效;仅关闭 Hand 不够,必须关闭旧 Manager、新建 Manager 并在新地址连接,核对实际 ID 和可用的原设备序列号。响应丢失时不自动重试,也不能假定新地址已生效;写入应答不保证固件切换地址或持久化的时刻。

device_operations 还会刷新电机序列号及固件版本。触觉读取失败时保留已成功读取的电机缓存,并报告刷新不完整,不能将缓存误判为全部刷新成功。

标定 ​

标定和零位操作会改变后续运动参考:

  • 确认机械结构和负载满足标定条件。
  • 记录标定前配置和固件版本。
  • 为命令设置超时,但不要把超时等同于未执行。
  • 完成后重新读取零位、State 和 Health。

固件更新 ​

SDK 2.1.2 的 firmware_update 示例显示传输进度。Python 通过 on_progress 回调及操作句柄的 progress 获取进度,C++ 通过 operation.progress() 查询。100% 只表示传输完成;操作结束后仍需重新连接并读取固件版本,确认实际安装结果。

固件更新前确认电源稳定、目标模块、固件包和设备型号。升级过程中不要发送运动、配置或标定命令。若响应丢失或中断:

  1. 记录最后确认的阶段和错误结构。
  2. 不直接重复发送未知效果的写命令。
  3. 重新连接并读取固件信息和 Health。
  4. 按恢复要求决定继续、重启或人工处理。

恢复出厂设置、重启和固件更新需要独立的用户确认,不应作为普通错误重试动作。接口见设备操作 API。

帮助