7,745
社区成员
发帖
与我相关
我的任务
分享最近看到一个非常有意思的开源项目:
MindPaw。
它是一只桌面级四足机器狗,原始项目使用 ESP8266 作为核心控制器,同时集成:
项目本身已经比较完整,但 ESP8266 的资源毕竟有限,一旦继续增加:
目标检测
手部关键点
语音识别
本地大模型
环境理解
机器人 Agent
大量任务就只能往云端或者额外的 Edge Gateway 上转移。
所以这次尝试把 MindPaw 做一次比较彻底的架构改造:
使用瑞莎 Dragon Q6A 作为机器狗的端侧 AI 大脑。
我们把项目暂时叫做:
最终目标并不是简单做一台可以遥控的机器狗,而是让它具备:
看见你
↓
理解手势
↓
听懂指令
↓
理解当前环境
↓
维护自己的情绪状态
↓
决定动作与表情
↓
自然语言回应
这样一个完整的:
感知 → 理解 → 决策 → 执行
端侧机器人闭环。
Dragon Q6A 搭载 Qualcomm QCS6490,官方给出的主要能力包括:
Qualcomm QCS6490
CPU:
1× Kryo Prime / Gold Plus @ 2.7GHz
3× Kryo Gold @ 2.4GHz
4× Kryo Silver @ 1.9GHz
GPU:
Adreno 643
AI:
Hexagon DSP
+
Hexagon Tensor Accelerator
AI算力:
最高约 12 TOPS
内存:
LPDDR5
接口:
40-Pin GPIO
UART
SPI
I2C
Camera:
1× MIPI CSI 4-Lane
2× MIPI CSI 2-Lane
网络:
Gigabit Ethernet
Wi-Fi 6
Bluetooth 5.4
USB:
USB 3.1
+
USB 2.0
官方将 Dragon Q6A 定位在机器人、边缘 AI、工业 IoT 等场景,其 QCS6490 内置 Hexagon DSP + Tensor Accelerator,AI 算力最高约 12 TOPS,相比 ESP8266,这已经完全不是简单的“换了一块性能更高的板子”,实际上机器人软件架构也可以跟着发生变化。
原来的设计可以简单理解成:
Camera
│
▼
ESP8266
┌──────────┼──────────┐
│ │ │
Web Gesture Voice
│ │ │
└──────────┼──────────┘
│
Multimodal Fusion
│
▼
PAD Emotion
│
▼
Cloud LLM
│
┌──────────┼──────────┐
▼ ▼ ▼
Action Expression Reply
│
▼
Servo ×4
问题其实很明显。
ESP8266 非常适合:
Wi-Fi
GPIO
简单控制
简单 Web Server
但让它继续承担:
视觉AI
ASR
LLM
Agent
复杂多模态融合
就不现实了。
于是整个机器人最重要的 AI 能力逐渐跑到了:
云端
或者
Edge Gateway
机器人本体反而只剩下执行。
这次我没有简单做:
ESP8266
↓
替换
↓
Q6A
而是重新设计两层架构。
负责:
Camera
视觉模型
手势识别
人物检测
ASR
LLM
Agent
PAD 情绪
多模态融合
Web Service
长期状态
负责:
Servo PWM
动作序列
实时控制
急停
姿态动作
最终:
Dragon Q6A
│
Qualcomm QCS6490
│
┌──────────┼──────────┐
│ │ │
Vision Voice Web
│ │ │
└──────────┼──────────┘
│
Multimodal Fusion
│
▼
PAD Emotion
│
▼
AI Agent
│
▼
Safety Layer
│
UART
│
▼
ESP32 / STM32
│
▼
Servo ×4
这时候 Q6A 就是真正意义上的:
Edge AI Brain
MCU 则退回它真正擅长的位置:
Real-time Motion Controller
Q6A 本身确实提供 40-Pin GPIO,并支持 UART、SPI、I²C 等接口。
但我仍然不建议:
Linux
↓
GPIO
↓
软件PWM
↓
SG90 ×4
原因在于 Linux 并不是硬实时操作系统。
而舵机动作真正需要的是:
稳定PWM
确定性时序
运动序列
失联保护
紧急停止
这些明显更加适合 MCU。
所以硬件结构建议设计成:
Dragon Q6A
│
│ UART / USB Serial
▼
ESP32 / STM32
│
┌──┼──┬──┐
▼ ▼ ▼ ▼
S1 S2 S3 S4
这样即使:
AI程序崩了
Python异常
LLM超时
Linux负载升高
MCU 仍然可以执行:
STOP
或者:
SAFE_POSE
建议准备:
| 硬件 | 作用 |
|---|---|
| Radxa Dragon Q6A | AI 主脑 |
| ESP32 / STM32 | 实时运动控制 |
| SG90 ×4 | 四足运动 |
| USB / MIPI Camera | 视觉输入 |
| USB 麦克风 | 语音输入 |
| Speaker | 语音输出 |
| SSD1306 OLED | 表情显示 |
| MindPaw 3D 打印结构 | 机器人本体 |
第一版 Demo 完全没有必要强行把 Q6A 塞进原来的机器狗外壳。
可以先这样:
桌面
Dragon Q6A
│
USB/UART
│
▼
MindPaw本体
等整个软件链路跑通以后,再重新设计结构。
原 MindPaw 使用 OV2640。
到了 Q6A 后,可以直接考虑:
MIPI CSI Camera
或者:
USB Camera
Dragon Q6A 本身提供一个 4-Lane MIPI CSI 和两个 2-Lane MIPI CSI,同时还提供 USB 3.1 / USB 2.0 接口。
因此机器人视觉链路可以直接变成:
Camera
↓
V4L2 / OpenCV
↓
QAI AppBuilder
↓
QAIRT
↓
Hexagon NPU
不再需要:
Camera
↓
JPEG
↓
Wi-Fi
↓
Edge Gateway
↓
AI
在真正移植 MindPaw 之前,我建议先验证 NPU。
Radxa 官方已经提供 Dragon Q6A 的 QAIRT NPU 示例。
首先确认 NPU 环境已经启用。
官方当前系统使用:
FastRPC
连接 Qualcomm DSP/NPU。
可以检查:
ls /dev/fastrpc*
正常可能看到:
/dev/fastrpc-adsp
/dev/fastrpc-cdsp
/dev/fastrpc-cdsp-secure
如果使用官方系统,可以根据官方文档安装:
sudo apt update
sudo apt install \
fastrpc \
libcdsprpc1
Radxa 官方也提供了 QCS6490 的 ResNet50 NPU 快速验证 Demo,用来确认 Hexagon NPU 推理环境是否正常。
Q6A 最大的一个优势是官方已经提供:
QAI AppBuilder
开发路径。
QAI AppBuilder 本质上是对 Qualcomm AI Runtime,也就是 QAIRT 的进一步封装。
它提供:
Python API
+
C++ API
可以降低:
模型加载
HTP调用
Tensor管理
NPU推理
这部分开发复杂度。
而且官方明确支持:
Dragon Q6A
+
QCS6490
Linux 下运行示例时通常指定:
--chipset 6490
即可获取对应 QCS6490 的模型。
这对机器人项目非常友好。
因为我们的 Agent 主程序完全可以继续写 Python。
先不要急着上大模型。
第一步建议实现:
Camera
↓
YOLOv8
↓
person
↓
Robot
Radxa 当前已经为 Dragon Q6A 提供 QAI AppBuilder 的 YOLOv8-det 示例,而且明确使用 Hexagon NPU 完成推理。
于是我们的视觉模块可以定义一个统一接口:
class VisionState:
def __init__(self):
self.person_detected = False
self.objects = []
self.gesture = None
self.timestamp = 0
摄像头持续运行:
Camera
↓
YOLOv8
↓
person?
↓
VisionState
例如:
{
"person_detected": true,
"objects": [
"person",
"chair",
"cup"
]
}
然后把原 MindPaw 的:
Wave
Palm
Fist
Point
几个核心手势保留下来。
新的实现可以采用:
Camera
↓
Hand Detection
↓
Hand Keypoints
↓
Gesture Classifier
这样比原来在 MCU 上做低分辨率轻量识别更加可靠。
最终视觉事件统一输出:
{
"source": "vision",
"person": true,
"gesture": "wave",
"confidence": 0.94
}
然后交给 Agent。
以前 MCU 项目经常这样写:
if gesture...
if voice...
if button...
if web...
规模一大以后非常难维护。
Linux 环境下更适合统一成:
Event Bus
例如视觉:
{
"source": "vision",
"type": "gesture",
"value": "wave",
"confidence": 0.94
}
语音:
{
"source": "voice",
"type": "speech",
"text": "过来"
}
Web:
{
"source": "web",
"type": "command",
"text": "跳个舞"
}
内部全部进入:
Event Bus
│
┌────────────┼────────────┐
│ │ │
Vision Voice Web
│ │ │
└────────────┼────────────┘
▼
Multimodal Fusion
这样以后增加:
Touch
LiDAR
IMU
距离传感器
VLM
都不用改变整体架构。
MindPaw 里面比较有意思的设计之一,就是使用 PAD:
Pleasure
Arousal