五指灵巧手控制的学习记录
灵巧手是人形机器人manipulation的组成部分
灵巧手在整个 manipulation pipeline 中承担的是 “与外界物体进行直接交互” 的任务,是最终完成抓取、操作动作的核心模块。目前主要接触到是傲意的ROH-A001和因时RH56两款灵巧手。
引言:为什么灵巧手控制如此重要且富有挑战性?
灵巧手控制之所以重要且极具挑战性,主要源于它所承担的角色 —— 实现机器人与现实世界的“精细交互”能力,这不仅是视觉、定位等感知系统无法替代的,也是机器真正“操作世界”的关键体现。
- 完成复杂 manipulation 任务的核心
- 机械臂可以把末端移动到某个位置,但真正完成抓取、旋转、搬运、拧开、拼装等操作的,是“灵巧手”。
- 它决定了机器人能否像人一样“使用工具”“和环境互动”。
- 具身智能的关键一环
- 灵巧手控制=感知+推理+动作执行的完美结合。
- 是从“看懂”世界走向“改变”世界的关键能力。
- 很多高级应用离不开灵巧操作
- 居家照护:抓杯子、开瓶盖、系鞋带
- 手术机器人:微操作、柔性操作
- 工业装配:插接、螺丝、精密摆放
灵巧手控制是机器人从“能到达”走向“能操作”的必经之路,
它的重要性在于赋予机器人“手”的能力,挑战性在于同时面对高自由度、复杂物理交互、多模态融合及实时控制的综合困难。
硬件结构及通信协议
五指灵巧手是一种具有高精度、高灵活性仿人结构的机器人末端执行器,整体设计高度贴近人类手部的大小与比例。其核心驱动机构为集成式微型伺服电缸,总计6个主动自由度,支持捏取、抓握、支撑、触碰等多种手部操作动作,定位精度可达±1 mm。内部集成PID控制算法及高灵敏压力传感器,支持RS232、RS485、CAN等多种总线接口通信,并可通过阈值设置实现对不同硬度物体的柔顺抓取控制。为了兼顾性能与重量,该灵巧手采用铝合金、锌合金等轻量化材料制造,具备小体积、大扭矩、易控制的特点。目前广泛应用于人形机器人、巡检机器人、仿生义肢、教育科研、智能服务机器人等领域,是具身智能与精细操作研究的重要平台设备。

微型伺服电缸
微型伺服电缸是通过伺服电机驱动精密丝杠的模块化直线执行器,兼具亚毫米级定位精度、可编程力控和节能特性,是替代传统气/液动方案的高效电动化核心部件。


灵巧手性能参数如下:
| 参数 | 指标 | 备注 |
|---|---|---|
| 自由度 | 6个 | 5个收缩+1个旋转 |
| 关节总数 | 11个 | 5个被动关节和6个主动关节 |
| 重量 | 545±5g | 有重量误差 |
| 重复定位精度 | ±1 mm | 内置PID电机电机控制算法 |
| 最大打开时间 | ≤1.秒 | |
| 最大闭合时间 | ≤1.秒 | |
| 最大单指指尖力 | ≥4.41 N | |
| 最大拇指指尖力 | ≥9.8 N | |
| 最大静载荷(钩握) | 294N(30KG) | |
| 通信接口 | UART/RS485/CAN | |
| 通信协议 | ModBus-RTU串行控制协议/CAN |
控制方法
1. 软件协议层(通信与控制)
灵巧手一般通过 串口/总线通信与上位机交互,常用方法:
- 常见协议
Modbus RTU/TCP:寄存器读写控制角度、速度、状态
自定义协议:
封装成数据帧:帧头 + 手ID + 命令字 + 数据长度 + 数据区 + CRC
提供设置角度、读取力、查询状态等功能
内置 CRC 校验、异常处理机制
- 控制方式
位置控制(Position Control)
给每个关节设置目标角度
上位机发送目标角度 → 灵巧手电机执行 → 反馈当前角度
速度控制(Velocity Control)
控制每个关节移动速度
常用于平滑动作、连续抓取
力控制(Force/Impedance Control)
根据传感器反馈控制手指力
用于抓握脆弱物体,避免压碎
混合控制(Position + Force)
同时控制关节角度和夹持力
常见于精细抓取任务
2. 小结
五指灵巧手控制分为三层:硬件驱动 → 协议通信 → 上位机算法
常用控制方式:位置控制、速度控制、力控制、混合控制
上位机算法可扩展为手势跟随、轨迹规划、强化学习、状态机管理
通过上位机软件测试灵巧手
链接: link.
上位机软件: 上位机软件由公司提供


这里可以直接通过设置值直观的观察手指的手势
通过Ubuntu系统测试五指灵巧手
本系统使用Ubuntu22.04 humble版本

1. 使用 ls 命令
列出当前连接的 ttyUSB 设备:
//打开终端
ls /dev/ttyUSB*
如果设备存在,会显示类似/dev/ttyUSB0 的条目,默认是ttyUSB0。
2. 赋予串口的读写权限
很多时候因为没有读写权限,导致在运动程序的适合找不到串口:
//打开终端
sudo chmod o+rw /dev/ttyUSB0*
3. clone相应内容
//打开终端
cd zs
mkdir -p rohand_ws/src #创建工作空间
cd rohand_ws/src
git clone ssh://git@github.com/oymotion/rohand_ros2_pkg
*4. 运行前准备
//打开终端
conda create -n rohand python=3.12 #创建python环境
conda activate rohand
//进入工作空间
cd zs/rohand_ws/
python3 -m pip install pymodbus #安装相应的依赖
colcon build
*5. 运行
//打开终端
# 刷新环境
source /path/to/workspace/install/bash
# 赋予串口读写权限
sudo chmod o+rw /dev/ttyUSB0 # Modify ttyUSB0 to your actual device name
# 运行 ROH-A001 node
ros2 run rohand rohand_modbus_a001 --ros-args -p port_name:="/dev/ttyUSB0" -p baudrate:=115200 -p hand_ids:=[2] # Modify parameters according to your real case
# 运行 ROH-AP001 node
ros2 run rohand rohand_modbus_ap001 --ros-args -p port_name:="/dev/ttyUSB0" -p baudrate:=115200 -p hand_ids:=[2] # Modify parameters according to your real case
# 运行 ROH-LiteS001 node
ros2 run rohand rohand_modbus_lites001 --ros-args -p port_name:="/dev/ttyUSB0" -p baudrate:=115200 -p hand_ids:=[2] # Modify parameters according to your real case
之后通过博客记录我的学习经历,欢迎指导!!!
1258

被折叠的 条评论
为什么被折叠?



