AKA-00

辰龙AI教育机器人


新闻

  • 2026-03-03 添加对zl-zp10s舵机的支持
  • 2026-02-12 小车模拟器可用了
  • 2026-02-06 AKA-00 小车添加了对 MG996R 舵机的支持,目前支持 STS3215 和 MG996R
  • 2026-01-30 opi5p 开发板可以驱动 AKA-00 小车了

开始使用

配置指南

使用文档

开发资料

项目介绍

AKA-00 是一个面向教学的低成本AI机器人,通过提供简单的平台实现多种算法的训练和仿真。

核心能力

能力说明
机械臂控制支持 STS3215、MG996R 等舵机
底盘运动N20 电机差速控制
远程控制Web 界面 + HTTP API

技术架构

AKA-00
├── tennis_hunter.py     # 机器人主程序
├── run.py               # Web 服务器
├── src/
│   ├── arm_control/     # 机械臂控制(舵机驱动)
│   ├── base_control/    # 底盘控制(电机驱动)
│   └── cameras/         # 摄像头模块
├── app/                 # Flask Web 应用
├── frontend/            # React 前端
└── models/              # YOLOv8 模型

硬件平台

组件型号
主控LicheeRV Nano
机械臂ZL-ZP10S / STS3215
电机N20 直流减速电机
摄像头USB 免驱摄像头

快速开始

本文档帮助你快速开始让 AKA-00 跑起来。

1. 组装

参考 硬件接线 完成机械臂、电机、摄像头的连接。

