iB86/.qoder/quests/project-analysis.md

13 KiB
Raw Blame History

ASR5515机器人控制应用项目分析

项目概述

ASR5515机器人控制应用是一个基于Android平台的多功能机器人控制系统专为智能机器人硬件平台设计。该应用集成了面部表情动画、串口通信、WebSocket网络通信、音频处理和硬件控制等多个核心功能模块形成了一个完整的机器人交互控制系统。

核心特性

  • 面部表情系统:支持动态表情动画播放和管理
  • 串口硬件通信与ASR5515芯片进行实时数据交换
  • 网络实时通信通过WebSocket与云端AI服务进行语音交互
  • 音频处理引擎集成Opus编解码器实现高质量音频传输
  • 硬件控制系统GPIO和电机精确控制
  • 触摸检测支持:内核级头部触摸检测

技术架构

架构概览

graph TB
    subgraph "应用层"
        MainActivity[MainActivity主控制器]
        RobotFaceManager[面部动画管理器]
    end
    
    subgraph "业务逻辑层"
        SerialPortHelper[串口通信助手]
        WebSocketManager[WebSocket管理器]
        OpusUtils[音频编解码工具]
        GpioManager[GPIO管理器]
        MotorController[电机控制器]
    end
    
    subgraph "协议层"
        ASR5515Protocol[ASR5515通信协议]
        WebSocketProtocol[WebSocket消息协议]
    end
    
    subgraph "JNI接口层"
        OpusJNI[Opus音频库JNI]
    end
    
    subgraph "硬件抽象层"
        SerialPort[串口硬件接口]
        GPIO[GPIO硬件接口]
        AudioHardware[音频硬件接口]
    end
    
    subgraph "内核层"
        TouchDriver[头部触摸检测驱动]
    end
    
    MainActivity --> RobotFaceManager
    MainActivity --> SerialPortHelper
    MainActivity --> WebSocketManager
    MainActivity --> OpusUtils
    MainActivity --> GpioManager
    MainActivity --> MotorController
    
    SerialPortHelper --> ASR5515Protocol
    WebSocketManager --> WebSocketProtocol
    OpusUtils --> OpusJNI
    
    SerialPortHelper --> SerialPort
    GpioManager --> GPIO
    OpusUtils --> AudioHardware
    
    TouchDriver --> GPIO

分层架构设计

系统采用分层架构模式,从上至下分为:

层级 职责 主要组件
应用层 UI交互和业务流程控制 MainActivity, RobotFaceAnimationManager
业务逻辑层 核心功能实现和管理 各种Manager和Helper类
协议层 通信协议定义和解析 ASR5515Protocol, WebSocket协议
JNI接口层 Java与C++代码桥接 Opus音频库JNI
硬件抽象层 硬件接口封装 SerialPort, GPIO, Audio接口
内核层 底层驱动程序 头部触摸检测驱动

核心功能模块

1. 机器人面部动画系统

模块架构

classDiagram
    class RobotFaceAnimationManager {
        -Context context
        -ImageView targetView
        -Handler uiHandler
        -Map~Integer, AnimationDrawable~ animationCache
        +loadFaceAnimation(int animationId)
        +setSpeed(float speed)
        +release()
        -preloadAnimations()
    }
    
    class MainActivity {
        -RobotFaceAnimationManager animationManager
        -Handler handler
        +playRandomFaceAnimation()
    }
    
    MainActivity --> RobotFaceAnimationManager

核心特性

  • 动画资源管理:支持预加载和缓存机制
  • 随机表情切换每20秒自动切换随机表情
  • 动画速度控制:可动态调整播放速度
  • 内存优化:智能缓存和资源释放

2. 串口通信系统

通信架构

sequenceDiagram
    participant App as MainActivity
    participant Manager as ASR5515DeviceManager
    participant Helper as SerialPortHelper
    participant Protocol as ASR5515Protocol
    participant Device as ASR5515硬件
    
    App->>Manager: 初始化设备管理器
    Manager->>Helper: 创建串口连接
    Helper->>Device: 打开串口(/dev/ttyS3)
    
    App->>Manager: 发送设备检查请求
    Manager->>Protocol: 创建检查命令帧
    Protocol->>Helper: 发送二进制数据
    Helper->>Device: 写入串口数据
    
    Device->>Helper: 返回响应数据
    Helper->>Protocol: 解析响应帧
    Protocol->>Manager: 返回设备信息
    Manager->>App: 触发回调通知

协议规范

命令类型 命令字 功能描述
设备检查 0x0065/0x0066 查询设备基本信息
设备重启 0x0067/0x0068 控制设备重启
佩戴检测 0x0105/0x0106 检测设备佩戴状态
心率测量 0x00C9/0x00CA 心率数据采集
血氧测量 0x00CB/0x00CC 血氧数据采集
ECG测量 0x00CD/0x00CE 心电图数据采集

数据帧格式

[命令字(2字节)] + [序列号(2字节)] + [数据长度(2字节)] + [数据载荷(N字节)]

3. WebSocket网络通信

通信流程

stateDiagram-v2
    [*] --> Disconnected
    Disconnected --> Connecting: connect()
    Connecting --> Connected: onOpen()
    Connecting --> Disconnected: onError()
    
    Connected --> Authenticated: sendHello()
    Authenticated --> InCall: sendStart()
    InCall --> Listening: sendListen()
    InCall --> Playing: receiveBinaryAudio()
    
    Listening --> Playing: AI开始说话
    Playing --> Listening: AI说话结束
    
    InCall --> Authenticated: sendEnd()
    Connected --> Disconnected: disconnect()

消息协议

消息类型 方向 描述
hello 客户端→服务端 建立连接握手
start 客户端→服务端 开始语音会话
listen 客户端→服务端 开始监听用户语音
stt 服务端→客户端 语音识别结果
tts 服务端→客户端 语音合成结果
abort 客户端→服务端 中断AI回答
end 客户端→服务端 结束会话

4. 音频处理系统

音频处理流程

flowchart LR
    A[麦克风输入] --> B[AudioRecord]
    B --> C[PCM数据采集]
    C --> D[Opus编码]
    D --> E[WebSocket发送]
    
    F[WebSocket接收] --> G[Opus解码]
    G --> H[PCM数据]
    H --> I[AudioTrack播放]
    I --> J[扬声器输出]
    
    subgraph "编解码参数"
        K[采样率: 16000Hz<br/>通道: 单声道<br/>位深: 16bit<br/>帧大小: 960samples]
    end

音频参数配置

参数 说明
采样率 16000 Hz 语音通信标准采样率
声道配置 单声道 优化传输效率
音频格式 16位PCM 标准音频格式
Opus帧大小 960 samples 60ms音频帧
比特率 32000 bps 平衡质量与带宽

5. 硬件控制系统

GPIO控制架构

classDiagram
    class GpioManager {
        +exportGpio(int pin)
        +setDirection(int pin, String direction)
        +setValue(int pin, int value)
        +getValue(int pin)
        +unexportGpio(int pin)
    }
    
    class MotorController {
        -boolean isInitialized
        +init()
        +controlVerticalCalibration()
        +rotateVerticalToAngle(int direction, int speed, int angle)
        +getVerticalCurrentAngle()
        +getVerticalMaxAngle()
        +getVerticalMinAngle()
        +release()
    }
    
    GpioManager <-- MotorController

控制功能特性

GPIO管理

  • 引脚导出和配置
  • 方向设置(输入/输出)
  • 电平控制(高/低)
  • 蓝牙电源管理GPIO 75

电机控制

  • 垂直运动校准
  • 角度精确控制
  • 传感器状态监控
  • 最大/最小角度检测

数据流架构

音频数据流

flowchart TD
    A[用户语音] --> B[AudioRecord采集]
    B --> C[PCM数据缓冲]
    C --> D[Opus编码器]
    D --> E[WebSocket发送]
    E --> F[云端AI处理]
    
    F --> G[AI语音响应]
    G --> H[WebSocket接收]
    H --> I[Opus解码器]
    I --> J[PCM播放缓冲]
    J --> K[AudioTrack播放]
    K --> L[扬声器输出]
    
    M[麦克风控制] --> |状态切换| B
    N[播放状态检测] --> |自动切换| M

硬件控制数据流

flowchart LR
    A[应用层指令] --> B[设备管理器]
    B --> C[协议封装]
    C --> D[串口发送]
    D --> E[ASR5515硬件]
    
    E --> F[传感器数据]
    F --> G[串口接收]
    G --> H[协议解析]
    H --> I[数据处理]
    I --> J[回调通知]
    J --> K[UI更新]

性能优化策略

内存管理

  • 动画缓存策略:预加载和智能释放
  • 音频缓冲区优化:动态调整缓冲区大小
  • 弱引用使用避免Activity内存泄漏
  • 资源及时释放在onDestroy中清理所有资源

线程优化

  • 单独的音频处理线程:避免阻塞主线程
  • 异步设备通信:串口操作在后台线程执行
  • UI更新优化使用Handler进行线程间通信

电源管理

  • 动态帧率控制:根据电量和温度调整动画帧率
  • 智能麦克风控制AI说话时自动关闭麦克风
  • GPIO电源管理:及时关闭不需要的硬件模块

测试策略

单元测试覆盖

  • 协议解析测试验证ASR5515协议的正确性
  • 音频编解码测试确保Opus编解码质量
  • GPIO控制测试:验证硬件控制的准确性
  • WebSocket通信测试:测试网络连接稳定性

集成测试场景

  • 端到端语音通信:完整的语音交互流程
  • 硬件联调测试:与实际硬件设备的集成测试
  • 压力测试:长时间运行和高频操作测试
  • 异常处理测试:网络断开、硬件故障等异常情况

性能测试指标

  • 音频延迟:端到端语音延迟 < 200ms
  • 内存使用:稳定运行内存占用 < 100MB
  • CPU使用率正常负载下CPU占用 < 30%
  • 电池续航:连续运行时间 > 8小时| 声道配置 | 单声道 | 优化传输效率 | | 音频格式 | 16位PCM | 标准音频格式 | | Opus帧大小 | 960 samples | 60ms音频帧 | | 比特率 | 32000 bps | 平衡质量与带宽 |

5. 硬件控制系统

GPIO控制架构

classDiagram
    class GpioManager {
        +exportGpio(int pin)
        +setDirection(int pin, String direction)
        +setValue(int pin, int value)
        +getValue(int pin)
        +unexportGpio(int pin)
    }
    
    class MotorController {
        -boolean isInitialized
        +init()
        +controlVerticalCalibration()
        +rotateVerticalToAngle(int direction, int speed, int angle)
        +getVerticalCurrentAngle()
        +getVerticalMaxAngle()
        +getVerticalMinAngle()
        +release()
    }
    
    GpioManager <-- MotorController

控制功能特性

GPIO管理

  • 引脚导出和配置
  • 方向设置(输入/输出)
  • 电平控制(高/低)
  • 蓝牙电源管理GPIO 75

电机控制

  • 垂直运动校准
  • 角度精确控制
  • 传感器状态监控
  • 最大/最小角度检测

数据流架构

音频数据流

flowchart TD
    A[用户语音] --> B[AudioRecord采集]
    B --> C[PCM数据缓冲]
    C --> D[Opus编码器]
    D --> E[WebSocket发送]
    E --> F[云端AI处理]
    
    F --> G[AI语音响应]
    G --> H[WebSocket接收]
    H --> I[Opus解码器]
    I --> J[PCM播放缓冲]
    J --> K[AudioTrack播放]
    K --> L[扬声器输出]
    
    M[麦克风控制] --> |状态切换| B
    N[播放状态检测] --> |自动切换| M

硬件控制数据流

flowchart LR
    A[应用层指令] --> B[设备管理器]
    B --> C[协议封装]
    C --> D[串口发送]
    D --> E[ASR5515硬件]
    
    E --> F[传感器数据]
    F --> G[串口接收]
    G --> H[协议解析]
    H --> I[数据处理]
    I --> J[回调通知]
    J --> K[UI更新]

性能优化策略

内存管理

  • 动画缓存策略:预加载和智能释放
  • 音频缓冲区优化:动态调整缓冲区大小
  • 弱引用使用避免Activity内存泄漏
  • 资源及时释放在onDestroy中清理所有资源

线程优化

  • 单独的音频处理线程:避免阻塞主线程
  • 异步设备通信:串口操作在后台线程执行
  • UI更新优化使用Handler进行线程间通信

电源管理

  • 动态帧率控制:根据电量和温度调整动画帧率
  • 智能麦克风控制AI说话时自动关闭麦克风
  • GPIO电源管理:及时关闭不需要的硬件模块

测试策略

单元测试覆盖

  • 协议解析测试验证ASR5515协议的正确性
  • 音频编解码测试确保Opus编解码质量
  • GPIO控制测试:验证硬件控制的准确性
  • WebSocket通信测试:测试网络连接稳定性

集成测试场景

  • 端到端语音通信:完整的语音交互流程
  • 硬件联调测试:与实际硬件设备的集成测试
  • 压力测试:长时间运行和高频操作测试
  • 异常处理测试:网络断开、硬件故障等异常情况

性能测试指标

  • 音频延迟:端到端语音延迟 < 200ms
  • 内存使用:稳定运行内存占用 < 100MB
  • CPU使用率正常负载下CPU占用 < 30%
  • 电池续航:连续运行时间 > 8小时