宇树Go2机器狗Python控制库
Project description
ezgo - 宇树Go2机器狗Python控制库
ezgo 是一个用于控制宇树Go2机器狗的Python库,提供了简单易用的API接口,支持运动控制、视频流获取、UI界面等功能。
功能特性
- 🤖 运动控制: 支持前进、后退、转向、舞蹈等多种动作
- 📹 视频流: 实时获取机器狗摄像头画面
- 🎮 状态管理: 智能状态检测和动作切换
- 🖥️ UI界面: 提供简单的图形界面用于显示和控制
- 🔧 易于集成: 简洁的API设计,便于快速开发
安装
使用pip安装
pip install ezgo
从源码安装
git clone https://github.com/your-username/ezgo.git
cd ezgo
pip install -e .
系统要求
在安装 ezgo 之前,请确保您的系统已安装以下依赖:
# Ubuntu/Debian
sudo apt update
sudo apt install python3-opencv python3-numpy python3-pil
# CentOS/RHEL
sudo yum install opencv-python numpy Pillow
# macOS
brew install opencv
# Windows
# 请使用 pip 安装或下载预编译的二进制包
pip install opencv-python numpy Pillow
注意: ezgo 不会自动安装这些依赖,因为它们可能需要系统级安装或特定配置。
快速开始
基本使用
from ezgo import Go2
# 初始化Go2控制器
go2 = Go2(interface="enx00e0986113a6") # 替换为你的网卡接口
# 初始化连接
if go2.init():
print("连接成功!")
# 基本动作
go2.StandUp() # 站立
go2.Forward(0.3, 2) # 向前移动2秒
go2.TurnLeft(0.5, 1) # 左转1秒
go2.Hello() # 打招呼
go2.Damp() # 进入阻尼状态
else:
print("连接失败!")
视频流使用
import cv2
from ezgo import Go2
# 初始化
go2 = Go2()
if go2.init():
print("开始获取视频流...")
while True:
frame = go2.read_image()
if frame is not None:
cv2.imshow('Go2 Camera', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cv2.destroyAllWindows()
UI界面使用
from ezgo.ui import APP
from ezgo.camera import Camera
import time
# 创建UI应用
app = APP(title="Go2控制面板", width=480, height=800)
# 创建摄像头
camera = Camera(index=0)
camera.open_camera()
# 更新界面
while app.is_running:
try:
# 获取摄像头图像
frame = camera.read_cv2_image()
image_tk = camera.cv2_to_tk(frame)
app.set_image(image_tk)
app.set_text("系统运行正常")
app.update()
time.sleep(0.03) # 约30FPS
except Exception as e:
print(f"更新界面出错: {e}")
break
app.mainloop()
API 文档
Go2 类
主要的机器狗控制类,提供以下方法:
运动控制
StandUp()- 站立StandDown()- 蹲下Sit()- 坐下Damp()- 进入阻尼状态BalanceStand()- 平衡站立StopMove()- 停止移动
移动控制
Move(vx, vy, vyaw)- 移动控制Forward(speed, duration)- 向前移动Backward(speed, duration)- 向后移动Left(speed, duration)- 向左移动Right(speed, duration)- 向右移动TurnLeft(speed, duration)- 左转TurnRight(speed, duration)- 右转
动作控制
Hello()- 打招呼Stretch()- 伸懒腰Content()- 开心Heart()- 比心Scrape()- 拜年作揖Dance1()- 舞蹈1Dance2()- 舞蹈2FrontJump()- 前跳FrontPounce()- 向前扑人
视频控制
read_image()- 获取一帧图像open_video(width, height)- 打开视频流
Camera 类
摄像头控制类,提供以下方法:
open_camera()- 打开摄像头read_cv2_image()- 读取OpenCV格式图像read_pil_image()- 读取PIL格式图像cv2_to_tk(frame)- 转换为Tkinter格式resize(frame, size)- 调整图像尺寸crop_to_square(frame)- 裁剪为正方形
APP 类
UI界面类,基于Tkinter:
set_image(image)- 设置显示图像set_text(text)- 设置显示文字
项目结构
ezgo/
├── src/
│ ├── __init__.py # 包初始化文件
│ ├── go2.py # Go2机器狗控制类
│ ├── camera.py # 摄像头控制类
│ └── ui.py # UI界面类
├── pyproject.toml # 现代Python项目配置
├── README.md # 项目文档
├── LICENSE # 开源协议
├── quick_update.py # 快速更新脚本
└── .pypirc # PyPI配置文件
开发指南
本地开发
# 克隆仓库
git clone https://github.com/your-username/ezgo.git
cd ezgo
# 安装开发依赖
pip install -e .
# 运行测试
python -m pytest tests/
发布新版本
# 更新补丁版本
python quick_update.py patch
# 更新次版本
python quick_update.py minor
# 更新主版本
python quick_update.py major
# 发布到PyPI
python quick_update.py publish
常见问题
Q: 连接机器狗失败怎么办?
A: 请检查网络连接,确保机器狗IP (192.168.123.161) 可以ping通,并确认网卡接口名称正确。
Q: 视频流无法打开?
A: 请检查GStreamer是否正确安装,以及网卡多播配置是否正确。
Q: 某些动作无法执行?
A: 请检查机器狗当前状态,某些动作需要在特定状态下才能执行。
贡献
欢迎提交 Issue 和 Pull Request!
许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。
更新日志
v0.0.1 (2024-01-01)
- 初始版本发布
- 基本运动控制功能
- 视频流获取功能
- UI界面功能
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 ezgo-0.0.1.tar.gz.
File metadata
- Download URL: ezgo-0.0.1.tar.gz
- Upload date:
- Size: 12.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
236b7c2305db8340c4204cc556e70cf116bb00a9e65f61032c41f3f06d8ca249
|
|
| MD5 |
955a3fa6713c2061f591dc79db007cdc
|
|
| BLAKE2b-256 |
817ddd53d325a70fc40cc1f4045965509d265d23edd8c43242a0c281661b117e
|
File details
Details for the file ezgo-0.0.1-py3-none-any.whl.
File metadata
- Download URL: ezgo-0.0.1-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.8.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7460964d05aedfcf1e4bc6bb8437cea9755c8a0ea24b0f489df20f9d4c6e76c
|
|
| MD5 |
ed681f8903570c7a06bfbd5f9080f608
|
|
| BLAKE2b-256 |
cbf9b06eb258a23a1964297128a9ca56e0a7cb695662842a342895583680b075
|