跳到主要内容

灵巧手

灵巧手原语把不同硬件的手指运动统一为两层接口:优先使用与硬件无关的“手指 + 运动类型”,需要精确控制时再使用驱动公开的轴名称。能力约定 TOML 位于 capabilities/primitive/hand/,消息与服务定义位于 capabilities/lib/hand/

新软件包省略 Driver 条目,由框架自动注册共享的 robonix/lifecycle/driver;显式选择共享 Driver 的行为相同。

后向兼容:灵巧手命名空间 Driver

robonix/primitive/hand/driverlifecycle/Driverprimitive/hand/driver.v1.toml 只用于仍由软件包自行维护 Driver TOML 的旧实现。目前仍可使用,但计划迁移到共享 Driver。同一个提供方必须且只能注册一条 Driver。

接口

能力约定 ID模式载荷(IDL)语义
robonix/primitive/hand/inforpchand/GetHandInfo查询该手的全部控制轴及其含义
robonix/primitive/hand/move_fingerrpchand/MoveFinger(finger, type) 下发与硬件无关的位置目标
robonix/primitive/hand/move_jointrpchand/MoveJointJointInfo.name 精确控制单个轴
robonix/primitive/hand/set_finger_speed_limitsrpchand/SetFingerSpeedLimits按手指运动设置速度上限
robonix/primitive/hand/set_finger_torque_limitsrpchand/SetFingerTorqueLimits按手指运动设置力矩上限
robonix/primitive/hand/set_joint_speed_limitsrpchand/SetJointSpeedLimits按轴设置速度上限
robonix/primitive/hand/set_joint_torque_limitsrpchand/SetJointTorqueLimits按轴设置力矩上限
robonix/primitive/hand/state_fingertopic_outhand/FingerState按驱动原生频率发布手指级当前位置
robonix/primitive/hand/state_jointtopic_outhand/JointState按驱动原生频率发布轴级当前位置

控制模型

调用方应先调用 info,再根据返回的 JointInfo[] 选择控制层级:

  • move_finger 使用 thumbindexmiddleringpinkybendswayopposeother 的组合。一个组合可以映射到多个硬件轴,映射与联动方式由驱动负责,适合跨型号复用。
  • move_joint 使用驱动返回的、不透明且唯一的 JointInfo.name。不要从名称解析关节含义;轴的手指归属、运动类型、顺序和端点含义都由 JointInfo 描述。
  • 无法映射到五指模型的轴使用空 finger,只能通过轴名称控制。type=other 时,驱动必须在 description 中说明归一化端点。

位置、速度上限和力矩上限都使用闭区间 [0, 1] 的归一化值,不表示公制距离、弧度或牛顿米。越界值、非有限值、空请求、未知目标和重复目标都应被拒绝,不能静默截断。未列出的手指运动或轴保持当前目标。

运动调用返回 ok=true 只表示命令已经接受并下发,不表示已经到达目标。需要等待动作完成的调用方必须观察 state_fingerstate_joint,并按任务容差和超时判断。