Skip to content

Latest commit

 

History

162 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

roboparty_dexhand — RP_Hand 6DOF 驱动

roboparty_dexhand 是 RP_Hand 6DOF 灵巧手的 Linux C++/Python 驱动, 通过 SocketCAN CAN-FD 发送运动指令并读取反馈,提供 Python 模块 dexhand_py、C++ 接口 HandDriver 和配置工具 roboparty-dexhand-config。

RoboParty 镜像已内置本驱动,使用镜像时无需克隆或编译本仓库。 ROS 2 双手控制请使用下游项目 roboparty_dexhand_ros。

运行环境

项目 说明
镜像环境 Ubuntu 24.04,系统 Python 3.12
下游 ROS 环境 ROS 2 Jazzy;底层驱动可独立于 ROS 使用
CPU 架构 Linux x86-64(amd64)与 AArch64(arm64)
支持设备 RP_Hand 6DOF,CAN-FD,node ID 为 1..127
驱动软件包 roboparty-dexhand,依赖基础环境包 roboparty-base
安装位置 /opt/roboparty

Python 扩展需要与系统 Python 版本、CPU 架构匹配。以下命令在板端的 Bash 终端执行,直接调用驱动时使用 /usr/bin/python3。

1. 检查驱动环境

每个新终端加载镜像中的 RoboParty 环境,然后检查模块与配置工具:

source /opt/roboparty/setup.bash
/usr/bin/python3 -c 'import dexhand_py; print(dexhand_py.__file__)'
/usr/bin/python3 -c 'from dexhand_py import HandModel; print(HandModel.RP_HAND_6DOF.value)'
roboparty-dexhand-config --help
dpkg-query -W roboparty-dexhand roboparty-base

预期模块路径位于 /opt/roboparty/,模型值为 0,CLI 显示 feedback-period show/apply 用法,两个软件包均可查询到版本。 这些命令不会连接或使能灵巧手。

/opt/roboparty/setup.bash 是镜像的公共环境入口,由基础环境包提供。

2. 确认 CAN-FD 与反馈周期

驱动使用已经配置好的 SocketCAN 接口,接口由系统或部署流程配置。 下游双手默认左手接 can0、右手接 can3,两手 node ID 均为 1; 请按实际接线与设备 ID 调整。

ip -details -statistics link show can0
ip -details -statistics link show can3

每个使用的接口应处于 UP,启用 CAN-FD,名义速率为 1 Mbps、 数据速率为 5 Mbps;正常通信时 CAN 状态为 ERROR-ACTIVE。 只使用一只手时检查对应接口即可。手动配置命令见 CAN-FD 与反馈周期配置。

CAN 总线速率和手本体的反馈周期需要分别配置。 新设备、更换设备、 恢复出厂或配置未知时,需要将六轴反馈周期设为 20 ms(raw value 200)。 两类反馈各约 50 Hz,合计约 100 帧/秒/手。

  • ROS 用户:按下游 README 使用 configure_feedback 完成双手配置与检查。
  • 直接调用驱动:按 底层 CLI 配置说明 操作。
  • 确认参数断电后仍保留:给手本体断电再上电,然后读回检查。

安装镜像或驱动包不会自动写入手本体参数,init_hand() 也不会修改 持久化反馈周期。配置期间需停止 ROS 节点和其他手控制进程。

3. 通过 ROS 2 Jazzy 使用

roboparty_dexhand_ros 提供 ROS 节点、双手 launch、控制话题和反馈周期配置入口。 请按该项目 README 完成构建、首次配置、启动和话题测试。

ROS 节点在进程内直接导入 dexhand_py,无需单独启动底层驱动服务。 下游工作空间构建完成后,环境加载顺序为:

source /opt/ros/jazzy/setup.bash
source /opt/roboparty/setup.bash
source ~/roboparty_dexhand_ros/install/setup.bash

最后一行按实际下游工作空间路径修改。双手各运行在独立进程中,分别指定 接口和 node ID。带回零的启动会产生实际运动,运行前留出运动空间。

直接使用 Python / C++

无需 ROS 的应用可以直接调用驱动。下面是单手初始化与资源释放示例; 先完成上述环境检查与硬件配置,并停止其他手控制程序。

该示例会使能并回零。 请确保运动范围内无障碍物并准备好硬件停止手段。

from dexhand_py import HandDriver, HandModel

hand = HandDriver.create_hand(
    "RP_Hand", "canfd", "can0", HandModel.RP_HAND_6DOF, 1
)
try:
    if not hand.init_hand(True, True, 5.0):
        raise RuntimeError("init_hand failed")
    hand.check_health()
    print("DOF:", hand.get_dof())
finally:
    hand.deinit_hand()

5.0 是回零确认的最大等待秒数,成功会提前返回。初始化失败时不能继续 发送运动命令。每个进程只能使用一个活动的手实例,双手需使用两个进程; 成功创建的驱动必须显式调用 deinit_hand() 释放资源。

完整运动示例、C++ 示例、主要 API 和兼容性说明见 Python / C++ 驱动使用。

常见问题

现象 检查方法
/opt/roboparty/setup.bash 不存在 检查镜像是否包含 roboparty-base
ModuleNotFoundError: dexhand_py 在同一终端加载环境,使用系统 Python,确认已安装 roboparty-dexhand
模块来自其他目录或动态库加载失败 检查模块路径和 Python/CPU 架构是否匹配;不要单独拷贝扩展 .so
CAN 接口不存在或未启动 检查适配器、系统驱动和接口配置,确认实际接口名
配置超时、回零失败或无运动 检查供电、接线、node ID、反馈周期及进程占用,再按验收文档排查

模块导入成功只说明软件能加载;真实通信、回零、位置跟踪和帧率检查见 部署与验收 SOP。

开发与镜像维护

本仓库维护底层驱动与 Debian 软件包。源码构建和镜像打包说明见 构建与打包,普通镜像用户可跳过。

License

RoboParty 编写的源代码采用 GPL-3.0。仓库内捆绑的厂商 SDK 头文件和二进制文件保留其自身的许可与再分发边界,见 第三方 SDK 说明。

About

CAN-FD driver and Python bindings for Roboparty dexterous hands

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages