用于控制 Leap Hand 机器人的 Python API 和工具集。
- 🤖 Leap Hand 控制API: 直接控制 Leap Hand 机器人的关节
- ⚙️ Dynamixel 驱动: 底层 Dynamixel 舵机通信
- 🔄 格式转换: Allegro Hand 和 Leap Hand 格式之间的转换
- 🎯 实时手势控制: 使用摄像头和 MediaPipe 进行手势检测
- 🤝 手势重定向: 将人手动作映射到机器人手部
- 📊 实时可视化: 使用 Rerun 进行 3D 可视化
- 🔧 灵活配置: 支持多种重定向算法和参数
# 基础依赖 uv sync # Teleoperation 依赖 uv sync --group teleopfromsource.leap.apiimportLeapHandfromsource.leap.dynamixel.driverimportDynamixelDriver# 初始化驱动driver=DynamixelDriver( servo_ids=list(range(16)), port="/dev/cu.usbserial-FTA2U4SR", baud_rate=4_000_000, ) # 创建 Leap Hand 实例leap_hand=LeapHand(driver) # 控制机器人importnumpyasnpleap_hand.set_joints_leap(np.zeros(16)) # 移动到零位仅可视化模式(推荐首次使用):
uv run --group teleop python -m source.leap_teleop.main --no-enable-real-robot连接真实机器人:
uv run --group teleop python -m source.leap_teleop.main --enable-real-robotleap-hand-api/ ├── source/ │ ├── leap/ # 核心 API │ │ ├── api.py # 主要 Leap Hand API │ │ ├── utils.py # 工具函数 │ │ └── dynamixel/ # Dynamixel 驱动 │ └── leap_teleop/ # Teleoperation 系统 │ ├── main.py # 主程序 │ ├── hand_detector.py # 手势检测 │ ├── visualizer.py # 可视化 │ └── README.md # 详细文档 ├── vendor/ # 第三方库 │ ├── dynamixel-sdk/ # Dynamixel SDK │ └── leap-urdf/ # Leap Hand URDF 模型 └── third_party/ └── dex_retargeting/ # 手势重定向库 - 实时手势检测: 使用 MediaPipe 检测手部关键点
- 智能重定向: 使用 dex-retargeting 将人手动作映射到机器人
- 安全控制: 支持实时开启/关闭机器人控制
- 多模式可视化: OpenCV + Rerun 双重可视化
- Vector Retargeting: 适用于实时遥操作
- Position Retargeting: 适用于离线数据处理
- DexPilot: 带有手指闭合预处理的遥操作
- Q 键: 退出程序
- 空格键: 开启/关闭机器人控制
- 将右手放在摄像头前进行手势控制
访问 Rerun 可视化界面:http://127.0.0.1:9876
可视化内容包括:
- 手部关键点 3D 位置
- 机器人关节状态
- 系统运行状态
- 首先在可视化模式下测试
- 确保机器人周围有足够空间
- 保持紧急停止按钮可及
- 仔细阅读
source/leap_teleop/README.md中的安全说明
dynamixel_demo.ipynb: Dynamixel 基础控制示例
# 查看所有可用选项 uv run --group teleop python -m source.leap_teleop.main --help # 左手控制 uv run --group teleop python -m source.leap_teleop.main --hand-type left # 调整帧率 uv run --group teleop python -m source.leap_teleop.main --fps 60- 核心 API 扩展: 修改
source/leap/ - Teleoperation 功能: 修改
source/leap_teleop/ - 新的重定向算法: 参考
dex_retargeting文档
# 运行基础 API 测试 python -c "from source.leap.api import LeapHand; print('API 导入成功')"# 测试 teleoperation 导入 uv run --group teleop python -c "from source.leap_teleop import LeapHandTeleop; print('Teleop 导入成功')"- 串口连接失败: 检查设备路径和权限
- 摄像头无法打开: 确认摄像头未被其他程序占用
- 手势检测不准确: 确保光线充足,手部完整在视野内
- Rerun 无法连接: 检查端口 9876 是否被占用
更多详细故障排除信息请参考 source/leap_teleop/README.md。
欢迎提交 Issue 和 Pull Request 来改进这个项目!
请查看项目根目录下的 LICENSE 文件。