Skip to main content

Easy teleoperate tools for robotic devices control with VR headset

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          # 项目配置文件

开发指南

添加新设备类型

  1. 继承BaseDevice基类(或相应设备类型的基类)
  2. 实现必要的接口方法(start, stop等)
  3. 在TeleopMiddleware中注册相应的事件处理函数

扩展遥操作功能

  1. 在TeleopMiddleware中添加新的事件处理
  2. 创建新的遥操作组来组织设备

构建和发布

使用uv构建分发包:

uv build

配置好API密钥然后上传PYPI

uv publish

或者使用传统方法构建并发布

python -m build
python -m twine upload dist/*

注意事项

  1. 所有设备的主循环都需要放在多线程中运行
  2. 设备控制逻辑不能阻塞主线程
  3. 设备状态有三种:未连接(0)、已连接(1)、断开连接(2)
  4. 系统支持自动重连机制

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.1.tar.gz (44.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easyteleop-0.2.1-py3-none-any.whl (57.1 kB view details)

Uploaded Python 3

File details

Details for the file easyteleop-0.2.1.tar.gz.

File metadata

  • Download URL: easyteleop-0.2.1.tar.gz
  • Upload date:
  • Size: 44.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.9

File hashes

Hashes for easyteleop-0.2.1.tar.gz
Algorithm Hash digest
SHA256 032bc3c06f19d02d78d301e08b85aaf3ad893a2b2d02f01162d3854d3799faa2
MD5 9363e94a69948f7ea2a46bf26cb66d03
BLAKE2b-256 364734b0108bc97f808c9b6f72c12b970009cec5070cf66de5241f274fcd6be3

See more details on using hashes here.

File details

Details for the file easyteleop-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: easyteleop-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 57.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.9

File hashes

Hashes for easyteleop-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 25628a7727bd09f78f9917a2d90d70caed8e036b6d6539df71a66451b156ead1
MD5 6d643eeedcb5b989a92585125e88cbde
BLAKE2b-256 0efd6bab24af5d61aed2d910c42f22fbf2143c7ad8910a401e88c8fb71c3859e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page