抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

基于 RK3588 开发板的四轮麦克纳姆轮机器人,支持同一 WiFi 下任意设备(手机、平板、电脑)通过网页浏览器远程控制,集成热成像温度采集、六轴 IMU 监测、USB 摄像头实时回传,前端页面适配移动端触屏。项目开源在 GitHub:Yu-Xiang-Yang/rk3588-multimodal-mecanum

手机操控示例
ipad操控示例

ipad操控示例2

页面适配移动端,竖屏效果最佳。

1 项目背景

WHEELTEC 麦轮底盘原版固件存在停车失效问题——编码器返回值恒为 0,增量式 PI 静态变量不清零,停车指令无效。本项目针对该问题修改了 STM32 固件,并在 RK3588 上搭建了一套完整的多模态控制系统:

  • 网页远程控制:HTTP + MJPEG 推流,任何浏览器都能操控
  • 嵌入式固件修复:增加紧急停车标志,解决停车失效问题
  • 热成像采集:海康 HM-TD2028T-7,输出 256×192 温度矩阵
  • IMU 实时监测:板载 SH3001 六轴传感器
  • USB 摄像头:实时 MJPEG 视频流

2 硬件清单

设备 说明
RK3588 开发板 运行控制服务,ARM64 Linux (Buildroot)
WHEELTEC C12H 主控 STM32,驱动麦轮电机,USB 连接 RK3588
麦轮底盘(D24A) 四轮麦克纳姆轮
SH3001 六轴 IMU 板载,I2C-4,地址 0x36
海康 HM-TD2028T-7 热成像仪,256×192,网线连 eth0
振动 + 霍尔传感器 /dev/ttyUSB0,921600 波特
USB 摄像头 /dev/video41

3 网络架构

WiFi 热点(任意热点,在 start.py 配置名称和密码)
        │
        ├── 📱 手机 / 平板      → 浏览器打开 http://RK3588的IP:8080
        ├── 💻 电脑             → 浏览器打开 http://RK3588的IP:8080
        └── 🤖 RK3588          → 运行 Flask 控制服务 :8080
                  │
                  ├── wlan0  接入热点(控制信号走这里)
                  └── eth0   192.168.1.100(接热成像仪)
                                    │
                                热成像仪 192.168.1.64

使用 iPhone 热点时板子 IP 固定为 172.20.10.3(iPhone 热点子网固定),其他热点以实际分配 IP 为准。

4 项目结构

rk3588-multimodal-mecanum/
├── README.md
├── host/                          ← 首次部署时在 PC 上运行
│   ├── start.py                   ← 一键启动 ★(修改热点名/密码)
│   ├── connect_wifi.py            ← 单独重连 WiFi
│   └── motor_web/                 ← 推送到 RK3588 后台运行的服务
│       ├── server.py              ← Flask 控制服务器(主程序)
│       └── daemon.py              ← 守护进程包装器
│
├── firmware/                      ← STM32 完整 Keil 工程(可直接编译)
│   ├── USER/Template.uvprojx      ← 用 Keil μVision 5 打开
│   ├── BALANCE/CONCTRL/
│   │   ├── conctrl.c              ← ★ 已修改:增加紧急停车机制
│   │   └── conctrl.h              ← ★ 已修改:导出 Emergency_Stop 变量
│   ├── HAREWARE/                  ← 外设驱动
│   ├── CORE/                      ← 启动文件
│   ├── STM32F10x_FWLib/           ← ST 官方标准外设库
│   └── SYSTEM/
│
├── thermal/                       ← 热成像采集(部署到 RK3588)
│   ├── thermal_save_local.py      ← 温度矩阵采集主脚本 ★
│   ├── thermal_matrix_sdk.py      ← SDK 抓图+附加数据方式
│   ├── thermal_sdk_probe.py       ← 数据格式诊断工具
│   └── thermal_fps_test.c         ← C 语言帧率测试(需交叉编译)
│
└── imu/                           ← IMU 监测(部署到 RK3588)
    ├── sh3001_monitor.py          ← SH3001 六轴实时监测
    └── sh3001_calib.example.json  ← 校准文件示例

5 快速开始

5.1 配置 WiFi 热点

整个项目里唯一需要修改的配置只有热点名和密码,且只在两个文件中。

打开 host/start.py,修改第 18-19 行:

# host/start.py
SSID     = "Huawei 14 Pro 暗夜紫"   # ← 改成你的热点名
PASSWORD = "00000000"               # ← 改成你的热点密码

同样修改 host/connect_wifi.py 第 18-19 行(单独重连 WiFi 时用到):

# host/connect_wifi.py
SSID     = "Huawei 14 Pro 暗夜紫"
PASSWORD = "00000000"

server.pydaemon.py 及所有其他文件不需要改

5.2 首次启动(USB 推送服务)

USB 连接 RK3588,然后在 PC 上运行:

python host/start.py

脚本自动完成:

  1. 检测 ADB USB 连接
  2. 将 RK3588 连接到你的热点
  3. 推送控制服务到板子
  4. 启动 Flask 服务器
  5. 打开浏览器

USB 线只在第一次或更新服务时需要,之后可以拔掉。

5.3 任意设备访问控制页面

同一热点下的任何设备都可以直接用浏览器打开:

http://172.20.10.3:8080
设备 操作
📱 iPhone / Android Safari / Chrome 扫码或输入地址
💻 Windows / Mac 浏览器直接访问
📟 平板 浏览器直接访问

6 控制页面布局

网页适配移动端触屏,四格布局:

┌──────────────────┬──────────────────┐
│   ⚙ 电机控制     │   📡 传感器数据   │
│  ↖  ↑  ↗        │  加速度  陀螺仪   │
│  ←  ■  →        │  磁感应  振动     │
│  ↙  ↓  ↘        │                  │
├──────────────────┼──────────────────┤
│  📷 USB 摄像头   │   🌡 热成像       │
│  实时 MJPEG 流   │  伪彩色温度图     │
└──────────────────┴──────────────────┘

电机控制方式(点击切换):

  • 点一下方向键 → 开始移动
  • 再点同一个键 / 点 ■ → 停止
  • 切换方向时直接点新方向键
  • 页面切到后台自动停车

7 嵌入式固件(STM32)

7.1 关键修改:紧急停车机制

原版 WHEELTEC 固件停车指令无效,核心改动在 BALANCE/CONCTRL/conctrl.c

// 全局变量
u8 Emergency_Stop = 0;

// TIM6_IRQHandler 中
if(Move_X == 0 && Move_Y == 0 && Move_Z == 0) {
    Emergency_Stop = 1;          // 触发紧急停车
    smooth_control.VX = 0;
    smooth_control.VY = 0;
    smooth_control.VZ = 0;
} else {
    Emergency_Stop = 0;
    Drive_Motor(Move_X, Move_Y, Move_Z);
}

// 每个 Incremental_PI 函数开头增加一行
if(Emergency_Stop) { Pwm=0; Bias=0; Last_bias=0; return 0; }

7.2 编译烧录

  1. Keil μVision 5 打开 firmware/USER/Template.uvprojx
  2. F7 编译
  3. FlyMcu 烧录 firmware/USER/OBJ/Template.hex
    • 烧录前:BOOT0 拨到 1,按复位键
    • 烧录后:BOOT0 拨回 0,按复位键

7.3 通信协议

RK3588 通过 USB-CDC(/dev/ttyACM0,115200 baud)发 11 字节二进制帧:

7B 00 [Vx_H Vx_L] [Vy_H Vy_L] [Vz_H Vz_L] 00 [XOR] 7D

Vx = 前后速度(mm/s,int16 大端)  范围 ±500
Vy = 左右平移(mm/s,int16 大端)  范围 ±500
Vz = 旋转速度(mm/s,int16 大端)  范围 ±1500

麦轮运动学(逆解):

$$
\begin{aligned}
FL &= V_y + V_x - V_z \
FR &= -V_y + V_x + V_z \
RL &= V_y + V_x + V_z \
RR &= -V_y + V_x - V_z
\end{aligned}
$$

8 热成像(海康 HM-TD2028T-7)

8.1 连接方式

热成像仪 ──网线──▶ RK3588 eth0
IP:192.168.1.64        IP:192.168.1.100
账号:admin
密码:hk159753
需要 12V 外接电源(禁止用 USB 供电)

8.2 采集脚本

adb push thermal/thermal_save_local.py /userdata/hik_vision_project/

# 第一次运行(配置相机参数)
adb shell python3 /userdata/hik_vision_project/thermal_save_local.py --config --bench

# 之后正常采集
adb shell python3 /userdata/hik_vision_project/thermal_save_local.py

输出(RK3588 本地):

/tmp/thermal/latest.npy     ← float32 矩阵,256×192,单位 °C
/tmp/thermal/latest.json    ← 最高/最低/均值/热点坐标

帧率上限:~3fps(硬件限制,官方文档说明”每秒 1-4 张,无法达到实时帧率”)

9 六轴 IMU(SH3001)

adb push imu/sh3001_monitor.py /root/
adb shell python3 /root/sh3001_monitor.py  # 首次运行进行零偏校准
字段 含义 说明
ax/ay/az 加速度(m/s²) 含重力,静止时 az ≈ 9.8
gx/gy/gz 角速度(dps) 已去除零偏
a_mag 加速度模长 静止时 ≈ 9.8(即 g)

10 常见问题

Q:换热点怎么办?

只改 host/start.pyhost/connect_wifi.py 开头的 SSIDPASSWORD 两行。

Q:用手机控制时页面显示不完整

页面已适配移动端,横屏效果更好。

Q:热点连接超时

确认热点名区分大小写,中文热点名确保编码正确(可复制粘贴)。

Q:RK3588 的 IP 是多少?

start.py 运行时会打印出来。iPhone 热点固定为 172.20.10.3,其他热点以打印为准。

Q:换了热点后 IP 变了,怎么连?

重新运行 python host/start.py,它会打印新 IP 并打开浏览器。

Q:电机不停

确认已烧录修改后的固件(firmware/BALANCE/CONCTRL/conctrl.c)。

Q:热成像不显示

检查:①网线已插 ②热成像仪 12V 已供电 ③adb shell ping 192.168.1.64

Q:更新服务后需要 USB 吗?

是。改了 server.py 后需要 USB 运行一次 python host/start.py 重新推送,之后可拔线。

11 技术栈

技术
控制入口 任意浏览器(手机/电脑/平板)
传输协议 HTTP + MJPEG 推流
板子 OS Buildroot Linux ARM64
控制服务 Python 3.10 + Flask
嵌入式 MCU STM32F1 / Keil μVision 5
电机协议 USB-CDC UART 115200,私有二进制帧
IMU I2C / SH3001
热成像 SDK 海康 HCNetSDK V6.1.9.45 ARM64 Linux

12 项目地址

GitHub: https://github.com/Yu-Xiang-Yang/rk3588-multimodal-mecanum

相关阅读:

欢迎 Star 和提 Issue。

评论