2. 通电

  1. 连接电源,等待控制板指示灯亮起
  2. 等待 60 秒,网络模块启动
  3. 连接机器人热点(格式:chenlong-robot-xxxxx
  4. 浏览器访问 192.168.4.1,进入控制界面
  5. 之后可以通过手机上的遥控器控制小车

3. 部署(首次/更新)

项目以单文件 aka-server 分发,拷贝到控制板:

# 打包(在开发机上)
./build_release.sh              # 使用已有静态文件
./build_release.sh --rebuild    # 自动构建前端后打包

# 拷贝到控制板
scp dist/aka-server root@<robot>:

# 首次部署:一键初始化(解压 + 热点 + 自启)
ssh root@<robot> 'aka-server --init'

# 之后每次开机自动启动,也可手动运行
ssh root@<robot> 'aka-server'

更新部署时清除旧数据后重新运行:

ssh root@<robot> 'rm -rf /root/AKA-00 && aka-server'

4. 修改代码常用命令

# SSH 登录控制板
ssh root@<机器人IP>

# 本地修改代码后,重新打包并部署
./build_release.sh && scp dist/aka-server root@<robot>:/usr/local/bin/

# 在控制板上重启服务
ssh root@<robot> 'rm -rf /root/AKA-00 && aka-server'

5. 使用

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

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

详细说明见 Web 界面API 文档

下一步

硬件参数

主控板

img.png

参数
型号LicheeRV Nano
CPU算能 SG2002
大核:1GHz RISC-V C906 / ARM A53 二选一;
小核:700MHz RISC-V C906;
NPU1 TOPS (INT8),支持 BF16

机械臂舵机和控制板

控制板

微雪UART串口通信控制板

主控图

使用的舵机

参数
型号ZL-ZP10S
通信串口 UART
设备/dev/ttyACM0
波特率115200

支持的舵机

  • STS3215
  • MG996R
  • ZL-ZP10S

电机控制板(DRV8833)

drv8833-2.png

使用的电机

参数
型号N20 直流减速电机
控制方式PWM 调速
GPIO Chip4

硬件接线

接线示意

主控接口图

img.png

本项目使用了以下接口:

  • 电机控制
    • A16:PWM4
    • A17:PWM5
    • A18:PWM6
    • A19:PWM7
  • 舵机控制
    • A28:UART2TX
    • A29:UART2RX
  • VBUS 5V
  • GND

底盘控制板接口图

img.png

  • VM:电机供电
  • NC:置空
  • GND:接地
  • A、BO1、2:接电机
  • A、BIN1、2:控制信号输入
  • STBY:SLEEP控制,底电平有效

机械臂控制板接口图

img.png

  • D:数据总线
  • V:舵机供电正级
  • G:舵机接地
  • DC+:主控供电正级
  • DC-:主控供电负极
  • TX:控制输入
  • RX:控制接收
  • GND:接地
  • A UART:UART总线控制模式
  • B USB:USB总线控制模式

控制电路连线图

img.png 接线前请确保断电操作。

机械臂UART控制

  • 机械臂串口连接至 /dev/ttyACM0
  • 波特率:115200

电机PWM控制

电机PWM ChipChannel
左电机40, 1
右电机42, 3

更多原理图

硬件原理图位于 hardware/ 目录:

  • LicheeRV_Nano-70418_Schematic.pdf - 主控板原理图
  • sg2000_trm_cn.pdf - SG2000 技术参考手册
  • 众灵舵机使用手册-250508.pdf - 舵机使用说明

第一次连接

如何连接机器人

第一步,连接机器人自身的热点,用于配置机器人

  1. 确保机器人已连接到电源,等待机器人控制板灯亮
  2. 等待20秒到30秒,此时控制板正在启动网络模块
  3. 开发者打开电脑/手机,进入wifi连接,找到控制板的热点并连接,例如chenlong-robot-02 img.png

第二步,让机器人连接到开发者的WiFi网络

  1. 连接热点之后,打开浏览器,输入192.168.4.1(不同的机器人可能不同,已实际为准),即可进入机器人的遥控界面
  2. 在配置页面中,刷新网络,找到开发者需要的WiFi网络,点击连接,如有密码需要输入密码 GitHub图标
  3. 连接成功后,网页会显示当前连接的WiFi网络名称以及为机器人分配的IP GitHub图标

第三步,ssh登录机器人的控制板

  1. 第二步进行完之后,开发者需要记下为机器人分配的IP,并且让自己的电脑和机器人连接到同一个WiFi网络 GitHub图标
  2. 开发者打开终端,输入ssh root@[机器人分配的IP],即可登录机器人的控制板,密码为root
  3. 登录成功后,即可在终端中操作机器人的控制板,输入ping www.baidu.com或者curl www.baidu.com,用来检测控制板网络是否成功连接并且能够访问互联网 GitHub图标

项目本地启动并部署到控制板

项目本地启动

  1. 安装Miniconda用于控制python的版本

安装miniconda,请按照官方安装指南

创建 python 3.11 环境

conda create -n aka python=3.11 -y
  1. 运行 pip install -r requirements.txt 安装依赖
pip install -r requirements.txt
  1. 安装前端依赖
cd frontend && npm i

4.打包前端项目

npm run build && cd ..
  1. 运行项目
python run.py

之后访问本地的80端口或443端口即可

本地对于硬件调用的接口进行了隔离,所以可以直接启动

打包部署到控制板

使用 build_release.sh 将整个项目打包为单个自解压可执行文件 aka-server,然后拷贝到 SG2002 控制板即可运行。

# 构建(在开发机上执行)
./build_release.sh              # 使用已有静态文件
./build_release.sh --rebuild    # 自动构建前端后打包

# 输出: dist/aka-server (约 9MB)

首次部署

# 1. 拷贝 aka-server 到控制板
scp dist/aka-server root@<robot>:/usr/local/bin/

# 2. 一键初始化(解压 + 热点 + 开机自启)
ssh root@<robot> 'aka-server --init'

更新部署

清除旧数据后重新运行:

scp dist/aka-server root@<robot>:
ssh root@<robot> 'rm -rf /root/AKA-00 && aka-server'

工作原理

aka-server 是一个自解压程序:

  1. 首次运行时自动解压项目文件到 ${AKA_HOME:-/root/AKA-00}
  2. 执行 uart_init.sh 初始化串口(如果存在)
  3. 启动 python3 run.py 运行 Web 服务

后续运行时跳过解压步骤,直接启动服务。

初始化配置

这部分为机器人的初始化部分,都会在用户拿到设备前实现,如果用户需要自行初始化也可以按照本流程实现。

烧录镜像

Releases下载最新镜像,通过烧入工具将镜像烧录到tf卡中,镜像中会自带一份项目文件。

连接主控

通过type-c接口可以将板子连接到电脑上

在win下在终端里输入ipconfig,找到一个新的以太网,例如 10.163.124.100。 之后可以使用ssh进行连接,ssh root@10.163.124.1

部署 aka-server

aka-server 拷贝到控制板,一条命令完成初始化:

# 1. 拷贝到控制板
scp dist/aka-server root@<robot>:/usr/local/bin/

# 2. 一键初始化(解压 + AP 热点 + DHCP + 开机自启)
ssh root@<robot> 'aka-server --init'

--init 自动完成:

  • 解压项目文件到 /root/AKA-00
  • 配置 AP 热点(SSID: chenlong-robot-xxxxx,基于 MAC 地址唯一)
  • 配置 DHCP(192.168.4.100-200)
  • 写入 S98apstart / S99webstart 自启脚本
  • 立即启动热点

之后每次开机自动运行 aka-server。如需手动更新:

scp dist/aka-server root@<robot>:/usr/local/bin/
ssh root@<robot> 'rm -rf /root/AKA-00 && aka-server'

HTTPS 证书生成命令

  • 无交互生成自签名证书,有效期10年(3650天)
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3650 -nodes -subj "/C=CN/ST=Beijing/L=Beijing/O=MyOrg/OU=MyDept/CN=localhost"

网络配置

修改 /etc/wpa_supplicant.conf 文件

ctrl_interface=/var/run/wpa_supplicant
ap_scan=1

network={
  ssid="wifi名"
  psk="wifi密码"
  priority=8
}

network={
  ssid="#####"
  psk="********"
  priority=5
}

network={
  key_mgmt=NONE
  priority=1
}

镜像烧录

本文档介绍如何将系统镜像烧录到开发板。

准备工作

所需工具

  • SD 卡(2GB或以上)
  • SD 卡读卡器
  • BalenaEtcher 或其他镜像烧录工具

下载镜像

从项目 releases 页面下载最新的系统镜像文件(.img 格式)。 镜像文件地址

烧录步骤

Windows 系统

  1. 插入 SD 卡
  2. 打开 BalenaEtcher
  3. 点击 "Flash from file",选择下载的镜像文件
  4. 点击 "Select target",选择 SD 卡设备
  5. 点击 "Flash" 开始烧录
  6. 等待烧录完成(约 5-10 分钟)

macOS / Linux 系统

使用 dd 命令烧录:

# 查看 SD 卡设备名称
diskutil list

# 卸载 SD 卡(假设设备为 /dev/disk2)
diskutil unmountDisk /dev/disk2

# 烧录镜像(注意:of 后面的设备名称不能包含 partition 号)
sudo dd if=./aka-image.img of=/dev/rdisk2 bs=4M status=progress

# 烧录完成后弹出 SD 卡
diskutil eject /dev/disk2

首次启动

  1. 烧录完成后,将 SD 卡插入开发板的 SD 卡槽
  2. 连接电源
  3. 等待系统启动(约 1-2 分钟)
  4. 通过串口或网络连接进行后续配置,详见初始化配置

常见问题

无法启动

  • 检查电源是否正常供电
  • 确认 SD 卡已正确插入
  • 尝试重新烧录镜像

Web 界面

启动服务后,访问 http://<机器人IP>/ 进入 Web 控制界面。

control_page

功能区域

遥控器

通过方向键控制机器人运动:

  • 前进/后退:前进/后退
  • 左转/右转:左转/右转

夹爪控制

  • 抓取:控制机械臂向下夹取夹爪闭合
  • 释放:控制机械臂夹爪张开

WiFi 配置

访问 WiFi 配置页面,可重新设置机器人连接的 WiFi 网络。

详细步骤见 WiFi 配置

进入试验平台

可进入自带的实验平台进行实验

WebSocket 控制接口

AKA-00 提供 WebSocket 通道用于低延迟实时控制底盘运动,替代 HTTP REST 轮询。

连接

ws://<机器人IP>/ws/control

允许任意来源跨域访问。连接时自动禁用 Nagle 算法,延迟 < 1ms。

协议格式

双方通信均为二进制帧。

客户端 → 服务端(控制指令)

Offset字节数描述
01帧头 0xAA
11X 轴(转向),有符号 int8,-100 ~ 100
21Y 轴(油门),有符号 int8,-100 ~ 100

电机映射:

左轮 = Y + X
右轮 = Y - X

结果限幅到 [-100, 100]

示例:

操作字节说明
前进 50AA 00 32X=0, Y=50
后退 30AA 00 E2X=0, Y=-30(补码)
左转 25AA E7 00X=-25, Y=0
右转 25AA 19 00X=25, Y=0
停止AA 00 00X=0, Y=0

服务端 → 客户端(状态上报)

Offset字节数描述
01帧头 0xBB
1-22左轮速度,有符号 int16 LE,单位 m/s × 1000
3-42右轮速度,有符号 int16 LE,单位 m/s × 1000

推送策略:速度变化时立即推送,无变化时每 2 秒发一次心跳。

示例:

速度字节说明
左右均 0.05 m/sBB 32 00 32 00left=50, right=50
左 0.03 右 0.01BB 1E 00 0A 00left=30, right=10
停止BB 00 00 00 00left=0, right=0

生命周期

  • 连接打开:服务端注册客户端,启动 200ms 定时器推送状态
  • 连接关闭:服务端自动执行 run_motor(0, 0) 停止电机
  • 异常断开:TCP 断开时 Tornado 触发 on_close,同样停止电机

前端示例

const ws = new WebSocket("ws://192.168.4.1/ws/control");
ws.binaryType = "arraybuffer";

// 发送:前进 50
const x = 0, y = 50;
ws.send(new Uint8Array([0xAA, x & 0xFF, y & 0xFF]));

// 接收状态
ws.onmessage = (event) => {
    const buf = new DataView(event.data);
    if (buf.getUint8(0) === 0xBB) {
        const leftSpeed = buf.getInt16(1, true) / 1000;
        const rightSpeed = buf.getInt16(3, true) / 1000;
        console.log(`左: ${leftSpeed} m/s, 右: ${rightSpeed} m/s`);
    }
};

注意事项

  • 连接断开后电机自动停止,无需额外发送停止指令
  • 每个 WebSocket 连接独立控制电机,多个连接同时发送会导致竞争
  • 控制值限幅 ±100,超出范围会被裁剪

API 文档

获取 IP 地址

GET /api/ip

响应:

{
  "ip": "192.168.1.100"
}

控制接口

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

参数

参数类型必填说明
actionstring动作类型
speedint速度 0-50
timeint持续时间(毫秒)

action 可选值

说明
up前进
down后退
left左转
right右转
stop停止
grab抓取
release释放

示例

# 前进
curl "http://<ip>/api/control?action=up&speed=30&time=1000"

# 左转
curl "http://<ip>/api/control?action=left&speed=20&time=500"

# 抓取
curl "http://<ip>/api/control?action=grab"

# 释放
curl "http://<ip>/api/control?action=release"

距离标定

小车支持通过 YOLO 视觉检测 + 标定公式估算目标物体的真实距离。

标定公式

D = m / P + c
符号含义单位
D目标物体的真实距离cm
P检测框在画面中的像素尺寸(取宽高中的较大值)px
m标定乘数,由相机焦距和物体实际尺寸决定
c标定偏移,修正系统误差

标定参数

标定参数 mc 配置在 app/config.pyHardwareConfig 中:

@dataclass(frozen=True)
class HardwareConfig:
    # ...
    # 距离标定: D = m / P + c
    calib_m: float = 2671.82
    calib_c: float = -2.82

修改后重启小车服务即可生效。

如何标定:将目标物体(如网球)放在已知距离处,在画面中测量其像素尺寸 P,代入公式反算出适合自己场景的 mc 值。

获取标定参数

小车的 /api/camera/snapshot 接口在返回图片的同时,会携带当前的标定参数:

GET /api/camera/snapshot

响应:

{
  "image": "<base64 jpeg>",
  "width": 320,
  "height": 240,
  "format": "jpeg",
  "m": 2671.82,
  "c": -2.82
}
字段说明
image320×240 的 JPEG 图片(letterbox 等比缩放)
m标定乘数
c标定偏移

YOLO 距离仪表盘

项目提供了电脑端仪表盘 tests/server_dashboard.py,可从浏览器直观查看检测结果和距离估算。

启动

python tests/server_dashboard.py --model tests/model/tennis.onnx --port 8080

浏览器打开 http://localhost:8080,输入小车 IP 地址(如 192.168.4.1),点击「开始」即可。

工作流程

小车                         电脑端仪表盘
─────                        ─────────────
/api/camera/snapshot  ←───  拉取图片 + m, c
                             本地 YOLO 检测目标
                             计算 D = m / P + c
                             画框标注,显示距离

界面说明

区域内容
距离显示实时显示计算出的距离值(cm)
标定参数显示当前使用的 m、c 值
P 值显示检测框的像素尺寸
图片320×240 画面,检测框以绿色矩形标注

参数说明

参数默认值说明
--modeltennis.onnxYOLO ONNX 模型路径
--port8080本机监听端口

如果没有 YOLO 模型或模型加载失败,仪表盘仍可运行,仅显示图片和 m/c 参数,不进行检测。

使用sg2002

SG2002 是一款面向 AIoT 领域的高性能、低功耗 SoC,内置多个处理器核心,集成 TPU、视频编解码器、丰富外设接口,适用于智能视觉、边缘计算等场景。

硬件架构

  • 处理器

    主处理器: RISCV C906 @ 1.0Ghz 和 ARM Cortex-A53 @ 1.0Ghz 协处理器: RISCV C906 @700Mhz

  • TPU

    算力为 1TOPS(INT8),适用于AI推理计算

  • 视频子系统

    视频输出:支持 2L MIPI DSI 输出(分辨率 2880×1620@30fps),兼容 LVDS、BT.601/656/1120 等传统接口。
    视频输入:支持 ISP(图像信号处理器),最高 5MP@30fps;支持 4L 或 2L+2L MIPI CSI 接口,兼容 DVP、Sub-LVDS、HisPI 等。
    视频编解码:解码:H.264,支持 5MP@30fps。
    编码:H.264/H.265,支持 5MP@30fps。

连接方式

  • 串口连接

    sudo apt install minicom     # 安装minicom
    minicom -D /dev/ttyUSB0 -b 115200    # 连接串口,用户名:root,密码:root
    
  • usb rndis 网口连接

    ip a show     # 查看网口信息.如果主机是10.245.118.100,则开发板是10.245.118.1。
    ssh root@10.245.118.1    # 连接开发板,密码:root
    
  • wifi 连接

    # 假设分配的地址为192.168.1.2
    ssh root@192.168.1.2    # 连接开发板,密码:root
    

配置 UART 串口

  • 验证方法

    # 开发板上执行(利用Python的pyserial库)
    python3 -m serial.tools.miniterm /dev/ttyS0 115200    # 一般 UARTx 对应 /dev/ttySx
    
    # 主机上执行(利用minicom)
    minicom -D /dev/ttyUSB0 -b 115200    # 连接串口
    
  • uart0 默认开启,无需配置

  • uart1 默认开启,无需配置。但如果要同时使用uart1和uart2, 则需要进行配置。

    devmem 0x03001070 32 0x2 # GPIOA 28 UART2 TX
    devmem 0x03001074 32 0x2 # GPIOA 29 UART2 RX
    devmem 0x03001068 32 0x6 # GPIOA 18 UART1 RX
    devmem 0x03001064 32 0x6 # GPIOA 19 UART1 TX
    
  • uart3 引脚默认复用为SDIO。而SDIO被用于wifi连接。所以在有wifi连接的情况下,不能使用uart3。

    devmem 0x030010D0 32 0x5 # GPIOP 18 UART3 CTS
    devmem 0x030010D4 32 0x5 # GPIOP 19 UART3 TX
    devmem 0x030010D8 32 0x5 # GPIOP 20 UART3 RX
    devmem 0x030010DC 32 0x5 # GPIOP 21 UART3 RTS
    

代码结构

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   # 遥控器页面
│   │   │   └── WiFiConfigPage.tsx     # WiFi配置页面
│   │   └── ...
│   ├── package.json
│   └── vite.config.ts
│
├── models/                      # YOLOv8 模型文件
│   ├── best.onnx               # CPU 推理模型
│   └── best.rknn               # RK3588 推理模型
│
├── static/                     # Flask 静态文件
└── templates/                  # Flask 模板

关键模块

文件功能
run.pyFlask 服务器启动,支持 HTTP/HTTPS
app/__init__.pyFlask 应用工厂,初始化硬件驱动
app/routes/api.pyHTTP API,提供运动/夹爪控制
src/arm_control/舵机通信协议实现
src/base_control/n20/PWM N20电机速度控制

调试方法

串口连接

# 安装 minicom
sudo apt install minicom

# 连接串口
minicom -D /dev/ttyUSB0 -b 115200

网络连接

USB RNDIS 网口

# 查看网口
ip a show

# 如果主机是 10.245.118.100,则开发板是 10.245.118.1
ssh root@10.245.118.1

WiFi SSH

ssh root@<机器人IP>

日志查看

# 查看运行日志
cat app.log

# 实时查看日志
tail -f app.log

测试硬件

# 测试电机
python car_test.py

网络诊断

# 检测网络连通性
ping www.baidu.com

# 检测外网访问
curl www.baidu.com

HTTPS 证书

如需启用 HTTPS,需生成自签名证书:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3650 -nodes -subj "/C=CN/ST=Beijing/L=Beijing/O=MyOrg/OU=MyDept/CN=localhost"

自定义镜像的制作

1. 基础镜像的选择

我们需要选择一个基础镜像,在它的基础上进行修改。从项目 releases 页面下载最新的系统镜像文件(.img 格式)。 镜像文件地址

2. 镜像的挂载

我们需要挂载镜像文件到本地,以便进行修改。具体步骤如下:

sudo losetup -fP /path/to/image.img --show  # 把镜像对应到loop设备,返回loop设备的路径
# 假设返回的loop设备路径为/dev/loop0
sudo mount /dev/loop0p2 /mnt    # 挂载loop设备的p2分区到/mnt目录

3. 镜像的修改

在挂载后,我们可以对镜像文件进行修改。具体步骤如下:

cd /mnt/root/ # 进入挂载目录
rm -rf AKA-00 # 删除AKA-00目录
cp -r /path/to/AKA-00 . # 复制AKA-00目录到挂载目录
# 注:如果frontend有更新,需要重新生成static目录

4. 镜像的卸载

在修改完成后,我们可以卸载镜像文件。

sudo umount /mnt    # 卸载loop设备
sudo losetup -d /dev/loop0    # 卸载loop设备

5. 镜像的压缩

在修改完成后,我们可以压缩镜像文件,以便于传输。

xz -zk /path/to/image.img

AKA-00教育机器人测试文档 - 测试概述与策略


1. 测试概述

1.1 文档目的

本文档旨在为教育机器人(AKA-00教育机器人)提供从实验室到产品化过程中的标准测试流程指导。测试覆盖硬件功能、极限工况等多个方面,以验证机器人的功能完整性、稳定性和鲁棒性,确保产品交付质量。

1.2 测试范围

测试领域测试内容
硬件功能测试电机测试、电机控制电路模块测试、摄像头测试、舵机测试、舵机控制电路模块测试、电池测试、降压模块测试、UART通信测试、NPU功能测试(YOLO网球识别测试)、WiFi功能测试(SSH连接测试)
极限工况测试电机连续运行温度测试、舵机连续运行温度测试、高温/低温环境测试、阳光直射测试、长时间连续运行测试(40分钟)
交互测试手机APP遥控
系统集成测试完整捡球流程、多球场景、自主模式切换

1.3 教育机器人基本信息

部件描述
底盘两轮驱动的四轮小车,电机驱动
机械臂三关节结构,3个舵机分别控制2个关节和1个夹爪
摄像头USB接口,用于图像采集和物体识别
电池7.5V电池,分出一路降压(7.5V给舵机,5V给控制板和电机)
控制板sg2002芯片,Linux/StarryOS系统
通信接口USB控制摄像头,两路UART分别控制电机和舵机

1.4 测试环境

环境类型描述
室内环境实验室、体育馆等平坦地面,常温环境(25±5℃)
室外环境网球场、操场等实际使用场景
高温环境40℃环境箱
低温环境0℃环境箱
阳光直射环境室外阳光直射条件

1.5 测试设备清单

设备名称规格/型号用途
教育机器人aka01b被测设备
sg2002开发板Linux/StarryOS系统主控单元
USB摄像头-图像采集
机械臂(三关节)3舵机控制网球拾取
手机APP-遥控控制
网球标准网球测试目标
红桶/黑色网球袋-目标容器
万用表-电压测量
红外测温仪/热电偶-温度测量
计时器-时间记录
串口调试工具-UART测试
SSH客户端-远程连接测试
环境箱-高低温测试

1.6 参考文档

  • 《0_测试需求.md》

2. 测试策略

2.1 测试方法

  • 黑盒测试:验证功能是否符合预期,不关注内部实现
  • 白盒测试:检查代码逻辑和算法正确性
  • 集成测试:验证各模块协同工作能力
  • 系统测试:验证整个系统在真实环境下的表现
  • 极限测试:验证极端工况下的系统稳定性

2.2 测试分类

测试级别测试内容测试方法
单元测试单个功能模块(电机、舵机、摄像头等)白盒测试
集成测试模块间协作(UART通信等)黑盒测试
系统测试完整系统功能(捡球流程等)黑盒测试
极限工况测试极端环境条件下的稳定性黑盒测试
验收测试验证是否满足需求用户验收

2.3 测试流程

  1. 测试准备:搭建测试环境、准备测试设备、明确测试参数(如安全温度上限)
  2. 单元测试执行:按照测试用例执行各硬件模块测试
  3. 集成测试执行:验证模块间协同工作能力
  4. 极限工况测试:在极端环境下验证系统稳定性(包括组装过程中的电机和舵机连续运行温度测试)
  5. 系统测试执行:验证完整功能流程
  6. 缺陷记录:记录测试中发现的问题
  7. 缺陷修复:开发人员修复问题
  8. 回归测试:验证修复效果
  9. 测试报告:汇总测试结果

2.4 测试优先级

优先级测试类别说明
P0硬件功能测试确保核心硬件模块正常工作
P1极限工况测试验证极端环境下的稳定性(如40分钟连续运行温度测试)
P2交互测试确保用户交互功能正常
P3系统集成测试验证完整系统功能

文档版本:V1.0
创建日期:2026-06-11
文档状态:待审核

AKA-00教育机器人测试文档 - 硬件测试


3. 硬件测试

3.1 电机测试与电机控制电路测试

3.1.1 测试目标

验证电机驱动功能和电机控制电路模块的工作状态,包括电机转动和控制芯片状态。

3.1.2 测试环境

  • 底盘垫高,车轮离地
  • 计时器

3.1.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-001电机前进驱动1. 启动机器人
2. 发送前进指令
3. 观察电机转动
电机正常转动
HW-002电机后退驱动1. 启动机器人
2. 发送后退指令
3. 观察电机转动
电机正常转动
HW-003电机左转驱动1. 启动机器人
2. 发送左转指令
3. 观察电机转动
电机正常转动
HW-004电机右转驱动1. 启动机器人
2. 发送右转指令
3. 观察电机转动
电机正常转动
HW-006运动停止1. 机器人运动中
2. 发送停止指令
电机立即停止转动
HW-008左电机独立控制1. 单独驱动左电机
2. 观察右电机状态
3. 记录左电机转动情况
仅左电机转动,右电机保持静止
HW-009右电机独立控制1. 单独驱动右电机
2. 观察左电机状态
3. 记录右电机转动情况
仅右电机转动,左电机保持静止

3.2 摄像头测试与控制板USB测试

3.2.1 测试目标

验证摄像头的图像采集功能是否正常。

3.2.2 测试环境

  • 室内测试环境

3.2.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-011摄像头图像采集1. 启动摄像头
2. 抓取一张图片
3. 检查图像是否成功保存
成功抓取并保存一张图片

3.3 舵机测试与舵机控制电路测试

3.3.1 测试目标

验证舵机驱动功能和舵机控制电路模块的工作状态,包括3个舵机的独立控制。

3.3.2 测试环境

  • 平坦地面
  • 计时器

3.3.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-019舵机1(关节1)控制1. 发送舵机1转动指令
2. 观察舵机1运动
舵机1按指令转动
HW-020舵机2(关节2)控制1. 发送舵机2转动指令
2. 观察舵机2运动
舵机2按指令转动
HW-021舵机3(夹爪)控制1. 发送夹爪张开/闭合指令
2. 观察夹爪状态
夹爪正常张开和闭合

3.4 电池测试

3.4.1 测试目标

验证12V电池的输出电压和续航时间是否满足要求。

3.4.2 测试环境

  • 室内/室外测试场地
  • 满电状态的电池
  • 万用表
  • 计时器

3.4.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-026电池输出电压测试1. 电池满电状态
2. 测量电池输出电压
电池输出电压为7.5V±5%
HW-027连续工作续航1. 充满电
2. 启动自主捡球模式
3. 记录工作时间直到电量耗尽
续航时间≥[预期值]小时

3.5 降压模块测试

3.5.1 测试目标

验证降压模块的输出电压和输出电流是否正确(7.5V给舵机供电,5V给控制板和电机供电)。

3.5.2 测试环境

  • 实验室测试环境
  • 万用表
  • 电流表

3.5.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-030控制板供电降压模块测试1. 连接电池到降压模块
2. 测量控制板供电输出电压
输出电压为5V±5%
HW-031降压模块输出电压测试1. 连接电池到降压模块
2. 测量各路输出电压
3. 记录测量值
舵机供电输出7.5V±5%,控制板供电输出5V±5%
HW-032降压模块输出电流测试1. 连接电池到降压模块
2. 测量各路输出电流
3. 记录测量值
舵机供电电流≤[预期值]A,控制板供电电流≤[预期值]A

3.6 UART通信测试

3.6.1 测试目标

验证控制板两路UART接口的通信功能,分别用于控制电机和舵机。

3.6.2 测试环境

  • 实验室测试环境
  • 串口调试工具
  • 电机控制板
  • 舵机控制板

3.6.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-034UART1(电机控制)通信测试1. 连接UART1到电机控制板
2. 发送电机控制指令
3. 检查通信状态和电机响应
UART通信正常,电机按指令动作
HW-035UART2(舵机控制)通信测试1. 连接UART2到舵机控制板
2. 发送舵机控制指令
3. 检查通信状态和舵机响应
UART通信正常,舵机按指令动作

3.7 NPU功能测试(含YOLO网球识别)

3.7.1 测试目标

验证控制板NPU(神经网络处理器)的YOLO网球识别功能。

3.7.2 测试环境

  • 室内测试环境
  • 网球

3.7.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-039NPU网球识别1. 启动YOLO识别功能
2. 放置网球
3. 检查视频帧识别结果
能在视频帧里正确识别网球

3.8 WiFi功能测试

3.8.1 测试目标

验证控制板WiFi连接功能和SSH远程连接能力。

3.8.2 测试环境

  • 室内测试环境
  • WiFi网络环境
  • SSH客户端

3.8.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
HW-043WiFi连接测试1. 控制板接入WiFi网络
2. 检查连接状态
成功连接WiFi,获取IP地址
HW-044SSH远程连接测试1. 通过SSH客户端连接控制板
2. 执行命令验证连接
SSH连接成功,命令执行正常

文档版本:V1.0
创建日期:2026-06-11
文档状态:待审核

AKA-00教育机器人测试文档 - 极限工况测试


4. 极限工况测试

4.1 测试目标

验证机器人在极端环境条件下的安全运行能力,包括不同温度环境、阳光直射等工况下的长时间运行稳定性。

4.2 测试环境

  • 高温测试环境(40℃)
  • 低温测试环境(0℃)
  • 室外阳光直射环境
  • 温度测量设备
  • 计时器

4.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
EX-007电机连续运行温度测试1. 安装完整底盘后
2. 控制电机连续最大速度转动40分钟
3. 测量电机控制芯片温度
电机控制芯片温度≤[实测安全温度]℃
EX-008舵机连续运行温度测试1. 安装完整机械臂后
2. 控制舵机依次最大角度转动一次,执行抓取释放循环40分钟
3. 测量舵机和舵机控制芯片温度
舵机温度≤[实测安全温度]℃
舵机控制芯片温度≤[实测安全温度]℃
EX-001高温环境连续运行测试1. 在40℃环境下启动机器人
2. 持续高强度运动40分钟(一节课时间)
3. 测量电机控制芯片温度
电机控制芯片温度≤[实测安全温度]℃
EX-002低温环境连续运行测试1. 在0℃环境下启动机器人
2. 持续高强度运动40分钟
3. 测量各关键部件温度
各部件工作正常,无异常低温问题
EX-003阳光直射环境测试1. 在室外阳光直射环境下
2. 持续运行40分钟
3. 测量控制板和电池温度
控制板温度≤65℃,电池温度≤55℃
EX-004室内环境连续运行测试1. 在室内常温环境下
2. 持续高强度运动40分钟
3. 测量电机控制芯片温度
电机控制芯片温度≤[实测安全温度]℃
EX-005室外环境连续运行测试1. 在室外自然环境下
2. 持续高强度运动40分钟
3. 测量电机控制芯片温度
电机控制芯片温度≤[实测安全温度]℃
EX-006湿度环境测试1. 在高湿度环境(85%RH)下
2. 持续运行2小时
3. 检查是否有结露或短路
无结露现象,电路工作正常

文档版本:V1.0
创建日期:2026-06-11
文档状态:待审核

AKA-00教育机器人测试文档 - 交互测试


5. 交互测试

5.1 手机APP遥控测试

5.1.1 测试目标

验证手机APP遥控功能是否正常。

5.1.2 测试环境

  • 手机安装控制APP
  • 机器人处于遥控模式

5.1.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
INT-001APP连接1. 打开手机APP
2. 搜索机器人
3. 点击连接
成功连接机器人
INT-002APP断开连接1. APP已连接机器人
2. 点击断开连接
成功断开连接
INT-003遥控前进1. 连接APP
2. 点击前进按钮
3. 观察机器人运动
机器人前进
INT-004遥控后退1. 连接APP
2. 点击后退按钮
3. 观察机器人运动
机器人后退
INT-005遥控左转1. 连接APP
2. 点击左转按钮
3. 观察机器人运动
机器人左转
INT-006遥控右转1. 连接APP
2. 点击右转按钮
3. 观察机器人运动
机器人右转
INT-007遥控停止1. 机器人运动中
2. 点击停止按钮
3. 观察机器人状态
机器人停止
INT-008模式切换1. 遥控模式下
2. 点击切换到自主模式
3. 观察机器人状态
成功切换到自主捡球模式

文档版本:V1.0
创建日期:2026-06-11
文档状态:待审核

AKA-00教育机器人测试文档 - 系统集成测试


6. 系统集成测试

6.1 完整捡球流程测试

6.1.1 测试目标

验证机器人完整捡球流程的功能完整性,包括自主捡球模式的各项功能。

6.1.2 测试环境

  • 室内/室外测试场地
  • 放置网球和目标容器

6.1.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
SYS-001启动自主模式1. 启动机器人
2. 切换到自主捡球模式
3. 观察机器人行为
机器人开始搜索网球
SYS-002多球完整流程1. 放置5个网球和1个目标容器
2. 启动自主捡球模式
3. 观察完整流程
机器人依次完成所有网球的捡取
SYS-003模式切换回遥控1. 自主模式下
2. 切换到遥控模式
3. 观察机器人状态
成功切换到遥控模式

6.2 性能指标测试

6.2.1 测试目标

验证机器人的性能指标是否满足要求。

6.2.2 测试环境

  • 室内/室外测试场地

6.2.3 测试用例

用例编号测试场景测试步骤预期结果实际结果状态
SYS-004捡球效率测试1. 放置10个网球
2. 启动自主模式
3. 记录捡球时间
捡球效率≥[预期值]个/分钟
SYS-005移动速度测试1. 测量10米距离
2. 机器人从起点到终点
3. 记录时间
移动速度≥[预期值]米/秒
SYS-006续航时间测试1. 充满电
2. 启动自主模式
3. 记录工作时间
续航时间≥[预期值]小时

文档版本:V1.0
创建日期:2026-06-11
文档状态:待审核

AKA-00教育机器人测试文档 - 缺陷管理与测试报告


7. 缺陷管理

7.1 缺陷分类

级别描述示例
严重导致系统崩溃或无法完成核心功能机器人无法启动、无法识别网球
影响主要功能正常使用捡球成功率低于50%、通信频繁失败
影响次要功能或用户体验偶尔识别错误、APP响应延迟
轻微问题,不影响功能使用界面显示问题、日志格式问题

7.2 缺陷记录模板

字段描述
缺陷编号唯一标识,如 DEF-001
缺陷标题简要描述问题
缺陷级别严重/高/中/低
测试用例关联的测试用例编号
测试环境测试时的环境信息
复现步骤详细描述如何复现问题
预期结果期望的正常行为
实际结果实际观察到的行为
发现日期问题发现日期
发现人测试人员姓名
状态待修复/修复中/已修复/已验证
修复人开发人员姓名
修复日期问题修复日期

8. 测试报告模板

8.1 测试摘要

项目内容
测试名称AKA-00教育机器人测试
测试日期YYYY-MM-DD
测试环境室内/室外
测试人员姓名
测试版本机器人软件版本

8.2 测试结果统计

测试类别用例总数通过数失败数通过率
硬件测试
极限工况测试
交互测试
系统集成测试
总计

8.3 缺陷统计

缺陷级别数量
严重
总计

8.4 测试结论

  • 测试是否通过:□ 通过 □ 未通过
  • 主要问题:
  • 改进建议:
  • 测试人员签名:

附录:测试用例状态说明

状态说明
□ 未执行测试用例尚未执行
□ 通过测试用例执行通过
□ 失败测试用例执行失败
□ 阻塞测试用例因其他问题无法执行

文档版本:V1.0
创建日期:2026-06-11
文档状态:待审核

常见问题

连接问题

Q: 机器人热点无法连接?

  1. 确保机器人已通电且指示灯亮起
  2. 等待 60 秒让网络模块完全启动
  3. 确认电脑/手机 WiFi 已开启

Q: 无法 SSH 登录?

  1. 确认电脑和机器人在同一 WiFi 网络
  2. 检查 IP 地址是否正确
  3. 尝试使用串口连接调试

Q: WiFi 配置页面打不开?

浏览器访问 192.168.4.1,确认已连接机器人热点。


运行问题

Q: 启动失败,提示缺少依赖?

pip install -r requirements.txt

Q: 机械臂不响应?

  1. 检查串口连接是否正确
  2. 确认舵机供电正常
  3. 检查 /dev/ttyACM0 设备是否存在

Q: 电机不转动?

  1. 检查 GPIO 连接
  2. 确认 PWM 引脚配置正确
  3. 检查电机供电

Q: 摄像头无法识别?

  1. 检查 USB 连接
  2. 确认设备文件 /dev/video0 存在
  3. 测试摄像头:ls -l /dev/video0

其他

Q: 如何查看机器人 IP?

访问 http://<机器人IP>/api/ip

Q: 如何开启 HTTPS?

  1. 生成证书:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3650 -nodes
  1. 配置环境变量:
export APP_CERT_PATH=/path/to/cert.pem
export APP_KEY_PATH=/path/to/key.pem

Q: 如何设置开机自启?

参考 机器人连接 中的开机自启配置。