本页讲解如何正确、安全地控制 Wuji Hand 2:单位约定、MIT 控制模式、关节表、参数安全边界与安全控制循环。接口定义与完整 API 见 SDK 接口。
单位与符号
joint_diagnostics 流不含关节角,关节角只从 joint_states 读取。
MIT 控制模式
设备默认运行在 MIT 力位混合控制模式,控制模式不通过 Python API 切换:q_d/dq_d/τ_ff来自joint_command的position/velocity/effort,每次发布恰好 20 个JointCommandKp/Kd通过mit_params读写,力矩上限通过effort_limit读写。写入拒绝 NaN、Inf、负值与超出设备上限的值,写入被拒时当前生效值保持不变
设备上电时加载
kp、kd 与 effort_limit 的默认值,通过 SDK 写入的值只在本次运行期间生效,重启后回到默认值。设置控制参数时,推荐取值可以参考遥操作例程 1.teleop_real.py。设备允许的 effort_limit 硬上限为 2.0 A。关节表
编号规则:thumb 0–3、index 4–7、middle 8–11、ring 12–15、pinky 16–19,SDK 标签格式{finger}_S{1..4}。
运动范围与模型文件(URDF / MJCF / USD)关节限位一致,左右手对称。模型关节与连杆按
{l,r}_ 前缀加手指名命名,根连杆为 {l,r}_wrist(带安装座变体为 {l,r}_mount),详见坐标系与模型。
SDK 标签
S1..S4 与模型执行器 J0..J3 的轴序对应关系暂不提供,将在后续更新。零位与运动方向
set_origin/clear_origin支持把当前物理位置标定为用户零点,关节运动中延迟到下次 IDLE 生效,见 SDK 接口
控制频率与命令频率
- 设备控制频率 1000 Hz × 20 轴。1 kHz 为上下行报文频率,一条报文含 20 轴的控制与信息
joint_states原生输出率 1000 Hz,可通过订阅句柄调低推送频率,见 SDK 接口- GET 查询建议不超过 100 Hz,PUB 命令最高支持 1 kHz
参数安全边界
- 首次调试从低力矩限幅开始(如
effort_limit().set(0.5),单位 A),确认行为符合预期后再逐步放宽 - 柔和保持位置可使用
kp = 3.0、kd = 0.05、effort_limit = 1.5 A作为保守参数示例 - 大幅位置变化拆分为小步下发,避免单次阶跃
- 抓握任务中先以低限幅试探接触,再按需提高
安全控制循环
推荐的控制循环要素:发送命令 → 读取状态 → 检查错误码 → 异常时停止。- 状态读取用
joint_states,错误码用joint_diagnostics配合describe_error解码 - 异常时执行
disable(),紧急情况执行emergency_stop()(整手立即停止,不接受掩码) - 故障等级、停机行为与清故障流程见故障、恢复与维护
examples/python/wuji_hand_2/。
对应示例的实跑记录见 SDK 使用实践,含平滑归零与两个运动示例的实测数据。