Orca 手部设置指南

完成从拆箱到首次掌握的逐步路径。 第一次构建总共计划 3-4 小时。

1

装配与检验

在开始之前布置好所有组件:手指模块 (5×)、手掌/手腕安装座、肌腱布线硬件、紧固件和任何可选的指尖传感器模块。

  • 手指模块: 将每个手指模块按顺序卡入手掌框架:拇指、食指、中指、无名指、小指。 在布线肌腱之前验证每个关节是否可以自由移动。
  • 手腕安装: 使用提供的紧固件将手掌组件连接到腕板上。 确认法兰图案与您的机器人手臂匹配。
  • 肌腱走线: 将每个肌腱(每个手指一根)从致动器滑轮穿过导管导轨。 张紧前留出 2-3 毫米的松弛空间 — 此阶段过度张紧会导致粘连。
  • 触觉传感器(可选): 如果安装指尖触觉传感器,请在关闭指壳之前将其放入指尖外壳中。 将传感器电缆穿过手指体连接至手掌连接器。
检查官方文档以了解您的硬件版本。 Orca Hand 硬件版本之间的装配细节有所不同。 始终验证 Orca Hand 官方文档 对于您的特定版本。
2

软件安装

orca_core Python 包是唯一的软件依赖项——没有 ROS 要求。 它使用 Dynamixel 协议通过单个 USB 串行连接以 3 Mbps 的速度与所有 17 个 Feetech STS3215 电机进行通信。 需要 Python 3.9+。

选项 A — 通过 Poetry 安装(推荐):

git clone https://github.com/orcahand/orca_core.git
cd orca_core
poetry install

选项 B — 通过 pip 安装:

pip install orca_core

在 Linux 上授予 USB 串行端口访问权限:

# Add your user to the dialout group (requires logout/login to take effect)
sudo usermod -aG dialout $USER

# Or grant temporary access without logging out
sudo chmod 666 /dev/ttyUSB0
macOS 端口名称。 在 macOS 上,USB 串行端口通常是 /dev/tty.usbserial-FT4TFV01。 打开 orca_core/models/orcahand_v1/config.yaml 并更新 port 连接之前的字段,或在构造时显式传递端口字符串 OrcaHand().

连接并验证:

from orca_core import OrcaHand

hand = OrcaHand()
status = hand.connect()
print(status)  # (True, 'Connection successful')
3

校准

校准以降低的电流限制(450 个原始单位)将 17 个关节中的每一个驱动至其机械硬停止,以建立每个电机的零偏移。 在发出位置命令之前务必进行校准 - 跳过此步骤可能会导致较大的位置误差或意外运动。

from orca_core import OrcaHand

hand = OrcaHand()
hand.connect()

# Drives all joints to hard stops at calib_current=450 to establish zero offsets
hand.calibrate()

# Calibration results are saved automatically to:
# models/orcahand_v1/calibration.yaml
校准是自动的。calibrate() 方法以 0.3° 的增量迭代地将每个关节步进到其硬停止位置(可通过 calib_step_size),在 0.01° 以内连续 10 个稳定读数后声明关节归位(可通过配置 calib_num_stablecalib_threshold),然后将偏移量保存到 calibration.yaml。 仅在硬件更改后重新运行。

校准后,将所有关节移至开/零位置:

# Command all 17 joints to 0° (open position)
hand.set_joint_pos({joint: 0 for joint in hand.joint_ids})
4

第一次抓握测试

使用以下方法验证联合控制 orca_core Python API。 按名称命令各个关节 — SDK 通过以下命令自动将关节名称转换为电机 ID: joint_to_motor_mapconfig.yaml.

from orca_core import OrcaHand

hand = OrcaHand()
hand.connect()
hand.calibrate()

# --- Read current joint positions (degrees) ---
positions = hand.get_joint_pos()
print(positions)
# e.g. {'thumb_mcp': 0.0, 'thumb_abd': 0.0, 'index_mcp': 0.0, ...}

# --- Make a fist: flex all MCP and PIP joints ---
hand.set_joint_pos({
    "index_mcp":  90, "index_pip":  110,
    "middle_mcp": 90, "middle_pip": 110,
    "ring_mcp":   90, "ring_pip":   110,
    "pinky_mcp":  90, "pinky_pip":  110,
    "thumb_mcp":  30, "thumb_pip":  100,
})

# --- Open hand back to zero ---
hand.set_joint_pos({joint: 0 for joint in hand.joint_ids})

# --- Torque control ---
hand.enable_torque()                    # Enable torque on all motors
hand.disable_torque(motor_ids=[1, 2])   # Disable specific motors (by ID)

# --- Disconnect (disables torque, closes serial port) ---
hand.disconnect()
关节 ROM 限制。 手指 2-5 上的 MCP 和 PIP 关节范围为 -20° 至 +120° (MCP) 和 -20° 至 +140° (PIP)。 拇指具有最宽的外展范围:±65°。 手腕操作±60°。 超出这些限制的命令值可能会使电机在机械停止处失速。

如果任何关节未达到命令角度,请检查该电机的电缆布线和腱张力。 每个手指均采用专用的 Feetech STS3215 舵机; 绑定通常是路由或张力问题,而不是软件问题。

5

与机械臂集成

使用标准手腕法兰适配器将 Orca Hand 安装到机器人手臂上。 该手与 OpenArm 101 兼容,并且大多数手臂具有标准 ISO 9283 法兰图案。

  • 使用提供的图案中的 M4 螺栓将腕板连接到手臂的末端执行器法兰。
  • 沿着臂结构布置信号和电源线,并用扎带固定,以防止运动过程中被绊住。
  • 在手臂的 ROS2 工作区中,添加 Orca Hand 作为末端执行器节点,并同时启动手臂和手部控制器。
与 OpenArm 101 一起使用吗? 请参阅 OpenArm 远程操作设置步骤 有关连接末端执行器和记录第一次数据收集会话的说明。

有关 Orca Hand 灵巧操作研究工作流程的完整演练,请参阅 SVRC研究指南.

设置完成?

查看完整规格或加入社区来分享您的构建笔记。