logo
0
0
WeChat Login

AKA-00

开源智能网球收集机器人

项目目标

AKA-00 是一个面向网球场地的智能机器人,旨在实现自动收集散落网球的功能。通过计算机视觉识别网球位置,配合机械臂抓取和底盘运动,实现无人值守的网球收集作业。

目前功能

✅ 已完成

功能说明
网球检测使用 YOLOv8 模型识别网球(支持 ONNX/RKNN 格式)
机械臂控制控制机械臂完成抓取和释放动作
底盘运动N20 电机差速控制,支持前进/后退/转向
Web API提供 HTTP 接口远程控制机器人
Web 界面React 前端,可远程控制机器人运动和夹爪

使用流程

1. 硬件连接

// TODO

2. 软件部署

# 安装 Python 依赖 pip install -r requirements.txt # 初始化系统(可选) ./init.sh # 启动 Web 服务器 python run.py

3. 远程控制

启动后可通过以下方式控制:

  1. Web 界面: 访问 http://<机器人IP>/
  2. API 调用: 使用 /api/control 接口

4. 启动自动收集

python tennis_hunter.py

机器人将执行:检测网球 → 追踪接近 → 机械臂抓取 → 寻找红色桶 → 释放

代码结构

AKA-00/ ├── run.py # 主入口,启动 HTTP/HTTPS 服务器 ├── tennis_hunter.py # 机器人主程序(网球收集逻辑) ├── requirements.txt # Python 依赖 ├── init.sh # 系统初始化脚本 │ ├── app/ # Flask Web 应用 │ ├── __init__.py # Flask 应用工厂 │ └── routes/ │ ├── api.py # 控制 API(运动、夹爪) │ └── frontend.py # 前端路由 │ ├── src/ # 硬件控制模块 │ ├── arm_control/ # 机械臂控制 │ │ ├── sts3215/ # STS3215 舵机驱动 │ │ ├── mg996r/ # MG996R 舵机 │ │ └── zl/zp10s/ # ZL-ZP10S 机械臂 │ ├── base_control/ │ │ └── n20/ # N20 电机驱动 │ └── cameras/ │ └── opencv/ # 摄像头模块 │ ├── frontend/ # React 前端 │ ├── src/ │ │ ├── App.tsx # 主应用组件 │ │ ├── pages/BaseControlPage.tsx # 遥控器页面 │ │ ├── pages/WiFiConfigPage.tsx # Wifi配置页面 │ │ └── ... │ ├── package.json │ └── vite.config.ts │ ├── models/ # YOLOv8 模型文件 │ ├── best.onnx # CPU 推理模型 │ └── best.rknn # RK3588 推理模型 │ ├── static/ # Flask 静态文件 └── templates/ # Flask 模板

关键模块说明

文件功能
run.pyFlask 服务器启动,支持 HTTP/HTTPS
tennis_hunter.py网球收集主逻辑,包含目标检测和控制流程
app/__init__.pyFlask 应用工厂,初始化硬件驱动
app/routes/api.pyHTTP API,提供运动/夹爪控制
src/arm_control/sts3215/串口舵机通信协议实现
src/base_control/n20/PWM 电机速度控制

技术栈

后端

技术用途
Python 3.11核心语言
FlaskWeb 框架
pyserial串口通信(舵机)
python-peripheryGPIO/PWM 控制
OpenCV图像处理
UltralyticsYOLOv8 推理

前端

技术用途
React 19UI 框架
TypeScript类型安全
Vite构建工具

硬件

设备型号
开发板瑞芯微 RK3588
机械臂ZL-ZP10S / STS3215
电机N20 直流减速电机
摄像头USB 免驱摄像头

环境变量

变量名默认值说明
APP_HTTP_PORT80 (Linux) / 5000 (Windows)HTTP 服务端口
APP_HTTPS_PORT443 (Linux) / 5443 (Windows)HTTPS 服务端口
APP_CERT_PATH/root/AKA-00/cert.pemHTTPS 证书路径
APP_KEY_PATH/root/AKA-00/key.pemHTTPS 密钥路径

API 接口

获取 IP 地址

GET /api/ip

响应:

{ "ip": "192.168.1.100" }

控制接口

GET /api/control?action=<action>&speed=<speed>&time=<time>

参数说明:

参数类型说明
actionstring动作:up, down, left, right, stop, grab, release
speedint速度 0-50
timeint持续时间(毫秒)

示例:

# 前进 curl "http://192.168.1.100/api/control?action=up&speed=30&time=1000" # 抓取 curl "http://192.168.1.100/api/control?action=grab" # 释放 curl "http://192.168.1.100/api/control?action=release"

硬件配置详情

机械臂

  • 型号: ZL-ZP10S 或 STS3215
  • 通信: 串口 UART (/dev/ttyACM0, 115200 波特率)

电机

  • 型号: N20 直流减速电机
  • 控制: PWM 调速
  • 左电机: chip=4, ch1=0, ch2=1 (RK3588)
  • 右电机: chip=4, ch2=2, ch3=3 (RK3588)

摄像头

  • 接口: USB 免驱
  • 默认设备: /dev/video0

运行模式

tennis_hunter.py 中配置:

HARDWARE_MODE = 'rk3588' # 或 'cpu'
模式模型说明
cpubest.onnx通用 PC 推理
rk3588best.rknnRK3588 NPU 推理