7,697
社区成员
发帖
与我相关
我的任务
分享最近看到一个挺有意思的开源机器人项目:Rush Mog,它是一辆致敬 Unimog 的麦克纳姆轮智能小车,原项目采用 STM32F103 + ESP32-S3-CAM,已经具备底盘运动、手机控制、摄像头、语音等基础能力,同时规划了目标识别、自动寻物、LiDAR、机械臂和 VLA。这次我们尝试做一次更彻底的升级,改造后的项目叫:RushMog-Q6A,它核心使用瑞莎 Dragon Q6A 作为机器人的端侧 AI 大脑,把视觉、语音、任务理解和自主决策集中到 QCS6490 上。
原项目的软件架构大致是:
ESP32-S3-CAM
├── Camera
├── Wi-Fi
├── Web
└── 上层控制
STM32F103
├── 麦克纳姆轮
├── 电机
├── PCA9685
├── 机械臂
├── MPU6050
└── TOF
这种结构已经能够完成遥控小车,但如果继续增加:
YOLO目标检测
语音识别
自动寻找目标
机械臂抓取
视觉语言理解
VLA
ESP32 就明显不够用了,原项目虽然已经提出这些方向,但 LiDAR、VLA、机械臂智能控制等部分仍然存在较大的完善空间,所以这次 Q6A 改造的核心并不是:
ESP32
↓
换成更快的板子
而是重新划分机器人的:
大脑和身体。
新的结构非常清晰:
Camera
│
▼
Dragon Q6A
Qualcomm QCS6490
│
┌────────────┼────────────┐
│ │ │
Vision Speech Web
│ │ │
YOLO ASR 手机控制
│ │ │
└────────────┼────────────┘
│
Task Planner
│
Skills
│
Safety Layer
│
UART
│
▼
STM32F103
│
┌────────┴────────┐
│ │
麦克纳姆轮 机械臂
Q6A 负责:
看见、听懂、理解、规划。
STM32 负责:
稳定、实时地执行。
Dragon Q6A 搭载 Qualcomm QCS6490,提供最高约 12 TOPS AI 算力,并集成 Hexagon DSP / Tensor Accelerator,对于这个项目比较关键的是:
QCS6490
Adreno GPU
Hexagon NPU
MIPI CSI
USB Camera
Wi-Fi 6
Bluetooth
40-Pin GPIO
UART
SPI
I2C
同时能够运行完整 Linux,所以原来需要:
ESP32
+
OpenMV
+
树莓派
+
语音模块
共同完成的一部分工作,可以逐渐收敛到:
Dragon Q6A
上。
这次不会把 Rush Mog 推倒重做。
建议保留:
| 模块 | 是否保留 |
|---|---|
| STM32F103 | 保留 |
| JGB37-520 电机 | 保留 |
| 麦克纳姆轮 | 保留 |
| PCA9685 | 保留 |
| MG996R 机械臂 | 保留 |
| MPU6050 | 保留 |
| TOF / LiDAR | 保留 |
| ESP32-S3-CAM | Q6A 替代 |
| OV2640 | USB/MIPI Camera 替代 |
| OpenMV | 删除 |
| Raspberry Pi | 删除 |
| 独立 ASR 板 | 可选删除 |
其中最重要的是:
STM32 一定要留下。
Q6A 很强,但 Linux 并不适合直接承担底盘 PWM、电机闭环和舵机实时控制。
推荐使用:
Q6A
↓
UART / USB Serial
↓
STM32
Q6A 不再发送底层 PWM,而是发送高级动作。
例如:
{
"type": "motion",
"action": "strafe_left",
"speed": 0.35
}
机械臂:
{
"type": "arm",
"action": "grasp"
}
急停:
{
"type": "emergency_stop"
}
STM32 再负责将:
forward
strafe_left
turn_right
grasp
转换成实际的:
四轮转速
电机方向
PWM
舵机角度
这样 AI 层完全不用关心底盘细节。
AI 部分不要一上来就做“大而全”。
第一步先验证:
QCS6490
+
FastRPC
+
QAIRT
+
Hexagon NPU
是否正常。
然后使用:
QAI AppBuilder
作为主要 AI 开发入口。
它可以进一步封装 Qualcomm AI Runtime,同时提供 Python / C++ API,非常适合机器人应用。
第一阶段建议直接运行官方 NPU Demo。
确认环境没有问题以后再开始接 Camera。
Rush Mog 最适合实现的第一个智能功能就是:
自己寻找指定物体。
视觉链路:
USB / MIPI Camera
↓
OpenCV
↓
YOLOv8
↓
QAI AppBuilder
↓
Hexagon NPU
↓
Objects
比如识别出:
{
"label": "bottle",
"confidence": 0.92,
"bbox": [620, 210, 780, 610]
}
接着计算瓶子位于:
left
center
right
再结合 TOF 距离:
{
"target": "bottle",
"direction": "right",
"distance": 1.42
}
这就把“图片中的框”转换成了机器人真正可以使用的信息。
这是 Rush Mog 很有意思的一点。
普通两轮机器人发现物体偏右,通常要:
右转
↓
重新对齐
↓
继续前进
麦克纳姆轮可以直接:
目标偏右
↓
strafe_right
横向移动。
因此可以构成一个非常简单的视觉伺服闭环:
Camera
↓
YOLO
↓
目标中心位置
↓
计算横向误差
↓
麦克纳姆轮横移
↓
目标回到画面中心
例如:
目标偏左
→ 左横移
目标偏右
→ 右横移
目标居中
→ 向前接近
这个 Demo 很适合展示 Q6A 的视觉 AI 不只是“识别到了东西”,而是真的参与机器人运动。
第一版甚至不用大模型。
做一个可靠的状态机即可:
SEARCH
↓
旋转寻找 bottle
↓
检测到目标
↓
ALIGN
↓
左右横移对齐
↓
APPROACH
↓
根据 TOF 向前
↓
目标距离达到阈值
↓
STOP
逻辑类似:
if not detected:
action = "turn_left"
elif direction == "left":
action = "strafe_left"
elif direction == "right":
action = "strafe_right"
elif distance > 0.6:
action = "forward"
else:
action = "stop"
这样就完成第一个真正的:
视觉 → 决策 → 运动
闭环。
原项目本身已经规划机械臂。
Q6A 版本不需要让 AI 直接输出:
Servo1 = 72°
Servo2 = 103°
Servo3 = 46°
而应该抽象成 Robot Skill:
pre_grasp
grasp
lift
place
例如:
arm.pre_grasp()
arm.grasp()
arm.lift()
真正的关节角度和运动序列仍然放在 STM32。
这样完整任务就变成:
发现瓶子
↓
底盘对齐
↓
靠近瓶子
↓
停止
↓
pre_grasp
↓
grasp
↓
lift
后面再加入深度摄像头或者目标位姿估计,就可以继续往真正的移动抓取升级。
Rush Mog 原项目提出了 VLA。
但第一版 Q6A 改造,我更建议实现一个分层的:
VLA-style Architecture
例如用户说:
“帮我把前面的水瓶拿过来。”
Language:
{
"goal": "bring_object",
"target": "bottle"
}
Vision:
{
"target": "bottle",
"direction": "right",
"distance": 1.8
}
Planner 再拆成:
find_object
↓
align_object
↓
approach_object
↓
pick_object
↓
return_home
也就是说:
Vision
+
Language
↓
Task Planner
↓
Robot Skills
↓
Safety
↓
STM32
而不是:
大模型
↓
PWM
这样更容易调试,也更加安全。
最终可以把整个案例包装成一个完整任务。
用户:
“帮我把前面的水瓶拿过来。”
系统开始执行:
语音 / 文本输入
↓
识别任务
↓
target = bottle
↓
Camera
↓
YOLOv8
↓
找到水瓶
↓
麦克纳姆轮横移对齐
↓
TOF测距
↓
向前接近
↓
停止
↓
机械臂抓取
↓
抬起
↓
返回
最终整个系统用到:
QCS6490 CPU
→ Robot Application
Hexagon NPU
→ YOLO / AI
Camera
→ Vision
TOF
→ Distance
Wi-Fi 6
→ Web Control
UART
→ STM32
STM32
→ 电机 + 机械臂
这时候 Q6A 就不只是:
“一块能够运行 YOLO 的开发板。”
而是真正进入了机器人闭环。
Rush Mog 原项目本身已经有一个非常好的机器人骨架:
麦克纳姆轮
+
STM32
+
Camera
+
测距
+
机械臂
+
手机控制
Dragon Q6A 的加入,主要补上:
端侧视觉 AI
+
语音理解
+
任务规划
+
自主决策
最终形成:
Dragon Q6A
│
Qualcomm QCS6490
│
┌───────────┼───────────┐
│ │ │
Vision Language Planner
│ │ │
└───────────┼───────────┘
│
Skills
│
Safety
│
▼
STM32
│
┌───────┴───────┐
│ │
麦克纳姆轮 机械臂
Q6A 负责:
看见、理解和规划。
STM32 负责:
实时、可靠地执行。
相比直接追求一个端到端的大型 VLA 模型,这种:
Vision + Language + Planner + Robot Skills
的分层方案,更适合第一版真实机器人项目。
最终 RushMog-Q6A 就可以从一辆智能遥控麦克纳姆轮小车,进一步变成:
能够自己找目标、接近目标,并使用机械臂完成任务的端侧 AI 移动操作机器人。