Easy teleoperate tools for robotic arm control with VR devices
Project description
Easy Teleoperate Tools
EasyTeleop 是一个基于VR设备控制机械臂的遥操作工具集。该工具集支持多种设备的集成,包括RealMan机械臂、VR头显和RealSense摄像头,并提供接口进行设备管理和遥操作控制。
功能特性
- 多设备管理:支持机械臂、VR头显和摄像头设备的统一管理
- 遥操作组:可配置不同的遥操作组,灵活组合设备
- 实时状态监控:实时显示设备连接状态和运行情况
- 数据采集:支持遥操作过程中的数据采集和存储
- WebRTC视频流传输:支持低延迟视频流传输
- 可视化:提供姿态可视化功能
系统架构
本系统采用模块化架构,包含以下几个主要组件:
核心组件 (Components)
- DataCollect: 数据采集模块
- TeleopMiddleware: 遥操作中间件
- Visualizer: 可视化模块
- WebRTC: WebRTC视频流支持
- VRPacketAnalyzer: VR数据包分析器
- Interpolation: 插值算法
- HandVisualizer: 手部可视化模块
设备模块 (Device)
- BaseDevice: 设备基类
- Camera: 摄像头设备(RealSenseCamera, TestCamera等)
- Robot: 机械臂设备(RealMan, TestRobot等)
- Hand: 手部设备(Revo2OnRealMan等)
- VR: VR设备(VRSocket, TestVR等)
遥操作组 (TeleopGroup)
- BaseTeleopGroup: 遥操作组基类
- SingleArmWithTriggerTeleopGroup: 单臂触发遥操作组
- TwoArmWithTriggerTeleopGroup: 双臂触发遥操作组
安装指南
环境要求
- Python 3.10+
- Windows/Linux/macOS
- uv 包管理器
安装依赖
使用uv管理项目依赖:
# 安装uv(如果尚未安装)
pip install uv
# 安装项目依赖
uv sync
主要依赖
- aiortc: WebRTC支持
- opencv-python: 图像处理
- pyrealsense2: RealSense摄像头支持
- robotic-arm: 机械臂控制库
- numpy, scipy: 科学计算
- matplotlib: 数据可视化
使用方法
简单遥操
在run文件夹下放有一些测试文件,用于直接启动遥操
- run_test.py:双臂和摄像头都采用Test类,VR头显采用VRSocket类
启动服务
运行测试脚本:
# 在项目根目录下
uv run run/run_test.py
项目结构
.
├── run/ # 运行脚本
│ ├── run_test.py # 测试脚本示例
│ └── ... # 其他运行脚本
├── src/
│ └── EasyTeleop/
│ ├── Components/ # 核心组件模块
│ │ ├── DataCollect.py # 数据采集模块
│ │ ├── TeleopMiddleware.py # 遥操作中间件
│ │ ├── WebRTC.py # WebRTC支持
│ │ ├── VRPacketAnalyzer.py # VR数据包分析器
│ │ ├── Interpolation.py # 插值算法
│ │ ├── Visualizer.py # 可视化模块
│ │ ├── HandVisualizer.py # 手部可视化模块
│ │ └── __init__.py
│ ├── Device/ # 设备相关模块
│ │ ├── BaseDevice.py # 设备基类
│ │ ├── Camera/ # 摄像头设备
│ │ │ ├── BaseCamera.py
│ │ │ ├── RealSenseCamera.py
│ │ │ ├── TestCamera.py
│ │ │ └── __init__.py
│ │ ├── Robot/ # 机械臂设备
│ │ │ ├── BaseRobot.py
│ │ │ ├── RealMan.py
│ │ │ ├── TestRobot.py
│ │ │ └── __init__.py
│ │ ├── Hand/ # 手部设备
│ │ │ ├── BaseHand.py
│ │ │ ├── Revo2OnRealMan.py
│ │ │ └── __init__.py
│ │ ├── VR/ # VR设备
│ │ │ ├── BaseVR.py
│ │ │ ├── TestVR.py
│ │ │ ├── VRSocket.py
│ │ │ └── __init__.py
│ │ └── __init__.py
│ ├── TeleopGroup/ # 遥操作组管理
│ │ ├── BaseTeleopGroup.py
│ │ ├── SingleArmWithTriggerTeleopGroup.py
│ │ ├── TwoArmWithTriggerTeleopGroup.py
│ │ └── __init__.py
│ └── __init__.py
├── test/ # 测试文件
├── docs/ # 文档
└── pyproject.toml # 项目配置文件
开发指南
添加新设备类型
- 继承BaseDevice基类(或相应设备类型的基类)
- 实现必要的接口方法(start, stop等)
- 在TeleopMiddleware中注册相应的事件处理函数
扩展遥操作功能
- 在TeleopMiddleware中添加新的事件处理
- 创建新的遥操作组来组织设备
构建和发布
使用uv构建分发包:
uv build
注意事项
- 所有设备的主循环都需要放在多线程中运行
- 设备控制逻辑不能阻塞主线程
- 设备状态有三种:未连接(0)、已连接(1)、断开连接(2)
- 系统支持自动重连机制
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
easyteleop-0.2.0.tar.gz
(44.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file easyteleop-0.2.0.tar.gz.
File metadata
- Download URL: easyteleop-0.2.0.tar.gz
- Upload date:
- Size: 44.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71440dc8d67830e68ba2e21988fe3cd5bb1a30d0c2c57b06d03ee02faab9f05f
|
|
| MD5 |
cb8174990163b703c5804acefd2ccb84
|
|
| BLAKE2b-256 |
1977c9e5169757d18c80aae11a812c8492bd6fd1f83a694fccdcde290e76a5e9
|
File details
Details for the file easyteleop-0.2.0-py3-none-any.whl.
File metadata
- Download URL: easyteleop-0.2.0-py3-none-any.whl
- Upload date:
- Size: 57.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3359631c080cd61000c2e5482559db8129199c322fdcdb4cf0b37b1f56a77e44
|
|
| MD5 |
717bf02556904de9912a316b1acef668
|
|
| BLAKE2b-256 |
290505d68c5048516020218f29bcad64f862d0f4a30095ff4683424af8229253
|